From 022c6d77a5c49aacd85f32cfb7af25417b82dafa Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期五, 24 四月 2026 15:29:14 +0800
Subject: [PATCH] feat(stock): 增加库存批号字段支持
---
src/main/java/com/ruoyi/stock/pojo/StockInventory.java | 3 +
src/main/java/com/ruoyi/stock/pojo/StockInRecord.java | 3 +
src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java | 15 ++++
src/main/resources/mapper/stock/StockInventoryMapper.xml | 19 +++++
src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java | 21 ++++++
src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java | 3 +
src/main/resources/mapper/stock/StockUninventoryMapper.xml | 16 +++++
src/main/java/com/ruoyi/stock/pojo/StockUninventory.java | 3 +
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java | 21 ++++++
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 41 ++++++++++---
10 files changed, 128 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
index 8c4f036..370eeed 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
@@ -27,6 +27,9 @@
@Schema(description = "鍏ュ簱鏁伴噺")
private BigDecimal stockInNum;
+ @Schema(description = "鎵瑰彿")
+ private String batchNo;
+
@Schema(description = "璁板綍绫诲瀷 鏋氫妇")
private String recordType;
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
index b1a6a7d..5652ec7 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -37,6 +37,9 @@
@NotBlank(message = "涓嶈兘涓虹┖")
private Long productModelId;
+ @Schema(description = "鎵瑰彿")
+ private String batchNo;
+
@Schema(description = "鏁伴噺")
private BigDecimal qualitity;
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
index a47cb19..9d25895 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
@@ -33,6 +33,9 @@
@Schema(description = "鍏ュ簱鎵规")
private String outboundBatches;
+ @Schema(description = "鎵瑰彿")
+ private String batchNo;
+
@Schema(description = "鍏ュ簱鏁伴噺")
private BigDecimal stockOutNum;
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
index 4e1e0f5..6272c2a 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
@@ -35,6 +35,9 @@
@Schema(description = "瑙勬牸id")
private Long productModelId;
+ @Schema(description = "鎵瑰彿")
+ private String batchNo;
+
@Schema(description = "鏁伴噺")
private BigDecimal qualitity;
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 8dae966..ef5e170 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.EnumUtil;
import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.stock.dto.StockInRecordDto;
@@ -73,22 +74,38 @@
for (Long id : ids) {
StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
if (stockInRecord.getType().equals("0")) {
- StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, stockInRecord.getProductModelId()));
+ LambdaQueryWrapper<StockInventory> eq = new LambdaQueryWrapper<StockInventory>()
+ .eq(StockInventory::getProductModelId, stockInRecord.getProductModelId());
+ if (StringUtils.isEmpty(stockInRecord.getBatchNo())) {
+ eq.isNull(StockInventory::getBatchNo);
+ } else {
+ eq.eq(StockInventory::getBatchNo, stockInRecord.getBatchNo());
+ }
+ StockInventory stockInventory = stockInventoryMapper.selectOne(eq);
if (stockInventory == null) {
throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧,鏃犳硶鍒犻櫎!!!");
}else {
StockInventoryDto stockInRecordDto = new StockInventoryDto();
stockInRecordDto.setProductModelId(stockInventory.getProductModelId());
+ stockInRecordDto.setBatchNo(stockInventory.getBatchNo());
stockInRecordDto.setQualitity(stockInRecord.getStockInNum());
stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto);
}
}else if (stockInRecord.getType().equals("1")) {
- StockUninventory stockUninventory = stockUninventoryMapper.selectOne(new LambdaQueryWrapper<StockUninventory>().eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId()));
+ LambdaQueryWrapper<StockUninventory> eq = new LambdaQueryWrapper<StockUninventory>()
+ .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId());
+ if (StringUtils.isEmpty(stockInRecord.getBatchNo())) {
+ eq.isNull(StockUninventory::getBatchNo);
+ } else {
+ eq.eq(StockUninventory::getBatchNo, stockInRecord.getBatchNo());
+ }
+ StockUninventory stockUninventory = stockUninventoryMapper.selectOne(eq);
if (stockUninventory == null) {
throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧,鏃犳硶鍒犻櫎!!!");
}else {
StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
stockUninventoryDto.setProductModelId(stockUninventory.getProductModelId());
+ stockUninventoryDto.setBatchNo(stockUninventory.getBatchNo());
stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
stockUninventoryMapper.updateSubtractStockUnInventory(stockUninventoryDto);
}
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
+}
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 c24da34..a28969c 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.EnumUtil;
import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.stock.dto.StockInventoryDto;
@@ -76,23 +77,39 @@
for (Long id : ids) {
StockOutRecord stockOutRecord = stockOutRecordMapper.selectById(id);
if (stockOutRecord.getType().equals("0")) {
- StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, stockOutRecord.getProductModelId()));
+ LambdaQueryWrapper<StockInventory> wrapper = new LambdaQueryWrapper<StockInventory>()
+ .eq(StockInventory::getProductModelId, stockOutRecord.getProductModelId());
+ if (StringUtils.isEmpty(stockOutRecord.getBatchNo())) {
+ wrapper.isNull(StockInventory::getBatchNo);
+ } else {
+ wrapper.eq(StockInventory::getBatchNo, stockOutRecord.getBatchNo());
+ }
+ StockInventory stockInventory = stockInventoryMapper.selectOne(wrapper);
if (stockInventory == null) {
throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧,鏃犳硶鍒犻櫎!!!");
}else {
StockInventoryDto stockInRecordDto = new StockInventoryDto();
stockInRecordDto.setProductModelId(stockInventory.getProductModelId());
stockInRecordDto.setQualitity(stockOutRecord.getStockOutNum());
+ stockInRecordDto.setBatchNo(stockInventory.getBatchNo());
stockInventoryMapper.updateAddStockInventory(stockInRecordDto);
}
}else if (stockOutRecord.getType().equals("1")) {
- StockUninventory stockUninventory = stockUninventoryMapper.selectOne(new LambdaQueryWrapper<StockUninventory>().eq(StockUninventory::getProductModelId, stockOutRecord.getProductModelId()));
+ LambdaQueryWrapper<StockUninventory> wrapper = new LambdaQueryWrapper<StockUninventory>()
+ .eq(StockUninventory::getProductModelId, stockOutRecord.getProductModelId());
+ if (StringUtils.isEmpty(stockOutRecord.getBatchNo())) {
+ wrapper.isNull(StockUninventory::getBatchNo);
+ } else {
+ wrapper.eq(StockUninventory::getBatchNo, stockOutRecord.getBatchNo());
+ }
+ StockUninventory stockUninventory = stockUninventoryMapper.selectOne(wrapper);
if (stockUninventory == null) {
throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧,鏃犳硶鍒犻櫎!!!");
}else {
StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
stockUninventoryDto.setProductModelId(stockUninventory.getProductModelId());
stockUninventoryDto.setQualitity(stockOutRecord.getStockOutNum());
+ stockUninventoryDto.setBatchNo(stockUninventory.getBatchNo());
stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
}
}
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 c61bed0..f7bd4f2 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -1,10 +1,12 @@
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;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.stock.dto.StockInRecordDto;
import com.ruoyi.stock.dto.StockInventoryDto;
@@ -12,6 +14,7 @@
import com.ruoyi.stock.dto.StockUninventoryDto;
import com.ruoyi.stock.execl.StockUnInventoryExportData;
import com.ruoyi.stock.mapper.StockUninventoryMapper;
+import com.ruoyi.stock.pojo.StockInventory;
import com.ruoyi.stock.pojo.StockUninventory;
import com.ruoyi.stock.service.StockInRecordService;
import com.ruoyi.stock.service.StockOutRecordService;
@@ -47,22 +50,32 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Integer addStockUninventory(StockUninventoryDto stockUninventoryDto) {
+ LambdaQueryWrapper<StockUninventory> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId());
+ if (StringUtils.isEmpty(stockUninventoryDto.getBatchNo())) {
+ stockUninventoryDto.setBatchNo(null);
+ wrapper.isNull(StockUninventory::getBatchNo);
+ } else {
+ wrapper.eq(StockUninventory::getBatchNo, stockUninventoryDto.getBatchNo());
+ }
//鏂板鍏ュ簱璁板綍鍐嶆坊鍔犲簱瀛�
StockInRecordDto stockInRecordDto = new StockInRecordDto();
stockInRecordDto.setRecordId(stockUninventoryDto.getRecordId());
stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType());
stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity());
+ stockInRecordDto.setBatchNo(stockUninventoryDto.getBatchNo());
stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
stockInRecordDto.setType("1");
stockInRecordService.add(stockInRecordDto);
//鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
//鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
- StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId()));
+ StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(wrapper);
if (ObjectUtils.isEmpty(oldStockUnInventory)) {
StockUninventory newStockUnInventory = new StockUninventory();
newStockUnInventory.setProductModelId(stockUninventoryDto.getProductModelId());
newStockUnInventory.setQualitity(stockUninventoryDto.getQualitity());
newStockUnInventory.setLockedQuantity(stockUninventoryDto.getLockedQuantity());
+ newStockUnInventory.setBatchNo(stockUninventoryDto.getBatchNo());
newStockUnInventory.setVersion(1);
newStockUnInventory.setRemark(stockUninventoryDto.getRemark());
stockUninventoryMapper.insert(newStockUnInventory);
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index f136a84..a7dab00 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -34,6 +34,12 @@
update_time = now()
</set>
where product_model_id = #{ew.productModelId}
+ <if test="ew.batchNo == null">
+ and batch_no is null
+ </if>
+ <if test="ew.batchNo != null">
+ and batch_no = #{ew.batchNo}
+ </if>
</update>
<update id="updateSubtractStockInventory">
update stock_inventory
@@ -50,6 +56,12 @@
update_time = now()
</set>
where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
+ <if test="ew.batchNo == null">
+ and batch_no is null
+ </if>
+ <if test="ew.batchNo != null">
+ and batch_no = #{ew.batchNo}
+ </if>
</update>
<select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
select si.id,
@@ -87,6 +99,7 @@
INNER JOIN product_tree pt ON p.parent_id = pt.id
)
select
+ batch_no,
MAX(qualifiedId) as qualifiedId,
MAX(unQualifiedId) as unQualifiedId,
SUM(qualifiedQuantity) as qualifiedQuantity,
@@ -108,6 +121,7 @@
'combined' as stockType
from (
select
+ si.batch_no,
si.id as qualifiedId,
null as unQualifiedId,
si.qualitity as qualifiedQuantity,
@@ -133,6 +147,7 @@
union all
select
+ su.batch_no,
null as qualifiedId,
su.id as unQualifiedId,
0 as qualifiedQuantity,
@@ -168,7 +183,7 @@
and combined.product_id in (select id from product_tree)
</if>
</where>
- group by product_model_id, model, unit, product_name, product_id
+ group by batch_no, product_model_id, model, unit, product_name, product_id
</select>
<select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
@@ -395,4 +410,4 @@
ORDER BY DATE(sor.create_time) ASC
</select>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index 58f30bd..70943e7 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -25,7 +25,15 @@
</if>
update_time = now()
</set>
- where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
+ where
+ product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
+ <if test="ew.batchNo == null">
+ and batch_no is null
+ </if>
+ <if test="ew.batchNo != null">
+ and batch_no = #{ew.batchNo}
+ </if>
+
</update>
<update id="updateAddStockUnInventory">
update stock_uninventory
@@ -45,6 +53,12 @@
update_time = now()
</set>
where product_model_id = #{ew.productModelId}
+ <if test="ew.batchNo == null">
+ and batch_no is null
+ </if>
+ <if test="ew.batchNo != null">
+ and batch_no = #{ew.batchNo}
+ </if>
</update>
<select id="pageStockUninventory" resultType="com.ruoyi.stock.dto.StockUninventoryDto">
select su.id,
--
Gitblit v1.9.3