Browse Source

✨ feat(mes): 增强工序管理功能,新增工序校验逻辑

新增工序创建和更新时的存在性校验,确保工序有效性。
同时,重构工艺路线服务,优化工序引用检查逻辑。
YunaiV 3 months ago
parent
commit
de40b938af

+ 11 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/process/MesProProcessContentServiceImpl.java

@@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.content.MesPr
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessContentDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.pro.process.MesProProcessContentMapper;
 import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -25,8 +26,16 @@ public class MesProProcessContentServiceImpl implements MesProProcessContentServ
     @Resource
     private MesProProcessContentMapper processContentMapper;
 
+    @Resource
+    @Lazy
+    private MesProProcessService processService;
+
     @Override
     public Long createProcessContent(MesProProcessContentSaveReqVO createReqVO) {
+        // 校验工序存在
+        processService.validateProcessExists(createReqVO.getProcessId());
+
+        // 插入
         MesProProcessContentDO content = BeanUtils.toBean(createReqVO, MesProProcessContentDO.class);
         processContentMapper.insert(content);
         return content.getId();
@@ -36,6 +45,7 @@ public class MesProProcessContentServiceImpl implements MesProProcessContentServ
     public void updateProcessContent(MesProProcessContentSaveReqVO updateReqVO) {
         // 校验存在
         validateProcessContentExists(updateReqVO.getId());
+
         // 更新
         MesProProcessContentDO updateObj = BeanUtils.toBean(updateReqVO, MesProProcessContentDO.class);
         processContentMapper.updateById(updateObj);
@@ -45,6 +55,7 @@ public class MesProProcessContentServiceImpl implements MesProProcessContentServ
     public void deleteProcessContent(Long id) {
         // 校验存在
         validateProcessContentExists(id);
+
         // 删除
         processContentMapper.deleteById(id);
     }

+ 7 - 3
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/process/MesProProcessServiceImpl.java

@@ -7,8 +7,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.MesProProcess
 import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.MesProProcessSaveReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.pro.process.MesProProcessMapper;
-import cn.iocoder.yudao.module.mes.dal.mysql.pro.route.MesProRouteProcessMapper;
+import cn.iocoder.yudao.module.mes.service.pro.route.MesProRouteProcessService;
 import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -36,10 +37,12 @@ public class MesProProcessServiceImpl implements MesProProcessService {
     private MesProProcessContentService processContentService;
 
     @Resource
-    private MesProRouteProcessMapper routeProcessMapper;
+    @Lazy
+    private MesProRouteProcessService routeProcessService;
 
     @Override
     public Long createProcess(MesProProcessSaveReqVO createReqVO) {
+        // TODO @AI:validateXXXSaveData,传入 vo;
         // 1.1 校验工序编码唯一性
         validateProcessCodeUnique(null, createReqVO.getCode());
         // 1.2 校验工序名称唯一性
@@ -55,6 +58,7 @@ public class MesProProcessServiceImpl implements MesProProcessService {
     public void updateProcess(MesProProcessSaveReqVO updateReqVO) {
         // 1.1 校验存在
         validateProcessExists(updateReqVO.getId());
+        // TODO @AI:validateXXXSaveData,传入 vo;
         // 1.2 校验工序编码唯一性
         validateProcessCodeUnique(updateReqVO.getId(), updateReqVO.getCode());
         // 1.3 校验工序名称唯一性
@@ -71,7 +75,7 @@ public class MesProProcessServiceImpl implements MesProProcessService {
         // 1.1 校验存在
         validateProcessExists(id);
         // 1.2 校验是否被工艺路线引用
-        if (CollUtil.isNotEmpty(routeProcessMapper.selectListByProcessId(id))) {
+        if (CollUtil.isNotEmpty(routeProcessService.getRouteProcessListByProcessId(id))) {
             throw exception(PRO_PROCESS_USED_BY_ROUTE);
         }
 

+ 8 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessService.java

@@ -66,6 +66,14 @@ public interface MesProRouteProcessService {
      */
     List<MesProRouteProcessDO> getRouteProcessListByProductId(Long productId);
 
+    /**
+     * 按工序获得工艺路线工序列表
+     *
+     * @param processId 工序编号
+     * @return 工艺路线工序列表
+     */
+    List<MesProRouteProcessDO> getRouteProcessListByProcessId(Long processId);
+
     /**
      * 按工艺路线删除工序(级联删除使用)
      *

+ 6 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/route/MesProRouteProcessServiceImpl.java

@@ -192,12 +192,18 @@ public class MesProRouteProcessServiceImpl implements MesProRouteProcessService
         MesProRouteProductDO routeProduct = routeProductService.getRouteProductByItemId(productId);
         if (routeProduct == null) {
             // TODO @芋艿:会不会存在配置了多个的情况???
+            // TODO @AI:会有这个情况么?
             return Collections.emptyList();
         }
         // 2. 返回该工艺路线的工序列表
         return routeProcessMapper.selectListByRouteId(routeProduct.getRouteId());
     }
 
+    @Override
+    public List<MesProRouteProcessDO> getRouteProcessListByProcessId(Long processId) {
+        return routeProcessMapper.selectListByProcessId(processId);
+    }
+
     @Override
     public void deleteRouteProcessByRouteId(Long routeId) {
         routeProcessMapper.deleteByRouteId(routeId);