From 8cd5154f68bc0302ea25aa6b84a3b3786d855504 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 02 四月 2025 20:04:47 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/xiaochen991015/xizang

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FlowListenerService.java |   53 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 31 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..685686b 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 @@
     }
 
 
+
     /**
      * 业务状态变更
      */
@@ -426,7 +430,7 @@
                             if (dayOfMonth == 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);
                                 money =money.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(allDays)));
                             }
                             // 后续
@@ -436,10 +440,15 @@
                             }else{
                                 LocalDateTime localDateTime = rentBill.getStartTime().plusMonths(1).with(TemporalAdjusters.lastDayOfMonth());
                                 while (true){
-                                    if (localDateTime.isBefore(rentBill.getEndTime())){
+                                    if (localDateTime.toLocalDate().isBefore(rentBill.getEndTime().toLocalDate())){
                                         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())){
+                                        money = money.add(contract.getMonthRent());
+                                        break;
+                                    }else {
+                                        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 +986,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