From b3fe06c151dc8455649bf0a46e481ceb83e3ea2a Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期六, 07 十一月 2026 13:37:54 +0800
Subject: [PATCH] feat: 完成好水川 MOM 需求1/2/4/5/8(装箱、BOM成本、销售合同、劳动合同、留样)

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java |   26 ++++++++++++++++++++------
 1 files changed, 20 insertions(+), 6 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 1fcd8f1..8c0783b 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
@@ -73,6 +73,8 @@
     @Resource
     private MesProWorkOrderService workOrderService;
     @Resource
+    private cn.iocoder.yudao.module.mes.service.pro.cost.MesProWorkOrderCostService workOrderCostService;
+    @Resource
     private MesMdItemService itemService;
     @Resource
     private MesMdAutoCodeRecordService autoCodeRecordService;
@@ -285,6 +287,12 @@
 
         // 绾ц仈鍙栨秷鍏宠仈鐨勭敓浜у伐鍗曪紙璺熼殢宸ュ崟褰撳墠鐘舵�侊紝涓斾笉璇激鍚堝苟涓嬪彂鐨勫叡浜伐鍗曪級
         if (mps.getWorkOrderId() != null) {
+            // 鏂板閫昏緫锛氳嫢璇ュ伐鍗曟湁鎶ュ伐璁板綍锛屽垯涓嶅厑璁稿彇娑� MPS
+            Long feedbackCount = feedbackMapper.selectCount(MesProFeedbackDO::getWorkOrderId, mps.getWorkOrderId());
+            if (feedbackCount != null && feedbackCount > 0) {
+                throw exception(PRO_MPS_WORK_ORDER_HAS_FEEDBACK);
+            }
+
             // 1. 缁熻璇ュ伐鍗曡澶氬皯鏉� MPS 寮曠敤锛氬悎骞朵笅鍙戠殑澶氭潯 MPS 鍏变韩鍚屼竴涓伐鍗�
             Long refCount = mpsMapper.selectCount(MesProMpsDO::getWorkOrderId, mps.getWorkOrderId());
             if (refCount != null && refCount > 1) {
@@ -342,9 +350,7 @@
 
     @Override
     public PageResult<MesProMpsDO> getMpsPage(MesProMpsPageReqVO pageReqVO) {
-        // 鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑瀹㈡埛 ID 鍒楄〃
-        List<Long> permittedClientIds = customerApi.getPermittedCustomerIds();
-        return mpsMapper.selectPage(pageReqVO, permittedClientIds);
+        return mpsMapper.selectPage(pageReqVO, (List<Long>) null);
     }
 
     @Override
@@ -536,8 +542,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);
         }
@@ -577,6 +584,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)) {
@@ -593,6 +604,9 @@
             processList.add(process);
         }
         workOrderProcessService.batchSaveWorkOrderProcess(processList);
+
+        // 5.1 宸ュ簭鎶曟枡 BOM 鐢熸垚鍚庨噸绠楁爣鍑嗙墿鏂欐垚鏈紙璺嚎 BOM 涓庝骇鍝� BOM 鍙兘瀛樺湪宸紓锛�
+        workOrderCostService.recalculateWorkOrderCost(workOrderId);
 
         // 6. 宸ュ崟鐩存帴纭涓哄凡纭鐘舵��
         workOrderService.confirmWorkOrder(workOrderId);
@@ -612,4 +626,4 @@
         }
     }
 
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3