From 0857cf1830039d60ce73005f386f284cf575e511 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 26 十月 2026 14:00:19 +0800
Subject: [PATCH] feat(mes): 新增ERP销售订单生产状态枚举及MES工艺路线优化

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java
index 8a33ace..42d30cb 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java
@@ -182,8 +182,9 @@
         Long batchId = batch != null ? batch.getId() : null;
         String batchCode = batch != null ? batch.getCode() : null;
 
-        // 1.5 浼樺厛浣跨敤宸ヨ壓璺嚎浜у搧缁戝畾鐨勬姤宸ヤ粨搴擄紱鍘嗗彶鏁版嵁鏈厤缃椂鍥為��铏氭嫙绾胯竟搴撱��
-        WarehouseTarget outputTarget = resolveOutputTarget(feedback.getItemId());
+        // 1.5 浼樺厛浣跨敤宸ュ崟宸ュ簭閰嶇疆鐨勬姤宸ヤ粨搴擄紙涓嬪崟鏃跺彲缂栬緫锛夛紝鍏舵宸ヨ壓璺嚎浜у搧锛屾渶鍚庡洖閫�铏氭嫙绾胯竟搴�
+        WarehouseTarget outputTarget = resolveOutputTarget(feedback.getWorkOrderId(),
+                feedback.getProcessId(), feedback.getItemId());
 
         // 3. 鏍规嵁鏄惁闇�瑕佹楠屽垎鏀鐞�
         if (checkFlag) {
@@ -275,7 +276,8 @@
         }
         // 2. 閫氳繃 sourceLineId 鐩存帴瀹氫綅寰呮楠岃
         MesWmProductProduceLineDO pendingLine = productProduceLineService.validateProductProduceLineExists(sourceLineId);
-        WarehouseTarget outputTarget = resolveOutputTarget(pendingLine.getItemId());
+        WarehouseTarget outputTarget = resolveOutputTarget(produce.getWorkOrderId(),
+                produce.getProcessId(), pendingLine.getItemId());
 
         // 3A. 鎯呭喌涓�锛氬瓨鍦ㄤ笉鍚堟牸鍝佹暟閲忥紝闇�瑕佹媶鍒嗚
         if (unqualifiedQty != null && unqualifiedQty.compareTo(BigDecimal.ZERO) > 0) {
@@ -322,7 +324,20 @@
         finishProductProduce(produce.getId());
     }
 
-    private WarehouseTarget resolveOutputTarget(Long itemId) {
+    private WarehouseTarget resolveOutputTarget(Long workOrderId, Long processId, Long itemId) {
+        // 1. 宸ュ崟宸ュ簭閰嶇疆锛堜笅鍗曟椂鍙紪杈戯級
+        if (workOrderId != null && processId != null) {
+            MesProWorkOrderProcessDO workOrderProcess = workOrderProcessService
+                    .getWorkOrderProcessByWorkOrderIdAndProcessId(workOrderId, processId);
+            if (workOrderProcess != null && workOrderProcess.getWarehouseId() != null
+                    && workOrderProcess.getLocationId() != null && workOrderProcess.getAreaId() != null) {
+                areaService.validateWarehouseAreaExists(workOrderProcess.getWarehouseId(),
+                        workOrderProcess.getLocationId(), workOrderProcess.getAreaId());
+                return new WarehouseTarget(workOrderProcess.getWarehouseId(),
+                        workOrderProcess.getLocationId(), workOrderProcess.getAreaId());
+            }
+        }
+        // 2. 宸ヨ壓璺嚎浜у搧閰嶇疆
         MesProRouteProductDO routeProduct = itemId != null
                 ? routeProductService.getRouteProductByItemId(itemId) : null;
         if (routeProduct != null && routeProduct.getWarehouseId() != null

--
Gitblit v1.9.3