From 7bd10d34e8a8dc2437ec8551eb511e37634d7306 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 02 十一月 2026 16:51:52 +0800
Subject: [PATCH] feat(mes): 生产计划审批改走协同办公,修复工单领料与产成品入库校验

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java |   31 +++++++++++++++++++++----------
 1 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
index 3ef59ed..9fc60b5 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/pro/workorder/MesProWorkOrderBomController.java
@@ -143,19 +143,15 @@
             return success(Collections.emptyList());
         }
 
-        // 2. 鑾峰彇宸ュ崟宸ュ簭鍒楄〃锛堝惈鍚勫伐搴忕殑鎶曟枡鏄庣粏涓庝骇鍑哄搧锛�
-        List<MesProWorkOrderProcessDO> processList = workOrderProcessService
-                .getWorkOrderProcessListByWorkOrderId(workOrderId);
-        if (CollUtil.isEmpty(processList)) {
-
-            return success(Collections.emptyList());
-        }
-
-        // 3. 鑾峰彇宸ュ崟 BOM 琛岋紙鍚勫伐搴忕殑鎶曟枡璁板綍锛屾寜 processId 鍒嗙粍浣跨敤锛�
+        // 2. 鑾峰彇宸ュ崟 BOM 琛岋紙鍚勫伐搴忕殑鎶曟枡璁板綍锛屽崟鑰楀彛寰勶級
         List<MesProWorkOrderBomDO> bomList = workOrderBomService.getWorkOrderBomListByWorkOrderId(workOrderId);
         if (CollUtil.isEmpty(bomList)) {
             return success(Collections.emptyList());
         }
+
+        // 3. 鑾峰彇宸ュ崟宸ュ簭鍒楄〃锛堝惈鍚勫伐搴忕殑鎶曟枡鏄庣粏涓庝骇鍑哄搧锛�
+        List<MesProWorkOrderProcessDO> processList = workOrderProcessService
+                .getWorkOrderProcessListByWorkOrderId(workOrderId);
 
         // 4. 閫氳繃浜у搧ID鍙嶆煡宸ヨ壓璺嚎锛堝伐鍗� routeId 鍙兘涓虹┖锛�
         Long routeId = null;
@@ -167,7 +163,22 @@
         }
 
         // 5. 鎸夊伐搴忎骇鍑洪摼閫愬眰灞曞紑 BOM锛屽緱鍒板彾瀛愮墿鏂欙紙姣忓崟浣嶆垚鍝佺殑鐢ㄩ噺锛�
-        Map<Long, BigDecimal> leafItems = buildWorkOrderItems(processList, bomList, routeId);
+        Map<Long, BigDecimal> leafItems = CollUtil.isEmpty(processList)
+                ? Collections.emptyMap()
+                : buildWorkOrderItems(processList, bomList, routeId);
+        // 5.1 鍥為��锛氬伐鍗曟病鏈夊伐搴忥紝鎴栨姇鏂欐湭鎸傚湪鏈�鍚庝竴閬撳伐搴忎笂锛堜緥濡傛姇鏂欓厤缃湪棣栭亾閰嶆枡宸ュ簭锛夋椂锛�
+        //     閫愬眰灞曞紑浼氬緱鍒扮┖缁撴灉銆傛鏃舵寜鍏ㄩ儴鎶曟枡琛屾眹鎬诲崟鑰楋紝涓庛�屾寜宸ュ崟鐢熸垚棰嗘枡鍗曘�嶇殑鍙栨暟鍙e緞淇濇寔涓�鑷达紝
+        //     鍚﹀垯宸ュ崟鏄庢槑鏈夋姇鏂欍�侀鏂欎篃棰嗚繃浜嗭紝鎵撳嵃棰嗘枡鍗曞嵈鏄剧ず銆屾殏鏃犺緟鏂欓渶姹傘�嶃��
+        if (CollUtil.isEmpty(leafItems)) {
+            Map<Long, BigDecimal> allBomItems = new LinkedHashMap<>();
+            for (MesProWorkOrderBomDO bom : bomList) {
+                if (bom.getItemId() == null || bom.getQuantity() == null) {
+                    continue;
+                }
+                allBomItems.merge(bom.getItemId(), bom.getQuantity(), BigDecimal::add);
+            }
+            leafItems = allBomItems;
+        }
         if (CollUtil.isEmpty(leafItems)) {
             return success(Collections.emptyList());
         }

--
Gitblit v1.9.3