demand: 网点费用申请/运单修改界面修改月结的时候需要判断一下这个运单是首次签约之前开的还是之后开的,之前开的就不允许修改

committer: heyu
This commit is contained in:
aike 2025-05-22 14:29:04 +08:00
parent 4ae68d2310
commit c9f50691ca

View File

@ -33,6 +33,7 @@ package com.xdadan.erp.emis.service;
import com.xdadan.erp.system.service.ISysConfigService;
import com.xdadan.erp.system.service.ISysNoticeService;
import com.xdadan.erp.system.service.ISysUserService;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
@ -46,6 +47,9 @@ package com.xdadan.erp.emis.service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
@ -4050,6 +4054,40 @@ public class EmisBaseService {
return copy;
}
/**
* 检查月结客户首次签约日期,首次签约之前开的不允许修改
*
* @param emisWaybillOld
* @throws EmisBizError
*/
protected void checkFirstSigningDay(EmisWaybill emisWaybillOld) throws EmisBizError {
if (emisWaybillOld == null || emisWaybillOld.getOrderDate() == null || StringUtil.isBlank(emisWaybillOld.getCustNo())) {
return;
}
EmisCustomerUser emisCustomerUser = emisCustomerUserMapper
.selectMonthCustomerByMonthlyPayCode(emisWaybillOld.getCustNo());
if (emisCustomerUser == null || StringUtil.isBlank(emisCustomerUser.getFirstSigningDay())) {
return;
}
try {
LocalDate firstSigningDate = LocalDate.parse(emisCustomerUser.getFirstSigningDay());
LocalDate orderDate = emisWaybillOld.getOrderDate().toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
if (orderDate.isBefore(firstSigningDate)) {
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR,
String.format("运单日期(%s)不能早于客户首次签约日期(%s)",
orderDate, firstSigningDate));
}
} catch (DateTimeParseException e) {
log.error("客户首次签约日期格式错误: {}", emisCustomerUser.getFirstSigningDay(), e);
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR, "客户首次签约日期格式错误");
}
}
public static void main(String[] args) throws ParseException {
// Date startDate = new Date("202");
Date startDate= new SimpleDateFormat("yyyy-MM-dd").parse("2025-05-11");