From 07781bd3609e5fa5717c3cee37626fabaae0892c Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Thu, 10 Jul 2025 09:01:59 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20=E6=96=B0=E5=A2=9E=E7=BB=84?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E6=88=90=E5=8A=9F=E8=BF=90=E5=8D=95=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E9=87=8D=E5=A4=8D=E8=BF=90=E5=8D=95=EF=BC=8C=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=BC=8F=E7=BB=84=E6=89=B9=E6=AC=A1=E8=BF=90=E5=8D=95?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=87=BA=E5=8F=A3=E8=99=9A=E6=8B=9F=E5=8D=95?= =?UTF-8?q?=E7=9A=84=E4=B8=BB=E5=8D=95=20committer:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/emis/domain/EmisTmsSiteBatchMiss.java | 2 + .../mapper/EmisTmsSiteBatchMissMapper.java | 6 + .../impl/EmisTmsSiteBatchMissServiceImpl.java | 105 ++++++++++++------ .../mapper/EmisTmsSiteBatchMissMapper.xml | 15 ++- .../resources/mapper/EmisWaybillMapper.xml | 6 +- .../emis/EmisWaybillBatchStatusMapper.xml | 2 +- 6 files changed, 97 insertions(+), 39 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchMiss.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchMiss.java index 6dbc41beb..226b86b3e 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchMiss.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchMiss.java @@ -126,4 +126,6 @@ public class EmisTmsSiteBatchMiss extends BaseEntity { /* 是否问题件 1-是 0-否 */ private String blIsQuestion; + private String virtualRemark; + private Integer problemType; } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMissMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMissMapper.java index 5dcf45f1a..27b563971 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMissMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMissMapper.java @@ -2,6 +2,7 @@ package com.xdadan.erp.emis.mapper; import java.util.List; import com.xdadan.erp.emis.domain.EmisTmsSiteBatchMiss; +import com.xdadan.erp.emis.domain.EmisWaybill; import org.apache.ibatis.annotations.Param; /** @@ -87,4 +88,9 @@ public interface EmisTmsSiteBatchMissMapper { void deleteByBillCodes(@Param("billCodes") List billCodes); void deleteReally(String lineCode); + + /** + * 根据运单号批量查询TMS漏组批次信息 + */ + List selectByBillCodes(@Param("billCodes") List billCodes); } \ No newline at end of file diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java index 1a8f8a4f0..3afbb6a44 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java @@ -73,16 +73,54 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements log.info("Selecting TMS site batch miss list with params: {}", emisTmsSiteBatchMiss); List list = null; // 如果单号不为空,则去除其他参数 - if(!StringUtils.isEmpty(emisTmsSiteBatchMiss.getBillCode())){ + if (!StringUtils.isEmpty(emisTmsSiteBatchMiss.getBillCode())) { emisTmsSiteBatchMiss.setBillCode(WaybillHelper.formatQueryValue(emisTmsSiteBatchMiss.getBillCode())); String[] billCodeSortList = emisTmsSiteBatchMiss.getBillCode().split(","); - if(billCodeSortList.length>1){ - emisTmsSiteBatchMiss.getParams().put("billCodeSortList",Arrays.asList(billCodeSortList)); + if (billCodeSortList.length > 1) { + emisTmsSiteBatchMiss.getParams().put("billCodeSortList", Arrays.asList(billCodeSortList)); } list = emisTmsSiteBatchMissMapper.selectEmisTmsSiteBatchMissList(emisTmsSiteBatchMiss); - }else{ + } else { list = emisTmsSiteBatchMissMapper.selectEmisTmsSiteBatchMissList(emisTmsSiteBatchMiss); } + + // 收集所有virtualRemark中的单号 + Set relatedBillCodes = new HashSet<>(); + for (EmisTmsSiteBatchMiss miss : list) { + String virtualRemark = miss.getVirtualRemark(); + if (virtualRemark != null && !virtualRemark.trim().isEmpty()) { + String[] codes = virtualRemark.split(","); + for (String code : codes) { + relatedBillCodes.add(code.trim()); + } + } + } + if (CollectionUtil.isEmpty(relatedBillCodes)) { + return list; + } + // 批量查找相关单号 + List relatedList = relatedBillCodes.isEmpty() ? Collections.emptyList() + : emisTmsSiteBatchMissMapper.selectByBillCodes(new ArrayList<>(relatedBillCodes)); + Map relatedMap = relatedList.stream() + .collect(Collectors.toMap(EmisWaybill::getBillCode, Function.identity(), (a, b) -> a)); + // 过滤逻辑 + list = list.stream() + .filter(wb -> { + String virtualRemark = wb.getVirtualRemark(); + if (virtualRemark == null || virtualRemark.trim().isEmpty()) { + return true; + } + String[] relatedNos = virtualRemark.split(","); + for (String no : relatedNos) { + EmisWaybill related = relatedMap.get(no.trim()); + if (related != null && Integer.valueOf(173).equals(related.getProblemType())) { + return false; + } + } + return true; + }) + .collect(Collectors.toList()); + return list; } @@ -190,7 +228,7 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements try { List waybills = future.get(); allWaybills.addAll(waybills); -// totalProcessed += waybills.size(); + totalProcessed += waybills.size(); } catch (Exception e) { log.error("Error getting waybill results", e); } @@ -199,34 +237,35 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements // 关闭线程池 executorService.shutdown(); - // 构建运单号到EmisWaybill的映射 - Map waybillMap = allWaybills.stream() - .collect(Collectors.toMap(EmisWaybill::getBillCode, Function.identity(), (a, b) -> a)); - - allWaybills = allWaybills.stream() - .filter(wb -> { - String virtualRemark = wb.getVirtualRemark(); - if (StringUtils.isBlank(virtualRemark)) { - return true; - } - // 解析virtualRemark中的运单号 - String[] relatedNos = virtualRemark.split(","); - for (String no : relatedNos) { - EmisWaybill related = waybillMap.get(no.trim()); - if (related != null && Objects.equals(related.getProblemType(), 173)) { - return false; // 只要有一个关联运单problemType=173,则过滤掉 - } - } - return true; - }) - .collect(Collectors.toList()); - - allWaybills = allWaybills.stream() - .filter(wb -> !Objects.equals(wb.getProblemType(), 170)) - .filter(wb -> !Objects.equals(wb.getSiteBatchStatus(), "1")) - .collect(Collectors.toList()); - - totalProcessed = allWaybills.size(); + // // 构建运单号到EmisWaybill的映射 + // Map waybillMap = allWaybills.stream() + // .collect(Collectors.toMap(EmisWaybill::getBillCode, Function.identity(), (a, + // b) -> a)); + // + // allWaybills = allWaybills.stream() + // .filter(wb -> { + // String virtualRemark = wb.getVirtualRemark(); + // if (StringUtils.isBlank(virtualRemark)) { + // return true; + // } + // // 解析virtualRemark中的运单号 + // String[] relatedNos = virtualRemark.split(","); + // for (String no : relatedNos) { + // EmisWaybill related = waybillMap.get(no.trim()); + // if (related != null && Objects.equals(related.getProblemType(), 173)) { + // return false; // 只要有一个关联运单problemType=173,则过滤掉 + // } + // } + // return true; + // }) + // .collect(Collectors.toList()); + // + // allWaybills = allWaybills.stream() + // .filter(wb -> !Objects.equals(wb.getProblemType(), 170)) + //// .filter(wb -> !Objects.equals(wb.getSiteBatchStatus(), "1")) + // .collect(Collectors.toList()); + // + // totalProcessed = allWaybills.size(); // 按1000条数据分组处理 List> batches = new ArrayList<>(); diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml index d0804c1b3..3b9dba3b4 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMissMapper.xml @@ -44,16 +44,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + select - m.id, m.bill_code, m.miss_reason, m.create_by, m.create_time, m.update_by, m.update_time, m.remark, m.del_flag, + m.id, m.bill_code, m.miss_reason, m.create_time, m.update_time, m.remark, m.del_flag, m.line_code, m.product_type, m.start_site_code, m.next_site_code, m.supplier_code, m.start_date, m.end_date,m.miss_type, w.send_site_code, s1.site_name as send_site_name,s2.site_name as start_site_name,s3.site_name as next_site_name, w.send_country, c1.name as send_country_name, w.destination_code, n.dest_name as destination_name,w.bl_is_question, l.line_name as line_name, w.receive_country, c2.name as receive_country_name, w.send_date, w.bl_sign, w.sign_date, - w.product_type, + w.product_type,w.problem_type,w.virtual_remark, w.payment_type, w.parcel_qty, w.bill_weight, w.total_volume, w.volume_weight, w.settlement_weight, w.freight, w.remark as waybill_remark, w.fee_remark, m.manager, k.trans_manager, (SELECT GROUP_CONCAT(s.name) @@ -414,4 +416,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" HAVING COUNT(*) = #{count} ) + \ No newline at end of file diff --git a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml index 27ff552a9..0fc52b139 100644 --- a/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisWaybillMapper.xml @@ -3814,17 +3814,17 @@