From 0f792c9b3b88dc4b1b7b306f89e257d931d2d0bd Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期六, 18 七月 2026 15:38:57 +0800
Subject: [PATCH] 代码提交

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueDetailServiceImpl.java |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 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 885df10..fec1bfe 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
@@ -6,6 +6,7 @@
 import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.detail.MesWmReturnIssueDetailSaveReqVO;
 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.mysql.wm.returnissue.MesWmReturnIssueDetailMapper;
 import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
@@ -111,15 +112,27 @@
         if (ObjUtil.notEqual(line.getItemId(), reqVO.getItemId())) {
             throw exception(WM_RETURN_ISSUE_DETAIL_ITEM_MISMATCH);
         }
-        // 鏍¢獙浠撳簱銆佸簱鍖恒�佸簱浣嶇殑鍏宠仈鍏崇郴
+        // 鏍¢獙涓婃灦鐩爣浠撳簱銆佸簱鍖恒�佸簱浣嶇殑鍏宠仈鍏崇郴
         warehouseAreaService.validateWarehouseAreaExists(
                 reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId());
-        // 鏍¢獙搴撲綅鐗╂枡/鎵规娣锋斁瑙勫垯
+        // 鏍¢獙涓婃灦鐩爣搴撲綅鐨勭墿鏂�/鎵规娣锋斁瑙勫垯
         materialStockService.checkAreaMixingRule(reqVO.getAreaId(), reqVO.getItemId(), reqVO.getBatchId());
-        // 鏍¢獙搴撳瓨璁板綍
-        materialStockService.validateSelectedStock(
-                reqVO.getMaterialStockId(), reqVO.getItemId(), reqVO.getBatchId(), reqVO.getBatchCode(),
-                reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId(), reqVO.getQuantity());
+        // 鏍¢獙鏉ユ簮搴撳瓨璁板綍锛坢aterialStockId 鎸囧悜铏氭嫙绾胯竟搴擄紝warehouseId 鏄笂鏋剁洰鏍囦粨搴擄紝涓よ�呬粨搴撲笉鍚屾槸姝e父鐨勶級
+        if (reqVO.getMaterialStockId() != null) {
+            MesWmMaterialStockDO stock = materialStockService.getMaterialStock(reqVO.getMaterialStockId());
+            if (stock == null) {
+                throw exception(WM_MATERIAL_STOCK_NOT_EXISTS);
+            }
+            // 鏍¢獙鐗╂枡鍜屾壒娆′竴鑷�
+            if (ObjUtil.notEqual(stock.getItemId(), reqVO.getItemId())) {
+                throw exception(WM_MATERIAL_STOCK_SELECTION_MISMATCH);
+            }
+            // 鏍¢獙搴撳瓨鏁伴噺鍏呰冻
+            if (reqVO.getQuantity() != null && stock.getQuantity() != null
+                    && stock.getQuantity().compareTo(reqVO.getQuantity()) < 0) {
+                throw exception(WM_MATERIAL_STOCK_INSUFFICIENT);
+            }
+        }
         // 鏍¢獙鏄庣粏鎬绘暟閲忎笉瓒呰繃琛屾暟閲忥紙鎺掗櫎鑷韩锛�
         validateDetailQuantityNotExceed(reqVO.getLineId(), reqVO.getQuantity(), reqVO.getId(), line);
     }

--
Gitblit v1.9.3