| | |
| | | private final THouseService houseService; |
| | | |
| | | public static void main(String[] args) { |
| | | // LocalDate localDate1 = LocalDate.now().withYear(2025).withMonth(4).withDayOfMonth(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); |
| | | LocalDate localDate1 = LocalDate.now().withYear(2025).withMonth(1).withDayOfMonth(31); |
| | | System.err.println(localDate1.plusMonths(1)); |
| | | |
| | | long between = ChronoUnit.DAYS.between(localDate1, localDate2)+1; |
| | | System.err.println(between); |
| | | //// 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); |
| | | // |
| | | // 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())); |
| | | } |
| | | |
| | | @Override |
| | | public boolean notify(EventType eventType, Supplier<FlwTask> supplier, NodeModel nodeModel, FlowCreator flowCreator) { |
| | | FlwTask flwTask = supplier.get(); |
| | |
| | | return true; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 业务状态变更 |
| | | */ |
| | |
| | | int submitStatus = status == 0 ? 3 : (status == 1 ? 4 : 1); |
| | | contractService.updateContractAuditStatus(processParameter.getString("projectId"), submitStatus); |
| | | TContract contract = contractService.getById(processParameter.getString("projectId")); |
| | | if(contract.getStatus().equals("4")){ |
| | | if (contract.getStatus().equals("4")) { |
| | | |
| | | // 修改房屋状态 |
| | | THouse house = houseService.getById(contract.getHouseId()); |
| | | if(Objects.nonNull(house)){ |
| | | if (Objects.nonNull(house)) { |
| | | house.setLeaseStatus("2"); |
| | | houseService.updateById(house); |
| | | } |
| | |
| | | rentBill.setContractNumber(contract.getContractNumber()); |
| | | rentBill.setPayableFeesTime(firstPayTime.toLocalDate()); |
| | | rentBill.setPayFeesStatus("1"); |
| | | |
| | | rentBill.setBillType("1"); |
| | | rentBill.setStartTime(contract.getStartPayTime()); |
| | | if (rentBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).isAfter(contract.getEndTime())) { |
| | | if (rentBill.getStartTime().getDayOfMonth() != 1) { |
| | | rentBill.setEndTime(rentBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth())); |
| | | if (contract.getPayType().equals("2")) { |
| | | // 季付 取3 6 9 12 |
| | | int temp = 0 ; |
| | | if (contract.getStartPayTime().getMonthValue() <= 3 ) { |
| | | temp = 3; |
| | | } else if (contract.getStartPayTime().getMonthValue() <= 6) { |
| | | temp = 6; |
| | | } else if (contract.getStartPayTime().getMonthValue() <= 9) { |
| | | temp = 9; |
| | | } else { |
| | | rentBill.setEndTime(rentBill.getStartTime().plusMonths(contract.getPayType().equals("1") ? 1 : contract.getPayType().equals("2") ? 3 : 12).with(TemporalAdjusters.lastDayOfMonth())); |
| | | temp = 12; |
| | | } |
| | | if (contract.getEndTime().isAfter(contract.getStartPayTime().withMonth(temp).with(TemporalAdjusters.lastDayOfMonth()))){ |
| | | rentBill.setEndTime(contract.getStartPayTime().withMonth(temp).with(TemporalAdjusters.lastDayOfMonth())); |
| | | }else { |
| | | rentBill.setEndTime(contract.getEndTime()); |
| | | } |
| | | } else if (contract.getPayType().equals("3")) { |
| | | if (contract.getEndTime().isAfter(contract.getStartPayTime().withMonth(12).with(TemporalAdjusters.lastDayOfMonth()))){ |
| | | rentBill.setEndTime(contract.getStartPayTime().withMonth(12).with(TemporalAdjusters.lastDayOfMonth())); |
| | | }else { |
| | | rentBill.setEndTime(contract.getEndTime()); |
| | | } |
| | | } else { |
| | | rentBill.setEndTime(rentBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth())); |
| | | } |
| | | if (tContractRentType != null && rentBill.getEndTime().isAfter(tContractRentType.getChangeTime())) { |
| | | if (tContractRentType != null && rentBill.getEndTime().isAfter(tContractRentType.getChangeTime())){ |
| | | long moneyDays = 0; |
| | | moneyDays = ChronoUnit.DAYS.between(tContractRentType.getChangeTime(), rentBill.getEndTime())+1; |
| | | if (tContractRentType.getChangeTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(rentBill.getEndTime())){ |
| | | moneyDays = ChronoUnit.DAYS.between(tContractRentType.getChangeTime(), tContractRentType.getChangeTime().with(TemporalAdjusters.lastDayOfMonth())) + 1; |
| | | }else{ |
| | | moneyDays = ChronoUnit.DAYS.between(tContractRentType.getChangeTime(),rentBill.getEndTime()) + 1; |
| | | } |
| | | // 计算租金变动的天数 |
| | | contract.setChangeTime(tContractRentType.getChangeTime()); |
| | | // 递增递减的租金 |
| | | BigDecimal contractRentTypeMoney = new BigDecimal("0"); |
| | | // 不递增递减的租金 |
| | | BigDecimal originalMoney = new BigDecimal("0"); |
| | | // 原租金 |
| | | switch (tContractRentType.getIncreasingDecreasingType()) { |
| | | case 1: |
| | | switch (tContractRentType.getIncreasingDecreasing()) { |
| | |
| | | } |
| | | break; |
| | | } |
| | | LocalDateTime localDateTime = tContractRentType.getChangeTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (localDateTime.isBefore(rentBill.getEndTime())){ |
| | | if (localDateTime.plusMonths(1).isBefore(rentBill.getEndTime())){ |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent()); |
| | | localDateTime = localDateTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long temp = ChronoUnit.DAYS.between(localDateTime,rentBill.getEndTime()) + 1; |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(temp))); |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = Math.abs(ChronoUnit.DAYS.between(contract.getFirstPayTime(), tContractRentType.getChangeTime())); |
| | | originalMoney = originalMoney.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN)) |
| | | .multiply(new BigDecimal(originalDays)); |
| | | long originalDays = 0; |
| | | if (contract.getFirstPayTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(tContractRentType.getChangeTime())){ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(contract.getFirstPayTime(), contract.getFirstPayTime().with(TemporalAdjusters.lastDayOfMonth()))); |
| | | }else{ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(contract.getFirstPayTime(), tContractRentType.getChangeTime())); |
| | | } |
| | | originalMoney = originalMoney.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(originalDays))); |
| | | LocalDateTime originalTime = contract.getFirstPayTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (originalTime.isBefore(tContractRentType.getChangeTime())){ |
| | | if (originalTime.plusMonths(1).isBefore(tContractRentType.getChangeTime())){ |
| | | originalMoney = originalMoney.add(contract.getMonthRent()); |
| | | originalTime = originalTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long tempOriginal = ChronoUnit.DAYS.between(localDateTime,tContractRentType.getChangeTime()) ; |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(tempOriginal))); |
| | | rentBill.setPayableFeesMoney(contractRentTypeMoney.add(originalMoney)); |
| | | rentBill.setOutstandingMoney(rentBill.getPayableFeesMoney()); |
| | | } else { |
| | | // 不走递增递减 |
| | | long allDays = ChronoUnit.DAYS.between(contract.getStartPayTime(), rentBill.getEndTime())+1; |
| | | int dayOfMonth = rentBill.getStartTime().getDayOfMonth(); |
| | | if (dayOfMonth == 1) { |
| | | rentBill.setPayableFeesMoney(contract.getMonthRent().multiply(new BigDecimal(contract.getPayType().equals("1") ? 1 : contract.getPayType().equals("2") ? 3 : 12))); |
| | | } else { |
| | | rentBill.setPayableFeesMoney(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(allDays))); |
| | | if (contract.getPayType().equals("2")){ |
| | | BigDecimal money = new BigDecimal("0"); |
| | | // 第一个月计算天 |
| | | int dayOfMonth = rentBill.getStartTime().getDayOfMonth(); |
| | | if (dayOfMonth == 1) { |
| | | money = money.add(contract.getMonthRent()); |
| | | } else { |
| | | long allDays = ChronoUnit.DAYS.between(contract.getStartPayTime(), contract.getStartPayTime().with(TemporalAdjusters.lastDayOfMonth())) + 1; |
| | | money =money.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(allDays))); |
| | | } |
| | | // 后续 |
| | | if (contract.getStartPayTime().getMonthValue()==3||contract.getStartPayTime().getMonthValue()==6||contract.getStartPayTime().getMonthValue()==9||contract.getStartPayTime().getMonthValue()==12){ |
| | | rentBill.setPayableFeesMoney(money); |
| | | rentBill.setOutstandingMoney(rentBill.getPayableFeesMoney()); |
| | | }else{ |
| | | LocalDateTime localDateTime = rentBill.getStartTime().plusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); |
| | | while (true){ |
| | | if (localDateTime.isBefore(rentBill.getEndTime())){ |
| | | 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))); |
| | | break; |
| | | } |
| | | localDateTime = localDateTime.plusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); |
| | | } |
| | | rentBill.setPayableFeesMoney(money); |
| | | rentBill.setOutstandingMoney(rentBill.getPayableFeesMoney()); |
| | | } |
| | | }else if (contract.getPayType().equals("3")){ |
| | | BigDecimal money = new BigDecimal("0"); |
| | | // 第一个月计算天 |
| | | int dayOfMonth = rentBill.getStartTime().getDayOfMonth(); |
| | | if (dayOfMonth == 1) { |
| | | money = money.add(contract.getMonthRent()); |
| | | } else { |
| | | long allDays = ChronoUnit.DAYS.between(contract.getStartPayTime(), contract.getStartPayTime().with(TemporalAdjusters.lastDayOfMonth())) + 1; |
| | | money =money.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(allDays))); |
| | | } |
| | | // 后续 |
| | | if (contract.getStartPayTime().getMonthValue()==12){ |
| | | rentBill.setPayableFeesMoney(money); |
| | | rentBill.setOutstandingMoney(rentBill.getPayableFeesMoney()); |
| | | }else{ |
| | | LocalDateTime localDateTime = rentBill.getStartTime().plusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); |
| | | while (true){ |
| | | if (localDateTime.isBefore(rentBill.getEndTime())){ |
| | | 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))); |
| | | break; |
| | | } |
| | | localDateTime = localDateTime.plusMonths(1).with(TemporalAdjusters.lastDayOfMonth()); |
| | | } |
| | | rentBill.setPayableFeesMoney(money); |
| | | rentBill.setOutstandingMoney(rentBill.getPayableFeesMoney()); |
| | | } |
| | | }else { |
| | | long allDays = ChronoUnit.DAYS.between(contract.getStartPayTime(), rentBill.getEndTime()) + 1; |
| | | int dayOfMonth = rentBill.getStartTime().getDayOfMonth(); |
| | | if (dayOfMonth == 1) { |
| | | rentBill.setPayableFeesMoney(contract.getMonthRent()); |
| | | } else { |
| | | rentBill.setPayableFeesMoney(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(allDays))); |
| | | } |
| | | rentBill.setOutstandingMoney(rentBill.getPayableFeesMoney()); |
| | | } |
| | | rentBill.setOutstandingMoney(rentBill.getPayableFeesMoney()); |
| | | } |
| | | // 押金账单 |
| | | TBill depositBill = new TBill(); |
| | |
| | | // 之前已经涨、跌过租金了 需要判断周期是否还需要再涨、跌 |
| | | if (changeTime.isBefore(tBill.getEndTime()) && changeTime.isAfter(tBill.getStartTime())) { |
| | | contract.setChangeTime(changeTime); |
| | | // 租金递增递减的时长 天 |
| | | long moneyDays = Math.abs(ChronoUnit.DAYS.between(tContractRentType.getChangeTime(), tBill.getEndTime()))+1; |
| | | long moneyDays = 0; |
| | | if (changeTime.with(TemporalAdjusters.lastDayOfMonth()).isBefore(tBill.getEndTime())){ |
| | | moneyDays = ChronoUnit.DAYS.between(changeTime, changeTime.with(TemporalAdjusters.lastDayOfMonth())) + 1; |
| | | }else{ |
| | | moneyDays = ChronoUnit.DAYS.between(changeTime,tBill.getEndTime()) + 1; |
| | | } |
| | | // 递增递减的租金 |
| | | BigDecimal contractRentTypeMoney = new BigDecimal("0"); |
| | | // 不递增递减的租金 |
| | |
| | | } |
| | | break; |
| | | } |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = ChronoUnit.DAYS.between(tBill.getStartTime(), tContractRentType.getChangeTime()); |
| | | if (originalDays > 0) { |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN)) |
| | | .multiply(new BigDecimal(originalDays)); |
| | | LocalDateTime localDateTime = changeTime.with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (localDateTime.isBefore(tBill.getEndTime())){ |
| | | if (localDateTime.plusMonths(1).isBefore(tBill.getEndTime())){ |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent()); |
| | | localDateTime = localDateTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long temp = ChronoUnit.DAYS.between(localDateTime,tBill.getEndTime()) + 1; |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(temp))); |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = 0; |
| | | if (tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(changeTime)){ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()))); |
| | | }else{ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), changeTime)); |
| | | } |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(originalDays))); |
| | | LocalDateTime originalTime = tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (originalTime.isBefore(changeTime)){ |
| | | if (originalTime.plusMonths(1).isBefore(changeTime)){ |
| | | originalMoney = originalMoney.add(contract.getChangeRent()); |
| | | originalTime = originalTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long tempOriginal = ChronoUnit.DAYS.between(originalTime,changeTime); |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(tempOriginal))); |
| | | |
| | | tBill.setPayableFeesMoney(contractRentTypeMoney.add(originalMoney)); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | contractService.updateById(contract); |
| | | } else { |
| | | // 不涨租金 用上次的 |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().multiply(new BigDecimal(contract.getPayType().equals("1")?1:contract.getPayType().equals("2")?3:12))); |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().multiply(new BigDecimal(contract.getPayType().equals("1") ? 1 : contract.getPayType().equals("2") ? 3 : 12))); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | } |
| | | }else{ |
| | | } else { |
| | | if (tContractRentType.getChangeTime().isBefore(tBill.getEndTime()) && tContractRentType.getChangeTime().isAfter(tBill.getStartTime())) { |
| | | System.err.println("首次递增递减"); |
| | | contract.setChangeTime(tContractRentType.getChangeTime()); |
| | | // 租金递增递减的时长 天 |
| | | long moneyDays = Math.abs(ChronoUnit.DAYS.between(tContractRentType.getChangeTime(), tBill.getEndTime()))+1; |
| | | long moneyDays = 0 ; |
| | | if (tContractRentType.getChangeTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(rentBill.getEndTime())){ |
| | | moneyDays = ChronoUnit.DAYS.between(tContractRentType.getChangeTime(), tContractRentType.getChangeTime().with(TemporalAdjusters.lastDayOfMonth())) + 1; |
| | | }else{ |
| | | moneyDays = ChronoUnit.DAYS.between(tContractRentType.getChangeTime(),rentBill.getEndTime()) + 1; |
| | | } |
| | | // 递增递减的租金 |
| | | |
| | | BigDecimal contractRentTypeMoney = new BigDecimal("0"); |
| | |
| | | } |
| | | break; |
| | | } |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = ChronoUnit.DAYS.between(tBill.getStartTime(), tContractRentType.getChangeTime()); |
| | | System.err.println("不需要长租金时长"+originalDays); |
| | | if (originalDays > 0) { |
| | | originalMoney = originalMoney.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN)) |
| | | .multiply(new BigDecimal(originalDays)); |
| | | LocalDateTime localDateTime = tContractRentType.getChangeTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (localDateTime.isBefore(tBill.getEndTime())){ |
| | | if (localDateTime.plusMonths(1).isBefore(tBill.getEndTime())){ |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent()); |
| | | localDateTime = localDateTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long temp = ChronoUnit.DAYS.between(localDateTime,tBill.getEndTime()) + 1; |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(temp))); |
| | | |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = 0; |
| | | if (tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(tContractRentType.getChangeTime())){ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()))); |
| | | }else{ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), tContractRentType.getChangeTime())); |
| | | } |
| | | originalMoney = originalMoney.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(originalDays))); |
| | | LocalDateTime originalTime = contract.getFirstPayTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (originalTime.isBefore(tContractRentType.getChangeTime())){ |
| | | if (originalTime.plusMonths(1).isBefore(tContractRentType.getChangeTime())){ |
| | | originalMoney = originalMoney.add(contract.getMonthRent()); |
| | | originalTime = originalTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long tempOriginal = ChronoUnit.DAYS.between(originalTime,tContractRentType.getChangeTime()) ; |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(tempOriginal))); |
| | | |
| | | tBill.setPayableFeesMoney(contractRentTypeMoney.add(originalMoney)); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | contractService.updateById(contract); |
| | | }else{ |
| | | } else { |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().multiply(new BigDecimal(contract.getPayType().equals("1") ? 1 : contract.getPayType().equals("2") ? 3 : 12))); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | } |
| | |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().multiply(new BigDecimal(contract.getPayType().equals("1") ? 1 : contract.getPayType().equals("2") ? 3 : 12))); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | } |
| | | }else { |
| | | } else { |
| | | System.err.println("不执行递增递减"); |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().multiply(new BigDecimal(contract.getPayType().equals("1") ? 1 : contract.getPayType().equals("2") ? 3 : 12))); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | |
| | | if (changeTime.isBefore(tBill.getEndTime()) && changeTime.isAfter(tBill.getStartTime())) { |
| | | contract.setChangeTime(changeTime); |
| | | // 租金递增递减的时长 天 |
| | | long moneyDays = Math.abs(ChronoUnit.DAYS.between(changeTime, tBill.getEndTime()))+1; |
| | | long moneyDays = 0; |
| | | if (changeTime.with(TemporalAdjusters.lastDayOfMonth()).isBefore(tBill.getEndTime())){ |
| | | moneyDays = ChronoUnit.DAYS.between(changeTime, changeTime.with(TemporalAdjusters.lastDayOfMonth())) + 1; |
| | | }else{ |
| | | moneyDays = ChronoUnit.DAYS.between(changeTime,tBill.getEndTime()) + 1; |
| | | } |
| | | // 递增递减的租金 |
| | | BigDecimal contractRentTypeMoney = new BigDecimal("0"); |
| | | // 不递增递减的租金 |
| | |
| | | } |
| | | break; |
| | | } |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = ChronoUnit.DAYS.between(tBill.getStartTime(), changeTime); |
| | | if (originalDays > 0) { |
| | | originalMoney = originalMoney.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN)) |
| | | .multiply(new BigDecimal(originalDays)); |
| | | LocalDateTime localDateTime = changeTime.with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (localDateTime.isBefore(tBill.getEndTime())){ |
| | | if (localDateTime.plusMonths(1).isBefore(tBill.getEndTime())){ |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent()); |
| | | localDateTime = localDateTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long temp = ChronoUnit.DAYS.between(localDateTime,tBill.getEndTime()) + 1; |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(temp))); |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = 0; |
| | | if (tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(tContractRentType.getChangeTime())){ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), changeTime.with(TemporalAdjusters.lastDayOfMonth()))); |
| | | }else{ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), changeTime)); |
| | | } |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(originalDays))); |
| | | LocalDateTime originalTime = tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (originalTime.isBefore(changeTime)){ |
| | | if (originalTime.plusMonths(1).isBefore(changeTime)){ |
| | | originalMoney = originalMoney.add(contract.getChangeRent()); |
| | | originalTime = originalTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long tempOriginal = ChronoUnit.DAYS.between(originalTime,changeTime); |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(tempOriginal))); |
| | | |
| | | |
| | | tBill.setPayableFeesMoney(contractRentTypeMoney.add(originalMoney)); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | contractService.updateById(contract); |
| | | } else { |
| | | long finalDays = ChronoUnit.DAYS.between(beforeBill.getEndTime(), contract.getEndTime()); |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().divide(new BigDecimal("30"),2,BigDecimal.ROUND_DOWN).multiply(new BigDecimal(finalDays))); |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().divide(new BigDecimal("30"), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(finalDays))); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | } |
| | | }else{ |
| | | } else { |
| | | if (tContractRentType.getChangeTime().isBefore(tBill.getEndTime()) && tContractRentType.getChangeTime().isAfter(tBill.getStartTime())) { |
| | | contract.setChangeTime(tContractRentType.getChangeTime()); |
| | | // 租金递增递减的时长 天 |
| | | long moneyDays = Math.abs(ChronoUnit.DAYS.between(tContractRentType.getChangeTime(), tBill.getEndTime()))+1; |
| | | // 租金递增递减的时长 天 |
| | | long moneyDays = 0; |
| | | if (tContractRentType.getChangeTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(tBill.getEndTime())){ |
| | | moneyDays = ChronoUnit.DAYS.between(tContractRentType.getChangeTime(), tContractRentType.getChangeTime().with(TemporalAdjusters.lastDayOfMonth())) + 1; |
| | | }else{ |
| | | moneyDays = ChronoUnit.DAYS.between(tContractRentType.getChangeTime(),tBill.getEndTime()) + 1; |
| | | } |
| | | // 递增递减的租金 |
| | | BigDecimal contractRentTypeMoney = new BigDecimal("0"); |
| | | // 不递增递减的租金 |
| | |
| | | } |
| | | break; |
| | | } |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = ChronoUnit.DAYS.between(tBill.getStartTime(), tContractRentType.getChangeTime()); |
| | | if (originalDays > 0) { |
| | | originalMoney = originalMoney.add(contract.getMonthRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN)) |
| | | .multiply(new BigDecimal(originalDays)).setScale(2,BigDecimal.ROUND_DOWN); |
| | | LocalDateTime localDateTime = tContractRentType.getChangeTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (localDateTime.isBefore(tBill.getEndTime())){ |
| | | if (localDateTime.plusMonths(1).isBefore(tBill.getEndTime())){ |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent()); |
| | | localDateTime = localDateTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long temp = ChronoUnit.DAYS.between(localDateTime,tBill.getEndTime()) + 1; |
| | | contractRentTypeMoney = contractRentTypeMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(temp))); |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = 0; |
| | | if (tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(tContractRentType.getChangeTime())){ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()))); |
| | | }else{ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), tContractRentType.getChangeTime())); |
| | | } |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(originalDays))); |
| | | LocalDateTime originalTime = tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (originalTime.isBefore(tContractRentType.getChangeTime())){ |
| | | if (originalTime.plusMonths(1).isBefore(tContractRentType.getChangeTime())){ |
| | | originalMoney = originalMoney.add(contract.getChangeRent()); |
| | | originalTime = originalTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long tempOriginal = ChronoUnit.DAYS.between(originalTime,tContractRentType.getChangeTime()); |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(tempOriginal))); |
| | | tBill.setPayableFeesMoney(contractRentTypeMoney.add(originalMoney)); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | contractService.updateById(contract); |
| | |
| | | } |
| | | } |
| | | } else { |
| | | if (tBill.getStartTime().getDayOfMonth()==1 && tBill.getEndTime().toLocalDate().equals(tBill.getEndTime().with(TemporalAdjusters.lastDayOfMonth()).toLocalDate())){ |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().multiply(new BigDecimal(contract.getPayType().equals("1") ? 1 : contract.getPayType().equals("2") ? 3 : 12))); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | BigDecimal originalMoney = new BigDecimal("0"); |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = 0; |
| | | if (tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(tBill.getEndTime())){ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()))); |
| | | }else{ |
| | | // 最后一笔账单时间 |
| | | long finalDays = ChronoUnit.DAYS.between(beforeBill.getEndTime(), contract.getEndTime()); |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().divide(new BigDecimal("30"),2,BigDecimal.ROUND_DOWN).multiply(new BigDecimal(finalDays))); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), tBill.getEndTime())); |
| | | } |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(originalDays))); |
| | | LocalDateTime originalTime = tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (originalTime.isBefore(tBill.getEndTime())){ |
| | | if (originalTime.plusMonths(1).isBefore(tContractRentType.getChangeTime())){ |
| | | originalMoney = originalMoney.add(contract.getChangeRent()); |
| | | originalTime = originalTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | long tempOriginal = ChronoUnit.DAYS.between(originalTime,tBill.getEndTime()); |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(tempOriginal))); |
| | | tBill.setPayableFeesMoney(originalMoney); |
| | | tBill.setOutstandingMoney(tBill.getPayableFeesMoney()); |
| | | } |
| | | } else { |
| | | BigDecimal originalMoney = new BigDecimal("0"); |
| | | // 不需要涨租金的时间段 |
| | | long originalDays = 0; |
| | | if (tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).isBefore(tBill.getEndTime())){ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()))); |
| | | }else{ |
| | | originalDays = Math.abs(ChronoUnit.DAYS.between(tBill.getStartTime(), tBill.getEndTime())); |
| | | } |
| | | originalMoney = originalMoney.add(contract.getChangeRent().divide(new BigDecimal(30), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(originalDays))); |
| | | LocalDateTime originalTime = tBill.getStartTime().with(TemporalAdjusters.lastDayOfMonth()).plusDays(1); |
| | | while(true){ |
| | | if (originalTime.isBefore(tBill.getEndTime())){ |
| | | if (originalTime.plusMonths(1).isBefore(tContractRentType.getChangeTime())){ |
| | | originalMoney = originalMoney.add(contract.getChangeRent()); |
| | | originalTime = originalTime.plusMonths(1); |
| | | }else { |
| | | break; |
| | | } |
| | | }else{ |
| | | break; |
| | | } |
| | | } |
| | | }else{ |
| | | long finalDays = ChronoUnit.DAYS.between(beforeBill.getEndTime(), contract.getEndTime()); |
| | | tBill.setPayableFeesMoney(contract.getChangeRent().divide(new BigDecimal("30"),2,BigDecimal.ROUND_DOWN).multiply(new BigDecimal(finalDays))); |
| | | long tempOriginal = ChronoUnit.DAYS.between(originalTime,tBill.getEndTime()); |
| | | 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()){ |
| | | } else if (tBill.getStartTime().getYear() == tBill.getEndTime().getYear() && tBill.getStartTime().getMonthValue() == tBill.getEndTime().getMonthValue()) { |
| | | // 如果同年同月 且日小于15 缴费时间取合同 |
| | | tBill.setPayableFeesTime(tBill.getStartTime().toLocalDate()); |
| | | }else{ |
| | | } else { |
| | | tBill.setPayableFeesTime(tBill.getStartTime().withDayOfMonth(15).toLocalDate()); |
| | | } |
| | | billService.save(tBill); |