From 534acb09313afcb005543ab83028985a7075eeef Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期四, 03 四月 2025 10:28:26 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FlowListenerService.java | 67 ++++++++++++++++++++++----------- 1 files changed, 45 insertions(+), 22 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FlowListenerService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FlowListenerService.java index a18f96b..2824697 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FlowListenerService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FlowListenerService.java @@ -91,19 +91,22 @@ private final THouseService houseService; public static void main(String[] args) { - LocalDate localDate1 = LocalDate.now().withYear(2025).withMonth(1).withDayOfMonth(31); - System.err.println(localDate1.plusMonths(1)); +// LocalDate localDate1 = LocalDate.now().withYear(2025).withMonth(2).withDayOfMonth(10).with; +// System.err.println(localDate1.plusMonths(1)); //// LocalDate localDate2 = LocalDate.now().withYear(2025).withMonth(4).withDayOfMonth(16); -// LocalDateTime localDate1 = LocalDateTime.now().withYear(2025).withMonth(4).withDayOfMonth(16); -// LocalDateTime localDate2 = LocalDateTime.now().withYear(2025).withMonth(10).withDayOfMonth(24); -// +// LocalDateTime localDate1 = LocalDateTime.now().withYear(2025).withMonth(2).withDayOfMonth(10).withHour(00).withMinute(00).withSecond(00); +// LocalDateTime localDate2 = LocalDateTime.now().withYear(2025).withMonth(3).withDayOfMonth(31).withHour(00).withMinute(00).withSecond(00); +// LocalDateTime with = localDate1.plusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); +// boolean before = with.isBefore(localDate2); +// System.err.println(before); // long between = ChronoUnit.DAYS.between(localDate1, localDate2)+1; - int monthValue = LocalDateTime.now().getMonthValue(); - LocalDateTime.now(); - LocalDateTime.now(); - - System.err.println(LocalDateTime.now().isBefore(LocalDateTime.now())); +// int monthValue = LocalDateTime.now().getMonthValue(); +// LocalDateTime.now(); +// LocalDateTime.now(); + int dayOfMonth = LocalDateTime.now().getMonthValue(); + System.err.println(dayOfMonth); +// System.err.println(LocalDateTime.now().isBefore(LocalDateTime.now())); } @Override @@ -269,6 +272,7 @@ } + /** * 业务状态变更 */ @@ -424,22 +428,41 @@ // 第一个月计算天 int dayOfMonth = rentBill.getStartTime().getDayOfMonth(); if (dayOfMonth == 1) { + System.err.println("第一笔账单 1号计算整月:"); money = money.add(contract.getMonthRent()); } else { - long allDays = ChronoUnit.DAYS.between(contract.getStartPayTime(), contract.getStartPayTime().with(TemporalAdjusters.lastDayOfMonth())) + 1; + long allDays = Math.abs(ChronoUnit.DAYS.between(rentBill.getStartTime(), rentBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth())) + 1); + System.err.println("第一笔账单 计算天数"+allDays); money =money.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(allDays))); + System.err.println("第一笔账单 计算天数金额"+money); } // 后续 if (contract.getStartPayTime().getMonthValue()==3||contract.getStartPayTime().getMonthValue()==6||contract.getStartPayTime().getMonthValue()==9||contract.getStartPayTime().getMonthValue()==12){ + System.err.println("后续账单 月为3 6 9 12金额"+money); rentBill.setPayableFeesMoney(money); rentBill.setOutstandingMoney(rentBill.getPayableFeesMoney()); }else{ + LocalDateTime localDateTime = rentBill.getStartTime().plusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); + System.err.println("后续账单逻辑时间"+localDateTime); while (true){ - if (localDateTime.isBefore(rentBill.getEndTime())){ + if (localDateTime.toLocalDate().isBefore(rentBill.getEndTime().toLocalDate())){ + System.err.println("后续while 在结束之前"); money = money.add(contract.getMonthRent()); - }else{ - money = money.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(ChronoUnit.DAYS.between(rentBill.getEndTime(),localDateTime.with(TemporalAdjusters.firstDayOfMonth()))+1))); + }else if(localDateTime.toLocalDate().equals(rentBill.getEndTime().toLocalDate())){ + System.err.println("后续while 结束"); + money = money.add(contract.getMonthRent()); + break; + }else { + System.err.println("后续while 加一个月大于结束时间"); + if (localDateTime.with(TemporalAdjusters.firstDayOfMonth()).isBefore(rentBill.getEndTime())){ + long a = ChronoUnit.DAYS.between(localDateTime.with(TemporalAdjusters.firstDayOfMonth()),rentBill.getEndTime())+1; + System.err.println("后续while 加一个月大于结束时间 计算天数"+a); + money = money.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply( + new BigDecimal(ChronoUnit.DAYS.between(localDateTime.with(TemporalAdjusters.firstDayOfMonth()),rentBill.getEndTime())+1)) + ); + } + break; } localDateTime = localDateTime.plusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); @@ -977,20 +1000,20 @@ } } if (originalTime.isBefore(tBill.getEndTime())){ - long tempOriginal = ChronoUnit.DAYS.between(originalTime,tBill.getEndTime()); + long tempOriginal = ChronoUnit.DAYS.between(originalTime,tBill.getEndTime())+1; originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(tempOriginal))); } tBill.setPayableFeesMoney(originalMoney); tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); } - if (tBill.getEndTime().getDayOfMonth() >= 15) { +// if (tBill.getEndTime().getDayOfMonth() >= 15) { +// tBill.setPayableFeesTime(tBill.getStartTime().withDayOfMonth(15).toLocalDate()); +// } else if (tBill.getStartTime().getYear() == tBill.getEndTime().getYear() && tBill.getStartTime().getMonthValue() == tBill.getEndTime().getMonthValue()) { +// // 如果同年同月 且日小于15 缴费时间取合同 +// tBill.setPayableFeesTime(tBill.getStartTime().toLocalDate()); +// } else { tBill.setPayableFeesTime(tBill.getStartTime().withDayOfMonth(15).toLocalDate()); - } else if (tBill.getStartTime().getYear() == tBill.getEndTime().getYear() && tBill.getStartTime().getMonthValue() == tBill.getEndTime().getMonthValue()) { - // 如果同年同月 且日小于15 缴费时间取合同 - tBill.setPayableFeesTime(tBill.getStartTime().toLocalDate()); - } else { - tBill.setPayableFeesTime(tBill.getStartTime().withDayOfMonth(15).toLocalDate()); - } +// } billService.save(tBill); } } -- Gitblit v1.7.1