From d4eb88264f0c9db2051e41f75c02c6ba8906e13f Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Fri, 22 Aug 2025 14:49:22 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=E6=A0=B9=E6=8D=AE=E6=89=B9=E6=AC=A1?= =?UTF-8?q?=E5=8F=B7=E5=AE=9E=E6=97=B6=E6=89=AB=E6=8F=8F=E6=BC=8F=E7=BB=84?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E6=8E=A5=E5=8F=A3=E6=89=AB=E6=8F=8F=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E7=BB=84=E6=89=B9=E6=AC=A1=E5=AE=8C=E6=88=90=E7=9A=84?= =?UTF-8?q?=E8=BF=90=E5=8D=95=E3=80=82=20=E5=88=86=E6=89=B9=E8=BF=90?= =?UTF-8?q?=E5=8D=95=E6=89=AB=E6=8F=8Fbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit committer: heyu --- .../erp/emis/service/EmisBaseService.java | 57 ++++++++++--------- .../mapper/EmisTmsSiteBatchDtlMapper.xml | 6 +- 2 files changed, 34 insertions(+), 29 deletions(-) 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 0570127a7..024402353 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 @@ -4540,47 +4540,50 @@ public class EmisBaseService { List filteredBatchDtls = emisTmsSiteBatchDtlMapper .selectEmisTmsSiteBatchDtlList(queryCondition); - // 获取已分批的运单号集合 - Set filteredBillCodes = filteredBatchDtls.stream() - .map(EmisTmsSiteBatchDtl::getBillCode) - .collect(Collectors.toSet()); - - if (CollectionUtil.isEmpty(filteredBillCodes)) { + if (CollectionUtil.isEmpty(filteredBatchDtls)) { return; } - // 将waybill_batch_status=1的运单进行去重处理添加到漏组记录 - Set processedBillCodes = new HashSet<>(); + + // 根据运单号分组,收集每个运单对应的批次号 + Map> billCodeToBatchNos = filteredBatchDtls.stream() + .collect(Collectors.groupingBy( + EmisTmsSiteBatchDtl::getBillCode, + Collectors.mapping(EmisTmsSiteBatchDtl::getBatchNo, Collectors.toList()))); + + // 初始化漏组记录列表 if (missRecords == null) { missRecords = new ArrayList<>(); } - for (EmisWaybillBatchStatus batchStatus : batchStatusList) { - if (filteredBillCodes.contains(batchStatus.getBillCode()) - && processedBillCodes.add(batchStatus.getBillCode())) { - // 查询运单对应的批次号 - List batchNos = filteredBatchDtls.stream().filter(i -> batchStatus.getBillCode().equals(i.getBillCode())).map(EmisTmsSiteBatchDtl::getBatchNo).distinct().collect(Collectors.toList()); - String batchNoStr = CollectionUtil.isNotEmpty(batchNos) ? String.join(",", batchNos) : ""; - // 创建漏组记录 - EmisTmsSiteBatchMiss missRecord = new EmisTmsSiteBatchMiss(); - missRecord.setBillCode(batchStatus.getBillCode()); - missRecord.setMissReason("运单分批后未组完,批次号:" + batchNoStr); - missRecord.setMissType("4"); - missRecord.setCreateBy("system"); - missRecord.setCreateTime(new Date()); - missRecord.setCreateSite("88888"); + // 为每个已分批的运单创建漏组记录 + for (Map.Entry> entry : billCodeToBatchNos.entrySet()) { + String billCode = entry.getKey(); + List batchNos = entry.getValue(); + String batchNoStr = String.join(",", batchNos); - // 添加到漏组记录列表 - missRecords.add(missRecord); - } + // 创建漏组记录 + EmisTmsSiteBatchMiss missRecord = new EmisTmsSiteBatchMiss(); + missRecord.setBillCode(billCode); + missRecord.setMissReason("运单分批后未组完,批次号:" + batchNoStr); + missRecord.setMissType("4"); + missRecord.setCreateBy("system"); + missRecord.setCreateTime(new Date()); + missRecord.setCreateSite("88888"); + + // 添加到漏组记录列表 + missRecords.add(missRecord); } - // 从batchStatusList中剔除waybill_batch_status=1的运单 + // 获取已分批的运单号集合 + Set filteredBillCodes = billCodeToBatchNos.keySet(); + + // 从batchStatusList中移除已分批的运单 batchStatusList.removeIf(batchStatus -> filteredBillCodes.contains(batchStatus.getBillCode())); + // 删除已分批的运单状态记录 if (CollectionUtil.isNotEmpty(filteredBillCodes)) { emisWaybillBatchStatusMapper.deleteByBillCodes(new ArrayList<>(filteredBillCodes)); } - } public void saveRecord(int totalProcessed, int successCount, int failCount, long processTime, diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml index e71707e63..b2106a544 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml @@ -232,10 +232,12 @@ select a.id, a.bill_code,a.trans_line_type, a.product_type,a.start_site_code,a.send_site_code from emis_waybill a left join emis_tms_site_batch_dtl b on a.bill_code = b.bill_code and b.del_flag = '0' - inner join emis_waybill_batch_status c on a.bill_code = c.bill_code and c.site_batch_status = '1' and c.del_flag = '0' where b.batch_no = #{batchNo} and a.del_flag = '0' and a.send_date ]]> '2025-01-01 00:00:00' + and not exists ( + select 1 from emis_waybill_batch_status b where a.bill_code = b.bill_code and b.site_batch_status = '1' and b.del_flag = '0' + ) @@ -274,4 +276,4 @@ and del_flag = '0' limit 1 - \ No newline at end of file +