From 4e1d9877d6f2652dafb0fed1ee27f25ba11afcc6 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 03 四月 2025 20:11:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ruoyi-system/src/main/java/com/ruoyi/system/task/utils/TaskUtil.java                     |   27 ++++++++++++++++++++-------
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java          |    8 ++++++--
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FlowListenerService.java        |    4 ++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCheckAcceptRecordController.java |   17 +++++++++--------
 4 files changed, 39 insertions(+), 17 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCheckAcceptRecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCheckAcceptRecordController.java
index 695e91c..11f61d4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCheckAcceptRecordController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCheckAcceptRecordController.java
@@ -7,15 +7,9 @@
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.system.model.TBill;
-import com.ruoyi.system.model.TCheckAcceptRecord;
-import com.ruoyi.system.model.TContract;
-import com.ruoyi.system.model.THouse;
+import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.TCheckAcceptRecordQuery;
-import com.ruoyi.system.service.TBillService;
-import com.ruoyi.system.service.TCheckAcceptRecordService;
-import com.ruoyi.system.service.TContractService;
-import com.ruoyi.system.service.THouseService;
+import com.ruoyi.system.service.*;
 import com.ruoyi.system.vo.TCheckAcceptRecordVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -29,6 +23,7 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -48,6 +43,8 @@
     private final THouseService houseService;
     @Autowired
     private TBillService billService;
+    @Autowired
+    private TTenantService tenantService;
     @Autowired
     public TCheckAcceptRecordController(TCheckAcceptRecordService checkAcceptRecordService, TContractService contractService, THouseService houseService) {
         this.checkAcceptRecordService = checkAcceptRecordService;
@@ -73,6 +70,10 @@
     public R<THouse> getHouseByContractId(@RequestParam String contractId) {
         TContract contract = contractService.getById(contractId);
         THouse house = houseService.getById(contract.getHouseId());
+        TTenant tenant = tenantService.getById(contract.getTenantId());
+        if(Objects.nonNull(tenant)){
+            house.setTenantType(tenant.getTenantType());
+        }
         return R.ok(house);
     }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java
index 5c95dc4..007aa13 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java
@@ -317,7 +317,6 @@
     @Log(title = "合同管理-确认结算", businessType =  BusinessType.UPDATE)
     @ApiOperation(value = "确认结算")
     @PostMapping(value = "/confirmSettlement")
-
     public R<Boolean> confirmSettlement(String id) {
         TContract contract = contractService.getById(id);
         contract.setStatus("8");
@@ -330,7 +329,12 @@
         for (TBill tBill : tBills) {
             tBill.setPayFeesStatus("5");
         }
-        billService.updateBatchById(tBills);        return R.ok();
+        billService.updateBatchById(tBills);
+        // 将房屋改成待出租
+        THouse house = houseService.getById(contract.getHouseId());
+        house.setLeaseStatus("1");
+        houseService.updateById(house);
+        return R.ok();
     }
     @ApiOperation(value = "终止合同剩余未缴费账单列表")
     @PostMapping(value = "/contractBillList")
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 fbad782..d76f7f8 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
@@ -1032,6 +1032,10 @@
                 //更新合同结束时间
                 contract.setEndTime(contract.getTerminateTime());
                 contractService.updateById(contract);
+                // 修改房屋状态
+                THouse house = houseService.getById(contract.getHouseId());
+                house.setLeaseStatus("1");
+                houseService.updateById(house);
 
                 TCheckAcceptRecord tCheckAcceptRecord = new TCheckAcceptRecord();
                 tCheckAcceptRecord.setContractId(contract.getId());
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 4e6e2f7..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,6 +30,8 @@
     private TContractService contractService;
     @Autowired
     private TBillMapper billMapper;
+    @Autowired
+    RedisCache redisCache;
     // 用于更新违约金账单
     // 每分钟执行一次的定时任务
 
@@ -55,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