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 58f6e19d6..f4e9e5372 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 @@ -5283,6 +5283,29 @@ public class EmisBaseService { allNodes.addAll(path); } + // 过滤出运单发货日期在规则有效期内的规则 + if (waybill.getSendDate() != null) { + allNodes = allNodes.stream() + .filter(transPlanRule -> { + // 如果规则没有设置有效期,则默认有效 + if (transPlanRule.getStartDate() == null && transPlanRule.getEndDate() == null) { + return true; + } + // 如果只设置了开始日期,检查发货日期是否在开始日期之后 + if (transPlanRule.getStartDate() != null && transPlanRule.getEndDate() == null) { + return !waybill.getSendDate().before(transPlanRule.getStartDate()); + } + // 如果只设置了结束日期,检查发货日期是否在结束日期之前 + if (transPlanRule.getStartDate() == null && transPlanRule.getEndDate() != null) { + return !waybill.getSendDate().after(transPlanRule.getEndDate()); + } + // 如果同时设置了开始和结束日期,检查发货日期是否在有效期内 + return !waybill.getSendDate().before(transPlanRule.getStartDate()) && + !waybill.getSendDate().after(transPlanRule.getEndDate()); + }) + .collect(Collectors.toList()); + } + // 按ancestors长度分组去重 Map> levelMap = new HashMap<>(); for (EmisTransPlanRule node : allNodes) {