Merge remote-tracking branch 'origin/dev_WMS20260401' into dev_WMS20260401
This commit is contained in:
+11
@@ -147,15 +147,26 @@ public class ReviewOrderDomainService {
|
||||
throw new ServiceException("复核单主表保存失败");
|
||||
}
|
||||
|
||||
int detailInserted = 0;
|
||||
for (PickingOrder po : pickingOrders) {
|
||||
List<PickingMaterialDetail> lines = pickingMaterialDetailService.list(new LambdaQueryWrapper<PickingMaterialDetail>()
|
||||
.eq(PickingMaterialDetail::getPickingOrderNumber, po.getPickingOrderNumber())
|
||||
.eq(PickingMaterialDetail::getDelFlag, 1));
|
||||
for (PickingMaterialDetail line : lines) {
|
||||
BigDecimal picked = line.getPickingQuantity();
|
||||
if (picked == null || picked.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
continue;
|
||||
}
|
||||
ReviewMaterialDetail row = buildDetailFromPicking(line, reviewOrderId, reviewOrderNumber, outOrderNumber, loginUser, now);
|
||||
reviewMaterialDetailMapper.insert(row);
|
||||
detailInserted++;
|
||||
}
|
||||
}
|
||||
if (detailInserted == 0) {
|
||||
reviewOrderMapper.deleteById(reviewOrderId);
|
||||
log.info("跳过生成复核单:拣货明细无已拣货数量>0 的行 outOrderNumber={}", outOrderNumber);
|
||||
return;
|
||||
}
|
||||
// 复核也生成作业单(同拣货作业单表结构),用于作业任务跟踪
|
||||
genStockOutTaskOrderForReview(header, loginUser, now);
|
||||
|
||||
|
||||
+34
-34
@@ -1301,40 +1301,40 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
// 校验批次号唯一性:货主+商品+库存属性值相同时,批次号不能重复
|
||||
|
||||
// 校验批次号:仅本入库单范围内,货主+商品+库存属性+批次在库存中是否已存在(不同入库单允许相同批次号)
|
||||
if (shipperId != null && materialBaseInfoId != null && batchNumber != null && !batchNumber.trim().isEmpty()) {
|
||||
if (StringUtils.isBlank(currentInOrderNumber)) {
|
||||
log.warn("batchReceiptUpdate:未解析到入库单号,跳过库存批次重复校验,receiptOrderNumber={}",
|
||||
receiptMaterialDetailDO != null ? receiptMaterialDetailDO.getReceiptOrderNumber() : null);
|
||||
return;
|
||||
}
|
||||
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory> wrapper =
|
||||
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory>()
|
||||
.eq(MaterialInventory::getShipperId, shipperId)
|
||||
.eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId)
|
||||
.eq(MaterialInventory::getBatchNumber, batchNumber)
|
||||
.eq(MaterialInventory::getDelFlag, 1)
|
||||
.eq(MaterialInventory::getInOrderNumber, currentInOrderNumber);
|
||||
|
||||
// 如果库存属性值不为空,需要精确匹配;如果为空,查询库存属性值为空或null的记录
|
||||
if (materialStatusCode != null && !materialStatusCode.trim().isEmpty()) {
|
||||
wrapper.eq(MaterialInventory::getMaterialStatusCode, materialStatusCode);
|
||||
} else {
|
||||
wrapper.and(w -> w.isNull(MaterialInventory::getMaterialStatusCode)
|
||||
.or()
|
||||
.eq(MaterialInventory::getMaterialStatusCode, ""));
|
||||
}
|
||||
|
||||
List<MaterialInventory> existingInventoryList = materialInventoryMapper.selectList(wrapper);
|
||||
|
||||
if (!CollectionUtils.isEmpty(existingInventoryList)) {
|
||||
String statusCodeDesc = (materialStatusCode != null && !materialStatusCode.trim().isEmpty())
|
||||
? ",库存属性值:" + materialStatusCode
|
||||
: ",库存属性值:空";
|
||||
throw new ServiceException("批次号【" + batchNumber + "】在本入库单「" + currentInOrderNumber
|
||||
+ "」下已存在库存,货主ID【" + shipperId + "】+商品ID【" + materialBaseInfoId + "】" + statusCodeDesc
|
||||
+ ",不允许重复使用");
|
||||
}
|
||||
}
|
||||
// if (shipperId != null && materialBaseInfoId != null && batchNumber != null && !batchNumber.trim().isEmpty()) {
|
||||
// if (StringUtils.isBlank(currentInOrderNumber)) {
|
||||
// log.warn("batchReceiptUpdate:未解析到入库单号,跳过库存批次重复校验,receiptOrderNumber={}",
|
||||
// receiptMaterialDetailDO != null ? receiptMaterialDetailDO.getReceiptOrderNumber() : null);
|
||||
// return;
|
||||
// }
|
||||
// com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory> wrapper =
|
||||
// new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory>()
|
||||
// .eq(MaterialInventory::getShipperId, shipperId)
|
||||
// .eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId)
|
||||
// .eq(MaterialInventory::getBatchNumber, batchNumber)
|
||||
// .eq(MaterialInventory::getDelFlag, 1)
|
||||
// .eq(MaterialInventory::getInOrderNumber, currentInOrderNumber);
|
||||
//
|
||||
// // 如果库存属性值不为空,需要精确匹配;如果为空,查询库存属性值为空或null的记录
|
||||
// if (materialStatusCode != null && !materialStatusCode.trim().isEmpty()) {
|
||||
// wrapper.eq(MaterialInventory::getMaterialStatusCode, materialStatusCode);
|
||||
// } else {
|
||||
// wrapper.and(w -> w.isNull(MaterialInventory::getMaterialStatusCode)
|
||||
// .or()
|
||||
// .eq(MaterialInventory::getMaterialStatusCode, ""));
|
||||
// }
|
||||
//
|
||||
// List<MaterialInventory> existingInventoryList = materialInventoryMapper.selectList(wrapper);
|
||||
//
|
||||
// if (!CollectionUtils.isEmpty(existingInventoryList)) {
|
||||
// String statusCodeDesc = (materialStatusCode != null && !materialStatusCode.trim().isEmpty())
|
||||
// ? ",库存属性值:" + materialStatusCode
|
||||
// : ",库存属性值:空";
|
||||
// throw new ServiceException("批次号【" + batchNumber + "】在本入库单「" + currentInOrderNumber
|
||||
// + "」下已存在库存,货主ID【" + shipperId + "】+商品ID【" + materialBaseInfoId + "】" + statusCodeDesc
|
||||
// + ",不允许重复使用");
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
+2
@@ -1058,6 +1058,7 @@ public class StockShelfOrderDomainService {
|
||||
inventoryParamDO.setCreateBy(loginUser.getUserid());
|
||||
inventoryParamDO.setCreateByName(loginUser.getUsername());
|
||||
inventoryParamDO.setCreateTime(new Date());
|
||||
inventoryParamDO.setUpdateTime(new Date());
|
||||
// materialInventoryMapper.insert(materialInventory);
|
||||
|
||||
inventoryParamDO.setType("1");
|
||||
@@ -1117,6 +1118,7 @@ public class StockShelfOrderDomainService {
|
||||
inventoryParamDO.setLotNumber(shelfMaterialDetail.getLotNumber());
|
||||
inventoryParamDO.setQuantity(shelfMaterialDetail.getShelvesQuantity());
|
||||
inventoryParamDO.setType("1");
|
||||
inventoryParamDO.setUpdateTime(new Date());
|
||||
materialInventoryService.xgkc(inventoryParamDO);
|
||||
//库存调整记录
|
||||
materialInventoryService.kctzjl(inventoryParamDO, "入库", loginUser);
|
||||
|
||||
Reference in New Issue
Block a user