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