收货去掉批次号重复校验

This commit is contained in:
zhou-hongcheng
2026-04-20 09:28:26 +08:00
parent 1b4ce7db91
commit 842e5d79e5
@@ -1301,40 +1301,40 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
// 校验批次号唯一性:货主+商品+库存属性值相同时,批次号不能重复 // 校验批次号唯一性:货主+商品+库存属性值相同时,批次号不能重复
// 校验批次号:仅本入库单范围内,货主+商品+库存属性+批次在库存中是否已存在(不同入库单允许相同批次号) // 校验批次号:仅本入库单范围内,货主+商品+库存属性+批次在库存中是否已存在(不同入库单允许相同批次号)
if (shipperId != null && materialBaseInfoId != null && batchNumber != null && !batchNumber.trim().isEmpty()) { // if (shipperId != null && materialBaseInfoId != null && batchNumber != null && !batchNumber.trim().isEmpty()) {
if (StringUtils.isBlank(currentInOrderNumber)) { // if (StringUtils.isBlank(currentInOrderNumber)) {
log.warn("batchReceiptUpdate:未解析到入库单号,跳过库存批次重复校验,receiptOrderNumber={}", // log.warn("batchReceiptUpdate:未解析到入库单号,跳过库存批次重复校验,receiptOrderNumber={}",
receiptMaterialDetailDO != null ? receiptMaterialDetailDO.getReceiptOrderNumber() : null); // receiptMaterialDetailDO != null ? receiptMaterialDetailDO.getReceiptOrderNumber() : null);
return; // return;
} // }
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory> wrapper = // com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory> wrapper =
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory>() // new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory>()
.eq(MaterialInventory::getShipperId, shipperId) // .eq(MaterialInventory::getShipperId, shipperId)
.eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId) // .eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId)
.eq(MaterialInventory::getBatchNumber, batchNumber) // .eq(MaterialInventory::getBatchNumber, batchNumber)
.eq(MaterialInventory::getDelFlag, 1) // .eq(MaterialInventory::getDelFlag, 1)
.eq(MaterialInventory::getInOrderNumber, currentInOrderNumber); // .eq(MaterialInventory::getInOrderNumber, currentInOrderNumber);
//
// 如果库存属性值不为空,需要精确匹配;如果为空,查询库存属性值为空或null的记录 // // 如果库存属性值不为空,需要精确匹配;如果为空,查询库存属性值为空或null的记录
if (materialStatusCode != null && !materialStatusCode.trim().isEmpty()) { // if (materialStatusCode != null && !materialStatusCode.trim().isEmpty()) {
wrapper.eq(MaterialInventory::getMaterialStatusCode, materialStatusCode); // wrapper.eq(MaterialInventory::getMaterialStatusCode, materialStatusCode);
} else { // } else {
wrapper.and(w -> w.isNull(MaterialInventory::getMaterialStatusCode) // wrapper.and(w -> w.isNull(MaterialInventory::getMaterialStatusCode)
.or() // .or()
.eq(MaterialInventory::getMaterialStatusCode, "")); // .eq(MaterialInventory::getMaterialStatusCode, ""));
} // }
//
List<MaterialInventory> existingInventoryList = materialInventoryMapper.selectList(wrapper); // List<MaterialInventory> existingInventoryList = materialInventoryMapper.selectList(wrapper);
//
if (!CollectionUtils.isEmpty(existingInventoryList)) { // if (!CollectionUtils.isEmpty(existingInventoryList)) {
String statusCodeDesc = (materialStatusCode != null && !materialStatusCode.trim().isEmpty()) // String statusCodeDesc = (materialStatusCode != null && !materialStatusCode.trim().isEmpty())
? ",库存属性值:" + materialStatusCode // ? ",库存属性值:" + materialStatusCode
: ",库存属性值:空"; // : ",库存属性值:空";
throw new ServiceException("批次号【" + batchNumber + "】在本入库单「" + currentInOrderNumber // throw new ServiceException("批次号【" + batchNumber + "】在本入库单「" + currentInOrderNumber
+ "」下已存在库存,货主ID【" + shipperId + "】+商品ID【" + materialBaseInfoId + "" + statusCodeDesc // + "」下已存在库存,货主ID【" + shipperId + "】+商品ID【" + materialBaseInfoId + "】" + statusCodeDesc
+ ",不允许重复使用"); // + ",不允许重复使用");
} // }
} // }
} }
} }