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 3388d23a1..521aac51b 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 @@ -5027,12 +5027,35 @@ public class EmisBaseService { String key = ruleItem.getStartSiteCode() + "_" + ruleItem.getNextSiteCode(); groupMap.computeIfAbsent(key, k -> new ArrayList<>()).add(ruleItem); } + + boolean isGroupMatch = false; for (List group : groupMap.values()) { // 判断该组是否有匹配 boolean matched = group.stream().anyMatch(levelRule -> filterRules.stream().anyMatch( filterRule -> Objects.equals(filterRule.getStartSiteCode(), levelRule.getStartSiteCode()) && Objects.equals(filterRule.getNextSiteCode(), levelRule.getNextSiteCode()) && compareSupplierCodes(filterRule.getSupplierCode(), levelRule.getSupplierCode()))); + if (matched) { + isGroupMatch = true; + if (group.get(0).getChildren() == null) { + return; + } + break; + } + } + if (isGroupMatch) { + continue; + } + + for (List group : groupMap.values()) { + // 判断该组是否有匹配 + boolean matched = group.stream().anyMatch(levelRule -> filterRules.stream().anyMatch( + filterRule -> Objects.equals(filterRule.getStartSiteCode(), levelRule.getStartSiteCode()) && + Objects.equals(filterRule.getNextSiteCode(), levelRule.getNextSiteCode()) && + compareSupplierCodes(filterRule.getSupplierCode(), levelRule.getSupplierCode()))); + if (matched && group.get(0).getChildren() == null) { + return; + } if (!matched && !group.isEmpty()) { // if (CollectionUtil.isNotEmpty(missRecords)) { // List list = missRecords.stream().filter(i -> waybill.getBillCode().equals(i.getBillCode())).collect(Collectors.toList());