From a4b961262680c1bc4ed47a423dfc43c986062769 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 26 二月 2025 14:01:19 +0800
Subject: [PATCH] 审批流

---
 ruoyi-system/src/main/resources/mapper/system/StateTaskCenterMapper.xml                       |   62 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/ProcessDetailVO.java                           |   17 +
 ruoyi-system/src/main/resources/mapper/system/TContractMapper.xml                             |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessTaskListBO.java                         |   18 +
 ruoyi-system/src/main/java/com/ruoyi/system/vo/ProcessTaskListVO.java                         |  108 +++++++++
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TContractController.java              |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateTaskCenterMapper.java                 |   14 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java               |   33 +-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java              |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/model/StateTaskCenter.java                        |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/StateProcessController.java            |   17 +
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/StateProcessController.java           |  208 +++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java |  142 +++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java            |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/service/StateTaskCenterService.java               |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateTaskCenterServiceImpl.java      |   13 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java              |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java          |    5 
 18 files changed, 639 insertions(+), 25 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/StateProcessController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/StateProcessController.java
index abb00c3..69b4c28 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/StateProcessController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/StateProcessController.java
@@ -1,5 +1,6 @@
 package com.ruoyi.web.controller.api;
 
+import com.aizuda.bpm.engine.entity.FlwTask;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -18,6 +19,7 @@
 import com.ruoyi.system.bo.*;
 import com.ruoyi.system.model.StateProcessModule;
 import com.ruoyi.system.model.StateProcessTemplate;
+import com.ruoyi.system.model.TContract;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.StateProcessModuleService;
 import com.ruoyi.system.service.StateProcessTemplateService;
@@ -163,6 +165,13 @@
         return AjaxResult.success(processTemplateService.dealTaskPage(processTemplatePageBO));
     }
 
+    //待办和已办列表
+    @ApiOperation("待办和已办列表")
+    @PostMapping("/dealAndWait/task/page")
+    public AjaxResult<PageInfo<ProcessTaskListVO>> dealAndWaitTaskPage(@RequestBody ProcessTaskListBO processTemplatePageBO) {
+        return AjaxResult.success(processTemplateService.dealAndWaitTaskPage(processTemplatePageBO));
+    }
+
     //抄送
     @ApiOperation("抄送列表")
     @PostMapping("/copy/task/page")
@@ -188,4 +197,12 @@
         return AjaxResult.success();
     }
 
+    //审核拒绝
+    @ApiOperation("审核详情")
+    @GetMapping("/detail")
+    public AjaxResult<TContract> detail(@RequestParam String taskId) {
+        processTemplateService.detail(taskId);
+        return AjaxResult.success();
+    }
+
 }
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 c35b38a..bb120fb 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
@@ -190,6 +190,22 @@
     public R<Boolean> addContract(@Validated @RequestBody TContractDTO dto) {
         dto.setChangeRent(dto.getMonthRent());
         contractService.save(dto);
+        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);
+            //开启工作流程
+            stateProcessTemplateService.start(processStartBO);
+        }
         if (dto.getIsIncreasing()){
             TContractRentType tContractRentType = new TContractRentType();
             tContractRentType.setContractId(dto.getId());
@@ -199,23 +215,6 @@
             tContractRentType.setChangeTime(dto.getChangeTime());
             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);
-                //开启工作流程
-                stateProcessTemplateService.start(processStartBO);
-            }
         }
         return R.ok();
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
index ce381d6..494ff97 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
@@ -116,7 +116,7 @@
         return AjaxResult.success(roleService.selectRoleById(roleId));
     }
 
-    @PreAuthorize("@ss.hasPermi('system:role:detail')")
+//    @PreAuthorize("@ss.hasPermi('system:role:detail')")
     @ApiOperation("角色详情")
     @GetMapping("/roleInfo")
     public AjaxResult roleInfo(@RequestParam Long roleId)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 27aea74..f2ff0c8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -192,7 +192,9 @@
         }
 
         user.setUpdateBy(getUsername());
