yangys
2025-08-09 8ad0226431656756ec326b650c8bcbc256784fa8
流程节点创建修改
已添加1个文件
已修改3个文件
133 ■■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/AbstractFlowCompleteService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -6,11 +6,13 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.SerializationException;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.support.Kv;
@@ -25,6 +27,7 @@
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.flow.service.TaskDispatchService;
import org.springblade.mdm.flow.service.execute.AbstractFlowCompleteService;
import org.springblade.mdm.flow.service.execute.BatchDispatchService;
import org.springblade.mdm.flow.service.execute.DefaultFlowCompleteService;
import org.springblade.mdm.flow.service.execute.TryFlowCompleteService;
import org.springblade.mdm.flow.vo.TaskAssignVO;
@@ -61,6 +64,8 @@
    private final TryFlowCompleteService tryFlowCompleteService;
    private final DefaultFlowCompleteService defaultFlowCompleteService;
    private final TaskDispatchService taskDispatchService;
    private final BatchDispatchService dispatchService;
    /**
     * å‘起派工流程
     */
@@ -92,57 +97,28 @@
        try {
            AbstractFlowCompleteService completeService = getActualService(processInstanceId);
            completeService.completeTask(taskId, processInstanceId, comment, variables);
            return R.success("流程提交成功");
        }catch(Exception e){
            return R.fail(e.getMessage());
        }
        /*
        Task task = taskService.createTaskQuery()
            .taskId(taskId)
            .singleResult();
        String operateResult = variables.get("approve")+"";
        if(task.getTaskDefinitionKey().equals("programmingTask")) {//编制节点
            flowProgramFileService.checkProgramFiles(processInstanceId,"Y".equals(operateResult));
        }
        // å¢žåŠ è¯„è®º
        if (StringUtil.isNoneBlank(processInstanceId, comment)) {
            taskService.addComment(taskId, processInstanceId, comment);
        }
        // éžç©ºåˆ¤æ–­
        if (Func.isEmpty(variables)) {
            variables = Kv.create();
        }
        //加入审批用户
        variables.put(FlowContants.LAST_STEP_USER_NICKNAME,AuthUtil.getNickName());
        if(variables.containsKey("assignee")){
            addApproveRecord(taskId,comment,variables);
            //在编制任务时,创建节点(没有节点则创建,有就直接使用
            if(task.getTaskDefinitionKey().equals("programmingTask") && "Y".equals(operateResult)) {
                ncNodeAutoCreateService.createNodeTreeWithProgram(flowCommonService.getProgramProperties(processInstanceId));
            }
            if(!"confirmIsUseableTask".equals(task.getTaskDefinitionKey())){
                variables.remove(FlowContants.PROCESS_EDITION);//TODO ä¸´æ—¶é”™è¯¯æ˜¯ï¼Œç»„长提交的时候会提交一个空串,清空了内部数据
            }else{
                //升版
            }
            //指定了下一步执行人
            taskService.complete(taskId, variables);
            return R.success("流程提交成功");
        }else {
            // å®Œæˆä»»åŠ¡,给默认用户
            return R.fail("请指定流程下一步处理人");
        }*/
    }
    @Operation(summary = "批量派工", description = "组长批量派工")
    @PostMapping("batchDispatch")
    public R<Void> batchDispatch(String[] taskIds, String[] processInstanceIds, @Parameter(name = "comment", description = "备注")String comment,@Parameter(name = "assignee", description = "处理人id") String assignee) {
        try {
            dispatchService.batchCompleteTask(taskIds, processInstanceIds, comment, assignee);
            return R.success("流程提交成功");
        }catch(Exception e){
            return R.fail(e.getMessage());
        }
    }
    /*
    void addApproveRecord(String taskId,String comment,Map<String, Object> variables){
        String operateResult = variables.get("approve")+"";
@@ -151,5 +127,5 @@
            .singleResult();
        approveRecordService.saveApproveRecords(task,operateResult,comment);
    }
    }*/
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/AbstractFlowCompleteService.java
@@ -46,8 +46,6 @@
    }
    void addApproveRecord(String taskId,String comment,Map<String, Object> variables){
        String operateResult = variables.get("approve")+"";
        approveRecordService.saveApproveRecords(currentTask(taskId),operateResult,comment);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package org.springblade.mdm.flow.service.execute;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.flow.service.ApproveRecordService;
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.program.service.NcNodeAutoCreateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
/**
 * è¯•切流程完成任务的实现
 */
@Service
public class BatchDispatchService  {
    @Autowired
    private ApproveRecordService approveRecordService;
    @Autowired
    private TaskService taskService;
    @Transactional
    public void batchCompleteTask(String[] taskIds, String[] processInstanceIds, String comment,String assignee) {
        if(StringUtils.isBlank(assignee)){
            throw new ServiceException("缺少处理人参数");
        }
        if(taskIds == null || taskIds.length == 0){
            throw new ServiceException("任务id组为空");
        }
        if(processInstanceIds == null || processInstanceIds.length == 0){
            throw new ServiceException("流程实例id组为空");
        }
        if(taskIds.length != processInstanceIds.length){
            throw new ServiceException("任务id与流程实例id数量不一致");
        }
        Map<String, Object> variables = Kv.create();
        variables.put("assignee", assignee);
        variables.put("approve", FlowContants.Y);//默认就是通过
        String taskId;
        String processInstanceId;
        for(int i=0;i<taskIds.length;i++){
            taskId = taskIds[i];
            processInstanceId = processInstanceIds[i];
            Task task = taskService.createTaskQuery()
                .taskId(taskId)
                .singleResult();
            taskService.complete(taskId, variables);
            if (StringUtil.isNoneBlank(processInstanceId, comment)) {
                taskService.addComment(taskId, processInstanceId, comment);
            }
            approveRecordService.saveApproveRecords(task,FlowContants.Y,comment);
        }
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/TryFlowCompleteService.java
@@ -71,7 +71,6 @@
                curedProgramPackage.setIsLastEdition(0);
                curedProgramPackage.setIsLocked(1);
                ncNodeService.updateById(curedProgramPackage);
            }
        }