From c48ecad4633a6624fec92e42ecd9eeca488a636c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 06 三月 2025 13:42:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java      |    5 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java   |   32 +++++++++++++++-
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/THouseServiceImpl.java   |    4 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FlowListenerService.java |   25 +++++++++---
 4 files changed, 56 insertions(+), 10 deletions(-)

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 5e85735..ea77182 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
@@ -158,6 +158,36 @@
             tContractRentType.setCycleTime(dto.getCycleTime());
             contractRentTypeService.save(tContractRentType);
         }
+        if (dto.getStatus().equals("2")){
+            //发起合同新增审批
+            ProcessStartBO processStartBO = new ProcessStartBO();
+            processStartBO.setCategory(ProcessCategoryEnum.CATEGORY1.getValue().toString());
+            processStartBO.setModuleName("合同新增审批");
+            processStartBO.setName(dto.getContractName());
+            //需要显示发起申请人所在单位
+//            String cedName = SecurityUtils.getLoginUser().getUser().getDept().getDeptName();
+//            String remark = String.format("【镇/街】:%s,【征收实施单位】:%s,【申请金额】:%s万元", stateProject.getStreet(), cedName, stateApplyRecord.getAmount());
+            processStartBO.setRemark("");
+            Map<String, Object> variable = new HashMap<>();
+            variable.put("projectId", dto.getId());
+            processStartBO.setVariable(variable);
+            //开启工作流程
+            Boolean start = stateProcessTemplateService.start(processStartBO);
+            if(start){
+                FlwTask flwTask = flwTaskMapper.selectOne(Wrappers.lambdaQuery(FlwTask.class)
+                        .like(FlwTask::getVariable, dto.getId())
+                        .orderByDesc(FlwTask::getCreateTime)
+                        .last("LIMIT 1"));
+                if(Objects.nonNull(flwTask)){
+                    // 添加定时任务
+                    Map<String, ? extends Object> maps =
+                            new ImmutableMap.Builder<String, Long>().
+                                    put("id", flwTask.getId())
+                                    .build();
+                    QuartzManager.addJob(StateProcessJob.class, (StateProcessJob.name+flwTask.getId()).toUpperCase(), TimeJobType.AUTO_AUDIT,new Date(new Date().getTime()+48*60*60*1000L), maps);
+                }
+            }
+        }
         return R.ok();
     }
     @Log(title = "合同管理-批量删除合同", businessType = BusinessType.DELETE)
@@ -178,8 +208,6 @@
         TContractVO res = new TContractVO();
         TContract contract = contractService.getById(id);
         BeanUtils.copyProperties(contract,res);
-        res.setPayType(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_PAY_TYPE,res.getPayType()));
-        res.setStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_STATUS,res.getStatus()));
         TContractRentType contractRentType = contractRentTypeService.lambdaQuery().eq(TContractRentType::getContractId, id).one();
         if (contractRentType!=null){
             BeanUtils.copyProperties(contractRentType,res);
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java
index 2b9f010..075b8de 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java
@@ -352,6 +352,11 @@
         TContract contract = contractService.getById(bill.getContractId());
         THouse tHouse = houseService.getById(contract.getHouseId());
         res.setHouse(tHouse);
+        res.setConcatStartTime(contract.getStartTime());
+        res.setConcatEndTime(contract.getEndTime());
+        res.setPartyOnePhone(contract.getPartyOnePhone());
+        res.setPartyOnePerson(contract.getPartyTwoPerson());
+        res.setMonthRent(bill.getPayableFeesMoney());
         return R.ok(res);
     }
     @ApiOperation(value = "管理员-我的审批分页列表")
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 a973153..41c16d0 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
@@ -281,10 +281,25 @@
 
                 rentBill.setBillType("1");
                 rentBill.setStartTime(contract.getStartPayTime());
+                if (contract.getFirstPayTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12).isAfter(contract.getEndTime())){
+                    rentBill.setEndTime(contract.getFirstPayTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12));
+                }else{
+                    rentBill.setEndTime(contract.getEndTime());
+                }
                 TContractRentType tContractRentType = contractRentTypes.stream().filter(e -> e.getContractId().equals(contract.getId())).findFirst().orElse(null);
-                if (tContractRentType!=null && contract.getStartPayTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12).isAfter(tContractRentType.getChangeTime())){
+                if (tContractRentType!=null && rentBill.getEndTime().isAfter(tContractRentType.getChangeTime()) ){
+                    long moneyDays = 0;
+                    switch (contract.getPayType()){
+                        case "1":
+                            break;
+                        case "2":
+                            break;
+                        case "3":
+                            break;
+
+                    }
                     // 计算租金变动的天数
-                    long moneyDays = ChronoUnit.DAYS.between(tContractRentType.getChangeTime(), contract.getStartPayTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12))+1L;
+                    moneyDays = Math.abs(ChronoUnit.DAYS.between(tContractRentType.getChangeTime(), contract.getStartPayTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12))+1L);
                     contract.setChangeTime(LocalDateTime.now());
                     // 递增递减的租金
                     BigDecimal contractRentTypeMoney = new BigDecimal("0");
@@ -324,11 +339,7 @@
                             .multiply(new BigDecimal(originalDays));
                     rentBill.setPayableFeesMoney(contractRentTypeMoney.add(originalMoney));
                     rentBill.setOutstandingMoney(rentBill.getPayableFeesMoney());
-                    if (contract.getFirstPayTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12).isAfter(contract.getEndTime())){
-                        rentBill.setEndTime(contract.getFirstPayTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12));
-                    }else{
-                        rentBill.setEndTime(contract.getEndTime());
-                    }
+
                 }else{
                     if (contract.getFirstPayTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12).isAfter(contract.getEndTime())){
                         rentBill.setEndTime(contract.getEndTime());
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/THouseServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/THouseServiceImpl.java
index 9aa06f9..91f1c4f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/THouseServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/THouseServiceImpl.java
@@ -41,11 +41,13 @@
                 .le(TContract::getStartTime, LocalDateTime.now())
                 .ge(TContract::getEndTime, LocalDateTime.now()));
         for (THouse tHouse : list) {
-            tHouse.setLeaseStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_LEASE_STATUS,tHouse.getLeaseStatus()));
             tHouse.setBusinessAttributes(DictUtils.getDictLabel(DictConstants.DICT_TYPE_BUSINESS_ATTRIBUTES,tHouse.getBusinessAttributes()));
             TContract tContract = tContracts.stream().filter(e -> e.getHouseId().equals(tHouse.getId())).findFirst().orElse(null);
             if (tContract!=null){
                 tHouse.setTenantType(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_PAY_TYPE,tContract.getPayType()));
+                tHouse.setLeaseStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_LEASE_STATUS,"2"));
+            }else{
+                tHouse.setLeaseStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_LEASE_STATUS,tHouse.getLeaseStatus()));
             }
         }
         pageInfo.setRecords(list);

--
Gitblit v1.7.1