blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
@@ -7,7 +7,10 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.TaskService; import org.flowable.engine.task.Comment; import org.flowable.task.api.history.HistoricTaskInstance; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; @@ -37,6 +40,9 @@ @Autowired private FlowBusinessService businessService; @Autowired private HistoryService historyService; @GetMapping("overtime-list") @ApiOperationSupport(order = 3) @Operation(summary = "超时查询", description = "查询所有超时任务") @@ -65,10 +71,25 @@ } @Operation(summary = "流程轨迹", description = "流程轨迹") @GetMapping("process-trace") public R<List<TaskTraceVO>> processTrace(long processInstanceId){ return R.data(Collections.emptyList()); public R<List<TaskTraceVO>> processTrace(String processInstanceId){ List<TaskTraceVO> result = new ArrayList<>(); List<HistoricTaskInstance> hisTasks = historyService.createHistoricTaskInstanceQuery() .processInstanceId(processInstanceId).orderByTaskCreateTime().desc().list(); // 批注信息 List<Comment> comments; for (HistoricTaskInstance hisTask : hisTasks) { TaskTraceVO vo = new TaskTraceVO(); BeanUtils.copyProperties(hisTask, vo); comments = taskService.getTaskComments(hisTask.getId()); if(!comments.isEmpty()) { vo.setComment(comments.get(0).getFullMessage()); } result.add(vo); } return R.data(result); } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
@@ -9,12 +9,15 @@ import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.*; import org.springblade.mdm.basesetting.machine.MachineService; import org.springblade.mdm.flow.entity.MdmFlowProcess; import org.springblade.mdm.flow.util.MdmFlowCache; import org.springblade.mdm.flow.vo.FlowVO; import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.User; import org.springframework.stereotype.Service; import java.time.LocalDate; @@ -33,7 +36,7 @@ private final TaskService taskService; private final HistoryService historyService; private final MachineService machineService; private final IUserClient userClient; public IPage<FlowVO> selectTodoPage(IPage<FlowVO> page, LocalDate createTimeBegin, LocalDate createTimeEnd, String keyword) { //String taskUser = TaskUtil.getTaskUser(); @@ -263,12 +266,20 @@ flow.setProcessDefinitionId(task.getProcessDefinitionId()); //flow.setProcessDefinitionKey(processDefinition.getKey()); //flow.setProcessDefinitionVersion(processDefinition.getVersion()); flow.setProcessInstanceId(task.getProcessInstanceId()); // 查询流程实例创建时间 HistoricProcessInstance historicProcess = historyService.createHistoricProcessInstanceQuery() .processInstanceId(task.getProcessInstanceId()) .singleResult(); flow.setProcessCreateTime(historicProcess.getStartTime()); R<User> ru = userClient.userInfoById(Long.valueOf(historicProcess.getStartUserId())); if(ru.isSuccess()) { flow.setStartUserName(ru.getData().getName()); } MdmFlowProcess processDefinition = MdmFlowCache.getProcessDefinition(task.getProcessDefinitionId()); flow.setCategory(processDefinition.getCategory()); blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowVO.java
@@ -25,6 +25,7 @@ */ package org.springblade.mdm.flow.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springblade.flow.core.constant.ProcessConstant; @@ -74,11 +75,17 @@ /** * 创建时间 */ @Schema(description = "任务创建时间") private Date createTime; /** * 结束时间 */ private Date endTime; @Schema(description = "流程创建时间") private Date processCreateTime; @Schema(description = "流程启动用户姓名") private String startUserName; /** * 签收时间 */ blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskTraceVO.java
@@ -5,6 +5,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; @Data @Schema(description = "流程轨迹数据") @@ -15,8 +16,8 @@ @Schema(description = "批注") private String comment; @Schema(description = "开始时间") private LocalDateTime startTime; private Date createTime; @Schema(description = "完成时间") private LocalDateTime completeTime; private Date endTime; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
@@ -30,22 +30,26 @@ * 新增 */ @PostMapping("/save") @Operation(summary = "新增", description = "节点信息") @Operation(summary = "新增节点", description = "节点信息") public R<Boolean> save(@RequestBody NcNodeVO vo) { ncNodeService.saveNcCode(vo); return R.<Boolean>status(true); } /** * 新增 */ @PostMapping("/update") @Operation(summary = "修改", description = "节点信息") @Operation(summary = "修改节点") public R<Boolean> update(@RequestBody NcNodeVO vo) { ncNodeService.updateNcCode(vo); return R.<Boolean>status(true); } @PostMapping("/remove") @Operation(summary = "删除节点") public R<Boolean> remove(Long id) { ncNodeService.removeById(id); return R.<Boolean>status(true); } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
@@ -1,5 +1,6 @@ package org.springblade.mdm.program.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; import org.springblade.mdm.commons.vo.BaseVO; @@ -7,11 +8,11 @@ @Setter @Getter public class NcNodeVO extends BaseVO { @Schema(description = "节点名称") private String name; @Schema(description = "父ID") private Long parentId; /** * 程序包名 */ @Schema(description = "节点类型,字典(程序节点类型nc_node_type)") private String nodeType; } blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
@@ -24,15 +24,15 @@ <conditionExpression xsi:type="tFormalExpression">${approve=='Y'}</conditionExpression> </sequenceFlow> <serviceTask id="cureCheckServiceTask" flowable:exclusive="true" name="固化程序检查服务任务" flowable:expression="cureProgramCheckTask.execute(execution)"/> <userTask id="sid-015ac835-1083-489a-9496-97dbb9432d09" name="检查程序是否可用" flowable:assignee="${assignee}"/> <userTask id="confirmIsUseableTask" name="检查程序是否可用" flowable:assignee="${assignee}"/> <sequenceFlow id="sid-46ccac64-2d48-4933-88a6-f2941ae131dd" sourceRef="teamLeaderTask" targetRef="programmingTask"> <conditionExpression xsi:type="tFormalExpression">${approve=='Y' && hasCuredProgram=='N'}</conditionExpression> </sequenceFlow> <sequenceFlow id="sid-af92e6ab-bc80-43ed-8b09-1d3ec54cc9e7" sourceRef="teamLeaderTask" targetRef="cureCheckServiceTask"> <conditionExpression xsi:type="tFormalExpression">${approve=='Y' && hasCuredProgram=='Y'}</conditionExpression> </sequenceFlow> <sequenceFlow id="sid-353381d5-35c7-47b0-bf5b-2bafe865ab5e" sourceRef="cureCheckServiceTask" targetRef="sid-015ac835-1083-489a-9496-97dbb9432d09"/> <sequenceFlow id="sid-d144dad0-dc94-4a2b-96d6-9d8451b05ec1" sourceRef="sid-015ac835-1083-489a-9496-97dbb9432d09" targetRef="sid-82237034-5cb2-45c7-9a74-e2d5abb3b398" name="固化程序可用"> <sequenceFlow id="sid-353381d5-35c7-47b0-bf5b-2bafe865ab5e" sourceRef="cureCheckServiceTask" targetRef="confirmIsUseableTask"/> <sequenceFlow id="sid-d144dad0-dc94-4a2b-96d6-9d8451b05ec1" sourceRef="confirmIsUseableTask" targetRef="sid-82237034-5cb2-45c7-9a74-e2d5abb3b398" name="固化程序可用"> <conditionExpression>${approve=='Y'}</conditionExpression> </sequenceFlow> <sequenceFlow id="sid-d4133565-1a45-4bb6-b603-9b9e4db1cdbb" sourceRef="approveTask" targetRef="check"> @@ -46,7 +46,7 @@ <conditionExpression xsi:type="tFormalExpression">${processEditionEqual=='N'}</conditionExpression> </sequenceFlow> <sequenceFlow id="sid-598e1dbe-85b3-40d0-89c8-bd2580ecbfc5" sourceRef="emptyUpgradeProcessEdtionServiceTask" targetRef="check"/> <sequenceFlow id="sid-80b50f96-7601-4ba2-8c32-968923170d25" sourceRef="sid-015ac835-1083-489a-9496-97dbb9432d09" targetRef="programmingTask"> <sequenceFlow id="sid-80b50f96-7601-4ba2-8c32-968923170d25" sourceRef="confirmIsUseableTask" targetRef="programmingTask"> <conditionExpression>${approve=='N'}</conditionExpression> </sequenceFlow> <serviceTask id="emptyUpgradeProcessEdtionServiceTask" flowable:exclusive="true" name="空升版" flowable:expression="programEmptyUpgradeProcessEdtionTask.execute(execution)"/> @@ -98,7 +98,7 @@ <bpmndi:BPMNShape id="shape-8455618d-c1b9-4e6a-bca4-de965cc81633" bpmnElement="cureCheckServiceTask"> <omgdc:Bounds x="-275.0" y="37.500004" width="65.0" height="39.999996"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="shape-8f7064fc-4838-44cc-bf6d-ca15932a1e2e" bpmnElement="sid-015ac835-1083-489a-9496-97dbb9432d09"> <bpmndi:BPMNShape id="shape-8f7064fc-4838-44cc-bf6d-ca15932a1e2e" bpmnElement="confirmIsUseableTask"> <omgdc:Bounds x="-165.0" y="37.5" width="55.0" height="40.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="edge-0408fc3c-c133-40e3-9006-c315b12e9790" bpmnElement="sid-46ccac64-2d48-4933-88a6-f2941ae131dd">