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 1/2] =?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) { // 检查当前节点是否匹配 From 3480cf0de2274412e91ee23b4350dbb15fee3089 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Wed, 2 Jul 2025 13:50:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?demand:=20=20=E6=89=B9=E9=87=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=8A=A5=E9=87=8D=E7=B2=BE=E7=A1=AE=E6=8C=87=E5=87=BA?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E4=BF=A1=E6=81=AF=20committer:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/emis/service/EmisBaseService.java | 2 +- .../impl/EmisTransPlanRuleServiceImpl.java | 18 ++++++++++++------ .../mapper/EmisTransPlanRuleMapper.xml | 16 +++++++++++++++- 3 files changed, 28 insertions(+), 8 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 6dee67ca4..5be662983 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 @@ -4666,7 +4666,7 @@ public class EmisBaseService { * @param supplierCode2 第二个供应商代码字符串 * @return 如果包含相同的供应商返回true,否则返回false */ - private boolean compareSupplierCodes(String supplierCode1, String supplierCode2) { + public boolean compareSupplierCodes(String supplierCode1, String supplierCode2) { if (supplierCode1 == null || supplierCode2 == null) { return supplierCode1 == supplierCode2; } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransPlanRuleServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransPlanRuleServiceImpl.java index 8c650f5b9..6106b43f5 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransPlanRuleServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTransPlanRuleServiceImpl.java @@ -461,14 +461,22 @@ public class EmisTransPlanRuleServiceImpl extends EmisBaseService implements IEm List existingRules = checkDuplicateDirectionForUpdate(emisTransPlanRule, emisTransPlanRule.getStartSiteCode(), emisTransPlanRule.getNextSiteCode()); if (existingRules != null && !existingRules.isEmpty()) { - throw new EmisBizError(EmisBizErrorType.EXISTS, "已存在相同的规则配置"); + EmisTransPlanRule rule = existingRules.get(0); + String msg = String.format("已存在相同的规则配置,重复规则信息:线路名称[%s],产品类型[%s],起始网点[%s],下一网点[%s],供应商[%s]", + rule.getLineName(), rule.getProductTypeName(), rule.getStartSiteName(), rule.getNextSiteName(), + rule.getSupplierName()); + throw new EmisBizError(EmisBizErrorType.EXISTS, msg); } // 检查反向规则(下一网点到起始网点) List existingRules1 = checkDuplicateDirectionForUpdate(emisTransPlanRule, emisTransPlanRule.getNextSiteCode(), emisTransPlanRule.getStartSiteCode()); if (existingRules1 != null && !existingRules1.isEmpty()) { - throw new EmisBizError(EmisBizErrorType.EXISTS, "已存在相同的规则配置"); + EmisTransPlanRule rule = existingRules1.get(0); + String msg = String.format("已存在相同的规则配置,重复规则信息:线路名称[%s],产品类型[%s],起始网点[%s],下一网点[%s],供应商[%s]", + rule.getLineName(), rule.getProductTypeName(), rule.getStartSiteName(), rule.getNextSiteName(), + rule.getSupplierName()); + throw new EmisBizError(EmisBizErrorType.EXISTS, msg); } } @@ -506,11 +514,9 @@ public class EmisTransPlanRuleServiceImpl extends EmisBaseService implements IEm for (EmisTransPlanRule existingRule : allRules) { // 检查产品类型是否有交集 boolean productTypeOverlap = hasOverlap(newProductType, existingRule.getProductType()); - // 检查供应商编码是否有交集 - boolean supplierCodeOverlap = hasOverlap(newSupplierCode, existingRule.getSupplierCode()); - // 如果产品类型和供应商编码都有交集,则认为重复 - if (productTypeOverlap && supplierCodeOverlap) { + // 如果产品类型有交集且供应商编码相同,则认为重复 + if (productTypeOverlap && compareSupplierCodes(newSupplierCode, existingRule.getSupplierCode())) { return Arrays.asList(existingRule); } } diff --git a/emis-biz/src/main/resources/mapper/EmisTransPlanRuleMapper.xml b/emis-biz/src/main/resources/mapper/EmisTransPlanRuleMapper.xml index 5d3a59b5c..aea7d094d 100644 --- a/emis-biz/src/main/resources/mapper/EmisTransPlanRuleMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTransPlanRuleMapper.xml @@ -181,8 +181,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"