xuhy
2025-02-27 de713f749ed4b4a434993572382a90bd77bea844
审批流
4个文件已修改
2个文件已添加
216 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TContractController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/TaskEventType.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/RevokeDTO.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java
@@ -4,6 +4,7 @@
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.util.ObjectUtil;
import com.aizuda.bpm.engine.core.FlowCreator;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
@@ -289,16 +290,17 @@
    @Log(title = "合同管理-撤销审批", businessType =  BusinessType.UPDATE)
    @ApiOperation(value = "撤销审批")
    @PreAuthorize("@ss.hasPermi('system:contract:revoke')")
    @GetMapping(value = "/updateContractStatus")
    public R<Boolean> updateContractStatus(String id) {
        TContract contract = contractService.getById(id);
    @PostMapping(value = "/updateContractStatus")
    public R<Boolean> updateContractStatus(@RequestBody RevokeDTO dto) {
        TContract contract = contractService.getById(dto.getContractId());
        contract.setStatus("1");
        contractService.updateById(contract);
        // 撤销审批实例
        stateProcessTemplateService.revoke(dto.getInstanceId());
        return R.ok();
    }
    @PreAuthorize("@ss.hasPermi('system:contract:confirm')")
    @Log(title = "合同管理-确认结算", businessType =  BusinessType.UPDATE)
    @ApiOperation(value = "确认结算")
    @PostMapping(value = "/confirmSettlement")
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TContractController.java
@@ -2,13 +2,16 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.constant.DictConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.model.LoginUserApplet;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.RevokeDTO;
import com.ruoyi.system.dto.SignContractDTO;
import com.ruoyi.system.model.TContract;
import com.ruoyi.system.model.TContractRentType;
@@ -23,6 +26,7 @@
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
@@ -52,6 +56,8 @@
    private TokenService tokenService;
    @Autowired
    private TTenantService tTenantService;
    @Autowired
    private StateProcessTemplateService stateProcessTemplateService;
    @ApiOperation(value = " 签订合同")
    @PostMapping(value = "/signContract")
    public R signContract(@RequestBody SignContractDTO dto) {
@@ -67,6 +73,20 @@
        query.setTenantId(loginUserApplet.getUserId());
        return R.ok(contractService.contractAppletList(query));
    }
    @Log(title = "合同管理-撤销审批", businessType =  BusinessType.UPDATE)
    @ApiOperation(value = "撤销审批")
    @PreAuthorize("@ss.hasPermi('system:contract:revoke')")
    @PostMapping(value = "/updateContractStatus")
    public R<Boolean> updateContractStatus(@RequestBody RevokeDTO dto) {
        TContract contract = contractService.getById(dto.getContractId());
        contract.setStatus("1");
        contractService.updateById(contract);
        // 撤销审批实例
        stateProcessTemplateService.revoke(dto.getInstanceId());
        return R.ok();
    }
    @ApiOperation(value = "查询合同信息信息")
    @GetMapping(value = "/getContractById")
    public R<TContractAppletVO> getContractById(@RequestParam String id) {
ruoyi-common/src/main/java/com/ruoyi/common/enums/TaskEventType.java
New file
@@ -0,0 +1,146 @@
/*
 * Copyright 2023-2025 Licensed under the Dual Licensing
 * website: https://aizuda.com
 */
package com.ruoyi.common.enums;
/**
 * 流程引擎监听类型
 *
 * <p>
 * <a href="https://aizuda.com">官网</a>尊重知识产权,不允许非法使用,后果自负
 * </p>
 *
 * @author lizhongyuan
 * @since 1.0
 */
public enum TaskEventType {
    /**
     * 发起
     */
    start,
    /**
     * 创建
     */
    create,
    /**
     * 再创建,仅用于流程回退
     */
    recreate,
    /**
     * 抄送
     */
    cc,
    /**
     * 分配
     */
    assignment,
    /**
     * 委派任务解决
     */
    delegateResolve,
    /**
     * 任务加签
     */
    addTaskActor,
    /**
     * 任务减签
     */
    removeTaskActor,
    /**
     * 驳回至上一步处理
     */
    reject,
    /**
     * 角色认领
     */
    claimRole,
    /**
     * 部门认领
     */
    claimDepartment,
    /**
     * 拿回未执行任务
     */
    reclaim,
    /**
     * 撤回指定任务
     */
    withdraw,
    /**
     * 唤醒历史任务
     */
    resume,
    /**
     * 完成
     */
    complete,
    /**
     * 撤销
     */
    revoke,
    /**
     * 终止
     */
    terminate,
    /**
     * 更新
     */
    update,
    /**
     * 删除
     */
    delete,
    /**
     * 调用外部流程任务【办理子流程】
     */
    callProcess,
    /**
     * 超时
     */
    timeout,
    /**
     * 跳转
     */
    jump,
    /**
     * 自动跳转
     */
    autoJump,
    /**
     * 驳回跳转
     */
    rejectJump,
    /**
     * 路由跳转
     */
    routeJump,
    /**
     * 驳回重新审批跳转
     */
    reApproveJump,
    /**
     * 自动审批完成
     */
    autoComplete,
    /**
     * 自动审批拒绝
     */
    autoReject,
    /**
     * 触发器任务
     */
    trigger,
    /**
     * 结束
     */
    end;
    public boolean eq(TaskEventType eventType) {
        return this == eventType;
    }
    public boolean ne(TaskEventType eventType) {
        return this != eventType;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/RevokeDTO.java
New file
@@ -0,0 +1,19 @@
package com.ruoyi.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value = "撤销DTO")
public class RevokeDTO implements Serializable {
    @ApiModelProperty(value = "审批流实例id")
    private Long instanceId;
    @ApiModelProperty(value = "合同id")
    private String contractId;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.service;
import com.aizuda.bpm.engine.core.FlowCreator;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
@@ -41,6 +42,12 @@
    //拒绝
    void refuse(ProcessRefuseBO processRefuseBO);
    /**
     * 流程实例撤销(用于错误发起审批申请,发起人主动撤销)
     *
     * @param instanceId  流程实例ID
     */
    void revoke(Long instanceId);
    PageInfo<ProcessTaskListVO> dealAndWaitTaskPage(ProcessTaskListBO processTemplatePageBO);
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
@@ -7,8 +7,11 @@
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.aizuda.bpm.engine.FlowLongEngine;
import com.aizuda.bpm.engine.TaskService;
import com.aizuda.bpm.engine.core.FlowCreator;
import com.aizuda.bpm.engine.core.enums.InstanceState;
import com.aizuda.bpm.engine.core.enums.TaskType;
import com.aizuda.bpm.engine.dao.FlwInstanceDao;
import com.aizuda.bpm.engine.entity.*;
import com.aizuda.bpm.engine.model.NodeModel;
import com.aizuda.bpm.mybatisplus.mapper.*;
@@ -24,6 +27,7 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.enums.StateProcessActionEnum;
import com.ruoyi.common.enums.TaskEventType;
import com.ruoyi.common.exception.GlobalException;
import com.ruoyi.common.exception.state.StateErrorCode;
import com.ruoyi.common.utils.SecurityUtils;
@@ -47,6 +51,7 @@
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@Service
@@ -64,6 +69,8 @@
    private FlwTaskActorMapper flwTaskActorMapper;
    @Autowired
    private FlwTaskMapper flwTaskMapper;
    @Autowired
    private TaskService taskService;
    @Autowired
    private StateTaskCenterService stateTaskCenterService;
    @Autowired
@@ -935,6 +942,11 @@
        record.setPictures(processRefuseBO.getPictures());
        stateProcessInstanceActionService.save(record);
    }
    @Override
    public void revoke(Long instanceId) {
        FlowCreator flowCreator = FlowCreator.of(String.valueOf(SecurityUtils.getUserId()), SecurityUtils.getLoginUser().getUser().getNickName());
        flowLongEngine.runtimeService().revoke(instanceId, flowCreator);
    }
    @Override
    public PageInfo<ProcessTaskListVO> dealAndWaitTaskPage(ProcessTaskListBO processTaskListBO) {