From a77bf9fb4718d1b657f8ef8c6edfaffa1a53683f Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 06 二月 2026 17:01:20 +0800
Subject: [PATCH] 处理数据查询慢的问题

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java |   40 ++++++++++++++++++++++++++++------------
 1 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
index a1346c9..94d81fc 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
@@ -26,8 +26,10 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDate;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -45,7 +47,7 @@
     private IServiceTaskService serviceTaskService;
 
     @Autowired
-    private IServiceSubtaskService iServiceTaskCallService;
+    private IServiceSubtaskService iServiceSubtaskService;
 
     @Value("${pub_key}")
     private String pub_key;
@@ -69,20 +71,34 @@
         List<ServiceTask> list = serviceTaskService.selectServiceTaskAndtaskDeptList(serviceTask);
         List<ServiceTaskVO> serviceTaskVOS = DtoConversionUtils.sourceToTarget(list, ServiceTaskVO.class);
 
+        List<Long> taskIds = list.stream().map(ServiceTask::getTaskid).collect(Collectors.toList());
+
+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        serviceSubtaskVO.setTaskIds(taskIds);
+        serviceSubtaskVO.setStartOutHospTime(serviceTask.getStartOutHospTime());
+        serviceSubtaskVO.setEndOutHospTime(serviceTask.getEndOutHospTime());
+        // 鎵归噺鏌ヨ鎵�鏈夊瓙浠诲姟
+        Map<String, List<ServiceSubtask>> subtaskMap = iServiceSubtaskService
+                .selectServiceSubtaskList(serviceSubtaskVO)
+                .stream()
+                .filter(subtask -> subtask.getTaskid() != null)  // 娣诲姞杩囨护
+                .collect(Collectors.groupingBy(subtask -> Optional.of(subtask.getTaskid().toString()).orElse("Unknown")));
+
+
         if (CollectionUtils.isNotEmpty(serviceTaskVOS)) {
-            for (ServiceTaskVO ServiceTaskVO : serviceTaskVOS) {
-                ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-                serviceSubtaskVO.setTaskid(ServiceTaskVO.getTaskid());
-                serviceSubtaskVO.setStartOutHospTime(serviceTask.getStartOutHospTime());
-                serviceSubtaskVO.setEndOutHospTime(serviceTask.getEndOutHospTime());
-                List<ServiceSubtask> ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(serviceSubtaskVO);
-                if (CollectionUtils.isNotEmpty(ServiceTaskcalls)) {
+            for (ServiceTaskVO taskVO : serviceTaskVOS) {
+                List<ServiceSubtask> subtasks = subtaskMap.getOrDefault(taskVO.getTaskid().toString(), Collections.emptyList());
+
+                if (CollectionUtils.isNotEmpty(subtasks)) {
                     //宸插彂閫侊紙瀛愪换鍔′腑鐨� sendstate=1涓鸿棰嗗彇锛�
-                    long yfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() >= 3L) || (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 1L)).collect(Collectors.toList()).stream().count();
+                    long yfs = subtasks.stream().filter(s -> s.getSendstate() != null &&
+                            (s.getSendstate() >= 3L || s.getSendstate() == 1L)).count();
                     //鏈彂閫�
-                    long wfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 2L).collect(Collectors.toList()).stream().count();
-                    ServiceTaskVO.setYfs(yfs);
-                    ServiceTaskVO.setWfs(wfs);
+                    long wfs = subtasks.stream().filter(s -> s.getSendstate() != null &&
+                            s.getSendstate() == 2L).count();
+                    taskVO.setYfs(yfs);
+                    taskVO.setWfs(wfs);
+
                 }
 
             }

--
Gitblit v1.9.3