Просмотр исходного кода

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

新增对到货通知单行数据的校验,确保父单据存在且为草稿状态,同时校验物料是否存在。重构相关方法以提高代码可读性和维护性。
YunaiV месяцев назад: 3
Родитель
Сommit
383e265e28

+ 16 - 20
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;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLinePageReqVO;
 import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLineSaveReqVO;
-import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeLineMapper;
-import cn.iocoder.yudao.module.mes.enums.wm.MesWmArrivalNoticeStatusEnum;
+import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
 import jakarta.annotation.Resource;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -34,11 +33,13 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
     @Resource
     @Lazy
     private MesWmArrivalNoticeService arrivalNoticeService;
+    @Resource
+    private MesMdItemService itemService;
 
     @Override
     public Long createArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO createReqVO) {
-        // 校验父单据存在且为草稿状态
-        validateNoticeStatusDraft(createReqVO.getNoticeId());
+        // 校验数据
+        validateArrivalNoticeLineSaveData(createReqVO);
 
         // 插入
         MesWmArrivalNoticeLineDO line = BeanUtils.toBean(createReqVO, MesWmArrivalNoticeLineDO.class);
@@ -51,8 +52,9 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
     public void updateArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO updateReqVO) {
         // 校验存在
         MesWmArrivalNoticeLineDO line = validateArrivalNoticeLineExists(updateReqVO.getId());
-        // 校验父单据存在且为草稿状态
-        validateNoticeStatusDraft(line.getNoticeId());
+        // 校验数据
+        updateReqVO.setNoticeId(line.getNoticeId());
+        validateArrivalNoticeLineSaveData(updateReqVO);
 
         // 更新
         MesWmArrivalNoticeLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmArrivalNoticeLineDO.class);
@@ -60,6 +62,13 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
         arrivalNoticeLineMapper.updateById(updateObj);
     }
 
+    private void validateArrivalNoticeLineSaveData(MesWmArrivalNoticeLineSaveReqVO reqVO) {
+        // 校验父单据存在且为草稿状态
+        arrivalNoticeService.validateArrivalNoticeExistsAndDraft(reqVO.getNoticeId());
+        // 校验物料存在
+        itemService.validateItemExists(reqVO.getItemId());
+    }
+
     /**
      * 初始化合格品数量:
      * 1. 如果不需要 IQC 检验,则合格品数量直接 = 接收数量;
@@ -76,7 +85,7 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
         // 校验存在
         MesWmArrivalNoticeLineDO line = validateArrivalNoticeLineExists(id);
         // 校验父单据存在且为草稿状态
-        validateNoticeStatusDraft(line.getNoticeId());
+        arrivalNoticeService.validateArrivalNoticeExistsAndDraft(line.getNoticeId());
 
         // 删除
         arrivalNoticeLineMapper.deleteById(id);
@@ -130,17 +139,4 @@ public class MesWmArrivalNoticeLineServiceImpl implements MesWmArrivalNoticeLine
         return line;
     }
 
-    /**
-     * 校验父到货通知单存在且为草稿状态
-     */
-    private void validateNoticeStatusDraft(Long noticeId) {
-        MesWmArrivalNoticeDO notice = arrivalNoticeService.getArrivalNotice(noticeId);
-        if (notice == null) {
-            throw exception(WM_ARRIVAL_NOTICE_NOT_EXISTS);
-        }
-        if (ObjUtil.notEqual(MesWmArrivalNoticeStatusEnum.PREPARE.getStatus(), notice.getStatus())) {
-            throw exception(WM_ARRIVAL_NOTICE_STATUS_NOT_PREPARE);
-        }
-    }
-
 }

+ 8 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/arrivalnotice/MesWmArrivalNoticeService.java

@@ -100,6 +100,14 @@ public interface MesWmArrivalNoticeService {
      */
     MesWmArrivalNoticeDO validateArrivalNoticeExists(Long id);
 
+    /**
+     * 校验到货通知单存在且为草稿状态
+     *
+     * @param id 编号
+     * @return 到货通知单
+     */
+    MesWmArrivalNoticeDO validateArrivalNoticeExistsAndDraft(Long id);
+
     /**
      * 校验到货通知单和行存在,且行属于该通知单
      *

+ 2 - 4
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
         return notice;
     }
 
-    /**
-     * 校验到货通知单存在且为草稿状态
-     */
-    private MesWmArrivalNoticeDO validateArrivalNoticeExistsAndDraft(Long id) {
+    @Override
+    public MesWmArrivalNoticeDO validateArrivalNoticeExistsAndDraft(Long id) {
         MesWmArrivalNoticeDO notice = validateArrivalNoticeExists(id);
         if (ObjUtil.notEqual(MesWmArrivalNoticeStatusEnum.PREPARE.getStatus(), notice.getStatus())) {
             throw exception(WM_ARRIVAL_NOTICE_STATUS_NOT_PREPARE);