mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-30 07:06:39 +08:00
update 优化流程实例删除
This commit is contained in:
parent
1eb778f914
commit
4c36f0afc2
@ -2,6 +2,7 @@ package org.dromara.workflow.controller;
|
|||||||
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.core.validate.AddGroup;
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
@ -86,22 +87,22 @@ public class ActProcessInstanceController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
*
|
*
|
||||||
* @param processInstanceId 流程实例id
|
* @param processInstanceIds 流程实例id
|
||||||
*/
|
*/
|
||||||
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
|
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
|
||||||
@DeleteMapping("/deleteRuntimeProcessAndHisInst/{processInstanceId}")
|
@DeleteMapping("/deleteRuntimeProcessAndHisInst/{processInstanceIds}")
|
||||||
public R<Void> deleteRuntimeProcessAndHisInst(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
|
public R<Void> deleteRuntimeProcessAndHisInst(@NotNull(message = "流程实例id不能为空") @PathVariable String[] processInstanceIds) {
|
||||||
return toAjax(iActProcessInstanceService.deleteRuntimeProcessAndHisInst(processInstanceId));
|
return toAjax(iActProcessInstanceService.deleteRuntimeProcessAndHisInst(processInstanceIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
*
|
*
|
||||||
* @param processInstanceId 流程实例id
|
* @param processInstanceIds 流程实例id
|
||||||
*/
|
*/
|
||||||
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
|
@Log(title = "流程实例管理", businessType = BusinessType.DELETE)
|
||||||
@DeleteMapping("/deleteFinishProcessAndHisInst/{processInstanceId}")
|
@DeleteMapping("/deleteFinishProcessAndHisInst/{processInstanceIds}")
|
||||||
public R<Void> deleteFinishProcessAndHisInst(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
|
public R<Void> deleteFinishProcessAndHisInst(@NotNull(message = "流程实例id不能为空") @PathVariable String[] processInstanceIds) {
|
||||||
return toAjax(iActProcessInstanceService.deleteFinishProcessAndHisInst(processInstanceId));
|
return toAjax(iActProcessInstanceService.deleteFinishProcessAndHisInst(processInstanceIds));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,10 +4,8 @@ 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.bo.ProcessInvalidBo;
|
||||||
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
|
|
||||||
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,16 +57,16 @@ public interface IActProcessInstanceService {
|
|||||||
/**
|
/**
|
||||||
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
*
|
*
|
||||||
* @param processInstanceId 流程实例id
|
* @param processInstanceIds 流程实例id
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
boolean deleteRuntimeProcessAndHisInst(String processInstanceId);
|
boolean deleteRuntimeProcessAndHisInst(String[] processInstanceIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
*
|
*
|
||||||
* @param processInstanceId 流程实例id
|
* @param processInstanceIds 流程实例id
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
boolean deleteFinishProcessAndHisInst(String processInstanceId);
|
boolean deleteFinishProcessAndHisInst(String[] processInstanceIds);
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ 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;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -328,6 +329,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
* @param processInvalidBo 参数
|
* @param processInvalidBo 参数
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public boolean deleteRuntimeProcessInst(ProcessInvalidBo processInvalidBo) {
|
public boolean deleteRuntimeProcessInst(ProcessInvalidBo processInvalidBo) {
|
||||||
try {
|
try {
|
||||||
List<Task> list = taskService.createTaskQuery().processInstanceId(processInvalidBo.getProcessInstanceId())
|
List<Task> list = taskService.createTaskQuery().processInstanceId(processInvalidBo.getProcessInstanceId())
|
||||||
@ -357,24 +359,25 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
/**
|
/**
|
||||||
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
*
|
*
|
||||||
* @param processInstanceId 流程实例id
|
* @param processInstanceIds 流程实例id
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean deleteRuntimeProcessAndHisInst(String processInstanceId) {
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean deleteRuntimeProcessAndHisInst(String[] processInstanceIds) {
|
||||||
try {
|
try {
|
||||||
//1.删除运行中流程实例
|
//1.删除运行中流程实例
|
||||||
List<Task> list = taskService.createTaskQuery().processInstanceId(processInstanceId)
|
List<Task> list = taskService.createTaskQuery().processInstanceIdIn(Arrays.asList(processInstanceIds))
|
||||||
.taskTenantId(TenantHelper.getTenantId()).list();
|
.taskTenantId(TenantHelper.getTenantId()).list();
|
||||||
List<Task> subTasks = list.stream().filter(e -> StringUtils.isNotBlank(e.getParentTaskId())).collect(Collectors.toList());
|
List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
|
||||||
if (CollUtil.isNotEmpty(subTasks)) {
|
if (CollUtil.isNotEmpty(subTasks)) {
|
||||||
subTasks.forEach(e -> taskService.deleteTask(e.getId()));
|
subTasks.forEach(e -> taskService.deleteTask(e.getId()));
|
||||||
}
|
}
|
||||||
runtimeService.deleteProcessInstance(processInstanceId, LoginHelper.getUserId() + "删除了当前流程申请");
|
runtimeService.bulkDeleteProcessInstances(Arrays.asList(processInstanceIds), LoginHelper.getUserId() + "删除了当前流程申请");
|
||||||
//2.删除历史记录
|
//2.删除历史记录
|
||||||
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
|
List<HistoricProcessInstance> historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery()
|
||||||
.processInstanceTenantId(TenantHelper.getTenantId()).processInstanceId(processInstanceId).singleResult();
|
.processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(Arrays.asList(processInstanceIds))).list();
|
||||||
if (ObjectUtil.isNotEmpty(historicProcessInstance)) {
|
if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
|
||||||
historyService.deleteHistoricProcessInstance(processInstanceId);
|
historyService.bulkDeleteHistoricProcessInstances(Arrays.asList(processInstanceIds));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -386,12 +389,12 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
|||||||
/**
|
/**
|
||||||
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息
|
||||||
*
|
*
|
||||||
* @param processInstanceId 流程实例id
|
* @param processInstanceIds 流程实例id
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean deleteFinishProcessAndHisInst(String processInstanceId) {
|
public boolean deleteFinishProcessAndHisInst(String[] processInstanceIds) {
|
||||||
try {
|
try {
|
||||||
historyService.deleteHistoricProcessInstance(processInstanceId);
|
historyService.bulkDeleteHistoricProcessInstances(Arrays.asList(processInstanceIds));
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
Loading…
Reference in New Issue
Block a user