demand: 虚拟单转主单bug修复

committer: heyu
This commit is contained in:
aike 2025-07-31 11:57:01 +08:00
parent d93de0dab1
commit 5ee1bb726e

View File

@ -5258,18 +5258,61 @@ public class EmisBaseService {
}
}
/**
* 更新主运单的虚拟运单备注信息
* @param emisWaybillSave 当前运单信息
* @param masterBillCode 主运单号
*/
private void updateOldMasterBill(EmisWaybill emisWaybillSave, String masterBillCode) {
String virtualBillCode = emisWaybillSave.getBillCode();
EmisWaybill masterWaybill = emisWaybillMapper
.selectEmisWaybillByBillCode(masterBillCode);
List<String> filterVirtualRemark = Arrays.stream(masterWaybill.getVirtualRemark().split(","))
.filter(i -> !i.equals(virtualBillCode)).collect(Collectors.toList());
String virtualRemark = String.join(",", filterVirtualRemark);
if(StringUtil.isBlank(virtualRemark)) {
virtualRemark = " ";
// 参数校验
if (emisWaybillSave == null || StringUtil.isBlank(masterBillCode)) {
log.warn("updateOldMasterBill参数为空,emisWaybillSave: {}, masterBillCode: {}",
emisWaybillSave, masterBillCode);
return;
}
masterWaybill.setVirtualRemark(virtualRemark);
String virtualBillCode = emisWaybillSave.getBillCode();
if (StringUtil.isBlank(virtualBillCode)) {
log.warn("虚拟运单号为空,无法更新主运单信息");
return;
}
// 查询主运单信息
EmisWaybill masterWaybill = emisWaybillMapper.selectEmisWaybillByBillCode(masterBillCode);
if (masterWaybill == null) {
log.warn("未找到主运单信息,masterBillCode: {}", masterBillCode);
return;
}
// 处理虚拟运单备注信息
String currentVirtualRemark = masterWaybill.getVirtualRemark();
List<String> virtualBillCodes = new ArrayList<>();
// 如果当前虚拟备注不为空,则解析现有运单号列表
if (StringUtil.isNotBlank(currentVirtualRemark)) {
virtualBillCodes = Arrays.stream(currentVirtualRemark.split(","))
.map(String::trim)
.filter(StringUtil::isNotBlank)
.collect(Collectors.toList());
}
// 移除当前虚拟运单号
virtualBillCodes.removeIf(code -> virtualBillCode.equals(code));
// 重新构建虚拟备注字符串
String newVirtualRemark;
if (virtualBillCodes.isEmpty()) {
newVirtualRemark = " ";
} else {
newVirtualRemark = String.join(",", virtualBillCodes);
}
// 更新主运单信息
masterWaybill.setVirtualRemark(newVirtualRemark);
emisWaybillMapper.updateEmisWaybill(masterWaybill);
log.debug("成功更新主运单虚拟备注,masterBillCode: {}, 移除运单号: {}, 新备注: {}",
masterBillCode, virtualBillCode, newVirtualRemark);
}
public static void main(String[] args) throws ParseException {