demand: TMS-运输管理-货物组批次-新增提醒:发出时间的选择需要在规则时间以内

This commit is contained in:
aike 2025-12-04 17:08:28 +08:00
parent c2b1f32c1c
commit 7df28c0e47

View File

@ -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<String> 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;
}