Browse Source

feat: 分批次查询,防止in过多报错

lixuesong 6 days ago
parent
commit
8649f40c6a

+ 11 - 3
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysStatisticManager.java

@@ -547,9 +547,17 @@ public class SysStatisticManager {
         Map<Integer, String> dId2NameMap = deptService.list(Wrappers.<SysDept>lambdaQuery().in(SysDept::getDeptId, deptIds)).stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getName));
 
         // 批量查询任务
-        List<WmTask> tasks = taskService.list(Wrappers.<WmTask>lambdaQuery()
-                .eq(WmTask::getTaskStatus, UpmsState.TaskState.PASSED)
-                .in(WmTask::getScorePackageId, cont.stream().map(WmScorePackage::getId).collect(Collectors.toSet())));
+        List<WmTask> tasks = new ArrayList<>();
+        Set<String> allPkgIds = cont.stream().map(WmScorePackage::getId).collect(Collectors.toSet());
+        // 分批次查询
+        List<List<String>> batchPkgIds = CollUtil.split(allPkgIds, 1000);
+        for (List<String> batchPkgId : batchPkgIds) {
+            List<WmTask> batchTasks = taskService.list(Wrappers.<WmTask>lambdaQuery()
+                    .eq(WmTask::getTaskStatus, UpmsState.TaskState.PASSED)
+                    .in(WmTask::getScorePackageId, batchPkgId));
+            tasks.addAll(batchTasks);
+        }
+
         // 根据执行包ID分组
         Map<String, List<WmTask>> pkg2TaskListMap = tasks.stream().collect(Collectors.groupingBy(WmTask::getScorePackageId));