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/service/wm/returnissue/MesWmReturnIssueDetailServiceImpl.java |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueDetailServiceImpl.java
index fec1bfe..8aa183f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueDetailServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueDetailServiceImpl.java
@@ -7,9 +7,11 @@
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDetailDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueLineDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnissue.MesWmReturnIssueDetailMapper;
 import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
+import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseDefaultService;
 import jakarta.annotation.Resource;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -17,6 +19,8 @@
 
 import java.math.BigDecimal;
 import java.util.List;
+
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
@@ -36,6 +40,8 @@
     private MesWmReturnIssueLineService issueLineService;
     @Resource
     private MesWmWarehouseAreaService warehouseAreaService;
+    @Resource
+    private MesWmWarehouseDefaultService warehouseDefaultService;
     @Resource
     @Lazy
     private MesWmMaterialStockService materialStockService;
@@ -112,6 +118,14 @@
         if (ObjUtil.notEqual(line.getItemId(), reqVO.getItemId())) {
             throw exception(WM_RETURN_ISSUE_DETAIL_ITEM_MISMATCH);
         }
+        // 鏈寚瀹氫笂鏋剁洰鏍囧簱鍖�/搴撲綅鏃讹紝钀藉埌浠撳簱榛樿搴撳尯/搴撲綅锛堝鎴锋湭鍚敤搴撳尯/搴撲綅绠$悊锛�
+        if (reqVO.getWarehouseId() != null
+                && (reqVO.getLocationId() == null || reqVO.getAreaId() == null)) {
+            MesWmWarehouseAreaDO defaultArea =
+                    warehouseDefaultService.getOrCreateDefaultArea(reqVO.getWarehouseId());
+            reqVO.setLocationId(defaultArea.getLocationId());
+            reqVO.setAreaId(defaultArea.getId());
+        }
         // 鏍¢獙涓婃灦鐩爣浠撳簱銆佸簱鍖恒�佸簱浣嶇殑鍏宠仈鍏崇郴
         warehouseAreaService.validateWarehouseAreaExists(
                 reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId());
@@ -123,9 +137,10 @@
             if (stock == null) {
                 throw exception(WM_MATERIAL_STOCK_NOT_EXISTS);
             }
-            // 鏍¢獙鐗╂枡鍜屾壒娆′竴鑷�
+            // 鏍¢獙鐗╂枡涓�鑷达細姝ゅ鍙瘮瀵圭墿鏂欙紝鍥犱负鏉ユ簮搴撳瓨(绾胯竟/铏氭嫙浠�)涓庝笂鏋剁洰鏍囦粨搴撴湰灏变笉鍚屽睘姝e父
             if (ObjUtil.notEqual(stock.getItemId(), reqVO.getItemId())) {
-                throw exception(WM_MATERIAL_STOCK_SELECTION_MISMATCH);
+                throw new ServiceException(WM_MATERIAL_STOCK_SELECTION_MISMATCH.getCode(),
+                        "鎵�閫夋潵婧愬簱瀛樺綊灞炵墿鏂欎笌褰撳墠閫�璐х墿鏂欎笉涓�鑷达紝璇烽噸鏂伴�夋嫨鏉ユ簮搴撳瓨");
             }
             // 鏍¢獙搴撳瓨鏁伴噺鍏呰冻
             if (reqVO.getQuantity() != null && stock.getQuantity() != null

--
Gitblit v1.9.3