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 6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 7 import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLinePageReqVO;
8 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 9 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO;
11 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 12 import jakarta.annotation.Resource;
14 13 import org.springframework.context.annotation.Lazy;
15 14 import org.springframework.stereotype.Service;
... ... @@ -34,11 +33,13 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
34 33 @Resource
35 34 @Lazy
36 35 private MesWmArrivalNoticeService arrivalNoticeService;
  36 + @Resource
  37 + private MesMdItemService itemService;
37 38  
38 39 @Override
39 40 public Long createArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO createReqVO) {
40   - // 校验父单据存在且为草稿状态
41   - validateNoticeStatusDraft(createReqVO.getNoticeId());
  41 + // 校验数据
  42 + validateArrivalNoticeLineSaveData(createReqVO);
42 43  
43 44 // 插入
44 45 MesWmArrivalNoticeLineDO line = BeanUtils.toBean(createReqVO, MesWmArrivalNoticeLineDO.class);
... ... @@ -51,8 +52,9 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
51 52 public void updateArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO updateReqVO) {
52 53 // 校验存在
53 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 60 MesWmArrivalNoticeLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmArrivalNoticeLineDO.class);
... ... @@ -60,6 +62,13 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
60 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 74 * 1. 如果不需要 IQC 检验,则合格品数量直接 = 接收数量;
... ... @@ -76,7 +85,7 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
76 85 // 校验存在
77 86 MesWmArrivalNoticeLineDO line = validateArrivalNoticeLineExists(id);
78 87 // 校验父单据存在且为草稿状态
79   - validateNoticeStatusDraft(line.getNoticeId());
  88 + arrivalNoticeService.validateArrivalNoticeExistsAndDraft(line.getNoticeId());
80 89  
81 90 // 删除
82 91 arrivalNoticeLineMapper.deleteById(id);
... ... @@ -130,17 +139,4 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
130 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 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 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 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 198 MesWmArrivalNoticeDO notice = validateArrivalNoticeExists(id);
201 199 if (ObjUtil.notEqual(MesWmArrivalNoticeStatusEnum.PREPARE.getStatus(), notice.getStatus())) {
202 200 throw exception(WM_ARRIVAL_NOTICE_STATUS_NOT_PREPARE);
... ...