From b78b10c1b2aa6f615b7a31c1bd159dfac490d410 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期日, 23 三月 2025 12:13:54 +0800
Subject: [PATCH] 首页待办剩余时间排序

---
 business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java |   45 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 44 insertions(+), 1 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 5579d72..8c62e67 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -380,7 +380,50 @@
                     .endOr();
         }
         result.total(taskQuery.count());
-        List<Task> taskList = taskQuery.listPage(pageSize * (pageNum - 1), pageSize);
+        List<Task> allTodoList = taskQuery.list();
+        List<TaskOrderVO> orderList = new ArrayList<>();
+        allTodoList.stream().forEach(task -> {
+            TaskOrderVO order = new TaskOrderVO();
+            order.setTaskId(task.getId());
+            // 璁$畻鍔炵悊鏃堕棿锛岃秴鏃剁殑鎺掑墠闈紝娌¤秴鏃剁殑鐢变綆鍒伴珮鎺掑簭锛屾病瓒呮椂鏃堕棿鐨勬帓鏈�鍚�
+            ProcessCoding processCoding = processCodingService.getByTaskId(task.getId(), task.getProcessInstanceId());
+            if (Objects.nonNull(processCoding)) {
+                if (StringUtils.isNotBlank(processCoding.getRedTime())) {
+                    Long overtime = getTime(processCoding.getRedTime());
+                    long durationTime = 0l;
+                    if (Objects.nonNull(processCoding.getStartTaskTime())) {
+                        durationTime = ((new Date()).getTime() - processCoding.getStartTaskTime().getTime()) / 1000;
+                    }
+                    if (overtime > durationTime) {
+                        order.setNum((overtime - durationTime) / 3600);
+                    } else {
+                        order.setNum(-2000000L);
+                    }
+                } else {
+                    order.setNum(2000000L);
+                }
+            } else {
+                order.setNum(2000000L);
+            }
+            orderList.add(order);
+        });
+        // 鍗囧簭鎺掑垪
+        Collections.sort(orderList, Comparator.comparingLong(TaskOrderVO::getNum));
+        int startNum = pageSize * (pageNum - 1);
+        int endNum = startNum + pageSize;
+        if (startNum >= orderList.size()) {
+            result.data(new ArrayList<>()).total(0L);
+            return;
+        }
+        int end = Math.min(endNum, orderList.size());
+        List<String> targetTaskIds = orderList.subList(startNum, end).stream().map(TaskOrderVO::getTaskId).collect(Collectors.toList());
+        List<Task> taskList = targetTaskIds.stream().map(taskId -> {
+            List<Task> list = allTodoList.stream().filter(task -> task.getId().equals(taskId)).collect(Collectors.toList());
+            if (CollectionUtils.isEmpty(list)) {
+                return null;
+            }
+            return list.get(0);
+        }).filter(Objects::nonNull).collect(Collectors.toList());
         List<IndexCustomerTaskVO> vos = new ArrayList<>();
         for (Task task : taskList) {
             IndexCustomerTaskVO taskVO = new IndexCustomerTaskVO();

--
Gitblit v1.8.0