blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -21,6 +21,7 @@ import org.springblade.mdm.flow.excution.StartDispatcher; import org.springblade.mdm.flow.service.ApproveRecordService; import org.springblade.mdm.flow.service.FlowCommonService; import org.springblade.mdm.flow.service.FlowProgramFileService; import org.springblade.mdm.flow.vo.TaskAssignVO; import org.springblade.mdm.program.entity.ProcessProgRef; import org.springblade.mdm.program.service.ProcessProgRefService; @@ -47,10 +48,12 @@ private final RuntimeService runtimeService; private final ProcessProgRefService processProgRefService; private ApproveRecordService approveRecordService; private final ApproveRecordService approveRecordService; private final FlowCommonService flowCommonService; private final FlowProgramFileService flowProgramFileService; /** * 新增 * 发起派工流程 */ @PostMapping("/start") @Operation(summary = "任务计划(派工流程)", description = "启动派工流程") @@ -62,6 +65,14 @@ @Operation(summary = "完成任务", description = "流向下一个节点") @PostMapping("completeTask") public R<Void> completeTask(String taskId, String processInstanceId, String comment,@Parameter(name = "variables", description = "任务变量") @RequestBody Map<String, Object> variables) { Task task = taskService.createTaskQuery() .taskId(taskId) .singleResult(); if(task.getTaskDefinitionKey().equals("programmingTask")) {//编制节点 String operateResult = variables.get("approve")+""; flowProgramFileService.checkProgramFiles(processInstanceId,"Y".equals(operateResult)); } // 增加评论 if (StringUtil.isNoneBlank(processInstanceId, comment)) { taskService.addComment(taskId, processInstanceId, comment); @@ -76,6 +87,7 @@ runtimeService.setVariable(taskId, FlowContants.PROGRAM_IDS_KEY, programIds); } if(StringUtils.isNotEmpty(programIds)) { //这已经没用了,直接使用临时文件 processProgRefService.addRelations(processInstanceId,Func.toLongList(programIds)); } @@ -83,7 +95,6 @@ variables.put("approveUserNickName",AuthUtil.getNickName()); if(variables.containsKey("assignee")){ addApproveRecord(taskId,processInstanceId,comment,variables); //指定了下一步执行人 taskService.complete(taskId, variables); blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowProgramController.java
@@ -51,7 +51,7 @@ @GetMapping("/nclist-by-instanceid") @Operation(summary = "流程程序文件列表", description = "流程程序文件列表") public R<List<FlowProgramFile>> listNcFileByProcess(@Parameter(description="流程实例id")@RequestParam String processInstanceId) { return R.data(flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, processInstanceId).list()); return R.data(flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, processInstanceId).orderByAsc(FlowProgramFile::getCreateTime).list()); } @PostMapping("/remove") blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramFileService.java
@@ -23,6 +23,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.List; /** * 流程程序处理,包括上传,查询展示 @@ -169,5 +170,42 @@ return result; } /** * 验证程序文件的完整性,仅在编制节点使用 * @param processInstanceId 流程实例id */ public void checkProgramFiles(String processInstanceId,boolean isPass) { List<FlowProgramFile> flowPrograms = this.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, processInstanceId).orderByAsc(FlowProgramFile::getCreateTime).list(); if(isPass && flowPrograms.isEmpty()){ throw new ServiceException("请上传程序文件"); } int totalSeg = 0; if(!flowPrograms.isEmpty()){ FlowProgramFile progFile = flowPrograms.get(0); totalSeg = getProgramSegCount(progFile.getName()); } if(totalSeg != flowPrograms.size()){ throw new ServiceException("应上传"+totalSeg+"段程序,实际上传"+flowPrograms.size()+"段"); } } /** * 根据文件名获取程序总段树 * @param filename 文件名 * @return */ int getProgramSegCount(String filename){ int idx = filename.lastIndexOf("."); String tempstr = filename.substring(0,idx);//去掉扩展名 //System.out.println(tempstr); idx = tempstr.lastIndexOf("-"); tempstr = tempstr.substring(0,idx); //System.out.println(tempstr); idx = tempstr.lastIndexOf("-"); tempstr = tempstr.substring(idx+1); //System.out.println(tempstr); return Func.toInt(tempstr); } } blade-service/blade-mdm/src/test/java/org/springblade/mdm/flow/service/FlowProgramFileServiceTest.java
@@ -49,4 +49,13 @@ Assertions.assertEquals(4,e.getResultCode().getCode()); } } @Test public void getProgramSegCount(){ FlowProgramFileService service = new FlowProgramFileService(); String filename = "YZL4-1100-01-50-A-5-1.TXT"; Assertions.assertEquals(5, service.getProgramSegCount(filename)); } }