From 419fab9d84e6b2fbeb6d32b7d7253a6cd195200d Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 24 十二月 2025 17:26:48 +0800
Subject: [PATCH] 上报

---
 business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java        |   97 +++++++++++++++++++++++++++---------------------
 business/src/main/java/com/ycl/controller/WorkStationScheduleController.java |    3 +
 business/src/main/java/com/ycl/domain/query/WaitTodoQuery.java               |    2 
 3 files changed, 58 insertions(+), 44 deletions(-)

diff --git a/business/src/main/java/com/ycl/controller/WorkStationScheduleController.java b/business/src/main/java/com/ycl/controller/WorkStationScheduleController.java
index 48c177a..3aff970 100644
--- a/business/src/main/java/com/ycl/controller/WorkStationScheduleController.java
+++ b/business/src/main/java/com/ycl/controller/WorkStationScheduleController.java
@@ -117,4 +117,7 @@
         return workStationScheduleService.countTodayTask();
     }
 
+
+//    Result
+
 }
diff --git a/business/src/main/java/com/ycl/domain/query/WaitTodoQuery.java b/business/src/main/java/com/ycl/domain/query/WaitTodoQuery.java
index 6aa63b0..6fce488 100644
--- a/business/src/main/java/com/ycl/domain/query/WaitTodoQuery.java
+++ b/business/src/main/java/com/ycl/domain/query/WaitTodoQuery.java
@@ -12,5 +12,5 @@
  **/
 @Data
 public class WaitTodoQuery extends AbsQuery {
-    private String id; //all鏌ヨ鍏ㄩ儴
+    private String projectId; //all鏌ヨ鍏ㄩ儴
 }
diff --git a/business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java b/business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java
index 629823e..f375bc5 100644
--- a/business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/IndexHomeServiceImpl.java
@@ -695,8 +695,7 @@
         boolean isAdmin = SecurityUtils.getLoginUser().getUser().isAdmin(); // 鏄惁绠$悊鍛�
         List<String> userGroups = taskCommonService.getCurrentUserGroups(); // 褰撳墠鐢ㄦ埛鎵�灞炵粍
         List<ProjectInfo> targetProjectList = new ArrayList<>();
-        String queryProjectId = baseQuery.getId();
-
+        String queryProjectId = baseQuery.getProjectId();
 
         if ("all".equals(queryProjectId) || StringUtils.isBlank(queryProjectId)){
             // 鏌ヨ鍏ㄩ儴
@@ -710,7 +709,6 @@
                     // 椤圭洰涓嶅瓨鍦紝杩斿洖绌烘暟鎹�
                     return Result.ok().data(buildEmptyResultMap());
                 }
-                //
                 targetProjectList.add(projectInfo);
             } catch (NumberFormatException e) {
                 // 椤圭洰ID鏍煎紡閿欒锛岃繑鍥炵┖鏁版嵁
@@ -748,7 +746,7 @@
         }
         // 鍐嶅~鍏呮祦绋嬩俊鎭紙閮ㄧ讲ID銆佹祦绋嬪悕绉扮瓑锛�
         for (ProjectProcess projectProcess : projectProcessList) {
-            CheckPointVO checkPointVO = map.get(projectProcess.getProjectId());
+            CheckPointVO checkPointVO = map.get(projectProcess.getProjectId().toString()); // 淇锛歱rojectId鏄疞ong锛岄渶杞瓧绗︿覆
             if (checkPointVO == null) {
                 continue; // 鏃犲尮閰嶉」鐩紝璺宠繃
             }
@@ -769,7 +767,7 @@
                     checkPointVO.setProcessName(hisProcess.getProcessDefinitionName());
                 }
             }
-            map.put(projectProcess.getProjectId(), checkPointVO);
+            map.put(projectProcess.getProjectId().toString(), checkPointVO); // 淇锛歱rojectId杞瓧绗︿覆
         }
         Map<String, CheckPointVO> processInfoMap = map.values().stream()
                 .filter(Objects::nonNull)
@@ -803,53 +801,76 @@
                     return assignee == null || userId.toString().equals(assignee);
                 })
                 .collect(Collectors.toList());
+        // 浠诲姟鍘婚噸
         Set<String> taskIdSet = new HashSet<>();
         List<Task> distinctAllTaskList = new ArrayList<>();
         for (Task task : allTaskList) {
             if (!taskIdSet.contains(task.getId())) {
                 taskIdSet.add(task.getId());
                 distinctAllTaskList.add(task);
-                //
             }
         }
 
-        long distinctTotal = distinctAllTaskList.size();
-        System.out.println("鍘婚噸鍚庢�绘暟锛�" + distinctTotal);
+        // ========== 淇鐐�1锛氭彁鍓嶆煡璇换鍔$姸鎬侊紝杩囨护宸插畬鎴愪换鍔★紙鍒嗛〉鍓嶆墽琛岋級 ==========
+        // 鏌ヨ浠诲姟鐘舵��
+        final HashMap<String, ProcessLog> taskInfoMap = new HashMap<>();
 
