From eca240fb896f796d70f4e5aa7e115597afa052f2 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 22 四月 2025 17:12:30 +0800
Subject: [PATCH] bug修改

---
 ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java
index ffd0cea..05ffb57 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java
@@ -39,11 +39,15 @@
     public void dayOfProportionBill() {
         try {
             // 查询所有未缴费账单
-            List<TBill> list = billMapper.selectList(new LambdaQueryWrapper<TBill>().eq(TBill::getPayFeesStatus, 1)
-                    .le(TBill::getPayableFeesTime,LocalDate.now()));
+            List<TBill> list = billMapper.selectList(new LambdaQueryWrapper<TBill>().ne(TBill::getPayFeesStatus, 5)
+                    .ne(TBill::getOutstandingMoney,0));
+            List<TContract> contractList = contractService.list();
+
             for (TBill tBill : list) {
                 tBill.setPayFeesStatus("4");
-                TContract contract = contractService.getById(tBill.getContractId());
+                TContract contract = contractList.stream().filter(e -> e.getId().equals(tBill.getContractId())).findFirst().orElse(null);
+                if (contract==null)continue;
+                if (contract.getProportion().compareTo(BigDecimal.ZERO)==0)continue;
                 LocalDate payableFeesTime = tBill.getPayableFeesTime();
                 // 将LocalDate转化为LocalDateTime
                 LocalDateTime payableFeesTime1 = LocalDateTime.of(payableFeesTime, LocalTime.of(0, 0, 0));
@@ -55,7 +59,7 @@
                     // 违约金比例
                     BigDecimal proportion = contract.getProportion();
                     // 按每天 待缴费金额 * XX% 增加违约金费用
-                    if (tBill.getOutstandingMoney().compareTo(new BigDecimal("0"))==0){
+                    if (contract.getTotalYear().compareTo(new BigDecimal("0"))==0){
                         tBill.setPayFeesStatus("3");
                         billMapper.updateById(tBill);
                         continue;
@@ -65,11 +69,10 @@
                     boolean isok = redisCache.trylockLoop(lockkey, requestId, 60);
                     if (isok){
                         try {
-                            BigDecimal money = tBill.getOutstandingMoney().multiply(new BigDecimal(100).add(proportion)).divide(new BigDecimal(100),2, BigDecimal.ROUND_DOWN);
+                            BigDecimal money = contract.getTotalYear().multiply(proportion.divide(new BigDecimal(100),4, BigDecimal.ROUND_DOWN));
                             tBill.setOverDays((int) l);
-                            BigDecimal bigDecimal = tBill.getOutstandingMoney().multiply(proportion).setScale(2, BigDecimal.ROUND_DOWN);
-                            tBill.setPayableFeesPenalty(tBill.getPayableFeesPenalty()!=null?tBill.getPayableFeesPenalty():new BigDecimal("0").add(bigDecimal));
-                            tBill.setOutstandingMoney(money);
+                            tBill.setPayableFeesPenalty(tBill.getPayableFeesPenalty()!=null?tBill.getPayableFeesPenalty().add(money):new BigDecimal("0").add(money));
+                            tBill.setOutstandingMoney(money.add(tBill.getOutstandingMoney()));
                             billMapper.updateById(tBill);
                         }finally {
                             redisCache.unlock(lockkey,requestId);

--
Gitblit v1.7.1