From 481d8165f26fc7e37f0e87f6444ac0340bb563a3 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期二, 03 十一月 2026 18:53:22 +0800
Subject: [PATCH] fix: 移植长辉已验证的四类接口 500/体验问题(不含物料颜色字段)

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java |   38 +++++++++++++++++++++++++-------------
 1 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java
index f516574..3c491d9 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java
@@ -10,6 +10,7 @@
 import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsImportRespVO;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsPageReqVO;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsSaveReqVO;
+import cn.iocoder.yudao.module.mes.api.event.ProductionCanceledEvent;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.MesProWorkOrderSaveReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.mps.MesProMpsDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.mps.MesProMpsMergeItemDO;
@@ -23,6 +24,7 @@
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO;
 import cn.iocoder.yudao.module.mes.enums.md.MesMdItemTypeEnum;
+import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemTypeService;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProcessDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
@@ -41,6 +43,7 @@
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
@@ -70,11 +73,6 @@
 @Slf4j
 public class MesProMpsServiceImpl implements MesProMpsService {
 
-    /**
-     * MPS 缂栫爜瑙勫垯
-     */
-    private static final String MPS_CODE_RULE = "MPS";
-
     @Resource
     private MesProMpsMapper mpsMapper;
     @Resource
@@ -99,6 +97,8 @@
     private MesProRouteProcessService routeProcessService;
     @Resource
     private MesProWorkOrderProcessService workOrderProcessService;
+    @Resource
+    private ApplicationEventPublisher eventPublisher;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -312,6 +312,10 @@
         mpsMapper.updateById(new MesProMpsDO()
                 .setId(id)
                 .setStatus(MesProMpsStatusEnum.CANCELED.getStatus()));
+        // 鏉ユ簮浜庨攢鍞鍗曟椂锛屽悓姝ユ仮澶嶉攢鍞鍗曠敓浜х姸鎬侊紝鍏佽閲嶆柊鍒涘缓鐢熶骇璁″垝
+        if (mps.getSaleOrderId() != null) {
+            eventPublisher.publishEvent(new ProductionCanceledEvent(mps.getSaleOrderId()));
+        }
     }
 
     @Override
@@ -398,7 +402,7 @@
         if (workOrderId == null) {
             return null;
         }
-        return mpsMapper.selectOne(MesProMpsDO::getWorkOrderId, workOrderId);
+        return mpsMapper.selectByWorkOrderId(workOrderId);
     }
 
     @Override
@@ -534,10 +538,11 @@
      */
     private String generateMpsCode() {
         try {
-            return autoCodeRecordService.generateAutoCode(MPS_CODE_RULE);
+            return autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.PRO_MPS_CODE.getCode());
         } catch (Exception e) {
             // 濡傛灉缂栫爜瑙勫垯涓嶅瓨鍦紝浣跨敤鏃堕棿鎴崇敓鎴�
-            log.warn("[generateMpsCode] 缂栫爜瑙勫垯 {} 涓嶅瓨鍦紝浣跨敤鏃堕棿鎴崇敓鎴�", MPS_CODE_RULE);
+            log.warn("[generateMpsCode] 缂栫爜瑙勫垯 {} 涓嶅瓨鍦紝浣跨敤鏃堕棿鎴崇敓鎴�",
+                    MesMdAutoCodeRuleCodeEnum.PRO_MPS_CODE.getCode(), e);
             return "MPS" + System.currentTimeMillis();
         }
     }
@@ -612,8 +617,9 @@
         }
         Long routeId = routeProduct.getRouteId();
 
-        // 2. 鏍¢獙宸ヨ壓璺嚎鏄惁鏈夊伐搴�
-        List<MesProRouteProcessDO> routeProcesses = routeProcessService.getRouteProcessListByRouteId(routeId);
+        // 2. 鏍¢獙宸ヨ壓璺嚎鏄惁鏈夊伐搴忥紙鎸変骇鍝佽繃婊ゅ叾瀹冧骇鍝佺殑浜у嚭鐗╂枡锛�
+        List<MesProRouteProcessDO> routeProcesses = routeProcessService
+                .getRouteProcessListByProductId(mps.getProductId());
         if (CollUtil.isEmpty(routeProcesses)) {
             throw exception(PRO_ROUTE_ENABLE_NO_PROCESS);
         }
@@ -653,6 +659,10 @@
                         .map(Long::valueOf).collect(Collectors.toList()));
             }
             process.setColorCode(rp.getColorCode());
+            // 甯﹀叆宸ヨ壓璺嚎浜у搧閰嶇疆鐨勬姤宸ヤ粨搴�
+            process.setWarehouseId(routeProduct.getWarehouseId());
+            process.setLocationId(routeProduct.getLocationId());
+            process.setAreaId(routeProduct.getAreaId());
             // 甯﹀叆宸ュ簭鎶曟枡BOM
             List<MesProRouteProductBomDO> routeBomItems = bomMap != null ? bomMap.get(rp.getProcessId()) : null;
             if (CollUtil.isNotEmpty(routeBomItems)) {
@@ -681,11 +691,13 @@
      */
     private String generateWorkOrderCode() {
         try {
-            return autoCodeRecordService.generateAutoCode("WO");
+            return autoCodeRecordService.generateAutoCode(
+                    MesMdAutoCodeRuleCodeEnum.PRO_WORK_ORDER_CODE.getCode());
         } catch (Exception e) {
-            log.warn("[generateWorkOrderCode] 缂栫爜瑙勫垯 WO 涓嶅瓨鍦紝浣跨敤鏃堕棿鎴崇敓鎴�");
+            log.warn("[generateWorkOrderCode] 缂栫爜瑙勫垯 {} 涓嶅瓨鍦紝浣跨敤鏃堕棿鎴崇敓鎴�",
+                    MesMdAutoCodeRuleCodeEnum.PRO_WORK_ORDER_CODE.getCode(), e);
             return "WO" + System.currentTimeMillis();
         }
     }
 
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3