字典添加组织查询,收货批次号逻辑修改
This commit is contained in:
@@ -43,6 +43,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="status != null and status != ''">
|
<if test="status != null and status != ''">
|
||||||
AND status = #{status}
|
AND status = #{status}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="organizationId != null">
|
||||||
|
AND organization_id = #{organizationId}
|
||||||
|
</if>
|
||||||
<if test="topOrganizationId != null">
|
<if test="topOrganizationId != null">
|
||||||
AND (top_organization_id = #{topOrganizationId} OR is_default = 'Y')
|
AND (top_organization_id = #{topOrganizationId} OR is_default = 'Y')
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
+69
-15
@@ -439,8 +439,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
|||||||
if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialMoreDetailList())) {
|
if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialMoreDetailList())) {
|
||||||
receiptMaterialDetailDO.setMaterialMoreDetailList(buildMaterialMoreDetailFromReceiptFields(receiptMaterialDetailDO));
|
receiptMaterialDetailDO.setMaterialMoreDetailList(buildMaterialMoreDetailFromReceiptFields(receiptMaterialDetailDO));
|
||||||
}
|
}
|
||||||
// 批次号:默认取 Sheet Ref NO's(sheetRefNo),不再自动生成 PC 流水号(逻辑见 generateAndValidateBatchNumber)
|
// 批次号:batchRefNo 有值取 batchRefNo,无值自动生成;逻辑见 generateAndValidateBatchNumber
|
||||||
//generateAndValidateBatchNumber(receiptMaterialDetailDO, shipperId);
|
|
||||||
//更多属性
|
//更多属性
|
||||||
materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDO));
|
materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDO));
|
||||||
//序列号
|
//序列号
|
||||||
@@ -638,6 +637,9 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 批次号回写入库单明细(与批次属性列表是否为空无关)
|
||||||
|
syncBatchNumberToInMaterialDetail(receiptMaterialDetailDO);
|
||||||
|
|
||||||
List<MaterialMoreDetailDO> materialMoreDetailList = receiptMaterialDetailDO.getMaterialMoreDetailList();
|
List<MaterialMoreDetailDO> materialMoreDetailList = receiptMaterialDetailDO.getMaterialMoreDetailList();
|
||||||
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
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
|
* @author Auto
|
||||||
* @date 2026/1/28
|
* @date 2026/1/28
|
||||||
* @param receiptMaterialDetailDO 收货明细
|
* @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
|
* @author Auto
|
||||||
* @date 2026/1/28
|
* @date 2026/1/28
|
||||||
* @param receiptMaterialDetailDO 收货明细
|
* @param receiptMaterialDetailDO 收货明细
|
||||||
@@ -1390,22 +1392,19 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
|||||||
|
|
||||||
Long materialBaseInfoId = receiptMaterialDetailDO.getMaterialBaseInfoId();
|
Long materialBaseInfoId = receiptMaterialDetailDO.getMaterialBaseInfoId();
|
||||||
String materialStatusCode = receiptMaterialDetailDO.getMaterialStatusCode();
|
String materialStatusCode = receiptMaterialDetailDO.getMaterialStatusCode();
|
||||||
|
String batchRefNo = receiptMaterialDetailDO.getBatchRefNo();
|
||||||
String batchNumber = receiptMaterialDetailDO.getBatchNumber();
|
String batchNumber = receiptMaterialDetailDO.getBatchNumber();
|
||||||
|
|
||||||
// 批次号为空时默认取 Sheet Ref NO's(与批次属性「Sheet Ref NO's」/ 明细字段 sheetRefNo 一致)
|
// batchRefNo 有值时,批次号取 batchRefNo
|
||||||
if (batchNumber == null || batchNumber.trim().isEmpty()) {
|
if (StringUtils.isNotBlank(batchRefNo)) {
|
||||||
String sheetRef = receiptMaterialDetailDO.getSheetRefNo();
|
receiptMaterialDetailDO.setBatchNumber(batchRefNo.trim());
|
||||||
if (StringUtils.isNotBlank(sheetRef)) {
|
} else if (StringUtils.isBlank(batchNumber)) {
|
||||||
receiptMaterialDetailDO.setBatchNumber(sheetRef.trim());
|
// batchRefNo 无值且批次号为空时,自动生成批次号
|
||||||
}
|
receiptMaterialDetailDO.setBatchNumber(OrderSequence.getOrderCode("PC"));
|
||||||
}
|
}
|
||||||
// 原自动生成批次号(已按业务要求停用)
|
|
||||||
// if (batchNumber == null || batchNumber.trim().isEmpty()) {
|
|
||||||
// batchNumber = OrderSequence.getOrderCode("PC"); // PC = 批次号前缀
|
|
||||||
// receiptMaterialDetailDO.setBatchNumber(batchNumber);
|
|
||||||
// }
|
|
||||||
|
|
||||||
batchNumber = receiptMaterialDetailDO.getBatchNumber();
|
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