From 4c36f0afc2568c225c46cf50e72933b80a5e15eb Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 18 Jun 2023 20:48:45 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ActProcessInstanceController.java | 17 ++++++------ .../service/IActProcessInstanceService.java | 10 +++---- .../impl/ActProcessInstanceServiceImpl.java | 27 ++++++++++--------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java index 488da078a..eb37c90eb 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java @@ -2,6 +2,7 @@ package org.dromara.workflow.controller; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; 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) - @DeleteMapping("/deleteRuntimeProcessAndHisInst/{processInstanceId}") - public R deleteRuntimeProcessAndHisInst(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) { - return toAjax(iActProcessInstanceService.deleteRuntimeProcessAndHisInst(processInstanceId)); + @DeleteMapping("/deleteRuntimeProcessAndHisInst/{processInstanceIds}") + public R deleteRuntimeProcessAndHisInst(@NotNull(message = "流程实例id不能为空") @PathVariable String[] processInstanceIds) { + return toAjax(iActProcessInstanceService.deleteRuntimeProcessAndHisInst(processInstanceIds)); } /** * 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceId 流程实例id + * @param processInstanceIds 流程实例id */ @Log(title = "流程实例管理", businessType = BusinessType.DELETE) - @DeleteMapping("/deleteFinishProcessAndHisInst/{processInstanceId}") - public R deleteFinishProcessAndHisInst(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) { - return toAjax(iActProcessInstanceService.deleteFinishProcessAndHisInst(processInstanceId)); + @DeleteMapping("/deleteFinishProcessAndHisInst/{processInstanceIds}") + public R deleteFinishProcessAndHisInst(@NotNull(message = "流程实例id不能为空") @PathVariable String[] processInstanceIds) { + return toAjax(iActProcessInstanceService.deleteFinishProcessAndHisInst(processInstanceIds)); } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java index c1c1ebb2c..ac909188b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java @@ -4,10 +4,8 @@ import jakarta.servlet.http.HttpServletResponse; import org.dromara.common.mybatis.core.page.TableDataInfo; 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.ProcessInstanceVo; -import java.util.List; import java.util.Map; /** @@ -59,16 +57,16 @@ public interface IActProcessInstanceService { /** * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceId 流程实例id + * @param processInstanceIds 流程实例id * @return 结果 */ - boolean deleteRuntimeProcessAndHisInst(String processInstanceId); + boolean deleteRuntimeProcessAndHisInst(String[] processInstanceIds); /** * 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceId 流程实例id + * @param processInstanceIds 流程实例id * @return 结果 */ - boolean deleteFinishProcessAndHisInst(String processInstanceId); + boolean deleteFinishProcessAndHisInst(String[] processInstanceIds); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 408bfc777..8ae2076ef 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -40,6 +40,7 @@ import org.flowable.task.api.history.HistoricTaskInstance; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.awt.*; import java.io.IOException; @@ -328,6 +329,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService * @param processInvalidBo 参数 */ @Override + @Transactional(rollbackFor = Exception.class) public boolean deleteRuntimeProcessInst(ProcessInvalidBo processInvalidBo) { try { List list = taskService.createTaskQuery().processInstanceId(processInvalidBo.getProcessInstanceId()) @@ -357,24 +359,25 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService /** * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceId 流程实例id + * @param processInstanceIds 流程实例id */ @Override - public boolean deleteRuntimeProcessAndHisInst(String processInstanceId) { + @Transactional(rollbackFor = Exception.class) + public boolean deleteRuntimeProcessAndHisInst(String[] processInstanceIds) { try { //1.删除运行中流程实例 - List list = taskService.createTaskQuery().processInstanceId(processInstanceId) + List list = taskService.createTaskQuery().processInstanceIdIn(Arrays.asList(processInstanceIds)) .taskTenantId(TenantHelper.getTenantId()).list(); - List subTasks = list.stream().filter(e -> StringUtils.isNotBlank(e.getParentTaskId())).collect(Collectors.toList()); + List subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId())); if (CollUtil.isNotEmpty(subTasks)) { subTasks.forEach(e -> taskService.deleteTask(e.getId())); } - runtimeService.deleteProcessInstance(processInstanceId, LoginHelper.getUserId() + "删除了当前流程申请"); + runtimeService.bulkDeleteProcessInstances(Arrays.asList(processInstanceIds), LoginHelper.getUserId() + "删除了当前流程申请"); //2.删除历史记录 - HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery() - .processInstanceTenantId(TenantHelper.getTenantId()).processInstanceId(processInstanceId).singleResult(); - if (ObjectUtil.isNotEmpty(historicProcessInstance)) { - historyService.deleteHistoricProcessInstance(processInstanceId); + List historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery() + .processInstanceTenantId(TenantHelper.getTenantId()).processInstanceIds(new HashSet<>(Arrays.asList(processInstanceIds))).list(); + if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) { + historyService.bulkDeleteHistoricProcessInstances(Arrays.asList(processInstanceIds)); } return true; } catch (Exception e) { @@ -386,12 +389,12 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService /** * 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息 * - * @param processInstanceId 流程实例id + * @param processInstanceIds 流程实例id */ @Override - public boolean deleteFinishProcessAndHisInst(String processInstanceId) { + public boolean deleteFinishProcessAndHisInst(String[] processInstanceIds) { try { - historyService.deleteHistoricProcessInstance(processInstanceId); + historyService.bulkDeleteHistoricProcessInstances(Arrays.asList(processInstanceIds)); return true; } catch (Exception e) { e.printStackTrace();