From 802796c22d7d21a6d572cd4c11844e6865521666 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 22 六月 2026 11:53:05 +0800
Subject: [PATCH] 新增库存,采购入库关联供应商,外协入库关联厂家
---
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java | 70 ++++++++++++++++++++++++----------
1 files changed, 49 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 9648ee1..a38d31e 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -31,6 +31,7 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -99,28 +100,20 @@
public Integer addStockUninventory(StockUninventoryDto stockUninventoryDto) {
String inventoryType = resolveInventoryType(stockUninventoryDto);
stockUninventoryDto.setType(inventoryType);
- LambdaQueryWrapper<StockUninventory> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId());
- wrapper.eq(StockUninventory::getType, inventoryType);
- if (StringUtils.isEmpty(stockUninventoryDto.getBatchNo())) {
- stockUninventoryDto.setBatchNo(null);
- wrapper.isNull(StockUninventory::getBatchNo);
- } else {
- wrapper.eq(StockUninventory::getBatchNo, stockUninventoryDto.getBatchNo());
- }
+ String batchNo = resolveOrGenerateBatchNo(stockUninventoryDto.getBatchNo(), stockUninventoryDto.getProductModelId());
+ stockUninventoryDto.setBatchNo(batchNo);
//鏂板鍏ュ簱璁板綍鍐嶆坊鍔犲簱瀛�
StockInRecordDto stockInRecordDto = new StockInRecordDto();
stockInRecordDto.setRecordId(stockUninventoryDto.getRecordId());
stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType());
stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity());
- stockInRecordDto.setBatchNo(stockUninventoryDto.getBatchNo());
+ stockInRecordDto.setBatchNo(batchNo);
stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
if (UNQUALIFIED_TYPE.equals(inventoryType)) {
stockInRecordDto.setType("1");
} else {
stockInRecordDto.setType("2");
}
- stockInRecordDto.setManufacturerId(stockUninventoryDto.getManufacturerId());
stockInRecordDto.setSource(stockUninventoryDto.getSource());
stockInRecordService.add(stockInRecordDto);
//瀹℃壒鍐嶆坊鍔�
@@ -132,6 +125,8 @@
public Integer subtractStockUninventory(StockUninventoryDto stockUninventoryDto) {
String inventoryType = resolveInventoryType(stockUninventoryDto);
stockUninventoryDto.setType(inventoryType);
+ String batchNo = resolveOutboundBatchNo(stockUninventoryDto.getProductModelId(), inventoryType, stockUninventoryDto.getBatchNo());
+ stockUninventoryDto.setBatchNo(batchNo);
// 鏂板鍑哄簱璁板綍
StockOutRecordDto stockOutRecordDto = new StockOutRecordDto();
@@ -139,12 +134,18 @@
stockOutRecordDto.setRecordType(stockUninventoryDto.getRecordType());
stockOutRecordDto.setStockOutNum(stockUninventoryDto.getQualitity());
stockOutRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
- stockOutRecordDto.setBatchNo(stockUninventoryDto.getBatchNo());
+ stockOutRecordDto.setBatchNo(batchNo);
stockOutRecordDto.setType("1");
stockOutRecordService.add(stockOutRecordDto);
- StockUninventory oldStockInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda()
+ LambdaQueryWrapper<StockUninventory> queryWrapper = new QueryWrapper<StockUninventory>().lambda()
.eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId())
- .eq(StockUninventory::getType, inventoryType));
+ .eq(StockUninventory::getType, inventoryType);
+ if (StringUtils.isEmpty(batchNo)) {
+ queryWrapper.isNull(StockUninventory::getBatchNo);
+ } else {
+ queryWrapper.eq(StockUninventory::getBatchNo, batchNo);
+ }
+ StockUninventory oldStockInventory = stockUninventoryMapper.selectOne(queryWrapper);
if (ObjectUtils.isEmpty(oldStockInventory)) {
throw new RuntimeException("浜у搧搴撳瓨涓嶅瓨鍦�");
}else {
@@ -162,10 +163,7 @@
stockInRecordDto.setRecordId(stockUninventoryDto.getRecordId());
stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType());
stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity());
- String batchNo = StringUtils.trim(stockUninventoryDto.getBatchNo());
- if (StringUtils.isEmpty(batchNo)) {
- batchNo = generateAutoBatchNo(stockUninventoryDto.getProductModelId());
- }
+ String batchNo = resolveOrGenerateBatchNo(stockUninventoryDto.getBatchNo(), stockUninventoryDto.getProductModelId());
stockInRecordDto.setBatchNo(batchNo);
stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
if (UNQUALIFIED_TYPE.equals(inventoryType)) {
@@ -174,6 +172,7 @@
stockInRecordDto.setType("2");
}
stockInRecordDto.setRemark(stockUninventoryDto.getRemark());
+ stockInRecordDto.setSource(stockUninventoryDto.getSource());
stockInRecordService.add(stockInRecordDto);
return 1;
}
@@ -183,13 +182,15 @@
public Integer addStockOutRecordOnly(StockUninventoryDto stockUninventoryDto) {
String inventoryType = resolveInventoryType(stockUninventoryDto);
stockUninventoryDto.setType(inventoryType);
+ String batchNo = resolveOutboundBatchNo(stockUninventoryDto.getProductModelId(), inventoryType, stockUninventoryDto.getBatchNo());
+ stockUninventoryDto.setBatchNo(batchNo);
LambdaQueryWrapper<StockUninventory> eq = new LambdaQueryWrapper<>();
eq.eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId());
eq.eq(StockUninventory::getType, inventoryType);
- if (StringUtils.isEmpty(stockUninventoryDto.getBatchNo())) {
+ if (StringUtils.isEmpty(batchNo)) {
eq.isNull(StockUninventory::getBatchNo);
} else {
- eq.eq(StockUninventory::getBatchNo, stockUninventoryDto.getBatchNo());
+ eq.eq(StockUninventory::getBatchNo, batchNo);
}
StockUninventory stockUninventory = stockUninventoryMapper.selectOne(eq);
if (stockUninventory == null) {
@@ -215,7 +216,7 @@
stockOutRecordDto.setRecordId(stockUninventoryDto.getRecordId());
stockOutRecordDto.setRecordType(stockUninventoryDto.getRecordType());
stockOutRecordDto.setStockOutNum(stockUninventoryDto.getQualitity());
- stockOutRecordDto.setBatchNo(stockUninventoryDto.getBatchNo());
+ stockOutRecordDto.setBatchNo(batchNo);
stockOutRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
stockOutRecordDto.setType("1");
stockOutRecordDto.setRemark(stockUninventoryDto.getRemark());
@@ -332,6 +333,33 @@
return maxSequence;
}
+ private String resolveOrGenerateBatchNo(String batchNo, Long productModelId) {
+ String normalizedBatchNo = StringUtils.trim(batchNo);
+ if (StringUtils.isNotEmpty(normalizedBatchNo)) {
+ return normalizedBatchNo;
+ }
+ return generateAutoBatchNo(productModelId);
+ }
+
+ private String resolveOutboundBatchNo(Long productModelId, String inventoryType, String batchNo) {
+ String normalizedBatchNo = StringUtils.trim(batchNo);
+ if (StringUtils.isNotEmpty(normalizedBatchNo)) {
+ return normalizedBatchNo;
+ }
+ List<StockUninventory> stockUninventoryList = stockUninventoryMapper.selectList(
+ Wrappers.<StockUninventory>lambdaQuery()
+ .eq(StockUninventory::getProductModelId, productModelId)
+ .eq(StockUninventory::getType, inventoryType)
+ .orderByDesc(StockUninventory::getId));
+ if (CollectionUtils.isEmpty(stockUninventoryList)) {
+ throw new BaseException("搴撳瓨璁板綍涓嶅瓨鍦�");
+ }
+ if (stockUninventoryList.size() == 1) {
+ return stockUninventoryList.get(0).getBatchNo();
+ }
+ throw new BaseException("褰撳墠浜у搧瑙勬牸瀛樺湪澶氫釜鎵规锛岃鍏堥�夋嫨鎵瑰彿鍚庡啀鍑哄簱");
+ }
+
private int parseSequence(String batchNo, String prefix) {
if (StringUtils.isEmpty(batchNo) || StringUtils.isEmpty(prefix) || !batchNo.startsWith(prefix)) {
return 0;
--
Gitblit v1.9.3