From 6d98cb17b6180fb73afe10e01ad75e54f5ebfffe Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Wed, 4 Mar 2026 14:32:04 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20=20tms-=E5=AE=A2=E6=88=B7=E8=B4=A6?= =?UTF-8?q?=E5=8D=95=E7=AE=A1=E7=90=86-=E5=AE=A2=E6=88=B7=E8=B4=A6?= =?UTF-8?q?=E5=8D=95=E5=AE=9A=E5=88=B6-=E6=89=B9=E9=87=8F=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=B4=A6=E5=8D=95=E6=97=B6=E6=9C=80=E5=90=8E=E5=9B=9E?= =?UTF-8?q?=E6=AC=BE=E6=97=A5=E7=AE=97=E6=B3=95=E8=B0=83=E6=95=B4=20tms-?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E8=B4=A6=E5=8D=95=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E6=9C=88=E7=BB=93=E8=B4=A6=E5=8D=95=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B4=A6=E5=8D=95=E6=97=B6=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E5=9B=9E=E6=AC=BE=E6=97=A5=E7=AE=97=E6=B3=95=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmisSettleBillServiceImpl.java | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java index c5cf4adbd..d1a07a79f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java @@ -1608,6 +1608,63 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS @Override public int updateEmisSettleBill(EmisSettleBill emisSettleBill) { + // 如果修改了billMonth,需要重新计算最后回款日 + if (emisSettleBill.getId() != null && StringUtils.isNotEmpty(emisSettleBill.getBillMonth())) { + EmisSettleBill oldBill = emisSettleBillMapper.selectEmisSettleBillById(emisSettleBill.getId()); + if (oldBill != null && !emisSettleBill.getBillMonth().equals(oldBill.getBillMonth())) { + // billMonth发生变化,且是月结类型,需要重新计算最后回款日 + if ("2".equals(oldBill.getSettleType())) { + EmisCustomerUser monthUser = getCustomerUserByMonthlyPayCode(oldBill.getCustNo()); + if (monthUser != null) { + // 默认30天,从1号开始 + BigDecimal creditPeriod = BigDecimal.valueOf(30D); + Integer settleDay = 1; + + if (monthUser.getCreditPeriod() != null) { + creditPeriod = monthUser.getCreditPeriod(); + } + + if (monthUser.getSettleDay() != null) { + settleDay = monthUser.getSettleDay(); + } + + Date paymentDueDate = null; + // 周结和半月结的特殊处理 + if (creditPeriod.intValue() == 7) { +// // 获取今日零点 T+6,T为出账日 +// String currDayStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date()); +// Date currDayDate = DateUtils.parseDate(currDayStr); +// paymentDueDate = DateUtils.addDays(currDayDate, 7); + } else if (creditPeriod.intValue() == 15) { +// String currDayStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date()); +// Date currDayDate = DateUtils.parseDate(currDayStr); +// paymentDueDate = DateUtils.addDays(currDayDate, 15); + } else { + Date billMonthDate = DateUtils.parseDate(emisSettleBill.getBillMonth() + "-" + settleDay); + + // credit_period 为 30/60/90 且结算日为每月 1 号时,按对应月份月末作为最后付款日 + if ((creditPeriod.intValue() == 30 || creditPeriod.intValue() == 60 || creditPeriod.intValue() == 90) + && monthUser.getSettleDay() == 1) { + Calendar cal = Calendar.getInstance(); + cal.setTime(billMonthDate); + // 30 -> 加 1 个月,60 -> 加 2 个月,90 -> 加 3 个月 + cal.add(Calendar.MONTH, creditPeriod.intValue() / 30); + // 设置为该月的最后一天 + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); + paymentDueDate = cal.getTime(); + } else { + paymentDueDate = DateUtils.addMonths(billMonthDate, 1); + paymentDueDate = DateUtils.addDays(paymentDueDate, creditPeriod.intValue()); + } + } + + // 设置重新计算后的最后回款日 + emisSettleBill.setPaymentDueDate(paymentDueDate); + } + } + } + } + return emisSettleBillMapper.updateEmisSettleBill(emisSettleBill); }