ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TContractController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TContractController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/src/main/java/com/ruoyi/common/enums/TaskEventType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/dto/RevokeDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | 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) {