This commit is contained in:
2026-07-08 19:56:17 +08:00
parent aa8e9b9195
commit bd7eda0ab4

View File

@@ -99,7 +99,10 @@ public class LeaseBillUtil {
System.out.println("【按年方法1】生成账单参数结束"); System.out.println("【按年方法1】生成账单参数结束");
System.out.println("======================================"); 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("【按年方法2】生成账单参数结束");
System.out.println("======================================"); System.out.println("======================================");
// endTime 为 Controller 传入的左闭右开日期(已+1天还原为包含式
Calendar adjustedEnd = (Calendar) endTime.clone();
adjustedEnd.add(Calendar.DATE, -1);
List<Map<String, String>> billList = new ArrayList<>(); List<Map<String, String>> billList = new ArrayList<>();
int startYear = startTime.get(Calendar.YEAR); int startYear = startTime.get(Calendar.YEAR);
int endYear = endTime.get(Calendar.YEAR); int endYear = adjustedEnd.get(Calendar.YEAR);
int totalYears = endYear - startYear + 1; int totalYears = endYear - startYear + 1;
Calendar tempStart = (Calendar) startTime.clone(); Calendar tempStart = (Calendar) startTime.clone();
Calendar yearBaseCal = (Calendar) tempStart.clone(); Calendar yearBaseCal = (Calendar) tempStart.clone();
for (int i = 0; i < totalYears; i++) { for (int i = 0; i < totalYears; i++) {
if (!tempStart.before(endTime)) break; if (!tempStart.before(adjustedEnd)) break;
Map<String, String> bill = new HashMap<>(); Map<String, String> bill = new HashMap<>();
bill.put(fieldDisplayNameService.getDisplayName("开始日期"), getSdf().format(tempStart.getTime())); bill.put(fieldDisplayNameService.getDisplayName("开始日期"), getSdf().format(tempStart.getTime()));
@@ -140,7 +147,7 @@ public class LeaseBillUtil {
tempStart.set(Calendar.MONTH, 11); tempStart.set(Calendar.MONTH, 11);
tempStart.set(Calendar.DATE, 31); tempStart.set(Calendar.DATE, 31);
if (tempStart.before(endTime)) { if (tempStart.before(adjustedEnd)) {
// 当前年度在结束时间之前 → 完整年度账单 // 当前年度在结束时间之前 → 完整年度账单
Calendar nextYearStart = (Calendar) tempStart.clone(); Calendar nextYearStart = (Calendar) tempStart.clone();
nextYearStart.add(Calendar.DATE, 1); nextYearStart.add(Calendar.DATE, 1);
@@ -154,14 +161,11 @@ public class LeaseBillUtil {
yearBaseCal = (Calendar) tempStart.clone(); yearBaseCal = (Calendar) tempStart.clone();
} else { } else {
// 最后一个年度 → 不足一年 // 最后一个年度 → 不足一年
int monthCount = dateUtil.betweenMonthByTwoCalendar(yearBaseCal, endTime); int monthCount = dateUtil.betweenMonthByTwoCalendar(yearBaseCal, adjustedEnd);
String rent = calculateRent(monthCount, params, chargeType); 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("租费"), rent);
bill.put(fieldDisplayNameService.getDisplayName("结束日期"), getSdf().format(realEnd.getTime())); bill.put(fieldDisplayNameService.getDisplayName("结束日期"), getSdf().format(adjustedEnd.getTime()));
} }
// 下一期开始时间 = 当前结束时间 + 1天 // 下一期开始时间 = 当前结束时间 + 1天