Commit 383e265e2812f2d46b62af74427d7829734a86a2

Authored by YunaiV
1 parent ac36e65b

✨ feat(mes): 增强到货通知单行数据校验逻辑

新增对到货通知单行数据的校验,确保父单据存在且为草稿状态,同时校验物料是否存在。重构相关方法以提高代码可读性和维护性。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeLineServiceImpl.java
@@ -6,10 +6,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -6,10 +6,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLinePageReqVO; 7 import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLinePageReqVO;
8 import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLineSaveReqVO; 8 import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLineSaveReqVO;
9 -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeDO;  
10 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO; 9 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO;
11 import cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeLineMapper; 10 import cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeLineMapper;
12 -import cn.iocoder.yudao.module.mes.enums.wm.MesWmArrivalNoticeStatusEnum; 11 +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
13 import jakarta.annotation.Resource; 12 import jakarta.annotation.Resource;
14 import org.springframework.context.annotation.Lazy; 13 import org.springframework.context.annotation.Lazy;
15 import org.springframework.stereotype.Service; 14 import org.springframework.stereotype.Service;
@@ -34,11 +33,13 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine @@ -34,11 +33,13 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
34 @Resource 33 @Resource
35 @Lazy 34 @Lazy
36 private MesWmArrivalNoticeService arrivalNoticeService; 35 private MesWmArrivalNoticeService arrivalNoticeService;
  36 + @Resource
  37 + private MesMdItemService itemService;
37 38
38 @Override 39 @Override
39 public Long createArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO createReqVO) { 40 public Long createArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO createReqVO) {
40 - // 校验父单据存在且为草稿状态  
41 - validateNoticeStatusDraft(createReqVO.getNoticeId()); 41 + // 校验数据
  42 + validateArrivalNoticeLineSaveData(createReqVO);
42 43
43 // 插入 44 // 插入
44 MesWmArrivalNoticeLineDO line = BeanUtils.toBean(createReqVO, MesWmArrivalNoticeLineDO.class); 45 MesWmArrivalNoticeLineDO line = BeanUtils.toBean(createReqVO, MesWmArrivalNoticeLineDO.class);
@@ -51,8 +52,9 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine @@ -51,8 +52,9 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
51 public void updateArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO updateReqVO) { 52 public void updateArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO updateReqVO) {
52 // 校验存在 53 // 校验存在
53 MesWmArrivalNoticeLineDO line = validateArrivalNoticeLineExists(updateReqVO.getId()); 54 MesWmArrivalNoticeLineDO line = validateArrivalNoticeLineExists(updateReqVO.getId());
54 - // 校验父单据存在且为草稿状态  
55 - validateNoticeStatusDraft(line.getNoticeId()); 55 + // 校验数据
  56 + updateReqVO.setNoticeId(line.getNoticeId());
  57 + validateArrivalNoticeLineSaveData(updateReqVO);
56 58
57 // 更新 59 // 更新
58 MesWmArrivalNoticeLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmArrivalNoticeLineDO.class); 60 MesWmArrivalNoticeLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmArrivalNoticeLineDO.class);
@@ -60,6 +62,13 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine @@ -60,6 +62,13 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
60 arrivalNoticeLineMapper.updateById(updateObj); 62 arrivalNoticeLineMapper.updateById(updateObj);
61 } 63 }
62 64
  65 + private void validateArrivalNoticeLineSaveData(MesWmArrivalNoticeLineSaveReqVO reqVO) {
  66 + // 校验父单据存在且为草稿状态
  67 + arrivalNoticeService.validateArrivalNoticeExistsAndDraft(reqVO.getNoticeId());
  68 + // 校验物料存在
  69 + itemService.validateItemExists(reqVO.getItemId());
  70 + }
  71 +
