mitao
2025-04-03 534acb09313afcb005543ab83028985a7075eeef
Merge remote-tracking branch 'origin/dev' into dev
3个文件已修改
75 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FlowListenerService.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/THouseServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java
@@ -326,6 +326,7 @@
        // 将所有未缴费账单设置未已失效
        List<TBill> tBills = billService.list(new LambdaQueryWrapper<TBill>()
                .ne(TBill::getPayFeesStatus, 3)
                        .ne(TBill::getBillType,4)
                .eq(TBill::getContractId, contract.getId()));
        for (TBill tBill : tBills) {
            tBill.setPayFeesStatus("5");
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);
                    }
                }
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/THouseServiceImpl.java
@@ -54,7 +54,12 @@
                tHouse.setLeaseStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_LEASE_STATUS,"2"));
            }else{
                tHouse.setLeaseStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_LEASE_STATUS,tHouse.getLeaseStatus()));
                if (tHouse.getLeaseStatus().equals("3")){
                    tHouse.setLeaseStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_LEASE_STATUS,tHouse.getLeaseStatus()));
                }else{
                    tHouse.setLeaseStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_LEASE_STATUS,"1"));
                }
            }
        }