-        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+        if(StringUtils.isNotEmpty(user.getPassword())){
+            user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+        }
         return AjaxResult.success(userService.updateUser(user));
     }
 
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/StateProcessController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/StateProcessController.java
new file mode 100644
index 0000000..740ebcd
--- /dev/null
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/StateProcessController.java
@@ -0,0 +1,208 @@
+package com.ruoyi.web.controller.api;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.BaseModel;
+import com.ruoyi.common.core.domain.BasePage;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.exception.GlobalException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.bo.*;
+import com.ruoyi.system.model.StateProcessModule;
+import com.ruoyi.system.model.StateProcessTemplate;
+import com.ruoyi.system.model.TContract;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.StateProcessModuleService;
+import com.ruoyi.system.service.StateProcessTemplateService;
+import com.ruoyi.system.vo.ProcessTaskListVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Api(tags = "审批流程管理")
+@RequestMapping("/state-process")
+@RestController
+@RequiredArgsConstructor
+public class StateProcessController {
+
+    private final StateProcessTemplateService processTemplateService;
+    private final StateProcessModuleService processModuleService;
+    private final ISysUserService sysUserService;
+
+    //应用流程分页列表
+    @ApiOperation("应用流程分页列表")
+    @PostMapping("/module/page")
+    public AjaxResult<List<StateProcessModule>> modulePage(@RequestBody BasePage basePage) {
+        LambdaQueryWrapper<StateProcessModule> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.orderByAsc(StateProcessModule::getCategory);
+        //查询应用流程列表
+        List<StateProcessModule> result = processModuleService.list(queryWrapper);
+        List<String> updateUserId = result.stream().map(BaseModel::getUpdateBy).collect(Collectors.toList());
+        if (!CollectionUtils.isEmpty(updateUserId)){
+            //根据用户id查询用户信息
+            List<SysUser> sysUsers = sysUserService.selectUserByUserNameList(updateUserId);
+            Map<Long, SysUser> sysUserMap;
+            if (!CollectionUtils.isEmpty(sysUsers)){
+                sysUserMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+            } else {
+                sysUserMap = new HashMap<>();
+            }
+            //遍历列表,设置更新人名称
+            result.forEach(e -> {
+                SysUser sysUser = sysUserMap.get(e.getUpdateBy());
+                if (Objects.nonNull(sysUser)){
+                    e.setUpdateBy(sysUser.getNickName());
+                }
+            });
+        }
+        return AjaxResult.success(result);
+    }
+    //修改应用流程
+    @Log(title = "审批流程管理-修改应用流程", businessType = BusinessType.UPDATE)
+    @ApiOperation("修改应用流程")
+    @PostMapping("/module/update")
+    public AjaxResult<PageInfo<StateProcessModule>> moduleUpdate(@RequestBody ProcessModuleUpdateBO processModuleUpdateBO) {
+        StateProcessTemplate stateProcessTemplate = processTemplateService.getById(processModuleUpdateBO.getTemplateId());
+        if (Objects.isNull(stateProcessTemplate)) {
+            return AjaxResult.success();
+        }
+        StateProcessModule stateProcessModule = new StateProcessModule();
+        stateProcessModule.setId(processModuleUpdateBO.getId());
+        stateProcessModule.setTemplateId(processModuleUpdateBO.getTemplateId());
+        stateProcessModule.setTemplateName(stateProcessTemplate.getTemplateName());
+        stateProcessModule.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
+        stateProcessModule.setCreateTime(LocalDateTime.now());
+        stateProcessModule.setUpdateTime(LocalDateTime.now());
+        stateProcessModule.setRemark(processModuleUpdateBO.getRemark());
+        processModuleService.updateById(stateProcessModule);
+        return AjaxResult.success();
+    }
+
+    //流程模版分页
+    @ApiOperation("流程模版分页")
+    @PostMapping("/template/page")
+    public AjaxResult<Page<StateProcessTemplate>> page(ProcessTemplatePageBO request) {
+        Page<StateProcessTemplate> templatePage = processTemplateService.page(request);
+        return AjaxResult.success(templatePage);
+    }
+
+    //查询流程模版
+    @ApiOperation("查询流程模版")
+    @GetMapping("/template/getById")
+    public AjaxResult<StateProcessTemplate> selectById(@RequestParam String id) {
+        return AjaxResult.success(processTemplateService.getById(id));
+    }
+
+    //修改并部署模版
+    @Log(title = "审批流程管理-修改并部署模版", businessType = BusinessType.UPDATE)
+    @ApiOperation("修改并部署模版")
+    @PostMapping("/template/update")
+    public AjaxResult<Boolean> update(@RequestBody ProcessUpdateBO processUpdateBO) {
+        return AjaxResult.success(processTemplateService.update(processUpdateBO));
+    }
+
+    //删除模版
+    @Log(title = "审批流程管理-删除模版", businessType = BusinessType.DELETE)
+    @ApiOperation("删除模版")
+    @GetMapping("/template/deleteById")
+    public AjaxResult<Boolean> deleteById(@RequestParam String id) {
+        StateProcessTemplate template = processTemplateService.getById(id);
+        //查询是否存在使用的
+        LambdaUpdateWrapper<StateProcessModule> moduleLambdaUpdateWrapper = new LambdaUpdateWrapper<>();;
+        moduleLambdaUpdateWrapper.eq(StateProcessModule::getTemplateId, template.getId());
+        if (processModuleService.getBaseMapper().exists(moduleLambdaUpdateWrapper)) {
+            throw new GlobalException("该模版在应用流程中已使用!");
+        }
+        //根据key修改所有版本为已删除
+        boolean result = processTemplateService.remove(Wrappers.lambdaQuery(StateProcessTemplate.class)
+                .eq(StateProcessTemplate::getTemplateKey, template.getTemplateKey()));
+        return AjaxResult.success(result);
+    }
+
+    //创建并部署模版
+    @Log(title = "审批流程管理-创建并部署模版", businessType = BusinessType.INSERT)
+    @ApiOperation("创建并部署模版")
+    @PostMapping("/template/create")
+    public AjaxResult<Boolean> create(@RequestBody ProcessCreateBO processCreateBO) {
+        return AjaxResult.success(processTemplateService.create(processCreateBO));
+    }
+
+    //流程发起
+    @Log(title = "审批流程管理-流程发起", businessType = BusinessType.INSERT)
+    @ApiOperation("流程发起")
+    @PostMapping("/start")
+    public AjaxResult<Boolean> start(@RequestBody ProcessStartBO processStartBO) {
+        return AjaxResult.success(processTemplateService.start(processStartBO));
+    }
+
+    //待办
+    @ApiOperation("待办列表")
+    @PostMapping("/wait/task/page")
+    public AjaxResult<PageInfo<ProcessTaskListVO>> waitTaskPage(@RequestBody ProcessTaskListBO processTemplatePageBO) {
+        return AjaxResult.success(processTemplateService.waitTaskPage(processTemplatePageBO));
+    }
+
+    //已办
+    @ApiOperation("已办列表")
+    @PostMapping("/deal/task/page")
+    public AjaxResult<PageInfo<ProcessTaskListVO>> dealTaskPage(@RequestBody ProcessTaskListBO processTemplatePageBO) {
+        return AjaxResult.success(processTemplateService.dealTaskPage(processTemplatePageBO));
+    }
+
+    //待办和已办列表
+    @ApiOperation("待办和已办列表")
+    @PostMapping("/dealAndWait/task/page")
+    public AjaxResult<PageInfo<ProcessTaskListVO>> dealAndWaitTaskPage(@RequestBody ProcessTaskListBO processTemplatePageBO) {
+        return AjaxResult.success(processTemplateService.dealAndWaitTaskPage(processTemplatePageBO));
+    }
+
+    //抄送
+    @ApiOperation("抄送列表")
+    @PostMapping("/copy/task/page")
+    public AjaxResult<PageInfo<ProcessTaskListVO>> copyTaskPage(@RequestBody ProcessTaskListBO processTaskListBO){
+        return AjaxResult.success(processTemplateService.copyTaskPage(processTaskListBO));
+    }
+
+    //审核通过
+    @Log(title = "审批流程管理-审核通过", businessType = BusinessType.UPDATE)
+    @ApiOperation("审核通过")
+    @PostMapping("/agree")
+    public AjaxResult<Object> agree(@RequestBody ProcessAgreeBO processAgreeBO) {
+        processTemplateService.agree(processAgreeBO);
+        return AjaxResult.success();
+    }
+
+    //审核拒绝
+    @Log(title = "审批流程管理-审核拒绝", businessType = BusinessType.UPDATE)
+    @ApiOperation("审核拒绝")
+    @PostMapping("/refuse")
+    public AjaxResult<Object> refuse(@RequestBody ProcessRefuseBO processRefuseBO) {
+        processTemplateService.refuse(processRefuseBO);
+        return AjaxResult.success();
+    }
+
+    //审核拒绝
+    @ApiOperation("审核详情")
+    @GetMapping("/detail")
+    public AjaxResult<TContract> detail(@RequestParam String taskId) {
+        processTemplateService.detail(taskId);
+        return AjaxResult.success();
+    }
+
+}
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TContractController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TContractController.java
index d2bc514..0731a2e 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TContractController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TContractController.java
@@ -60,7 +60,6 @@
     @ApiOperation(value = "我的合同分页列表")
     @PostMapping(value = "/contractList")
     public R<PageInfo<TContract>> contractList(@RequestBody TContractAppletQuery query) {
-        // todo 获取登陆人id
         LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet();
         if (loginUserApplet==null){
             return R.fail(401,"登录失效");
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessTaskListBO.java b/ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessTaskListBO.java
index cbfde78..528e3ac 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessTaskListBO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/bo/ProcessTaskListBO.java
@@ -1,8 +1,11 @@
 package com.ruoyi.system.bo;
 
 import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+
+import java.util.List;
 
 @Setter
 @Getter
@@ -10,11 +13,13 @@
     /**
      * 任务名称
      */
+    @ApiModelProperty(value = "任务名称")
     private String name;
 
     /**
      * 任务名称
      */
+    @ApiModelProperty(value = "任务名称")
     private String moduleName;
 //    /**
 //     * 流程实例状态( 0,审批中 1,审批通过 2,审批拒绝 3)
@@ -23,5 +28,18 @@
     /**
      * 创建人
      */
+    @ApiModelProperty(value = "创建人")
     private String createBy;
+
+    @ApiModelProperty(value = "乙方名称")
+    private String partyTwoName;
+    @ApiModelProperty(value = "合同编号")
+    private String contractNumber;
+    @ApiModelProperty(value = "合同名称")
+    private String contractName;
+    @ApiModelProperty(value = "合同状态")
+    private String status;
+    @ApiModelProperty(value = "前端忽略")
+    private List<String> instanceIds;
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateTaskCenterMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateTaskCenterMapper.java
index 804ad41..8fa2afc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateTaskCenterMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/StateTaskCenterMapper.java
@@ -1,9 +1,23 @@
 package com.ruoyi.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.system.bo.ProcessTaskListBO;
 import com.ruoyi.system.model.StateTaskCenter;
+import com.ruoyi.system.vo.ProcessTaskListVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 @Mapper
 public interface StateTaskCenterMapper extends BaseMapper<StateTaskCenter> {
+    /**
+     * 分页查询
+     * @param processTaskListBO
+     * @param pageInfo
+     * @return
+     */
+    List<ProcessTaskListVO> pageList(@Param("query") ProcessTaskListBO processTaskListBO, @Param("pageInfo") PageInfo<ProcessTaskListVO> pageInfo);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/StateTaskCenter.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/StateTaskCenter.java
index 310fb95..ab25bf9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/StateTaskCenter.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/StateTaskCenter.java
@@ -35,5 +35,8 @@
     private String flowId;
     @TableField("variable")
     private String variable;
+    @ApiModelProperty(value = "合同项目id")
+    @TableField("project_id")
+    private String projectId;
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java
index a127cd6..450d70e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java
@@ -6,6 +6,7 @@
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.bo.*;
 import com.ruoyi.system.model.StateProcessTemplate;
+import com.ruoyi.system.vo.ProcessDetailVO;
 import com.ruoyi.system.vo.ProcessTaskListVO;
 
 public interface StateProcessTemplateService extends IService<StateProcessTemplate> {
@@ -38,4 +39,8 @@
 
     //拒绝
     void refuse(ProcessRefuseBO processRefuseBO);
+
+    PageInfo<ProcessTaskListVO> dealAndWaitTaskPage(ProcessTaskListBO processTemplatePageBO);
+
+    ProcessDetailVO detail(String taskId);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/StateTaskCenterService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/StateTaskCenterService.java
index c4a80d5..05fd6b1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/StateTaskCenterService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/StateTaskCenterService.java
@@ -1,7 +1,12 @@
 package com.ruoyi.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.system.bo.ProcessTaskListBO;
 import com.ruoyi.system.model.StateTaskCenter;
+import com.ruoyi.system.vo.ProcessTaskListVO;
 
 public interface StateTaskCenterService extends IService<StateTaskCenter> {
+    PageInfo<ProcessTaskListVO> pageList(ProcessTaskListBO processTaskListBO);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
index b25418c..3597645 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
@@ -31,6 +31,7 @@
 import com.ruoyi.system.mapper.StateProcessTemplateMapper;
 import com.ruoyi.system.model.*;
 import com.ruoyi.system.service.*;
+import com.ruoyi.system.vo.ProcessDetailVO;
 import com.ruoyi.system.vo.ProcessTaskListVO;
 import lombok.AllArgsConstructor;
 import org.apache.commons.io.IOUtils;
@@ -71,6 +72,8 @@
     private FlwHisTaskActorMapper flwHisTaskActorMapper;
     @Autowired
     private ISysUserService sysUserService;
+    @Autowired
+    private TContractService contractService;
 
     /**
      * 流程模版分页
@@ -262,6 +265,7 @@
             stateTaskCenter.setRemark(processStartBO.getRemark());
             stateTaskCenter.setCreateBy(loginUser.getUser().getNickName());
             stateTaskCenter.setVariable(JSONUtil.toJsonStr(processStartBO.getVariable()));
+            stateTaskCenter.setProjectId(JSONObject.parseObject(JSONUtil.toJsonStr(processStartBO.getVariable())).getString("projectId"));
             stateTaskCenterService.save(stateTaskCenter);
 
             // action记录
@@ -352,6 +356,14 @@
 
         //转换类
         List<ProcessTaskListVO> processTaskListVOS = BeanUtil.copyToList(taskCenters.getRecords(), ProcessTaskListVO.class);
+
+        // 查询合同信息
+        for (ProcessTaskListVO processTaskListVO : processTaskListVOS) {
+            // 查询合同信息
+            TContract contract = contractService.getById(JSONObject.parseObject(processTaskListVO.getVariable()).getString("projectId"));
+            processTaskListVO.setContract(contract);
+        }
+
         pageInfo.setRecords(processTaskListVOS);
 
         List<String> updateUserId = processTaskListVOS.stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList());
@@ -439,6 +451,14 @@
         PageInfo<StateTaskCenter> taskCenters = stateTaskCenterService.page(pageInfo,stateTaskQuery);
         //转换类
         List<ProcessTaskListVO> processTaskListVOS = BeanUtil.copyToList(taskCenters.getRecords(), ProcessTaskListVO.class);
+
+        // 查询合同信息
+        for (ProcessTaskListVO processTaskListVO : processTaskListVOS) {
+            // 查询合同信息
+            TContract contract = contractService.getById(JSONObject.parseObject(processTaskListVO.getVariable()).getString("projectId"));
+            processTaskListVO.setContract(contract);
+        }
+
         pageInfo.setRecords(processTaskListVOS);
 
         if (ObjectUtil.isEmpty(processTaskListVOS)) {
@@ -632,6 +652,128 @@
         stateProcessInstanceActionService.save(record);
     }
 
+    @Override
+    public PageInfo<ProcessTaskListVO> dealAndWaitTaskPage(ProcessTaskListBO processTaskListBO) {
+        //获取当前登录用户信息
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+
+        //或签时查询其他审批人是否通过(不能省略),比如 同一任务需要A,B审核,A通过了,B不用在审核了,在历史表查询A的审核记录
+        LambdaQueryWrapper<FlwHisInstance> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.orderByDesc(FlowEntity::getCreateTime);
+        //待审核,通过,拒绝
+        lambdaQueryWrapper.in(FlwHisInstance::getInstanceState, 0,1,2);
+
+        List<Long> flwHisInstances = flwHisInstanceMapper.selectList(lambdaQueryWrapper).stream()
+                .map(FlwHisInstance::getId).collect(Collectors.toList());
+        if (ObjectUtil.isEmpty(flwHisInstances)) {
+            return new PageInfo<>();
+        }
+
+        //查询任务参与者
+        LambdaQueryWrapper<FlwTaskActor> query = new LambdaQueryWrapper<>();
+        query.and(qy -> qy.eq(FlwTaskActor::getActorId, userId)
+                //0指定用户
+                .eq(FlwTaskActor::getActorType, 0)
+                .or().in(FlwTaskActor::getActorId, userId)
+                //1指定角色
+                .eq(FlwTaskActor::getActorType, 1));
+        if (ObjectUtil.isNotNull(processTaskListBO) && ObjectUtil.isNotNull(flwHisInstances)) {
+            // 添加条件
+            query = query.in(FlwTaskActor::getInstanceId, flwHisInstances);
+        }
+        List<FlwTaskActor> flwTaskActorPage = flwTaskActorMapper.selectList(query);
+        if (ObjectUtil.isEmpty(flwTaskActorPage)) {
+            return new PageInfo<>();
+        }
+        //查询任务信息
+        List<FlwTask> flwTasks = flwTaskMapper.selectList(Wrappers.<FlwTask>lambdaQuery()
+                .orderByDesc(FlwTask::getCreateTime)
+                .in(FlwTask::getId, flwTaskActorPage.stream()
+                        .map(FlwTaskActor::getTaskId).collect(Collectors.toList())));
+
+        if (ObjectUtil.isNull(flwTasks)) {
+            return new PageInfo<>();
+        }
+        List<String> instanceIds = flwTasks.stream().map(FlwTask::getInstanceId)
+                .map(String::valueOf).collect(Collectors.toList());
+        //分页查询任务中心任务
+//        LambdaQueryWrapper<StateTaskCenter> stateTaskQuery = new LambdaQueryWrapper<>();
+//        if (ObjectUtil.isNotEmpty(processTaskListBO.getName())) {
+//            stateTaskQuery.like(StateTaskCenter::getName, processTaskListBO.getName());
+//        }
+//        if (ObjectUtil.isNotEmpty(processTaskListBO.getModuleName())) {
+//            stateTaskQuery.like(StateTaskCenter::getModuleName, processTaskListBO.getModuleName());
+//        }
+//        if (ObjectUtil.isNotEmpty(processTaskListBO.getCreateBy())) {
+//            stateTaskQuery.like(StateTaskCenter::getCreateBy, processTaskListBO.getCreateBy());
+//        }
+//        stateTaskQuery.in(StateTaskCenter::getFlowId, instanceIds);
+//        stateTaskQuery.orderByDesc(BaseModel::getCreateTime);
+        processTaskListBO.setInstanceIds(instanceIds);
+//        PageInfo pageInfo = new PageInfo(processTaskListBO.getPageNum(), processTaskListBO.getPageSize());
+//        PageInfo<StateTaskCenter> taskCenters = stateTaskCenterService.page(pageInfo,stateTaskQuery);
+//        //转换类
+//        List<ProcessTaskListVO> processTaskListVOS = BeanUtil.copyToList(taskCenters.getRecords(), ProcessTaskListVO.class);
+//        // 查询合同信息
+//        for (ProcessTaskListVO processTaskListVO : processTaskListVOS) {
+//            // 查询合同信息
+//            TContract contract = contractService.getById(JSONObject.parseObject(processTaskListVO.getVariable()).getString("projectId"));
+//            processTaskListVO.setContract(contract);
+//        }
+//        pageInfo.setRecords(processTaskListVOS);
+
+        PageInfo<ProcessTaskListVO> processTaskListVOS = stateTaskCenterService.pageList(processTaskListBO);
+
+        List<String> updateUserId = processTaskListVOS.getRecords().stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList());
+        Map<Long, SysUser> sysUserMap;
+        if (!CollectionUtils.isEmpty(updateUserId)) {
+            //根据用户id查询更新人信息
+            List<SysUser> sysUsers = sysUserService.selectUserByUserNameList(updateUserId);
+
+            if (!CollectionUtils.isEmpty(sysUsers)) {
+                sysUserMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+            } else {
+                sysUserMap = new HashMap<>();
+            }
+        } else {
+            sysUserMap = new HashMap<>();
+        }
+
+
+        Map<Long, List<FlwTask>> flwHisTaskMap = flwTasks.stream().collect(Collectors.groupingBy(FlwTask::getInstanceId));
+
+        for (ProcessTaskListVO processTaskListVO : processTaskListVOS.getRecords()) {
+            List<FlwTask> flwTask = flwHisTaskMap.get(NumberUtil.parseLong(processTaskListVO.getFlowId()));
+            if (!CollectionUtils.isEmpty(flwTask) && ObjectUtil.isNotEmpty(flwTask.get(0))) {
+                //待审核
+                processTaskListVO.setStatus("0");
+                processTaskListVO.setNodeName(flwTask.get(0).getTaskName());
+                processTaskListVO.setTaskId(flwTask.get(0).getId().toString());
+                processTaskListVO.setVariable(flwTask.get(0).getVariable());
+            }
+            SysUser sysUser = sysUserMap.get(processTaskListVO.getCreateBy());
+            if (Objects.nonNull(sysUser)) {
+                processTaskListVO.setCreateBy(sysUser.getNickName());
+            }
+        }
+        return processTaskListVOS;
+    }
+
+    @Override
+    public ProcessDetailVO detail(String taskId) {
+        ProcessDetailVO processDetailVO = new ProcessDetailVO();
+        FlwTask flwTask = flwTaskMapper.selectById(Long.valueOf(taskId));
+        // 查询合同信息
+        TContract contract = contractService.getById(JSONObject.parseObject(flwTask.getVariable()).getString("projectId"));
+        BeanUtil.copyProperties(contract, processDetailVO);
+
+        List<StateProcessInstanceAction> list = stateProcessInstanceActionService.list(Wrappers.<StateProcessInstanceAction>lambdaQuery().eq(StateProcessInstanceAction::getInstanceId, flwTask.getInstanceId())
+                .orderByDesc(StateProcessInstanceAction::getCreateTime));
+        processDetailVO.setInstanceActions(list);
+
+        return processDetailVO;
+    }
+
     private FlowCreator currentFlowCreator() {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         if (null == loginUser || null == loginUser.getUser().getUserId()) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateTaskCenterServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateTaskCenterServiceImpl.java
index c982a57..83ad381 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateTaskCenterServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateTaskCenterServiceImpl.java
@@ -1,11 +1,24 @@
 package com.ruoyi.system.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.system.bo.ProcessTaskListBO;
 import com.ruoyi.system.mapper.StateTaskCenterMapper;
 import com.ruoyi.system.model.StateTaskCenter;
+import com.ruoyi.system.model.TFaultAreaDic;
 import com.ruoyi.system.service.StateTaskCenterService;
+import com.ruoyi.system.vo.ProcessTaskListVO;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service
 public class StateTaskCenterServiceImpl extends ServiceImpl<StateTaskCenterMapper, StateTaskCenter> implements StateTaskCenterService {
+    @Override
+    public PageInfo<ProcessTaskListVO> pageList(ProcessTaskListBO processTaskListBO) {
+        PageInfo<ProcessTaskListVO> pageInfo = new PageInfo<>(processTaskListBO.getPageNum(), processTaskListBO.getPageSize());
+        List<ProcessTaskListVO> list = this.baseMapper.pageList(processTaskListBO,pageInfo);
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
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 61c5b1f..4084b2c 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
@@ -155,9 +155,12 @@
         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);
+
+        // TODO 进入签订审批流程
+
+
         List<TContractRentType> contractRentTypes = contractRentTypeService.list();
         // 生成第一笔账单
         // 第一次应缴费日期
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProcessDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProcessDetailVO.java
new file mode 100644
index 0000000..1816774
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProcessDetailVO.java
@@ -0,0 +1,17 @@
+package com.ruoyi.system.vo;
+
+import com.ruoyi.system.model.StateProcessInstanceAction;
+import com.ruoyi.system.model.TContract;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+@Data
+@ApiModel(value = "审批流详情返回VO")
+public class ProcessDetailVO extends TContract {
+
+    @ApiModelProperty(value = "操作记录集合")
+    private List<StateProcessInstanceAction> instanceActions;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProcessTaskListVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProcessTaskListVO.java
index 8b4fee1..337a265 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProcessTaskListVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/ProcessTaskListVO.java
@@ -1,11 +1,18 @@
 package com.ruoyi.system.vo;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.system.model.TContract;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Getter;
 import lombok.Setter;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 @Data
@@ -39,4 +46,105 @@
     private String variable;
 
     private String reason;
+
+    @ApiModelProperty(value = "合同信息")
+    private TContract contract;
+
+    @ApiModelProperty(value = "合同id")
+    private String contractId;
+
+    @ApiModelProperty(value = "合同编号")
+    private String contractNumber;
+
+    @ApiModelProperty(value = "合同名称")
+    private String contractName;
+
+    @ApiModelProperty(value = "开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime endTime;
+    @ApiModelProperty(value = "开始计费时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime startPayTime;
+
+    @ApiModelProperty(value = "每月租金")
+    private BigDecimal monthRent;
+
+    @ApiModelProperty(value = "押金")
+    private BigDecimal deposit;
+    @ApiModelProperty(value = "变动后递增或递减之后的每月租金 前端忽略")
+    private BigDecimal changeRent;
+
+    @ApiModelProperty(value = "租金支付方式 月付 季付 年付")
+    private String payType;
+
+    @ApiModelProperty(value = "账单第一次支付日期 合同生效日期+10天 (不是真正的支付日期)生成第一次帐单后存值")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime firstPayTime;
+    @ApiModelProperty(value = "变动时间 根据周期改变 前端忽略")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime changeTime;
+
+    @ApiModelProperty(value = "是否递增递减 true=是 false=否")
+    private Boolean isIncreasing;
+
+    @ApiModelProperty(value = "押金是否随租金递增递减 true=是 false=否")
+    private Boolean isIncreasingDeposit;
+
+    @ApiModelProperty(value = "违约金比例")
+    private BigDecimal proportion;
+
+    @ApiModelProperty(value = "房屋id")
+    private String houseId;
+
+    @ApiModelProperty(value = "甲方名称")
+    private String partyOneName;
+
+    @ApiModelProperty(value = "甲方联系人")
+    private String partyOnePerson;
+
+    @ApiModelProperty(value = "甲方联系方式")
+    private String partyOnePhone;
+
+    @ApiModelProperty(value = "租户id")
+    private String tenantId;
+
+    @ApiModelProperty(value = "乙方名称")
+    private String partyTwoName;
+
+    @ApiModelProperty(value = "乙方联系人")
+    private String partyTwoPerson;
+
+    @ApiModelProperty(value = "乙方联系方式")
+    private String partyTwoPhone;
+
+    @ApiModelProperty(value = "合同附件,多个逗号拼接")
+    private String contractFile;
+
+    /**
+     * 1	待提交
+     * 2	待审批
+     * 3	未签订
+     * 4	已签订
+     * 5	已驳回
+     * 6	已终止
+     * 7	待结算
+     * 8	已结算
+     */
+    @ApiModelProperty(value = "合同状态 1=待提交 2=待审批 3=未签订 4=已签订 5=已驳回 6=已终止 7=待结算 8=已结算")
+    private String contractStatus;
+    @ApiModelProperty(value = "内存大小多个文件逗号拼接")
+    private String memory;
+    @ApiModelProperty(value = "附件名称 逗号拼接")
+    private String contractFileName;
+    @ApiModelProperty(value = "租户确认合同电子签名")
+    private String signature;
+    @ApiModelProperty(value = "终止合同备注说明")
+    private String terminateRemark;
+    @ApiModelProperty(value = "合计年租金")
+    private BigDecimal totalYear;
+
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/StateTaskCenterMapper.xml b/ruoyi-system/src/main/resources/mapper/system/StateTaskCenterMapper.xml
new file mode 100644
index 0000000..f8488c0
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/StateTaskCenterMapper.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.StateTaskCenterMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.system.model.StateTaskCenter">
+        <id column="id" property="id" />
+        <result column="`name`" property="name" />
+        <result column="module_name" property="moduleName" />
+        <result column="remark" property="remark" />
+        <result column="category" property="category" />
+        <result column="flow_id" property="flowId" />
+        <result column="variable" property="variable" />
+        <result column="project_id" property="projectId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, `name`, module_name, remark,category,flow_id,variable,project_id,create_time, update_time, create_by, update_by, disabled
+    </sql>
+    <select id="pageList" resultType="com.ruoyi.system.vo.ProcessTaskListVO">
+        select stc.id, stc.`name`, stc.module_name, stc.remark,stc.category,stc.flow_id,stc.variable,
+               tc.id AS contractId, tc.contract_number, tc.contract_name, tc.start_time, tc.end_time,tc.deposit, tc.pay_type,
+               tc.first_pay_time, tc.isIncreasing,tc.isIncreasing_deposit,tc.proportion, tc.house_id, tc.party_one_name, tc.party_one_person,
+               tc.party_one_phone, tc.tenant_id, tc.party_two_name,tc.party_two_person, tc.party_two_phone,tc.memory, tc.contract_file_name,
+               tc.signature, tc.terminate_remark, tc.total_year,tc.status AS contractStatus
+        from state_task_center stc
+        LEFT JOIN t_contract tc ON stc.project_id = tc.id
+        <where>
+            <if test="query.instanceIds != null and query.instanceIds.size()>0">
+                AND stc.flow_id IN
+                <foreach collection="query.instanceIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="query.name != null and query.name !=''">
+                AND stc.`name` like concat('%',#{query.name},'%')
+            </if>
+            <if test="query.moduleName != null and query.moduleName !=''">
+                AND stc.module_name like concat('%',#{query.moduleName},'%')
+            </if>
+            <if test="query.createBy != null and query.createBy !=''">
+                AND stc.create_by like concat('%',#{query.createBy},'%')
+            </if>
+            <if test="query.partyTwoName != null and query.partyTwoName !=''">
+                AND tc.party_two_name like concat('%',#{query.partyTwoName},'%')
+            </if>
+            <if test="query.contractNumber != null and query.contractNumber !=''">
+                AND tc.contract_number like concat('%',#{query.contractNumber},'%')
+            </if>
+            <if test="query.contractName != null and query.contractName !=''">
+                AND tc.contract_name like concat('%',#{query.contractName},'%')
+            </if>
+            <if test="query.status != null and query.status !=''">
+                AND tc.status like concat('%',#{query.status},'%')
+            </if>
+            AND tc.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        </where>
+        ORDER BY stc.create_time DESC
+    </select>
+
+</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TContractMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TContractMapper.xml
index c413736..c2abe7d 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TContractMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TContractMapper.xml
@@ -9,7 +9,6 @@
         <result column="contract_name" property="contractName" />
         <result column="start_time" property="startTime" />
         <result column="end_time" property="endTime" />
-        <result column="month_rent" property="monthRent" />
         <result column="deposit" property="deposit" />
         <result column="pay_type" property="payType" />
         <result column="first_pay_time" property="firstPayTime" />
@@ -41,9 +40,9 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, contract_number, contract_name, start_time, end_time, total_rent, deposit, pay_type, first_pay_time, isIncreasing, isIncreasing_deposit,
+        id, contract_number, contract_name, start_time, end_time, deposit, pay_type, first_pay_time, isIncreasing, isIncreasing_deposit,
             proportion, house_id, party_one_name, party_one_person, party_one_phone, tenant_id, party_two_name, party_two_person, party_two_phone,
-            memory, contract_file_name, signature, terminate_remark, total_year
+            memory, contract_file_name, signature, terminate_remark, total_year,status
     </sql>
     <select id="contractList" resultType="com.ruoyi.system.model.TContract">
         select t1.* from t_contract t1

--
Gitblit v1.7.1