diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index b1b057b27..3388d23a1 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -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 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 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 { diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml index 770e1a78e..bd37579fa 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml @@ -205,10 +205,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and w.send_date #{params.endSendDate} - and (w.start_site_code=#{params.privSiteCode} or w.send_site_code=#{params.privSiteCode}) + and (w.start_site_code=#{params.privSiteCode} or w.send_site_code=#{params.privSiteCode} or m.start_site_code=#{params.privSiteCode} or m.next_site_code=#{params.privSiteCode}) - order by w.bill_code desc