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