From c474556f44163526700fd7c99a88e37e4297e23f Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 27 二月 2025 19:14:23 +0800
Subject: [PATCH] 审批流定时任务

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java |   82 +++++++++++++++++++++++++++++++++--------
 1 files changed, 66 insertions(+), 16 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java
index 5f77e82..3e62453 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java
@@ -1,11 +1,14 @@
 package com.ruoyi.system.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.constant.DictConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.enums.ProcessCategoryEnum;
 import com.ruoyi.common.utils.DictUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.system.bo.ProcessStartBO;
 import com.ruoyi.system.dto.SignContractDTO;
 import com.ruoyi.system.dto.TerminateContractDTO;
 import com.ruoyi.system.mapper.TBillMapper;
@@ -16,6 +19,7 @@
 import com.ruoyi.system.query.TContractAppletQuery;
 import com.ruoyi.system.query.TContractBillQuery;
 import com.ruoyi.system.query.TContractQuery;
+import com.ruoyi.system.service.StateProcessTemplateService;
 import com.ruoyi.system.service.TBillService;
 import com.ruoyi.system.service.TContractRentTypeService;
 import com.ruoyi.system.service.TContractService;
@@ -31,9 +35,7 @@
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAdjusters;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 /**
  * <p>
@@ -55,6 +57,8 @@
     private TBillService billService;
     @Resource
     private TContractMapper contractMapper;
+    @Autowired
+    private StateProcessTemplateService stateProcessTemplateService;
 
     @Override
     public PageInfo<TContract> contractList(TContractQuery query) {
@@ -100,12 +104,33 @@
         contract.setTerminateRemark(dto.getTerminateRemark());
         contract.setStatus("4");
         this.baseMapper.updateById(contract);
+
+        // 进入合同提前终止审批流程
+        ProcessStartBO processStartBO = new ProcessStartBO();
+        processStartBO.setCategory(ProcessCategoryEnum.CATEGORY3.getValue().toString());
+        processStartBO.setModuleName("合同提前终止审批");
+        processStartBO.setName(contract.getContractName());
+        processStartBO.setRemark("");
+        Map<String, Object> variable = new HashMap<>();
+        variable.put("projectId", dto.getId());
+        processStartBO.setVariable(variable);
+        //开启工作流程
+        stateProcessTemplateService.start(processStartBO);
+
         // 生成验收记录
         TCheckAcceptRecord tCheckAcceptRecord = new TCheckAcceptRecord();
         tCheckAcceptRecord.setContractId(dto.getId());
         tCheckAcceptRecord.setHouseId(contract.getHouseId());
-        tCheckAcceptRecord.setLeaseReason("后台终止");
-        tCheckAcceptRecord.setStatus("1");
+        tCheckAcceptRecord.setLeaseReason("后台终止合同");
+        tCheckAcceptRecord.setStatus(false);
+        tCheckAcceptRecord.setAcceptanceTime(LocalDateTime.now());
+        LocalDate now = LocalDate.now();
+        String replace = (now + "").replace("-", "");
+        int size = checkAcceptRecordMapper.selectList(new LambdaQueryWrapper<TCheckAcceptRecord>()
+                .likeRight(TCheckAcceptRecord::getAcceptanceTime, LocalDate.now())).size();
+        tCheckAcceptRecord.setCode(replace.substring(2)+String.format("%03d", size+1));
+
+
         checkAcceptRecordMapper.insert(tCheckAcceptRecord);
         // 将所有未缴费账单设置未已失效
         List<TBill> tBills = billMapper.selectList(new LambdaQueryWrapper<TBill>()
@@ -117,7 +142,13 @@
         billService.updateBatchById(tBills);
     }
 
-
+    public static void main(String[] args) {
+//        LocalDate now = LocalDate.now();
+//        String replace = (now + "").replace("-", "");
+//        System.err.println(replace.substring(2));
+//
+//        System.err.println(String.format("%03d",1));
+    }
     @Override
     public CheckAcceptRecordVO getCheckByContractId(String id) {
         CheckAcceptRecordVO checkAcceptRecordVO = new CheckAcceptRecordVO();
@@ -140,9 +171,21 @@
         if (contract.getStatus().equals("4"))return R.fail("该合同已签订");
         contract.setSignature(dto.getSignature());
         contract.setStatus("4");
-        contractMapper.updateById(contract);
         contract.setFirstPayTime(contract.getStartTime().plusDays(10));
-        List<TBill> bills = new ArrayList<>();
+        contractMapper.updateById(contract);
+
+        // 进入签订审批流程
+        ProcessStartBO processStartBO = new ProcessStartBO();
+        processStartBO.setCategory(ProcessCategoryEnum.CATEGORY2.getValue().toString());
+        processStartBO.setModuleName("合同签订审批");
+        processStartBO.setName(contract.getContractName());
+        processStartBO.setRemark("");
+        Map<String, Object> variable = new HashMap<>();
+        variable.put("projectId", dto.getId());
+        processStartBO.setVariable(variable);
+        //开启工作流程
+        stateProcessTemplateService.start(processStartBO);
+
         List<TContractRentType> contractRentTypes = contractRentTypeService.list();
         // 生成第一笔账单
         // 第一次应缴费日期
@@ -150,7 +193,7 @@
         TBill rentBill = new TBill();
         rentBill.setContractId(contract.getId());
         rentBill.setContractNumber(contract.getContractNumber());
-        rentBill.setPayableFeesTime(firstPayTime);
+        rentBill.setPayableFeesTime(firstPayTime.toLocalDate());
         if (firstPayTime.toLocalDate().equals(LocalDate.now())){
             rentBill.setPayFeesStatus("1");
         }else {
@@ -226,7 +269,7 @@
         depositBill.setOutstandingMoney(depositBill.getPayableFeesMoney());
         depositBill.setStartTime(contract.getStartPayTime());
         depositBill.setEndTime(contract.getEndTime());
-        depositBill.setPayableFeesTime(firstPayTime);
+        depositBill.setPayableFeesTime(firstPayTime.toLocalDate());
         if (firstPayTime.toLocalDate().equals(LocalDate.now())){
             depositBill.setPayFeesStatus("1");
 
@@ -410,11 +453,11 @@
                         }
                         tBill.setContractNumber(contract.getContractNumber());
                         if (beforeBill.getEndTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12).getDayOfMonth()<=15){
-                            tBill.setPayableFeesTime(contract.getEndTime());
+                            tBill.setPayableFeesTime(contract.getEndTime().toLocalDate());
                         }else{
                             tBill.setPayableFeesTime((contract.getPayType().equals("1")?
-                                    beforeBill.getEndTime().plusMonths(1).withDayOfMonth(15):contract.getPayType().equals("2")?
-                                    beforeBill.getEndTime().plusMonths(3).withDayOfMonth(15):beforeBill.getEndTime().withDayOfMonth(15).plusMonths(12)));
+                                    beforeBill.getEndTime().plusMonths(1).withDayOfMonth(15).toLocalDate():contract.getPayType().equals("2")?
+                                    beforeBill.getEndTime().plusMonths(3).withDayOfMonth(15).toLocalDate():beforeBill.getEndTime().withDayOfMonth(15).plusMonths(12).toLocalDate()));
                         }
                         tBill.setPayFeesStatus("2");
                         tBill.setBillType("1");
@@ -597,11 +640,11 @@
             }
             tBill.setContractNumber(contract.getContractNumber());
             if (beforeBill.getEndTime().plusMonths(contract.getPayType().equals("1")? 1:contract.getPayType().equals("2")? 3:12).getDayOfMonth()<=15){
-                tBill.setPayableFeesTime(contract.getEndTime().withHour(0).withMinute(0).withSecond(0));
+                tBill.setPayableFeesTime(contract.getEndTime().withHour(0).withMinute(0).withSecond(0).toLocalDate());
             }else{
                 tBill.setPayableFeesTime((contract.getPayType().equals("1")?
-                        beforeBill.getEndTime().plusMonths(1).withDayOfMonth(15):contract.getPayType().equals("2")?
-                        beforeBill.getEndTime().plusMonths(3).withDayOfMonth(15):beforeBill.getEndTime().withDayOfMonth(15).plusMonths(12).withHour(0).withMinute(0).withSecond(0)));
+                        beforeBill.getEndTime().plusMonths(1).withDayOfMonth(15).toLocalDate():contract.getPayType().equals("2")?
+                        beforeBill.getEndTime().plusMonths(3).withDayOfMonth(15).toLocalDate():beforeBill.getEndTime().withDayOfMonth(15).plusMonths(12).withHour(0).withMinute(0).withSecond(0).toLocalDate()));
             }
             tBill.setPayFeesStatus("1");
             tBill.setBillType("1");
@@ -624,4 +667,11 @@
 
         return list;
     }
+
+    @Override
+    public Boolean updateContractAuditStatus(String projectId, Integer status) {
+        LambdaUpdateWrapper<TContract> contractLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        contractLambdaUpdateWrapper.eq(TContract::getId, projectId).set(TContract::getStatus, status);
+        return this.update(contractLambdaUpdateWrapper);
+    }
 }

--
Gitblit v1.7.1