From 6c3afa7c969d6a190272d0cbec329c56f3507049 Mon Sep 17 00:00:00 2001 From: Lesan <1960681385@qq.com> Date: Sun, 19 Jan 2025 08:39:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=B8=85=E7=90=86?= =?UTF-8?q?=E6=8A=84=E9=80=81=E5=92=8C=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/BpmProcessInstanceCopyMapper.java | 3 +++ .../definition/BpmModelServiceImpl.java | 20 +++++++++++++++---- .../task/BpmProcessInstanceCopyService.java | 6 ++++++ .../BpmProcessInstanceCopyServiceImpl.java | 5 +++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceCopyMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceCopyMapper.java index 8f23024e84..11bd10aefd 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceCopyMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/task/BpmProcessInstanceCopyMapper.java @@ -25,4 +25,7 @@ public interface BpmProcessInstanceCopyMapper extends BaseMapperX getModelList(String name) { @@ -262,23 +269,28 @@ public class BpmModelServiceImpl implements BpmModelService { Model model = validateModelManager(id, userId); // 2. 清理所有流程数据 - // TODO @芋艿:这里没有找到批量操作的方法,会不会有性能问题~; - // TODO @lesan:建议按照顺序?1)List processInstances 循环处理;然后删除删除一个示实例,接着删除它的 history; // 2.1 先取消所有正在运行的流程 List processInstances = runtimeService.createProcessInstanceQuery() .processDefinitionKey(model.getKey()).list(); processInstances.forEach(processInstance -> { runtimeService.deleteProcessInstance(processInstance.getId(), BpmReasonEnum.CANCEL_BY_SYSTEM.getReason()); + historyService.deleteHistoricProcessInstance(processInstance.getId()); + processInstanceCopyService.deleteProcessInstanceCopy(processInstance.getId()); }); // 2.2 再从历史中删除所有相关的流程数据 List historicProcessInstances = historyService.createHistoricProcessInstanceQuery() .processDefinitionKey(model.getKey()).list(); historicProcessInstances.forEach(historicProcessInstance -> { historyService.deleteHistoricProcessInstance(historicProcessInstance.getId()); + processInstanceCopyService.deleteProcessInstanceCopy(historicProcessInstance.getId()); + }); + // 2.3 清理所有 Task + List tasks = taskService.createTaskQuery() + .processDefinitionKey(model.getKey()).list(); + tasks.forEach(task -> { + taskService.deleteTask(task.getId()); }); - // TODO @lesan:流程任务,是不是也要清理哈? - // TODO @lesan:抄送是不是也要清理; } @Override diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyService.java index 3cbac06168..b226029d94 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyService.java @@ -50,4 +50,10 @@ public interface BpmProcessInstanceCopyService { PageResult getProcessInstanceCopyPage(Long userId, BpmProcessInstanceCopyPageReqVO pageReqVO); + /** + * 删除抄送流程 + * + * @param processInstanceId 流程实例id + */ + void deleteProcessInstanceCopy(String processInstanceId); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java index c2d52de05c..1f90888c48 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java @@ -87,4 +87,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy return processInstanceCopyMapper.selectPage(userId, pageReqVO); } + @Override + public void deleteProcessInstanceCopy(String processInstanceId) { + processInstanceCopyMapper.deleteByProcessInstanceId(processInstanceId); + } + }