mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	update 修改流程定义删除
This commit is contained in:
		@@ -2,6 +2,7 @@ package org.dromara.workflow.controller;
 | 
			
		||||
 | 
			
		||||
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 @@ public class ActProcessDefinitionController extends BaseController {
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除流程定义
 | 
			
		||||
     *
 | 
			
		||||
     * @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));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -50,11 +50,11 @@ public interface IActProcessDefinitionService {
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除流程定义
 | 
			
		||||
     *
 | 
			
		||||
     * @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);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 激活或者挂起流程定义
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ import org.dromara.workflow.utils.QueryUtils;
 | 
			
		||||
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 org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
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 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
 | 
			
		||||
    /**
 | 
			
		||||
     * 删除流程定义
 | 
			
		||||
     *
 | 
			
		||||
     * @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();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user