From 845e95bd0712808af47044ae58553742d99e90c6 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期五, 17 五月 2024 20:42:44 +0800 Subject: [PATCH] update 优化获取流程记录 --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java | 49 +++++++------------------------------------------ ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java | 3 ++- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java | 4 +++- 3 files changed, 12 insertions(+), 44 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java index 4d433df..142386b 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActProcessInstanceController.java @@ -14,12 +14,14 @@ import org.dromara.workflow.domain.bo.ProcessInstanceBo; import org.dromara.workflow.domain.bo.ProcessInvalidBo; import org.dromara.workflow.domain.bo.TaskUrgingBo; +import org.dromara.workflow.domain.vo.ActHistoryInfoVo; import org.dromara.workflow.domain.vo.ProcessInstanceVo; import org.dromara.workflow.service.IActProcessInstanceService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Arrays; +import java.util.List; import java.util.Map; /** @@ -81,7 +83,7 @@ * @param processInstanceId 娴佺▼瀹炰緥id */ @GetMapping("/getHistoryRecord/{processInstanceId}") - public R<Map<String, Object>> getHistoryRecord(@NotBlank(message = "娴佺▼瀹炰緥id涓嶈兘涓虹┖") @PathVariable String processInstanceId) { + public R<List<ActHistoryInfoVo>> getHistoryRecord(@NotBlank(message = "娴佺▼瀹炰緥id涓嶈兘涓虹┖") @PathVariable String processInstanceId) { return R.ok(actProcessInstanceService.getHistoryRecord(processInstanceId)); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java index 3886804..2fc0c1a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActProcessInstanceService.java @@ -5,6 +5,7 @@ import org.dromara.workflow.domain.bo.ProcessInstanceBo; import org.dromara.workflow.domain.bo.ProcessInvalidBo; import org.dromara.workflow.domain.bo.TaskUrgingBo; +import org.dromara.workflow.domain.vo.ActHistoryInfoVo; import org.dromara.workflow.domain.vo.ProcessInstanceVo; import java.util.List; @@ -56,7 +57,7 @@ * @param processInstanceId 娴佺▼瀹炰緥id * @return 缁撴灉 */ - Map<String, Object> getHistoryRecord(String processInstanceId); + List<ActHistoryInfoVo> getHistoryRecord(String processInstanceId); /** * 浣滃簾娴佺▼瀹炰緥锛屼笉浼氬垹闄ゅ巻鍙茶褰�(鍒犻櫎杩愯涓殑瀹炰緥) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 6339302..b64c79e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -336,8 +336,7 @@ * @param processInstanceId 娴佺▼瀹炰緥id */ @Override - public Map<String, Object> getHistoryRecord(String processInstanceId) { - Map<String, Object> map = new HashMap<>(); + public List<ActHistoryInfoVo> getHistoryRecord(String processInstanceId) { // 鏌ヨ浠诲姟鍔炵悊璁板綍 List<HistoricTaskInstance> list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list(); list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed()); @@ -378,16 +377,7 @@ } actHistoryInfoVoList.add(actHistoryInfoVo); } - List<ActHistoryInfoVo> collect = new ArrayList<>(); - // 寰呭姙鐞� - List<ActHistoryInfoVo> waitingTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() == null); - // 宸插姙鐞� - List<ActHistoryInfoVo> finishTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() != null); - collect.addAll(waitingTask); - collect.addAll(finishTask); // 瀹℃壒璁板綍 - map.put("historyRecordList", collect); - List<ActHistoryInfoVo> nodeInfoList = new ArrayList<>(); Map<String, List<ActHistoryInfoVo>> groupByKey = StreamUtils.groupByKey(actHistoryInfoVoList, ActHistoryInfoVo::getTaskDefinitionKey); for (Map.Entry<String, List<ActHistoryInfoVo>> entry : groupByKey.entrySet()) { ActHistoryInfoVo actHistoryInfoVo = BeanUtil.toBean(entry.getValue().get(0), ActHistoryInfoVo.class); @@ -403,39 +393,14 @@ actHistoryInfoVo.setEndTime(null); actHistoryInfoVo.setRunDuration(null); }); - nodeInfoList.add(actHistoryInfoVo); } - // 鑺傜偣淇℃伅 - map.put("nodeListInfo", nodeInfoList); - BpmnModel bpmnModel = repositoryService.getBpmnModel(list.get(0).getProcessDefinitionId()); - List<GraphicInfoVo> graphicInfoVos = new ArrayList<>(); - Collection<FlowElement> flowElements = bpmnModel.getMainProcess().getFlowElements(); - //鑺傜偣鍥惧舰淇℃伅 - buildGraphicInfo(flowElements, graphicInfoVos, bpmnModel); - map.put("graphicInfoVos", graphicInfoVos); - return map; - } + List<ActHistoryInfoVo> recordList = new ArrayList<>(); + // 寰呭姙鐞� + recordList.addAll(StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() == null)); + // 宸插姙鐞� + recordList.addAll(StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() != null)); - /** - * 鏋勫缓鑺傜偣鍥惧舰淇℃伅 - * - * @param flowElements 鑺傜偣 - */ - private static void buildGraphicInfo(Collection<FlowElement> flowElements, List<GraphicInfoVo> graphicInfoVos, BpmnModel bpmnModel) { - for (FlowElement flowElement : flowElements) { - if (flowElement instanceof SubProcess) { - Collection<FlowElement> subFlowElements = ((SubProcess) flowElement).getFlowElements(); - buildGraphicInfo(subFlowElements, graphicInfoVos, bpmnModel); - } else { - if (flowElement instanceof UserTask) { - GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowElement.getId()); - GraphicInfoVo graphicInfoVo = BeanUtil.toBean(graphicInfo, GraphicInfoVo.class); - graphicInfoVo.setNodeId(flowElement.getId()); - graphicInfoVo.setNodeName(flowElement.getName()); - graphicInfoVos.add(graphicInfoVo); - } - } - } + return recordList; } /** -- Gitblit v1.9.3