From 047bba7d4a6569f7777e47b97b33cc4f134ba542 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Wed, 2 Jul 2025 10:29:19 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20=E6=BC=8F=E7=BB=84=E6=89=B9?= =?UTF-8?q?=E6=AC=A1=E6=89=AB=E6=8F=8F=E5=AF=84=E4=BB=B6=E7=BD=91=E7=82=B9?= =?UTF-8?q?=E4=B8=BA=E6=97=A0=E9=94=A1=E3=80=81=E6=9F=AF=E6=A1=A5=E3=80=81?= =?UTF-8?q?=E5=8D=97=E4=BA=AC=E6=97=B6=E5=A4=9A=E4=B8=AA=E7=BD=91=E7=82=B9?= =?UTF-8?q?=E5=8F=AF=E4=BA=92=E6=8D=A2=20committer:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/emis/service/EmisBaseService.java | 48 +++++++++++++++++-- 1 file changed, 44 insertions(+), 4 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 1b55a27de..6dee67ca4 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 @@ -4113,7 +4113,9 @@ public class EmisBaseService { // 添加所有子节点到父节点的children列表中 for (EmisTransPlanRule child : children) { - if (!parent.getChildren().contains(child)) { + String siteCode1 = child.getStartSiteCode() + "," + child.getNextSiteCode(); + String siteCode2 = parent.getStartSiteCode() + "," + parent.getNextSiteCode(); + if (!parent.getChildren().contains(child) && !compareSiteCodes(siteCode1, siteCode2)) { parent.getChildren().add(child); } } @@ -4582,16 +4584,34 @@ public class EmisBaseService { private boolean checkBranchMatch(List ruleList, List waybillBatches, EmisWaybill waybill, List missRecords) { // 根据waybill的startSiteCode或sendSiteCode过滤ruleList + String sendSiteCode = waybill.getSendSiteCode(); + String startSiteCode = waybill.getStartSiteCode(); List filteredRuleList; - if (StringUtils.isNotBlank(waybill.getStartSiteCode())) { + if ("51000".equals(sendSiteCode) || "51200".equals(sendSiteCode)) { filteredRuleList = ruleList.stream() - .filter(rule -> StringUtils.equals(rule.getStartSiteCode(), waybill.getStartSiteCode())) + .filter(rule -> "51000".equals(rule.getStartSiteCode()) + || "51200".equals(rule.getStartSiteCode())) + .collect(Collectors.toList()); // 无锡,张家港 + } else if ("57502".equals(sendSiteCode) || "57501".equals(sendSiteCode) || "57100".equals(sendSiteCode)) { + filteredRuleList = ruleList.stream() + .filter(rule -> "57502".equals(rule.getStartSiteCode()) + || "57501".equals(rule.getStartSiteCode()) || "57100".equals(rule.getStartSiteCode())) + .collect(Collectors.toList()); // 柯桥市场部、柯桥分拨中心、杭州 + } else if ("25001".equals(sendSiteCode) || "25000".equals(sendSiteCode)) { + filteredRuleList = ruleList.stream() + .filter(rule -> "25001".equals(rule.getStartSiteCode()) + || "25000".equals(rule.getStartSiteCode())) + .collect(Collectors.toList()); // 南京市场部、南京分拨中心 + } else if (StringUtils.isNotBlank(startSiteCode)) { + filteredRuleList = ruleList.stream() + .filter(rule -> StringUtils.equals(rule.getStartSiteCode(), startSiteCode)) .collect(Collectors.toList()); } else { filteredRuleList = ruleList.stream() - .filter(rule -> StringUtils.equals(rule.getStartSiteCode(), waybill.getSendSiteCode())) + .filter(rule -> StringUtils.equals(rule.getStartSiteCode(), sendSiteCode)) .collect(Collectors.toList()); } + ruleList = filteredRuleList; // 检查当前节点是否匹配 boolean allNodeMatched = false; @@ -4659,6 +4679,26 @@ public class EmisBaseService { return suppliers1.equals(suppliers2); } + /** + * 比较两个网点代码字符串是否包含相同的网点(忽略顺序) + * + * @param siteCode1 第一个网点代码字符串 + * @param siteCode2 第二个网点代码字符串 + * @return 如果包含相同的网点返回true,否则返回false + */ + private boolean compareSiteCodes(String siteCode1, String siteCode2) { + if (siteCode1 == null || siteCode2 == null) { + return siteCode1 == siteCode2; + } + Set siteCodes1 = Arrays.stream(siteCode1.split(",")) + .map(String::trim) + .collect(Collectors.toSet()); + Set siteCodes2 = Arrays.stream(siteCode2.split(",")) + .map(String::trim) + .collect(Collectors.toSet()); + return siteCodes1.equals(siteCodes2); + } + private boolean checkRule(EmisTransPlanRule rule, List waybillBatches, List list) { // 检查当前节点是否匹配