From 67fd075db23af8c66af86a291cd83863794aaf86 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 11 五月 2026 12:00:59 +0800
Subject: [PATCH] fix(stock): 解决库存盘点期间出入库操作冲突问题

---
 src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java |    2 +-
 src/main/resources/mapper/stock/StockInventoryMapper.xml                           |    6 +++---
 src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java          |    3 +++
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java           |    8 ++++++--
 4 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index c00681c..ff25350 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -5,8 +5,9 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.enums.ReviewStatusEnum;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
 import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.EnumUtil;
 import com.ruoyi.common.utils.OrderUtils;
@@ -24,12 +25,12 @@
 import com.ruoyi.stock.pojo.StockInventory;
 import com.ruoyi.stock.pojo.StockUninventory;
 import com.ruoyi.stock.service.StockInRecordService;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import jakarta.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @Service
@@ -192,6 +193,9 @@
                 if ("0".equals(stockInRecord.getType())) {
                     // 鍚堟牸鍏ュ簱 -> 鍏堟煡搴撳瓨锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
                     StockInventory stockInventory = getStockInventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo());
+                    if (stockInventory.getLocked().equals( true)&&!stockInRecord.getRecordType().equals(StockInQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_IN.getCode())) {
+                        throw new BaseException("姝e湪搴撳瓨鐩樼偣,鏃犳硶鍏ュ簱,鍏ュ簱鎵规:" + stockInRecord.getInboundBatches());
+                    }
                     StockInventoryDto stockInventoryDto = new StockInventoryDto();
                     stockInventoryDto.setProductModelId(stockInRecord.getProductModelId());
                     stockInventoryDto.setBatchNo(stockInRecord.getBatchNo());
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 aad5c20..51021a7 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryCheckPlanServiceImpl.java
@@ -140,7 +140,7 @@
                 stockOutRecordService.batchApprove(Collections.singletonList(stock.getId()), 1);
             }
             //鏇存柊搴撳瓨閿佸畾鐘舵��
-            stockInventoryService.updateLocked(stockInventoryDto.getProductModelId(),stockInventoryDto.getBatchNo(), true);
+            stockInventoryService.updateLocked(stockInventoryDto.getProductModelId(),stockInventoryDto.getBatchNo(), false);
         }
         stockInventoryCheckItemMapper.updateById(stockInventoryCheckPlanDto.getCheckItems());
         plan.setStatus(2);
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
index 268a081..5ba536c 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -177,6 +177,9 @@
                     if (stockInventory == null) {
                         throw new BaseException("鍚堟牸搴撳瓨璁板綍涓嶅瓨鍦�,鍑哄簱鎵规:" + stockOutRecord.getOutboundBatches());
                     }
+                    if (stockInventory.getLocked().equals( true)&&!stockOutRecord.getRecordType().equals(StockOutQualifiedRecordTypeEnum.INVENTORY_CHECK_STOCK_OUT.getCode())) {
+                        throw new BaseException("姝e湪搴撳瓨鐩樼偣,鏃犳硶鍑哄簱,鍑哄簱鎵规:" + stockOutRecord.getOutboundBatches());
+                    }
                     StockInventoryDto stockInventoryDto = new StockInventoryDto();
                     stockInventoryDto.setProductModelId(stockOutRecord.getProductModelId());
                     stockInventoryDto.setBatchNo(stockOutRecord.getBatchNo());
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 65c1c41..a71dcf6 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -66,12 +66,12 @@
     <update id="updateLocked">
         update stock_inventory
         set locked = #{locked}
-        where product_model_id = #{ew.productModelId}
+        where product_model_id = #{productModelId}
         <if test="batchNo == null">
             and batch_no is null
         </if>
             <if test="batchNo != null">
-                and batch_no = #{ew.batchNo}
+                and batch_no = #{batchNo}
             </if>
     </update>
     <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
@@ -487,7 +487,7 @@
         from stock_inventory si
         left join product_model pm on si.product_model_id = pm.id
         left join product p on pm.product_id = p.id
-        where 1 = 1
+        where 1 = 1 and si.locked = 0
         <if test="ew.productName != null and ew.productName !=''">
             and p.product_name like concat('%',#{ew.productName},'%')
         </if>

--
Gitblit v1.9.3