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