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}"/>