From bd7eda0ab4759ca270fd511b90523578a08ccd2f Mon Sep 17 00:00:00 2001 From: RuicyWu <1063154311@qq.com> Date: Wed, 8 Jul 2026 19:56:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src_leasebill/util/LeaseBillUtil.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/seeyon/apps/src_leasebill/util/LeaseBillUtil.java b/src/main/java/com/seeyon/apps/src_leasebill/util/LeaseBillUtil.java index 2c089ed..d277584 100644 --- a/src/main/java/com/seeyon/apps/src_leasebill/util/LeaseBillUtil.java +++ b/src/main/java/com/seeyon/apps/src_leasebill/util/LeaseBillUtil.java @@ -99,7 +99,10 @@ public class LeaseBillUtil { System.out.println("【按年方法1】生成账单参数结束"); System.out.println("======================================"); - return createCycleBills(startTime, endTime, isMonthLastDay, payCycleMonths, params, chargeType); + // endTime 为 Controller 传入的左闭右开日期(已+1天),createCycleBills 内部自行 +1,需还原为包含式 + Calendar adjustedEnd = (Calendar) endTime.clone(); + adjustedEnd.add(Calendar.DATE, -1); + return createCycleBills(startTime, adjustedEnd, isMonthLastDay, payCycleMonths, params, chargeType); } @@ -122,16 +125,20 @@ public class LeaseBillUtil { System.out.println("【按年方法2】生成账单参数结束"); System.out.println("======================================"); + // endTime 为 Controller 传入的左闭右开日期(已+1天),还原为包含式 + Calendar adjustedEnd = (Calendar) endTime.clone(); + adjustedEnd.add(Calendar.DATE, -1); + List> billList = new ArrayList<>(); int startYear = startTime.get(Calendar.YEAR); - int endYear = endTime.get(Calendar.YEAR); + int endYear = adjustedEnd.get(Calendar.YEAR); int totalYears = endYear - startYear + 1; Calendar tempStart = (Calendar) startTime.clone(); Calendar yearBaseCal = (Calendar) tempStart.clone(); for (int i = 0; i < totalYears; i++) { - if (!tempStart.before(endTime)) break; + if (!tempStart.before(adjustedEnd)) break; Map bill = new HashMap<>(); bill.put(fieldDisplayNameService.getDisplayName("开始日期"), getSdf().format(tempStart.getTime())); @@ -140,7 +147,7 @@ public class LeaseBillUtil { tempStart.set(Calendar.MONTH, 11); tempStart.set(Calendar.DATE, 31); - if (tempStart.before(endTime)) { + if (tempStart.before(adjustedEnd)) { // 当前年度在结束时间之前 → 完整年度账单 Calendar nextYearStart = (Calendar) tempStart.clone(); nextYearStart.add(Calendar.DATE, 1); @@ -154,14 +161,11 @@ public class LeaseBillUtil { yearBaseCal = (Calendar) tempStart.clone(); } else { // 最后一个年度 → 不足一年 - int monthCount = dateUtil.betweenMonthByTwoCalendar(yearBaseCal, endTime); + int monthCount = dateUtil.betweenMonthByTwoCalendar(yearBaseCal, adjustedEnd); String rent = calculateRent(monthCount, params, chargeType); - Calendar realEnd = (Calendar) endTime.clone(); - realEnd.add(Calendar.DATE, -1); - bill.put(fieldDisplayNameService.getDisplayName("租费"), rent); - bill.put(fieldDisplayNameService.getDisplayName("结束日期"), getSdf().format(realEnd.getTime())); + bill.put(fieldDisplayNameService.getDisplayName("结束日期"), getSdf().format(adjustedEnd.getTime())); } // 下一期开始时间 = 当前结束时间 + 1天