From b5f260b2364fad1e74a7eb1f5985268056e3a9e7 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期五, 24 四月 2026 18:24:15 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New_pro
---
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 41 ++++++++++++++++++++++++++++++++---------
1 files changed, 32 insertions(+), 9 deletions(-)
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 d7a1fcb..e3c88e5 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.stock.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -8,6 +9,7 @@
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
@@ -66,23 +68,33 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addstockInventory(StockInventoryDto stockInventoryDto) {
+ LambdaQueryWrapper<StockInventory> eq = new QueryWrapper<StockInventory>().lambda()
+ .eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId());
+ if (StringUtils.isEmpty(stockInventoryDto.getBatchNo())) {
+ eq.isNull(StockInventory::getBatchNo);
+ stockInventoryDto.setBatchNo(null);
+ } else {
+ eq.eq(StockInventory::getBatchNo, stockInventoryDto.getBatchNo());
+ }
//鏂板鍏ュ簱璁板綍鍐嶆坊鍔犲簱瀛�
StockInRecordDto stockInRecordDto = new StockInRecordDto();
stockInRecordDto.setRecordId(stockInventoryDto.getRecordId());
stockInRecordDto.setRecordType(stockInventoryDto.getRecordType());
stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity());
+ stockInRecordDto.setBatchNo(stockInventoryDto.getBatchNo());
stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId());
stockInRecordDto.setType("0");
stockInRecordService.add(stockInRecordDto);
//鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
//鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
- StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId()));
+ StockInventory oldStockInventory = stockInventoryMapper.selectOne(eq);
if (ObjectUtils.isEmpty(oldStockInventory)) {
StockInventory newStockInventory = new StockInventory();
newStockInventory.setProductModelId(stockInventoryDto.getProductModelId());
newStockInventory.setQualitity(stockInventoryDto.getQualitity());
newStockInventory.setVersion(1);
newStockInventory.setRemark(stockInventoryDto.getRemark());
+ newStockInventory.setBatchNo(stockInventoryDto.getBatchNo());
newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
newStockInventory.setWarnNum(stockInventoryDto.getWarnNum());
stockInventoryMapper.insert(newStockInventory);
@@ -96,15 +108,26 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean subtractStockInventory(StockInventoryDto stockInventoryDto) {
+ LambdaQueryWrapper<StockInventory> eq = new QueryWrapper<StockInventory>().lambda()
+ .eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId());
+ if (StringUtils.isEmpty(stockInventoryDto.getBatchNo())) {
+ eq.isNull(StockInventory::getBatchNo);
+ stockInventoryDto.setBatchNo(null);
+ } else {
+ eq.eq(StockInventory::getBatchNo, stockInventoryDto.getBatchNo());
+ }
// 鏂板鍑哄簱璁板綍
StockOutRecordDto stockOutRecordDto = new StockOutRecordDto();
stockOutRecordDto.setRecordId(stockInventoryDto.getRecordId());
stockOutRecordDto.setRecordType(stockInventoryDto.getRecordType());
stockOutRecordDto.setStockOutNum(stockInventoryDto.getQualitity());
+ stockOutRecordDto.setBatchNo(stockInventoryDto.getBatchNo());
stockOutRecordDto.setProductModelId(stockInventoryDto.getProductModelId());
stockOutRecordDto.setType("0");
stockOutRecordService.add(stockOutRecordDto);
- StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId()));
+
+
+ StockInventory oldStockInventory = stockInventoryMapper.selectOne(eq);
if (ObjectUtils.isEmpty(oldStockInventory)) {
throw new RuntimeException("浜у搧搴撳瓨涓嶅瓨鍦�");
}
@@ -145,7 +168,7 @@
// 鏋勫缓鏌ユ壘閿�
String key = dto.getProductName() + "|" + dto.getModel();
SalesLedgerProduct matchedProduct = productMap.get(key);
-
+
if (matchedProduct != null) {
// 澶勭悊鍚堟牸搴撳瓨
if (dto.getQualifiedQuantity() != null && dto.getQualifiedQuantity().compareTo(BigDecimal.ZERO) > 0) {
@@ -155,7 +178,7 @@
stockInventoryDto.setQualitity(dto.getQualifiedQuantity());
stockInventoryDto.setRemark(dto.getRemark());
stockInventoryDto.setWarnNum(dto.getWarnNum());
-
+
// 楠岃瘉鍚堟牸鍐荤粨鏁伴噺
if (ObjectUtils.isNotEmpty(dto.getQualifiedLockedQuantity())) {
if (dto.getQualifiedLockedQuantity().compareTo(dto.getQualifiedQuantity()) > 0) {
@@ -165,7 +188,7 @@
} else {
stockInventoryDto.setLockedQuantity(BigDecimal.ZERO);
}
-
+
stockInventoryDto.setProductModelId(matchedProduct.getProductModelId());
this.addstockInventory(stockInventoryDto);
successCount++;
@@ -178,7 +201,7 @@
stockUninventoryDto.setRecordType(StockInUnQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_IN.getCode());
stockUninventoryDto.setQualitity(dto.getUnQualifiedQuantity());
stockUninventoryDto.setRemark(dto.getRemark());
-
+
// 楠岃瘉涓嶅悎鏍煎喕缁撴暟閲�
if (ObjectUtils.isNotEmpty(dto.getUnQualifiedLockedQuantity())) {
if (dto.getUnQualifiedLockedQuantity().compareTo(dto.getUnQualifiedQuantity()) > 0) {
@@ -199,7 +222,7 @@
unmatchedRecords.add(unmatchedRecord);
}
}
-
+
// 鏋勫缓杩斿洖淇℃伅
StringBuilder message = new StringBuilder();
if (!unmatchedRecords.isEmpty()) {
@@ -209,7 +232,7 @@
}
return R.ok(message.toString());
}
-
+
return R.ok("瀵煎叆鎴愬姛锛屽叡澶勭悊 " + successCount + " 鏉¤褰�");
} catch (Exception e) {
log.error("瀵煎叆搴撳瓨澶辫触", e);
@@ -259,4 +282,4 @@
stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity()));
return this.updateById(stockInventory);
}
-}
\ No newline at end of file
+}
--
Gitblit v1.9.3