From 7df28c0e471cdf6778e495202dc54b2a878d7306 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Thu, 4 Dec 2025 17:08:28 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20=20TMS-=E8=BF=90=E8=BE=93=E7=AE=A1?= =?UTF-8?q?=E7=90=86-=E8=B4=A7=E7=89=A9=E7=BB=84=E6=89=B9=E6=AC=A1-?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8F=90=E9=86=92=EF=BC=9A=E5=8F=91=E5=87=BA?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E7=9A=84=E9=80=89=E6=8B=A9=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E5=9C=A8=E8=A7=84=E5=88=99=E6=97=B6=E9=97=B4=E4=BB=A5=E5=86=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmisTmsSiteBatchServiceImpl.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java index 902b73f4d..2cfb1a918 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java @@ -11,6 +11,7 @@ package com.xdadan.erp.emis.service.impl; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import java.util.ArrayList; @@ -444,6 +445,36 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi if (CollectionUtil.isEmpty(filterList)) { throw new EmisBizError(EmisBizErrorType.FAIL, emisWaybill.getBillCode() + "组批次起始网点、下一网点、供应商与规则不匹配"); } + // 过滤有效期内的规则 + Date etd = oldSiteBatch.getEtd(); + if (etd != null) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + List validRanges = filterList.stream().map(i -> { + Date startDate = i.getStartDate(); + Date endDate = i.getEndDate(); + if (startDate == null || endDate == null) { + return null; + } + return sdf.format(startDate) + "~" + sdf.format(endDate); + }).filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList()); + filterList = filterList.stream() + .filter(i -> { + Date startDate = i.getStartDate(); + Date endDate = i.getEndDate(); + if (startDate == null || endDate == null) { + return false; + } + // 判断etd是否在有效期内:startDate <= etd < endDate + return !etd.before(startDate) && etd.before(endDate); + }) + .collect(Collectors.toList()); + if (CollectionUtil.isEmpty(filterList)) { + String rangeMsg = CollectionUtil.isEmpty(validRanges) ? "暂无可用时间范围" + : String.join(",", validRanges); + throw new EmisBizError(EmisBizErrorType.FAIL, + emisWaybill.getBillCode() + "组批次发出时间不在规则有效期内(规则时间范围:" + rangeMsg + "),请选择正确的时间或联系it处理"); + } + } return list; }