From dbf671285d9217f6ca84ee1e795aa9af386955e3 Mon Sep 17 00:00:00 2001
From: luofl <1442745593@qq.com>
Date: 星期四, 03 四月 2025 21:06:02 +0800
Subject: [PATCH] 1.租户数量趋势统计

---
 ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java |   30 +++++++++++++++++++++---------
 1 files changed, 21 insertions(+), 9 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 fefafec..ffd0cea 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
@@ -2,6 +2,9 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.uuid.UUID;
 import com.ruoyi.system.mapper.TBillMapper;
 import com.ruoyi.system.model.TBill;
 import com.ruoyi.system.model.TContract;
@@ -27,11 +30,12 @@
     private TContractService contractService;
     @Autowired
     private TBillMapper billMapper;
+    @Autowired
+    RedisCache redisCache;
     // 用于更新违约金账单
     // 每分钟执行一次的定时任务
 
-//    @Scheduled(cron = "0 0 0 * * ?")
-    @Scheduled(cron = "0 * * * * ?")
+    @Scheduled(cron = "0 0 0 * * ?")
     public void dayOfProportionBill() {
         try {
             // 查询所有未缴费账单
@@ -56,13 +60,21 @@
                         billMapper.updateById(tBill);
                         continue;
                     }
-                    BigDecimal money = tBill.getOutstandingMoney().multiply(new BigDecimal(100).add(proportion)).divide(new BigDecimal(100),2, 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);
-                    billMapper.updateById(tBill);
-
+                    String requestId = UUID.fastUUID().toString();
+                    String lockkey = CacheConstants.BILL_UPDATE_LOCK_KEY + tBill.getId();
+                    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);
+                            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);
+                            billMapper.updateById(tBill);
+                        }finally {
+                            redisCache.unlock(lockkey,requestId);
+                        }
+                    }
                 }
             }
         } catch (Exception e) {

--
Gitblit v1.7.1