diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillBatchStatusMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillBatchStatusMapper.java index 899e6ac48..155350fc4 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillBatchStatusMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillBatchStatusMapper.java @@ -20,4 +20,11 @@ public interface EmisWaybillBatchStatusMapper extends BaseMapper batchStatusList); + + /** + * 根据运单号列表批量删除批次状态 + * @param billCodes 运单号列表 + * @return 删除条数 + */ + int deleteByBillCodes(@Param("billCodes") List billCodes); } \ No newline at end of file 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 a17399c8c..463494e1c 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 @@ -4462,7 +4462,8 @@ public class EmisBaseService { } } - public void filterBatchStatusList(List batchStatusList, List missRecords) { + public void filterBatchStatusList(List batchStatusList, + List missRecords) { // 获取所有运单号 List batchStatusBillCodes = batchStatusList.stream() .map(EmisWaybillBatchStatus::getBillCode) @@ -4485,27 +4486,37 @@ public class EmisBaseService { } // 将waybill_batch_status=1的运单进行去重处理添加到漏组记录 Set processedBillCodes = new HashSet<>(); - if (CollectionUtil.isNotEmpty(missRecords)) { - for (EmisWaybillBatchStatus batchStatus : batchStatusList) { - if (filteredBillCodes.contains(batchStatus.getBillCode()) - && processedBillCodes.add(batchStatus.getBillCode())) { - // 创建漏组记录 - EmisTmsSiteBatchMiss missRecord = new EmisTmsSiteBatchMiss(); - missRecord.setBillCode(batchStatus.getBillCode()); - missRecord.setMissReason("运单分批后未组完"); - missRecord.setMissType("4"); - missRecord.setCreateBy("system"); - missRecord.setCreateTime(new Date()); - missRecord.setCreateSite("88888"); + 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) : ""; - // 添加到漏组记录列表 - missRecords.add(missRecord); - } + // 创建漏组记录 + EmisTmsSiteBatchMiss missRecord = new EmisTmsSiteBatchMiss(); + missRecord.setBillCode(batchStatus.getBillCode()); + missRecord.setMissReason("运单分批后未组完,批次号:" + batchNoStr); + missRecord.setMissType("4"); + missRecord.setCreateBy("system"); + missRecord.setCreateTime(new Date()); + missRecord.setCreateSite("88888"); + + // 添加到漏组记录列表 + missRecords.add(missRecord); } } // 从batchStatusList中剔除waybill_batch_status=1的运单 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/EmisWaybillBatchStatusMapper.xml b/emis-biz/src/main/resources/mapper/EmisWaybillBatchStatusMapper.xml index 4fe57eb58..6b62245d4 100644 --- a/emis-biz/src/main/resources/mapper/EmisWaybillBatchStatusMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisWaybillBatchStatusMapper.xml @@ -34,4 +34,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + delete from emis_waybill_batch_status + where bill_code in + + #{billCode} + + + \ No newline at end of file