字典添加组织查询,收货批次号逻辑修改
This commit is contained in:
@@ -43,6 +43,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="status != null and status != ''">
|
||||
AND status = #{status}
|
||||
</if>
|
||||
<if test="organizationId != null">
|
||||
AND organization_id = #{organizationId}
|
||||
</if>
|
||||
<if test="topOrganizationId != null">
|
||||
AND (top_organization_id = #{topOrganizationId} OR is_default = 'Y')
|
||||
</if>
|
||||
|
||||
+69
-15
@@ -439,8 +439,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialMoreDetailList())) {
|
||||
receiptMaterialDetailDO.setMaterialMoreDetailList(buildMaterialMoreDetailFromReceiptFields(receiptMaterialDetailDO));
|
||||
}
|
||||
// 批次号:默认取 Sheet Ref NO's(sheetRefNo),不再自动生成 PC 流水号(逻辑见 generateAndValidateBatchNumber)
|
||||
//generateAndValidateBatchNumber(receiptMaterialDetailDO, shipperId);
|
||||
// 批次号:batchRefNo 有值取 batchRefNo,无值自动生成;逻辑见 generateAndValidateBatchNumber
|
||||
//更多属性
|
||||
materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDO));
|
||||
//序列号
|
||||
@@ -638,6 +637,9 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
continue;
|
||||
}
|
||||
|
||||
// 批次号回写入库单明细(与批次属性列表是否为空无关)
|
||||
syncBatchNumberToInMaterialDetail(receiptMaterialDetailDO);
|
||||
|
||||
List<MaterialMoreDetailDO> materialMoreDetailList = receiptMaterialDetailDO.getMaterialMoreDetailList();
|
||||
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
||||
// 处理子项
|
||||
@@ -1342,7 +1344,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 批次号默认取 Sheet Ref NO's(sheetRefNo),并校验库存唯一性;不再使用 PC 流水号自动生成
|
||||
* @description 批次号:batchRefNo 有值取 batchRefNo,无值自动生成 PC 流水号
|
||||
* @author Auto
|
||||
* @date 2026/1/28
|
||||
* @param receiptMaterialDetailDO 收货明细
|
||||
@@ -1374,7 +1376,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 批次号为空时默认取 Sheet Ref NO's(sheetRefNo);原 PC 流水号自动生成已停用
|
||||
* @description 批次号:batchRefNo 有值取 batchRefNo;无 batchRefNo 且批次号为空时自动生成 PC 流水号
|
||||
* @author Auto
|
||||
* @date 2026/1/28
|
||||
* @param receiptMaterialDetailDO 收货明细
|
||||
@@ -1390,22 +1392,19 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
|
||||
Long materialBaseInfoId = receiptMaterialDetailDO.getMaterialBaseInfoId();
|
||||
String materialStatusCode = receiptMaterialDetailDO.getMaterialStatusCode();
|
||||
String batchRefNo = receiptMaterialDetailDO.getBatchRefNo();
|
||||
String batchNumber = receiptMaterialDetailDO.getBatchNumber();
|
||||
|
||||
// 批次号为空时默认取 Sheet Ref NO's(与批次属性「Sheet Ref NO's」/ 明细字段 sheetRefNo 一致)
|
||||
if (batchNumber == null || batchNumber.trim().isEmpty()) {
|
||||
String sheetRef = receiptMaterialDetailDO.getSheetRefNo();
|
||||
if (StringUtils.isNotBlank(sheetRef)) {
|
||||
receiptMaterialDetailDO.setBatchNumber(sheetRef.trim());
|
||||
}
|
||||
// batchRefNo 有值时,批次号取 batchRefNo
|
||||
if (StringUtils.isNotBlank(batchRefNo)) {
|
||||
receiptMaterialDetailDO.setBatchNumber(batchRefNo.trim());
|
||||
} else if (StringUtils.isBlank(batchNumber)) {
|
||||
// batchRefNo 无值且批次号为空时,自动生成批次号
|
||||
receiptMaterialDetailDO.setBatchNumber(OrderSequence.getOrderCode("PC"));
|
||||
}
|
||||
// 原自动生成批次号(已按业务要求停用)
|
||||
// if (batchNumber == null || batchNumber.trim().isEmpty()) {
|
||||
// batchNumber = OrderSequence.getOrderCode("PC"); // PC = 批次号前缀
|
||||
// receiptMaterialDetailDO.setBatchNumber(batchNumber);
|
||||
// }
|
||||
|
||||
batchNumber = receiptMaterialDetailDO.getBatchNumber();
|
||||
syncBatchNumberToMaterialMoreDetailList(receiptMaterialDetailDO);
|
||||
|
||||
// 校验批次号唯一性:货主+商品+库存属性值相同时,批次号不能重复
|
||||
|
||||
@@ -1446,4 +1445,59 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* 将解析后的批次号同步到 materialMoreDetailList 的「批次号」属性,供落库与回显
|
||||
*/
|
||||
private void syncBatchNumberToMaterialMoreDetailList(ReceiptMaterialDetailDO receiptMaterialDetailDO) {
|
||||
String batchNumber = receiptMaterialDetailDO.getBatchNumber();
|
||||
if (StringUtils.isBlank(batchNumber)) {
|
||||
return;
|
||||
}
|
||||
List<MaterialMoreDetailDO> list = receiptMaterialDetailDO.getMaterialMoreDetailList();
|
||||
if (list == null) {
|
||||
list = new ArrayList<>();
|
||||
receiptMaterialDetailDO.setMaterialMoreDetailList(list);
|
||||
}
|
||||
boolean updated = false;
|
||||
for (MaterialMoreDetailDO item : list) {
|
||||
if ("批次号".equals(item.getBatchLabels())) {
|
||||
item.setAttributeValue(batchNumber.trim());
|
||||
updated = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!updated) {
|
||||
List<MaterialMoreDetailDO> built = buildMaterialMoreDetailFromReceiptFields(receiptMaterialDetailDO);
|
||||
for (MaterialMoreDetailDO item : built) {
|
||||
if ("批次号".equals(item.getBatchLabels())) {
|
||||
list.add(item);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将收货明细批次号回写入库单明细 batch_number 字段
|
||||
*/
|
||||
private void syncBatchNumberToInMaterialDetail(ReceiptMaterialDetailDO receiptMaterialDetailDO) {
|
||||
if (receiptMaterialDetailDO == null) {
|
||||
return;
|
||||
}
|
||||
Long inUniqueId = receiptMaterialDetailDO.getInUniqueId();
|
||||
String batchNumber = receiptMaterialDetailDO.getBatchNumber();
|
||||
if (inUniqueId == null || StringUtils.isBlank(batchNumber)) {
|
||||
return;
|
||||
}
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
UpdateWrapper<InMaterialDetail> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.eq("unique_id", inUniqueId)
|
||||
.eq("del_flag", 1)
|
||||
.set("batch_number", batchNumber.trim())
|
||||
.set("update_by", loginUser.getUserid())
|
||||
.set("update_by_name", loginUser.getUsername())
|
||||
.set("update_time", new Date());
|
||||
iInMaterialDetailService.update(updateWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user