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/transaction/MesWmTransactionServiceImpl.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/transaction/MesWmTransactionServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
index 9459550..17d0dc8 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/transaction/MesWmTransactionServiceImpl.java
@@ -77,9 +77,12 @@
         // 1.5 鍏宠仈浜嬪姟鏍¢獙
         checkRelatedTransaction(reqDTO);
 
-        // 2.1 鑾峰彇鎴栧垱寤哄簱瀛樿褰曪紙濡傛灉浼犲叆浜� materialStockId 鍒欑洿鎺ヤ娇鐢紝閬垮厤閲嶆柊鍖归厤锛�
+        // 2.1 鑾峰彇搴撳瓨璁板綍
         MesWmMaterialStockDO materialStock;
+        MesWmTransactionTypeEnum transactionType = MesWmTransactionTypeEnum.valueOf(reqDTO.getType());
+        boolean isInbound = transactionType != null && transactionType.isInbound();
         if (reqDTO.getMaterialStockId() != null) {
+            // 浼犲叆浜� materialStockId锛岀洿鎺ヤ娇鐢�
             materialStock = materialStockService.getMaterialStock(reqDTO.getMaterialStockId());
             if (materialStock == null) {
                 throw exception(WM_MATERIAL_STOCK_NOT_EXISTS);
@@ -91,10 +94,22 @@
                     || ObjUtil.notEqual(materialStock.getAreaId(), reqDTO.getAreaId())) {
                 throw exception(WM_MATERIAL_STOCK_SELECTION_MISMATCH);
             }
-        } else {
+        } else if (isInbound) {
+            // 鍏ュ簱浜嬪姟锛氭壘涓嶅埌鍒欒嚜鍔ㄥ垱寤哄簱瀛樿褰�
             materialStock = materialStockService.getOrCreateMaterialStock(
                     reqDTO.getItemId(), reqDTO.getWarehouseId(), reqDTO.getLocationId(), reqDTO.getAreaId(),
                     reqDTO.getBatchId(), reqDTO.getBatchCode(), reqDTO.getVendorId(), reqDTO.getReceiptTime());
+        } else {
+            // 鍑哄簱浜嬪姟锛氬簱瀛樿褰曞繀椤诲凡瀛樺湪锛屼笉鍏佽鑷姩鍒涘缓
+            materialStock = materialStockService.getMaterialStockByCompositeKey(
+                    reqDTO.getItemId(), reqDTO.getWarehouseId(), reqDTO.getLocationId(), reqDTO.getAreaId(),
+                    reqDTO.getBatchId(), reqDTO.getVendorId());
+            if (materialStock == null) {
+                throw exception(WM_MATERIAL_STOCK_NOT_EXISTS);
+            }
+        }
+        if (materialStock == null || materialStock.getId() == null) {
+            throw exception(WM_MATERIAL_STOCK_NOT_EXISTS);
         }
         // 2.2 鍐荤粨鏍¢獙锛堜粨搴撱�佸簱鍖恒�佸簱浣嶃�佸簱瀛樿褰曪級
         checkFrozen(reqDTO, materialStock);

--
Gitblit v1.9.3