63 /** 72 /**
64 * 初始化合格品数量: 73 * 初始化合格品数量:
65 * 1. 如果不需要 IQC 检验,则合格品数量直接 = 接收数量; 74 * 1. 如果不需要 IQC 检验,则合格品数量直接 = 接收数量;
@@ -76,7 +85,7 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine @@ -76,7 +85,7 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
76 // 校验存在 85 // 校验存在
77 MesWmArrivalNoticeLineDO line = validateArrivalNoticeLineExists(id); 86 MesWmArrivalNoticeLineDO line = validateArrivalNoticeLineExists(id);
78 // 校验父单据存在且为草稿状态 87 // 校验父单据存在且为草稿状态
79 - validateNoticeStatusDraft(line.getNoticeId()); 88 + arrivalNoticeService.validateArrivalNoticeExistsAndDraft(line.getNoticeId());
80 89
81 // 删除 90 // 删除
82 arrivalNoticeLineMapper.deleteById(id); 91 arrivalNoticeLineMapper.deleteById(id);
@@ -130,17 +139,4 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine @@ -130,17 +139,4 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
130 return line; 139 return line;
131 } 140 }
132 141
133 - /**  
134 - * 校验父到货通知单存在且为草稿状态  
135 - */  
136 - private void validateNoticeStatusDraft(Long noticeId) {  
137 - MesWmArrivalNoticeDO notice = arrivalNoticeService.getArrivalNotice(noticeId);  
138 - if (notice == null) {  
139 - throw exception(WM_ARRIVAL_NOTICE_NOT_EXISTS);  
140 - }  
141 - if (ObjUtil.notEqual(MesWmArrivalNoticeStatusEnum.PREPARE.getStatus(), notice.getStatus())) {  
142 - throw exception(WM_ARRIVAL_NOTICE_STATUS_NOT_PREPARE);  
143 - }  
144 - }  
145 -  
146 } 142 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeService.java
@@ -101,6 +101,14 @@ public interface MesWmArrivalNoticeService { @@ -101,6 +101,14 @@ public interface MesWmArrivalNoticeService {
101 MesWmArrivalNoticeDO validateArrivalNoticeExists(Long id); 101 MesWmArrivalNoticeDO validateArrivalNoticeExists(Long id);
102 102
103 /** 103 /**
  104 + * 校验到货通知单存在且为草稿状态
  105 + *
  106 + * @param id 编号
  107 + * @return 到货通知单
  108 + */
  109 + MesWmArrivalNoticeDO validateArrivalNoticeExistsAndDraft(Long id);
  110 +
  111 + /**
104 * 校验到货通知单和行存在,且行属于该通知单 112 * 校验到货通知单和行存在,且行属于该通知单
105 * 113 *
106 * @param noticeId 到货通知单 ID 114 * @param noticeId 到货通知单 ID
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeServiceImpl.java
@@ -193,10 +193,8 @@ public class MesWmArrivalNoticeServiceImpl implements MesWmArrivalNoticeService @@ -193,10 +193,8 @@ public class MesWmArrivalNoticeServiceImpl implements MesWmArrivalNoticeService
193 return notice; 193 return notice;
194 } 194 }
195 195
196 - /**  
197 - * 校验到货通知单存在且为草稿状态  
198 - */  
199 - private MesWmArrivalNoticeDO validateArrivalNoticeExistsAndDraft(Long id) { 196 + @Override
  197 + public MesWmArrivalNoticeDO validateArrivalNoticeExistsAndDraft(Long id) {
200 MesWmArrivalNoticeDO notice = validateArrivalNoticeExists(id); 198 MesWmArrivalNoticeDO notice = validateArrivalNoticeExists(id);
201 if (ObjUtil.notEqual(MesWmArrivalNoticeStatusEnum.PREPARE.getStatus(), notice.getStatus())) { 199 if (ObjUtil.notEqual(MesWmArrivalNoticeStatusEnum.PREPARE.getStatus(), notice.getStatus())) {
202 throw exception(WM_ARRIVAL_NOTICE_STATUS_NOT_PREPARE); 200 throw exception(WM_ARRIVAL_NOTICE_STATUS_NOT_PREPARE);