-
-        int startIndex = (pageNum - 1) * pageSize;
-        List<Task> pageTaskList = new ArrayList<>();
-        if (startIndex < distinctAllTaskList.size()) {
-            int endIndex = Math.min(startIndex + pageSize, distinctAllTaskList.size());
-            pageTaskList = distinctAllTaskList.subList(startIndex, endIndex);
-        }
-
-
-        List<TaskInfoVo> taskInfoVoList = new ArrayList<>();
-        //鏌ヨ浠诲姟鐘舵��
-        List<String> taskIds = pageTaskList.stream().map(Task::getId).collect(Collectors.toList());
-        HashMap<String,ProcessLog> taskInfoMap = new HashMap<>();
-        if (!CollectionUtils.isEmpty(taskIds)) {
-            taskInfoMap = new LambdaQueryChainWrapper<>(processLogMapper)
+        List<String> allTaskIds = distinctAllTaskList.stream().map(Task::getId).collect(Collectors.toList());
+        if (!CollectionUtils.isEmpty(allTaskIds)) {
+            // 2. 涓嶅啀閲嶆柊璧嬪�硷紝鑰屾槸鍏堟煡璇㈠嚭缁撴灉锛屽啀鏀惧叆宸插垵濮嬪寲鐨刴ap涓�
+            List<ProcessLog> processLogs = new LambdaQueryChainWrapper<>(processLogMapper)
                     .eq(ProcessLog::getDeleted, Boolean.FALSE)
-                    .in(ProcessLog::getTaskId, taskIds).list()
-                    .stream()
+                    .in(ProcessLog::getTaskId, allTaskIds)
+                    .list();
+
+            // 3. 濉厖鏁版嵁鍒皌askInfoMap锛屽紩鐢ㄦ湭鏀瑰彉
+            Map<String, ProcessLog> tempMap = processLogs.stream()
                     .filter(processLog -> processLog.getTaskId() != null && processLog.getGmtCreate() != null)
                     .collect(Collectors.toMap(
-                            // Key锛歵askId杞瓧绗︿覆
                             ProcessLog::getTaskId,
-                            // Value锛歅rocessLog瀵硅薄鏈韩
                             processLog -> processLog,
-                            // 鍐茬獊绛栫暐锛氫繚鐣檊mtCreate鏇存柊鐨勯偅鏉¤褰�
-                            (existing, replacement) -> {
-                                return replacement.getGmtCreate().after(existing.getGmtCreate())
-                                        ? replacement : existing;
-                            },
+                            (existing, replacement) -> replacement.getGmtCreate().after(existing.getGmtCreate()) ? replacement : existing,
                             HashMap::new
                     ));
+            taskInfoMap.putAll(tempMap);
         }
 
+        // 杩囨护宸插畬鎴愪换鍔★紝寰楀埌鏈夋晥浠诲姟鍒楄〃锛堝垎椤电殑渚濇嵁锛�
+        List<Task> validTaskList = distinctAllTaskList.stream()
+                .filter(task -> {
+                    ProcessLog processLog = taskInfoMap.get(task.getId());
+                    // 鏈煡璇㈠埌鏃ュ織 鈫� 寰呭畬鎴愶紱鏃ュ織鐘舵�佷笉鏄疐INISHED 鈫� 鏈夋晥
+                    return processLog == null || !ProcessLogEventTypeEnum.FINISHED.getDesc().equals(processLog.getEventType().getDesc());
+                })
+                .collect(Collectors.toList());
 
+        // 鏈夋晥鏁版嵁鎬绘潯鏁�
+        long validTotal = validTaskList.size();
+        System.out.println("鏈夋晥浠诲姟鎬绘暟锛堟帓闄ゅ凡瀹屾垚锛夛細" + validTotal);
+
+        // ========== 淇鐐�2锛氬垎椤靛悎娉曟�ф牎楠� ==========
+        // 璁$畻鏈�澶ф湁鏁堥〉鐮�
+        int maxPageNum = (int) (validTotal % pageSize == 0 ? validTotal / pageSize : (validTotal / pageSize) + 1);
+        // 鑻ユ�绘潯鏁颁负0锛岀洿鎺ヨ繑鍥炵┖鏁版嵁
+        if (validTotal == 0) {
+            return Result.ok().data(new HashMap<String, Object>() {{
+                put("data", new ArrayList<>());
+                put("total", 0L);
+            }});
+        }
+        // 鑻ヨ姹傞〉鐮佽秴杩囨渶澶ч〉鐮侊紝榛樿杩斿洖鏈�鍚庝竴椤�
+        if (pageNum > maxPageNum) {
+            pageNum = maxPageNum;
+        }
+
+        // ========== 淇鐐�3锛氫紭鍖栧唴瀛樺垎椤� ==========
+        int startIndex = (pageNum - 1) * pageSize;
+        int endIndex = Math.min(startIndex + pageSize, validTaskList.size());
+        // 杞负鏂板垪琛紝閬垮厤subList瑙嗗浘鐨勯闄�
+        List<Task> pageTaskList = new ArrayList<>(validTaskList.subList(startIndex, endIndex));
+
+        // 缁勮杩斿洖VO
+        List<TaskInfoVo> taskInfoVoList = new ArrayList<>();
         for (Task task : pageTaskList) {
             TaskInfoVo taskVo = new TaskInfoVo();
             taskVo.setId(task.getId());
@@ -870,17 +891,7 @@
 
             taskInfoVoList.add(taskVo);
         }
-        //鎺掗櫎 宸插畬鎴愮殑
-        taskInfoVoList = taskInfoVoList.stream().filter(taskInfoVo -> {
-            if (ProcessLogEventTypeEnum.FINISHED.getDesc().equals(taskInfoVo.getTaskType())){
-                return false;
-            }
-            return true;
-        }).collect(Collectors.toList());
-        HashMap<String, Object> resultMap = new HashMap<>();
-        resultMap.put("data", taskInfoVoList);
-        resultMap.put("total", distinctTotal);
-        return Result.ok().data(resultMap);
+        return Result.ok().data(taskInfoVoList).total(validTotal);
     }
 
 

--
Gitblit v1.8.0