yangys
2025-08-06 1911be8941e5fe2705c2c56e74e52bd426468793
固化流程,建立node;
已修改5个文件
53 ■■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/constants/FlowContants.java
@@ -57,4 +57,8 @@
     */
    public static final String PROCESS_NAME = "processName";
    /**
     * 上一步审批用户姓名
     */
    public static final String LAST_STEP_USER_NICKNAME = "approveUserNickName";
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -84,30 +84,21 @@
        if (Func.isEmpty(variables)) {
            variables = Kv.create();
        }
        /*
        String programIds = null;
        if(variables.containsKey(FlowContants.PROGRAM_IDS_KEY)){
            programIds = variables.get("programIds").toString();
            runtimeService.setVariable(taskId, FlowContants.PROGRAM_IDS_KEY, programIds);
        }
        if(StringUtils.isNotEmpty(programIds)) {
            //这已经没用了,直接使用临时文件
            processProgRefService.addRelations(processInstanceId,Func.toLongList(programIds));
        }
        */
        //加入审批用户
        variables.put("approveUserNickName",AuthUtil.getNickName());
        variables.put(FlowContants.LAST_STEP_USER_NICKNAME,AuthUtil.getNickName());
        if(variables.containsKey("assignee")){
            addApproveRecord(taskId,processInstanceId,comment,variables);
            //指定了下一步执行人
            taskService.complete(taskId, variables);
            //在编制任务时,创建节点(没有节点则创建,有就直接使用
            if(task.getTaskDefinitionKey().equals("programmingTask") && "Y".equals(operateResult)) {
                ncNodeAutoCreateService.createNodeTreeWithProgram(flowCommonService.getProgramProperties(processInstanceId));
            }
            //指定了下一步执行人
            taskService.complete(taskId, variables);
            return R.success("流程提交成功");
        }else {
            // 完成任务,给默认用户
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
@@ -5,12 +5,15 @@
import org.flowable.engine.HistoryService;
import org.flowable.engine.IdentityService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.mdm.basesetting.machine.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.excution.AutoAssignUsersService;
import org.springblade.mdm.flow.vo.TaskAssignVO;
@@ -41,7 +44,7 @@
    private final RuntimeService runtimeService;
    private final HistoryService historyService;
    private final TaskService taskService;
    private final IdentityService identityService;
    private final NcNodeService ncNodeService;
@@ -91,11 +94,14 @@
            .list();
        fillHistoryAssignees(vars, historicTasks);
        String businessKey = "0";//业务表key
        identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//设置流程发起人
        vars.put(FlowContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
        vars.put(FlowContants.TITLE,programPackage.getName()+"-固化");//自动增加标题
        ProcessInstance inst = runtimeService.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars);
        //更新程序包名节点的流程实例id
        programPackage.setProcessInstanceId(inst.getProcessInstanceId());
        ncNodeService.updateById(programPackage);
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
@@ -88,8 +88,7 @@
    List<DncSendBackData> parseDncZipFromByteArray(InputStream inputStream) throws IOException {
        List<DncSendBackData> list = new ArrayList<>();
        Path tempZipFile = createTempFile(inputStream);
        //Map<String,String> fileMd5Map = new HashMap<>();
        Map<String,DncSendBackData> fileDataMap = new HashMap<>();
        try (ZipFile zipFile = new ZipFile(tempZipFile.toFile())) {
            ZipEntry entry;
@@ -130,11 +129,13 @@
        List<Long> idList = Func.toLongList(ids);
        //
        NcProgramExchange exchange;
        String pkgFileName = bladeRedis.get(getFileKey());
        String filekey = getFileKey();
        String pkgFileName = bladeRedis.get(filekey);
        log.info("filekey={},文件名={}",filekey,pkgFileName);
        Map<Long,List<NcNode>> programPackageSubMap = new HashMap<>();
        List<NcNode> newProgramPckageList = updateNodeDataByDNCBackData(pkgFileName,idList,programPackageSubMap);
        log.info("需要启动固化流程的程序包名数量:{}",newProgramPckageList.size());
        for(NcNode pkgNode :newProgramPckageList){
            exchange = new NcProgramExchange();
            exchange.setName(pkgNode.getName());
@@ -143,6 +144,9 @@
            this.save(exchange);
        }
        bladeRedis.del(filekey);
        this.ossTemplate.removeFile(pkgFileName);
        log.info("删除oss文件:{}",pkgFileName);
        cureFlowService.startCure(newProgramPckageList,programPackageSubMap);
    }
@@ -172,6 +176,7 @@
            List<String> dirList = entryNameList.stream().filter(s -> s.endsWith("/")).toList();
            for(String dir : dirList){
                String programPackageName = StringUtils.removeEnd(dir,"/");
                NcNode oriProgramPkg = this.ncNodeService.getLastEditionProgramPackage(programPackageName);
                if(oriProgramPkg == null){
                    log.warn("未发现匹配的程序包名{}",programPackageName);
@@ -180,6 +185,7 @@
                if(!programPackageIdList.contains(oriProgramPkg.getId())){
                    //不在勾选的范围内
                    log.info("{}不在勾选范围内",programPackageName);
                    continue;
                }
                NcNode newProgramPkg = new NcNode();
@@ -244,6 +250,8 @@
            }
        }
        return newProgramPackageNodeList;
    }
blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
@@ -3,7 +3,7 @@
  <process id="program-cure" name="固化流程" isExecutable="true">
    <startEvent id="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7"/>
    <userTask id="cureProgramTask" name="固化编制" flowable:assignee="${programmer}"/>
    <sequenceFlow id="sid-910649a5-8dac-48a2-b42d-9f1132d61b26" sourceRef="cureProgramTask" targetRef="cureProgramTask"/>
    <sequenceFlow id="sid-09c7cf44-bb1a-40f4-b231-919afae5c02f" sourceRef="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7" targetRef="cureProgramTask"/>
    <endEvent id="end" name="固化结束"/>
    <userTask id="seniorApproveTask" name="高师审核" flowable:assignee="${assignee}"/>