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("======================================");
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<Map<String, String>> 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<String, String> 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天