From d6388d041cc58b9f2be3ddcddfb6042e7af094f7 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 11 五月 2026 10:11:00 +0800
Subject: [PATCH] fix(stock): 修复库存盘点计划中的出入库记录类型错误

---
 src/main/java/com/ruoyi/stock/service/StockInventoryService.java                   |    5 ++++-
 src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java                     |    2 ++
 src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java |   13 +++++++------
 src/main/resources/mapper/stock/StockInventoryMapper.xml                           |   11 +++++++++++
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java                    |    2 +-
 src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java          |   12 +++++++++---
 6 files changed, 34 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index 5ae608e..41877a6 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -123,7 +123,7 @@
         stockInventoryDto.setQualitity(quantity);
         stockInventoryDto.setProductModelId(productModelId);
         stockInventoryDto.setBatchNo(batchNo);
-       return stockInventoryService.subtractStockInventory(stockInventoryDto);
+       return stockInventoryService.addStockOutRecordOnly(stockInventoryDto);
     }
 
     //涓嶅悎鏍煎簱瀛樺垹闄�
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
index c5827e2..912dae1 100644
--- a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
+++ b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
@@ -60,4 +60,6 @@
     List<StockInventoryDto> selectStockInvenrory(Long productModelId);
 
     IPage<StockInventoryDto> pagestockInventoryNoQua(Page page, @Param("ew") StockInventoryDto stockInventoryDto);
+
+    int updateLocked(@Param("productModelId") Long productModelId, @Param("batchNo") String batchNo, @Param("locked") boolean b);
 }
diff --git a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
index cb81339..89da581 100644
--- a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -9,6 +9,7 @@
 import com.ruoyi.stock.dto.StockOutRecordDto;
 import com.ruoyi.stock.pojo.StockInventory;
 import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotBlank;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -33,7 +34,7 @@
 
     StockInRecordDto addStockInRecordOnly(StockInventoryDto stockInventoryDto);
 
-    Boolean addStockOutRecordOnly(StockInventoryDto stockInventoryDto);
+    StockOutRecordDto addStockOutRecordOnly(StockInventoryDto stockInventoryDto);
 
     R importStockInventory(MultipartFile file);
 
@@ -52,4 +53,6 @@
     List<StockInventoryDto> selectStockInvenrory(Long productModelId);
 
     IPage<StockInventoryDto> pagestockInventoryNoQua(Page page, StockInventoryDto stockInventoryDto);
+
+    boolean updateLocked(@NotBlank(message = "涓嶈兘涓虹┖") Long productModelId, String batchNo, boolean b);
 }
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
index 698c0a8..aad5c20 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
@@ -129,17 +129,18 @@
             stockInventoryDto.setRecordId(stockInventoryCheckPlanDto.getId());
 
             if (item.getDifferenceQuantity().compareTo(BigDecimal.ZERO) > 0) {
-                stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_OUT.getCode());
-                StockInRecordDto stockInRecordDto = stockUtils.addStockWithBatchNo(stockInventoryDto.getProductModelId(), stockInventoryDto.getQualitity(), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo());
+                stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_IN.getCode());
+                StockInRecordDto stockInRecordDto = stockUtils.addStockWithBatchNo(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs (), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo());
                 //鐩存帴瀹℃牳閫氳繃
                 stockInRecordService.batchApprove(Collections.singletonList(stockInRecordDto.getId()), 1);
             }else {
-                stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_IN.getCode());
-                StockOutRecordDto stockOutRecordDto = stockUtils.substractStock(stockInventoryDto.getProductModelId(), stockInventoryDto.getQualitity(), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo());
+                stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_OUT.getCode());
+                StockOutRecordDto stock = stockUtils.substractStock(stockInventoryDto.getProductModelId(), item.getDifferenceQuantity().abs(), stockInventoryDto.getRecordType(), stockInventoryDto.getRecordId(), stockInventoryDto.getBatchNo());
                 //鐩存帴瀹℃牳閫氳繃
-                stockOutRecordService.batchApprove(Collections.singletonList(stockOutRecordDto.getId()), 1);
-
+                stockOutRecordService.batchApprove(Collections.singletonList(stock.getId()), 1);
             }
+            //鏇存柊搴撳瓨閿佸畾鐘舵��
+            stockInventoryService.updateLocked(stockInventoryDto.getProductModelId(),stockInventoryDto.getBatchNo(), true);
         }
         stockInventoryCheckItemMapper.updateById(stockInventoryCheckPlanDto.getCheckItems());
         plan.setStatus(2);
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
index 316029b..0622294 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -254,7 +254,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean addStockOutRecordOnly(StockInventoryDto stockInventoryDto) {
+    public StockOutRecordDto addStockOutRecordOnly(StockInventoryDto stockInventoryDto) {
         LambdaQueryWrapper<StockInventory> eq = new LambdaQueryWrapper<>();
         eq.eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId());
         if (StringUtils.isEmpty(stockInventoryDto.getBatchNo())) {
@@ -290,8 +290,9 @@
         stockOutRecordDto.setProductModelId(stockInventoryDto.getProductModelId());
         stockOutRecordDto.setType("0");
         stockOutRecordDto.setRemark(stockInventoryDto.getRemark());
-        stockOutRecordService.add(stockOutRecordDto);
-        return true;
+        Long add = stockOutRecordService.add(stockOutRecordDto);
+        stockInventoryDto.setId(add);
+        return stockOutRecordDto;
     }
 
     @Override
@@ -448,4 +449,9 @@
     public IPage<StockInventoryDto> pagestockInventoryNoQua(Page page, StockInventoryDto stockInventoryDto) {
         return stockInventoryMapper.pagestockInventoryNoQua(page, stockInventoryDto);
     }
+
+    @Override
+    public boolean updateLocked(Long productModelId, String batchNo, boolean b) {
+        return stockInventoryMapper.updateLocked(productModelId, batchNo, b) > 0;
+    }
 }
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index e8473ca..65c1c41 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -63,6 +63,17 @@
                 and batch_no = #{ew.batchNo}
             </if>
     </update>
+    <update id="updateLocked">
+        update stock_inventory
+        set locked = #{locked}
+        where product_model_id = #{ew.productModelId}
+        <if test="batchNo == null">
+            and batch_no is null
+        </if>
+            <if test="batchNo != null">
+                and batch_no = #{ew.batchNo}
+            </if>
+    </update>
     <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
         select si.id,
         si.qualitity,

--
Gitblit v1.9.3