From 89144af315cdd0ce9ad75f4aead298aebd278df7 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 24 三月 2025 11:45:35 +0800
Subject: [PATCH] 容缺计数

---
 business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 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 8c62e67..0ed7ebe 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -304,6 +304,7 @@
         taskStatistics.setTimelyFinishedTaskNum(this.getTimelyTaskNum(projectProcess.getProcessInsId()));
         taskStatistics.setOvertimeTaskNum(this.getOvertimeTaskNum(projectProcess.getProcessInsId()));
         taskStatistics.setWillOvertimeTaskNum(this.getWillOvertimeTaskNum(projectProcess.getProcessInsId()));
+        taskStatistics.setToleranceNum(this.getToleranceTask(projectProcess.getProcessInsId()));
 //        taskStatistics.setCurrentTask(this.getCurrentNodeTaskList(projectProcess.getProcessInstanceId()));
         detail.setStatistics(taskStatistics);
 
@@ -312,6 +313,32 @@
         // 浠e姙浠诲姟
         this.getTodoTaskList(projectProcess.getProjectId(), projectProcess.getProcessInsId(), "", 5, 1, result);
         return result.data(detail);
+    }
+
+    /**
+     * 瀹圭己浠诲姟璁℃暟
+     * @param processInsId
+     * @return
+     */
+    private Long getToleranceTask(String processInsId){
+        // 鏌ュ嚭瀹圭己杩囩殑浠诲姟
+        List<ProcessLog> allWaitTaskList = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper())
+                .eq(ProcessLog::getProcessInsId, processInsId)
+                .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.WAIT)
+                .orderByDesc(ProcessLog::getGmtCreate)
+                .list();
+        // 鎺掗櫎瀹圭己鍚庡張瀹屾垚鐨勪换鍔�
+        List<ProcessLog> finishedTaskList = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper())
+                .eq(ProcessLog::getProcessInsId, processInsId)
+                .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.FINISHED)
+                .list();
+        List<String> finishedTaskIds = finishedTaskList.stream().map(ProcessLog::getTaskId).distinct().collect(Collectors.toList());
+        // 寰楀埌鏈畬鎴愮殑瀹圭己浠诲姟
+        List<String> waitTaskIds = allWaitTaskList.stream().filter(log -> !finishedTaskIds.contains(log.getTaskId())).map(ProcessLog::getTaskId).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(waitTaskIds)) {
+            return 0L;
+        }
+        return Long.valueOf(waitTaskIds.size());
     }
 
     @Override
@@ -1736,6 +1763,8 @@
         return Long.valueOf(tList.size());
     }
 
+
+
     /**
      * 鏌ヨ鍗冲皢瓒呮椂鐨勪换鍔�
      *
@@ -1818,6 +1847,7 @@
                                              Integer pageNum,
                                              Integer pageSize,
                                              Result result) {
+
         // 鏌ュ嚭瀹圭己杩囩殑浠诲姟
         List<ProcessLog> allWaitTaskList = new LambdaQueryChainWrapper<>(processLogService.getBaseMapper())
                 .eq(ProcessLog::getProcessInsId, processInsId)

--
Gitblit v1.8.0