From 6e22eee1db782ccd72caecce9491f357e8cadf46 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 03 一月 2025 15:09:42 +0800
Subject: [PATCH] 剩余事项统计逻辑优化
---
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 48 +++++++++++++++++-------------------------------
flowable/src/main/java/com/ycl/service/common/TaskCommonService.java | 1 -
2 files changed, 17 insertions(+), 32 deletions(-)
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
index 77e0ac6..0ba8055 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -104,7 +104,7 @@
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(vo.getProcessDefId()).singleResult();
if (Objects.nonNull(processDefinition)) {
vo.setSuspended(processDefinition.isSuspended());
- vo.setFlowableProcessName(processDefinition.getName());
+ vo.setFlowableProcessName(processDefinition.getName() + "(v" + processDefinition.getVersion() + ")");
}
}
}
@@ -214,9 +214,8 @@
// 鐘舵�佺粺璁�
taskStatistics.setTotalTaskNum(this.getTotalTaskNum(processDefId));
taskStatistics.setTodoTaskNum(this.getTodoTaskNum(projectProcess.getProcessInsId()));
- taskStatistics.setRemainingTaskNum(this.getRemainingTaskNum(processDefId, projectProcess.getProcessInsId()));
+ taskStatistics.setRemainingTaskNum(this.getRemainingTaskNum(processDefId, projectProcess.getProcessInsId(), taskStatistics.getTotalTaskNum()));
// taskStatistics.setCurrentTask(this.getCurrentNodeTaskList(projectProcess.getProcessInstanceId()));
- taskStatistics.setRemainingTaskNum(this.getRemainingTaskNum(projectProcess.getProcessDefId(), projectProcess.getProcessInsId()));
detail.setStatistics(taskStatistics);
Result result = Result.ok();
@@ -766,8 +765,9 @@
List<Long> handlerUnitIds = new ArrayList<>(2);
List<String> handlerUnitNames = new ArrayList<>(2);
- // 鍒ゆ柇浠诲姟鐘舵��
- List<CustomerTaskVO> vos = userTasks.stream().map(userTask -> {
+ // 鍒ゆ柇浠诲姟鐘舵�侊紝鏋勫缓vo
+ List<CustomerTaskVO> vos = new ArrayList<>(48);
+ for (UserTask userTask : userTasks) {
CustomerTaskVO vo = new CustomerTaskVO();
vo.setProcessInsId(process.getId());
vo.setProcessDefId(processDefinitionId);
@@ -827,14 +827,12 @@
vo.setHandlerName(handlerNames);
vo.setHandlerUnitId(handlerUnitIds);
vo.setHandlerUnitName(handlerUnitNames);
- return vo;
} else {
- return null;
+ continue;
}
- } else {
- return null;
}
- }).filter(Objects::nonNull).collect(Collectors.toList());
+ vos.add(vo);
+ }
result.data(vos);
return vos;
}
@@ -846,34 +844,22 @@
* @param processInsId 娴佺▼瀹炰緥id
* @return
*/
- private Long getRemainingTaskNum(String processDefinitionId, String processInsId) {
+ private Long getRemainingTaskNum(String processDefinitionId, String processInsId, long totalNum) {
- List<UserTask> allUserTaskElement = this.getAllUserTaskElement(processDefinitionId);
// 鏌ュ嚭娴佺▼
ProcessInstance process = runtimeService.createProcessInstanceQuery().processInstanceId(processInsId).singleResult();
if (Objects.isNull(process)) {
// 杩愯鏃舵湭鎵惧埌娴佺▼锛岃鏄庢祦绋嬪凡缁忕粨鏉熶簡
return 0L;
}
- long num = 0L;
- // 鍒ゆ柇浠诲姟鐘舵��
- for (UserTask userTask : allUserTaskElement) {
- Task task = taskService.createTaskQuery().processInstanceId(process.getId()).taskDefinitionKey(userTask.getId()).singleResult();
- if (Objects.isNull(task)) {
- // 濡傛灉浠诲姟鍦ㄨ繍琛屾椂娌℃壘鍒帮紝閭d箞鍙兘涓烘湭寮�濮嬫垨鑰呭凡瀹屾垚锛屽彧鏌ヨ鏈紑濮嬬殑
- List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery()
- .processInstanceId(process.getProcessInstanceId())
- .taskDefinitionKey(userTask.getId())
- .includeIdentityLinks()
- .orderByHistoricTaskInstanceStartTime()
- .desc()
- .list();
- if (CollectionUtils.isEmpty(historicTasks)) {
- num++;
- }
- }
- }
- return num;
+ // 鏌ュ嚭宸插畬鎴愮殑浠诲姟锛岀敤鎬讳换鍔℃暟-宸插畬鎴愮殑灏卞緱鍒板墿浣欎簨椤�
+ List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
+ .processInstanceId(process.getProcessInstanceId())
+ .finished()
+ .list();
+ long num = list.stream().map(HistoricTaskInstance::getTaskDefinitionId).distinct().count();
+
+ return totalNum - num;
}
diff --git a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java
index daeef92..0385cd7 100644
--- a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java
+++ b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java
@@ -167,7 +167,6 @@
FormDetailVO formDetailVO = new FormDetailVO();
formDetailVO.setBeforeNodeDefId(incomingFlow.getSourceFlowElement().getId());
formDetailVO.setBeforeNodeName(incomingFlow.getSourceFlowElement().getName());
- formDetailVO.setBeforeNodeName(((UserTask) incomingFlow.getSourceFlowElement()).getOwner());
defKeys.add(formDetailVO);
} else {
beforeNodeInfo(incomingFlow.getSourceFlowElement(), defKeys);
--
Gitblit v1.8.0