From cf81f641bd8d0e84b7e2eb687b852416758d1ce1 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期一, 08 四月 2024 22:43:12 +0800 Subject: [PATCH] update 修改流程定义删除 --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessDefinitionController.java | 13 +++++++------ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessDefinitionService.java | 6 +++--- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java | 31 ++++++++++++++++++------------- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessDefinitionController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessDefinitionController.java index eb09d4f..5198bd1 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessDefinitionController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessDefinitionController.java @@ -2,6 +2,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -83,14 +84,14 @@ /** * 鍒犻櫎娴佺▼瀹氫箟 * - * @param deploymentId 閮ㄧ讲id - * @param processDefinitionId 娴佺▼瀹氫箟id + * @param deploymentIds 閮ㄧ讲id + * @param processDefinitionIds 娴佺▼瀹氫箟id */ @Log(title = "娴佺▼瀹氫箟绠$悊", businessType = BusinessType.DELETE) - @DeleteMapping("/{deploymentId}/{processDefinitionId}") - public R<Void> deleteDeployment(@NotBlank(message = "娴佺▼閮ㄧ讲id涓嶈兘涓虹┖") @PathVariable String deploymentId, - @NotBlank(message = "娴佺▼瀹氫箟id涓嶈兘涓虹┖") @PathVariable String processDefinitionId) { - return toAjax(actProcessDefinitionService.deleteDeployment(deploymentId, processDefinitionId)); + @DeleteMapping("/{deploymentIds}/{processDefinitionIds}") + public R<Void> deleteDeployment(@NotNull(message = "娴佺▼閮ㄧ讲id涓嶈兘涓虹┖") @PathVariable List<String> deploymentIds, + @NotNull(message = "娴佺▼瀹氫箟id涓嶈兘涓虹┖") @PathVariable List<String> processDefinitionIds) { + return toAjax(actProcessDefinitionService.deleteDeployment(deploymentIds, processDefinitionIds)); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessDefinitionService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessDefinitionService.java index 3a88df4..5d00e41 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessDefinitionService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessDefinitionService.java @@ -50,11 +50,11 @@ /** * 鍒犻櫎娴佺▼瀹氫箟 * - * @param deploymentId 閮ㄧ讲id - * @param processDefinitionId 娴佺▼瀹氫箟id + * @param deploymentIds 閮ㄧ讲id + * @param processDefinitionIds 娴佺▼瀹氫箟id * @return 缁撴灉 */ - boolean deleteDeployment(String deploymentId, String processDefinitionId); + boolean deleteDeployment(List<String> deploymentIds, List<String> processDefinitionIds); /** * 婵�娲绘垨鑰呮寕璧锋祦绋嬪畾涔� diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java index 1627eba..468e397 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java @@ -35,6 +35,7 @@ import org.flowable.bpmn.model.UserTask; import org.flowable.engine.ProcessMigrationService; import org.flowable.engine.RepositoryService; +import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.impl.bpmn.deployer.ResourceNameUtil; import org.flowable.engine.repository.*; import org.flowable.task.api.history.HistoricTaskInstance; @@ -45,9 +46,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -188,24 +187,30 @@ /** * 鍒犻櫎娴佺▼瀹氫箟 * - * @param deploymentId 閮ㄧ讲id - * @param processDefinitionId 娴佺▼瀹氫箟id + * @param deploymentIds 閮ㄧ讲id + * @param processDefinitionIds 娴佺▼瀹氫箟id */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteDeployment(String deploymentId, String processDefinitionId) { + public boolean deleteDeployment(List<String> deploymentIds, List<String> processDefinitionIds) { try { - List<HistoricTaskInstance> taskInstanceList = QueryUtils.hisTaskInstanceQuery() - .processDefinitionId(processDefinitionId).list(); - if (CollectionUtil.isNotEmpty(taskInstanceList)) { - throw new ServiceException("褰撳墠娴佺▼瀹氫箟宸茶浣跨敤涓嶅彲鍒犻櫎锛�"); + List<HistoricProcessInstance> historicProcessInstances = QueryUtils.hisInstanceQuery().deploymentIdIn(deploymentIds).list(); + if (CollectionUtil.isNotEmpty(historicProcessInstances)) { + Set<String> defIds = StreamUtils.toSet(historicProcessInstances, HistoricProcessInstance::getProcessDefinitionId); + List<ProcessDefinition> processDefinitions = QueryUtils.definitionQuery().processDefinitionIds(defIds).list(); + if (CollUtil.isNotEmpty(processDefinitions)) { + Set<String> keys = StreamUtils.toSet(processDefinitions, ProcessDefinition::getKey); + throw new ServiceException("褰撳墠銆�" + String.join(",", keys) + "銆戞祦绋嬪畾涔夊凡琚娇鐢ㄤ笉鍙垹闄わ紒"); + } } //鍒犻櫎娴佺▼瀹氫箟 - repositoryService.deleteDeployment(deploymentId); + for (String deploymentId : deploymentIds) { + repositoryService.deleteDeployment(deploymentId); + } //鍒犻櫎娴佺▼瀹氫箟閰嶇疆 - iWfDefinitionConfigService.deleteByDefIds(Collections.singletonList(processDefinitionId)); + iWfDefinitionConfigService.deleteByDefIds(processDefinitionIds); //鍒犻櫎鑺傜偣閰嶇疆 - iWfNodeConfigService.deleteByDefIds(Collections.singletonList(processDefinitionId)); + iWfNodeConfigService.deleteByDefIds(processDefinitionIds); return true; } catch (Exception e) { e.printStackTrace(); -- Gitblit v1.9.3