mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-30 15:16:41 +08:00
add 添加流程实例作废,运行中流程实例删除,已完成流程实例删除
This commit is contained in:
parent
4c5a350562
commit
7b034a232b
@ -4,9 +4,12 @@ import jakarta.servlet.http.HttpServletResponse;
|
|||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.web.core.BaseController;
|
import org.dromara.common.web.core.BaseController;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||||
|
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||||
import org.dromara.workflow.service.IActProcessInstanceService;
|
import org.dromara.workflow.service.IActProcessInstanceService;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -67,4 +70,37 @@ public class ActProcessInstanceController extends BaseController {
|
|||||||
public R<Map<String, Object>> getHistoryRecord(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
|
public R<Map<String, Object>> getHistoryRecord(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
|
||||||
return R.ok(iActProcessInstanceService.getHistoryRecord(processInstanceId));
|
return R.ok(iActProcessInstanceService.getHistoryRecord(processInstanceId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 作废流程实例,不会删除历史记录(删除运行中的实例)
|
||||||
|
*
|
||||||
|
* @param processInvalidBo 参数
|
||||||
|
*/
|
||||||
|
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
|
||||||
|
@PostMapping("/deleteRuntimeProcessInst")
|
||||||
|
public R<Void> deleteRuntimeProcessInst(@RequestBody ProcessInvalidBo processInvalidBo) {
|
||||||
|
return toAjax(iActProcessInstanceService.deleteRuntimeProcessInst(processInvalidBo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
|
*
|
||||||
|
* @param processInstanceId 流程实例id
|
||||||
|
*/
|
||||||
|
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/deleteRuntimeProcessAndHisInst/{processInstanceId}")
|
||||||
|
public R<Void> deleteRuntimeProcessAndHisInst(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
|
||||||
|
return toAjax(iActProcessInstanceService.deleteRuntimeProcessAndHisInst(processInstanceId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
|
*
|
||||||
|
* @param processInstanceId 流程实例id
|
||||||
|
*/
|
||||||
|
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/deleteFinishProcessAndHisInst/{processInstanceId}")
|
||||||
|
public R<Void> deleteFinishProcessAndHisInst(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
|
||||||
|
return toAjax(iActProcessInstanceService.deleteFinishProcessAndHisInst(processInstanceId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
package org.dromara.workflow.domain.bo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程实例作废请求对象
|
||||||
|
*
|
||||||
|
* @author may
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class ProcessInvalidBo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程实例id
|
||||||
|
*/
|
||||||
|
private String processInstId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 作废原因
|
||||||
|
*/
|
||||||
|
private String deleteReason;
|
||||||
|
}
|
@ -3,6 +3,7 @@ package org.dromara.workflow.service;
|
|||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||||
|
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||||
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
||||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||||
|
|
||||||
@ -46,4 +47,28 @@ public interface IActProcessInstanceService {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
Map<String, Object> getHistoryRecord(String processInstanceId);
|
Map<String, Object> getHistoryRecord(String processInstanceId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 作废流程实例,不会删除历史记录(删除运行中的实例)
|
||||||
|
*
|
||||||
|
* @param processInvalidBo 参数
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
boolean deleteRuntimeProcessInst(ProcessInvalidBo processInvalidBo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
|
*
|
||||||
|
* @param processInstanceId 流程实例id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
boolean deleteRuntimeProcessAndHisInst(String processInstanceId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
|
*
|
||||||
|
* @param processInstanceId 流程实例id
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
boolean deleteFinishProcessAndHisInst(String processInstanceId);
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,17 @@ import jakarta.servlet.ServletOutputStream;
|
|||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.StreamUtils;
|
import org.dromara.common.core.utils.StreamUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
import org.dromara.common.tenant.helper.TenantHelper;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.system.service.ISysUserService;
|
import org.dromara.system.service.ISysUserService;
|
||||||
import org.dromara.workflow.common.constant.FlowConstant;
|
import org.dromara.workflow.common.constant.FlowConstant;
|
||||||
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
import org.dromara.workflow.domain.bo.ProcessInstanceBo;
|
||||||
|
import org.dromara.workflow.domain.bo.ProcessInvalidBo;
|
||||||
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
||||||
import org.dromara.workflow.domain.vo.GraphicInfoVo;
|
import org.dromara.workflow.domain.vo.GraphicInfoVo;
|
||||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||||
@ -31,6 +34,7 @@ import org.flowable.engine.history.HistoricProcessInstanceQuery;
|
|||||||
import org.flowable.engine.runtime.ProcessInstance;
|
import org.flowable.engine.runtime.ProcessInstance;
|
||||||
import org.flowable.engine.runtime.ProcessInstanceQuery;
|
import org.flowable.engine.runtime.ProcessInstanceQuery;
|
||||||
import org.flowable.engine.task.Comment;
|
import org.flowable.engine.task.Comment;
|
||||||
|
import org.flowable.task.api.Task;
|
||||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@ -314,4 +318,78 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
return 0 + "秒";
|
return 0 + "秒";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 作废流程实例,不会删除历史记录(删除运行中的实例)
|
||||||
|
*
|
||||||
|
* @param processInvalidBo 参数
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean deleteRuntimeProcessInst(ProcessInvalidBo processInvalidBo) {
|
||||||
|
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
|
||||||
|
.processInstanceId(processInvalidBo.getProcessInstId()).processInstanceTenantId(TenantHelper.getTenantId()).singleResult();
|
||||||
|
try {
|
||||||
|
List<Task> list = taskService.createTaskQuery().processInstanceId(processInvalidBo.getProcessInstId())
|
||||||
|
.taskTenantId(TenantHelper.getTenantId()).list();
|
||||||
|
List<Task> subTasks = list.stream().filter(e -> StringUtils.isNotBlank(e.getParentTaskId())).collect(Collectors.toList());
|
||||||
|
if (CollUtil.isNotEmpty(subTasks)) {
|
||||||
|
subTasks.forEach(e -> taskService.deleteTask(e.getId()));
|
||||||
|
}
|
||||||
|
String deleteReason = LoginHelper.getUsername() + "作废了当前申请!";
|
||||||
|
if (StringUtils.isNotBlank(processInvalidBo.getDeleteReason())) {
|
||||||
|
deleteReason = LoginHelper.getUsername() + "作废理由:" + processInvalidBo.getDeleteReason();
|
||||||
|
}
|
||||||
|
runtimeService.deleteProcessInstance(processInvalidBo.getProcessInstId(), deleteReason);
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new ServiceException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
|
*
|
||||||
|
* @param processInstanceId 流程实例id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean deleteRuntimeProcessAndHisInst(String processInstanceId) {
|
||||||
|
try {
|
||||||
|
//1.删除运行中流程实例
|
||||||
|
List<Task> list = taskService.createTaskQuery().processInstanceId(processInstanceId)
|
||||||
|
.taskTenantId(TenantHelper.getTenantId()).list();
|
||||||
|
List<Task> subTasks = list.stream().filter(e -> StringUtils.isNotBlank(e.getParentTaskId())).collect(Collectors.toList());
|
||||||
|
if (CollUtil.isNotEmpty(subTasks)) {
|
||||||
|
subTasks.forEach(e -> taskService.deleteTask(e.getId()));
|
||||||
|
}
|
||||||
|
runtimeService.deleteProcessInstance(processInstanceId, LoginHelper.getUserId() + "删除了当前流程申请");
|
||||||
|
//2.删除历史记录
|
||||||
|
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
|
||||||
|
.processInstanceTenantId(TenantHelper.getTenantId()).processInstanceId(processInstanceId).singleResult();
|
||||||
|
if (ObjectUtil.isNotEmpty(historicProcessInstance)) {
|
||||||
|
historyService.deleteHistoricProcessInstance(processInstanceId);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new ServiceException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
|
*
|
||||||
|
* @param processInstanceId 流程实例id
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean deleteFinishProcessAndHisInst(String processInstanceId) {
|
||||||
|
try {
|
||||||
|
historyService.deleteHistoricProcessInstance(processInstanceId);
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new ServiceException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user