收货批次号修改Sheet Ref NO's
This commit is contained in:
+24
-16
@@ -334,13 +334,8 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
List<MaterialMoreDetail> materialMoreDetailList = new ArrayList<>();
|
||||
List<InMaterialDetailSerialNumber> materialDetailSerialNumberList = new ArrayList<>();
|
||||
for (ReceiptMaterialDetailDO receiptMaterialDetailDO : receiptMaterialDetailDOList){
|
||||
extractBatchAttributesToReceiptDetail(receiptMaterialDetailDO);
|
||||
// 自动生成批次号并校验唯一性(包括子项)
|
||||
// 批次号:默认取 Sheet Ref NO's(sheetRefNo),不再自动生成 PC 流水号(逻辑见 generateAndValidateBatchNumber)
|
||||
generateAndValidateBatchNumber(receiptMaterialDetailDO, shipperId);
|
||||
// 当 materialMoreDetailList 为空时(如 PDA 未传),从 receiptMaterialDetailDO 的 batch_number、material_status_code 等字段构建,确保更多属性能保存并回显
|
||||
if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialMoreDetailList())) {
|
||||
receiptMaterialDetailDO.setMaterialMoreDetailList(buildMaterialMoreDetailFromReceiptFields(receiptMaterialDetailDO));
|
||||
}
|
||||
//更多属性
|
||||
materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDO));
|
||||
//序列号
|
||||
@@ -355,8 +350,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
List<ReceiptMaterialDetail> receiptMaterialDetailChildList = new ArrayList<>();
|
||||
if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)){
|
||||
for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList){
|
||||
// 子项也需从批次属性提取净重、毛重、体积、面积等字段
|
||||
extractBatchAttributesToReceiptDetail(receiptMaterialDetailDOChild);
|
||||
// 子项批次属性已在 generateAndValidateBatchNumber 递归中提取
|
||||
ReceiptMaterialDetail receiptMaterialDetailChild = new ReceiptMaterialDetail();
|
||||
BeanUtils.copyProperties(receiptMaterialDetailDOChild, receiptMaterialDetailChild);
|
||||
alignPersistedReceiptQuantityToCumulative(receiptMaterialDetailDOChild, receiptMaterialDetailChild);
|
||||
@@ -1128,7 +1122,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 自动生成批次号并校验唯一性
|
||||
* @description 批次号默认取 Sheet Ref NO's(sheetRefNo),并校验库存唯一性;不再使用 PC 流水号自动生成
|
||||
* @author Auto
|
||||
* @date 2026/1/28
|
||||
* @param receiptMaterialDetailDO 收货明细
|
||||
@@ -1139,7 +1133,12 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
if (receiptMaterialDetailDO == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 与原先在 batchReceiptUpdate 中顺序一致:先补全更多属性列表,再从批次属性提取到明细字段(含 sheetRefNo)
|
||||
if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialMoreDetailList())) {
|
||||
receiptMaterialDetailDO.setMaterialMoreDetailList(buildMaterialMoreDetailFromReceiptFields(receiptMaterialDetailDO));
|
||||
}
|
||||
extractBatchAttributesToReceiptDetail(receiptMaterialDetailDO);
|
||||
|
||||
// 处理当前明细
|
||||
processBatchNumberForDetail(receiptMaterialDetailDO, shipperId);
|
||||
|
||||
@@ -1153,7 +1152,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 为单个收货明细生成批次号并校验唯一性
|
||||
* @description 批次号为空时默认取 Sheet Ref NO's(sheetRefNo);原 PC 流水号自动生成已停用
|
||||
* @author Auto
|
||||
* @date 2026/1/28
|
||||
* @param receiptMaterialDetailDO 收货明细
|
||||
@@ -1168,13 +1167,22 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
Long materialBaseInfoId = receiptMaterialDetailDO.getMaterialBaseInfoId();
|
||||
String materialStatusCode = receiptMaterialDetailDO.getMaterialStatusCode();
|
||||
String batchNumber = receiptMaterialDetailDO.getBatchNumber();
|
||||
|
||||
// 如果批次号为空,自动生成
|
||||
|
||||
// 批次号为空时默认取 Sheet Ref NO's(与批次属性「Sheet Ref NO's」/ 明细字段 sheetRefNo 一致)
|
||||
if (batchNumber == null || batchNumber.trim().isEmpty()) {
|
||||
batchNumber = OrderSequence.getOrderCode("PC"); // PC = 批次号前缀
|
||||
receiptMaterialDetailDO.setBatchNumber(batchNumber);
|
||||
String sheetRef = receiptMaterialDetailDO.getSheetRefNo();
|
||||
if (StringUtils.isNotBlank(sheetRef)) {
|
||||
receiptMaterialDetailDO.setBatchNumber(sheetRef.trim());
|
||||
}
|
||||
}
|
||||
|
||||
// 原自动生成批次号(已按业务要求停用)
|
||||
// if (batchNumber == null || batchNumber.trim().isEmpty()) {
|
||||
// batchNumber = OrderSequence.getOrderCode("PC"); // PC = 批次号前缀
|
||||
// receiptMaterialDetailDO.setBatchNumber(batchNumber);
|
||||
// }
|
||||
|
||||
batchNumber = receiptMaterialDetailDO.getBatchNumber();
|
||||
|
||||
// 校验批次号唯一性:货主+商品+库存属性值相同时,批次号不能重复
|
||||
if (shipperId != null && materialBaseInfoId != null && batchNumber != null && !batchNumber.trim().isEmpty()) {
|
||||
// 使用 LambdaQueryWrapper 查询库存表中是否存在相同的货主+商品+库存属性值+批次号的记录
|
||||
|
||||
Reference in New Issue
Block a user