From 1c1daebcb9f89138a84e9a7643d1909bb1a5a342 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 14 七月 2026 10:27:31 +0800
Subject: [PATCH] 1.仓储物流-自定义出入库分别新增接口

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java |   35 ++++++++++++++++++++++++-----------
 1 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java
index 5c9f684..b167ca2 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/materialstock/MesWmMaterialStockServiceImpl.java
@@ -243,22 +243,31 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Long adjustMaterialStock(MesWmMaterialStockAdjustReqVO reqVO) {
+    public Long adjustMaterialStockIn(MesWmMaterialStockAdjustReqVO reqVO) {
+        return doAdjustMaterialStock(reqVO, true);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long adjustMaterialStockOut(MesWmMaterialStockAdjustReqVO reqVO) {
+        return doAdjustMaterialStock(reqVO, false);
+    }
+
+    /**
+     * 鎵ц搴撳瓨璋冩暣
+     *
+     * @param reqVO     璋冩暣璇锋眰
+     * @param isInbound 鏄惁涓哄叆搴擄紙true=鍏ュ簱锛宖alse=鍑哄簱锛�
+     * @return 搴撳瓨璁板綍ID
+     */
+    private Long doAdjustMaterialStock(MesWmMaterialStockAdjustReqVO reqVO, boolean isInbound) {
         // 1. 鏍¢獙鐗╂枡瀛樺湪涓斿惎鐢�
         MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(reqVO.getItemId());
 
-        // 2. 鍒ゆ柇鏄叆搴撹繕鏄嚭搴�
-        BigDecimal quantity = reqVO.getQuantity();
-        if (quantity == null || quantity.compareTo(BigDecimal.ZERO) == 0) {
-            throw exception(WM_MATERIAL_STOCK_QUANTITY_INVALID);
-        }
-        boolean isInbound = quantity.compareTo(BigDecimal.ZERO) > 0;
-        int bizType = isInbound ? MesBizTypeConstants.WM_STOCK_ADJUST_IN : MesBizTypeConstants.WM_STOCK_ADJUST_OUT;
-
-        // 3. 鏍¢獙搴撲綅娣锋斁瑙勫垯
+        // 2. 鏍¢獙搴撲綅娣锋斁瑙勫垯
         checkAreaMixingRule(reqVO.getAreaId(), reqVO.getItemId(), reqVO.getBatchId());
 
-        // 4. 鑾峰彇鎴栧垱寤哄簱瀛樿褰�
+        // 3. 鑾峰彇鎴栧垱寤哄簱瀛樿褰�
         MesWmMaterialStockDO stock = getOrCreateMaterialStock(
                 reqVO.getItemId(),
                 reqVO.getWarehouseId(),
@@ -270,10 +279,14 @@
                 LocalDateTime.now()
         );
 
+        // 4. 璁$畻鍙樺姩鏁伴噺锛氬叆搴撲负姝o紝鍑哄簱涓鸿礋
+        BigDecimal quantity = isInbound ? reqVO.getQuantity() : reqVO.getQuantity().negate();
+
         // 5. 鏇存柊搴撳瓨鏁伴噺锛堝嚭搴撴椂鏍¢獙搴撳瓨鍏呰冻锛�
         updateMaterialStockQuantity(stock.getId(), quantity, !isInbound);
 
         // 6. 鍒涘缓搴撳瓨浜嬪姟娴佹按
+        int bizType = isInbound ? MesBizTypeConstants.WM_STOCK_ADJUST_IN : MesBizTypeConstants.WM_STOCK_ADJUST_OUT;
         MesWmTransactionSaveReqDTO transaction = new MesWmTransactionSaveReqDTO()
                 .setType(isInbound ? MesWmTransactionTypeEnum.IN.getType() : MesWmTransactionTypeEnum.OUT.getType())
                 .setBizType(bizType)

--
Gitblit v1.9.3