From 98c18b07b92f80a1885e56b3413068644d0c9a51 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 03 一月 2025 16:18:17 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java |   48 +++++++++++++++++-------------------------------
 1 files changed, 17 insertions(+), 31 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;
     }
 
 

--
Gitblit v1.8.0