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