From 259de46812a2dac419e1a96cb000b1504ae93ca4 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Thu, 22 May 2025 14:00:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?demand:=20=20=E7=BD=91=E7=82=B9=E8=B4=B9?= =?UTF-8?q?=E7=94=A8=E7=94=B3=E8=AF=B7/=E8=BF=90=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=95=8C=E9=9D=A2=E4=BF=AE=E6=94=B9=E6=9C=88=E7=BB=93?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E9=9C=80=E8=A6=81=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E4=B8=80=E4=B8=8B=E8=BF=99=E4=B8=AA=E8=BF=90=E5=8D=95=E6=98=AF?= =?UTF-8?q?=E9=A6=96=E6=AC=A1=E7=AD=BE=E7=BA=A6=E4=B9=8B=E5=89=8D=E5=BC=80?= =?UTF-8?q?=E7=9A=84=E8=BF=98=E6=98=AF=E4=B9=8B=E5=90=8E=E5=BC=80=E7=9A=84?= =?UTF-8?q?=EF=BC=8C=E4=B9=8B=E5=89=8D=E5=BC=80=E7=9A=84=E5=B0=B1=E4=B8=8D?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E4=BF=AE=E6=94=B9=20committer:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/emis/service/EmisBaseService.java | 38 +++++++++++++++++++ .../EmisWaybillAjustApplyServiceImpl.java | 3 ++ .../service/impl/EmisWaybillServiceImpl.java | 7 ++++ 3 files changed, 48 insertions(+) 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 647f947e1..91bda5f6a 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 @@ -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; @@ -44,6 +45,9 @@ package com.xdadan.erp.emis.service; import java.math.BigDecimal; 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; @@ -4001,6 +4005,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) { // Date startDate = new Date(); // Date endDate = DateUtils.addDays(startDate, 10); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillAjustApplyServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillAjustApplyServiceImpl.java index 7d2fdfd5b..222e9c82f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillAjustApplyServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillAjustApplyServiceImpl.java @@ -109,6 +109,9 @@ public class EmisWaybillAjustApplyServiceImpl extends EmisBaseService implements throw new EmisBizError(EmisBizErrorType.FAIL,"有申请单审核中,待审核后再提交!"); } + // 检查月结客户首次签约日期,首次签约之前开的不允许修改 + checkFirstSigningDay(emisWaybillOld); + // 插入数据 emisWaybillAjustApplyMapper.insertEmisWaybillAjustApply(emisWaybillAjustApply); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index fac8b5f06..ef5a683ec 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -43,6 +43,7 @@ package com.xdadan.erp.emis.service.impl; import com.xdadan.erp.system.domain.SysFileInfo; import com.xdadan.erp.system.service.ISysFileInfoService; import com.xdadan.erp.system.service.ISysNoticeService; + import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.apache.commons.io.IOUtils; @@ -60,6 +61,9 @@ package com.xdadan.erp.emis.service.impl; import java.math.BigDecimal; import java.net.URLEncoder; import java.text.DecimalFormat; + import java.time.LocalDate; + import java.time.ZoneId; + import java.time.format.DateTimeParseException; import java.util.*; import java.util.stream.Collectors; @@ -1455,6 +1459,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // 检查信用额度 checkUseQuotaCredit(emisWaybillOld,emisWaybillSave); + // 检查月结客户首次签约日期,首次签约之前开的不允许修改 + checkFirstSigningDay(emisWaybillOld); + // 修改运单 reUpdateWayBill(emisWaybillOld, emisWaybillSave,true); From c9f50691ca5c7767633eb66b7e4491c6512f3be8 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Thu, 22 May 2025 14:29:04 +0800 Subject: [PATCH 2/2] =?UTF-8?q?demand:=20=20=E7=BD=91=E7=82=B9=E8=B4=B9?= =?UTF-8?q?=E7=94=A8=E7=94=B3=E8=AF=B7/=E8=BF=90=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=95=8C=E9=9D=A2=E4=BF=AE=E6=94=B9=E6=9C=88=E7=BB=93?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E9=9C=80=E8=A6=81=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E4=B8=80=E4=B8=8B=E8=BF=99=E4=B8=AA=E8=BF=90=E5=8D=95=E6=98=AF?= =?UTF-8?q?=E9=A6=96=E6=AC=A1=E7=AD=BE=E7=BA=A6=E4=B9=8B=E5=89=8D=E5=BC=80?= =?UTF-8?q?=E7=9A=84=E8=BF=98=E6=98=AF=E4=B9=8B=E5=90=8E=E5=BC=80=E7=9A=84?= =?UTF-8?q?=EF=BC=8C=E4=B9=8B=E5=89=8D=E5=BC=80=E7=9A=84=E5=B0=B1=E4=B8=8D?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E4=BF=AE=E6=94=B9=20committer:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/emis/service/EmisBaseService.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) 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 9fddaf1bd..86d8479a7 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 @@ -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");