From 0c69fb7098582a168074095bf1eedf77172f94b9 Mon Sep 17 00:00:00 2001 From: lilin Date: Thu, 8 May 2025 21:01:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TsFilesServiceImpl.java | 66 ++++++++++++------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/java/src/main/java/com/yfd/platform/modules/experimentalData/service/impl/TsFilesServiceImpl.java b/java/src/main/java/com/yfd/platform/modules/experimentalData/service/impl/TsFilesServiceImpl.java index 92777df..5151436 100644 --- a/java/src/main/java/com/yfd/platform/modules/experimentalData/service/impl/TsFilesServiceImpl.java +++ b/java/src/main/java/com/yfd/platform/modules/experimentalData/service/impl/TsFilesServiceImpl.java @@ -2508,15 +2508,13 @@ public class TsFilesServiceImpl extends ServiceImpl impl // .ne("work_path", "") // .and(wq -> wq.isNull("backup_path").or().eq("backup_path", "")); } - Page tsFilesPage = tsFilesMapper.selectPage(page, queryWrapper); - if (tsFilesPage == null) { - tsFilesPage = new Page<>(); - tsFilesPage.setRecords(new ArrayList<>()); // 确保 records 被初始化 - } - List records = tsFilesPage.getRecords(); + List parentFiles = tsFilesMapper.selectList(queryWrapper); + + + // 递归查询每个记录的子节点,并添加到 records 中 List allFiles = new ArrayList<>(); - for (TsFiles tsFiles : records) { + for (TsFiles tsFiles : parentFiles) { tsFiles.setWorkPath(processingPath(tsFiles.getWorkPath(), tsFiles.getNodeId())); // 优化点11:路径处理内聚 // 如果备份路径为空 增加 将当前节点加入结果列表 if (StringUtils.isEmpty(tsFiles.getBackupPath())) { @@ -2525,13 +2523,26 @@ public class TsFilesServiceImpl extends ServiceImpl impl } // 查询该节点的所有子节点并递归添加 if ("FOLDER".equals(tsFiles.getIsFile())) { - List childFiles = getChildFilesRecursiveLocal(tsFiles.getId(), allFiles); + getChildFilesRecursiveLocal(tsFiles.getId(), allFiles); } } - tsFilesPage.setTotal(allFiles.size()); - tsFilesPage.setRecords(allFiles); // 更新 tsFilesPage 中的 records - System.out.println("Updated all files: " + allFiles); - return tsFilesPage; + + // ==================== 3. 内存分页处理 ==================== + int total = allFiles.size(); + int pageSize = (int) page.getSize(); + int currentPage = (int) page.getCurrent(); + int fromIndex = (currentPage - 1) * pageSize; + int toIndex = Math.min(fromIndex + pageSize, total); + + // 构建分页结果 + Page resultPage = new Page<>(currentPage, pageSize, total); + if (fromIndex < total) { + resultPage.setRecords(allFiles.subList(fromIndex, toIndex)); + } else { + resultPage.setRecords(Collections.emptyList()); + } + return resultPage; + } // 递归查询所有子节点 @@ -2640,16 +2651,10 @@ public class TsFilesServiceImpl extends ServiceImpl impl // .ne("backup_path", "") // .and(wq -> wq.isNull("work_path").or().eq("work_path", "")); } - Page tsFilesPage = tsFilesMapper.selectPage(page, queryWrapper); - if (tsFilesPage == null) { - tsFilesPage = new Page<>(); - tsFilesPage.setRecords(new ArrayList<>()); // 确保 records 被初始化 - } - - List records = tsFilesPage.getRecords(); + List parentFiles = tsFilesMapper.selectList(queryWrapper); // 递归查询每个记录的子节点,并添加到 records 中 List allFiles = new ArrayList<>(); - for (TsFiles tsFiles : records) { + for (TsFiles tsFiles : parentFiles) { tsFiles.setBackupPath(processingPath(tsFiles.getBackupPath(), tsFiles.getNodeId())); // 如果工作路径为空 增加 将当前节点加入结果列表 if (StringUtils.isEmpty(tsFiles.getWorkPath())) { @@ -2658,13 +2663,24 @@ public class TsFilesServiceImpl extends ServiceImpl impl } // 查询该节点的所有子节点并递归添加 if ("FOLDER".equals(tsFiles.getIsFile())) { - List childFiles = getChildFilesRecursiveMinio(tsFiles.getId(), allFiles); + getChildFilesRecursiveMinio(tsFiles.getId(), allFiles); } } - tsFilesPage.setTotal(allFiles.size()); - tsFilesPage.setRecords(allFiles); // 同步到 tsFilesPage - System.out.println("Updated records: " + allFiles); - return tsFilesPage; + // ==================== 3. 内存分页处理 ==================== + int total = allFiles.size(); + int pageSize = (int) page.getSize(); + int currentPage = (int) page.getCurrent(); + int fromIndex = (currentPage - 1) * pageSize; + int toIndex = Math.min(fromIndex + pageSize, total); + + // 构建分页结果 + Page resultPage = new Page<>(currentPage, pageSize, total); + if (fromIndex < total) { + resultPage.setRecords(allFiles.subList(fromIndex, toIndex)); + } else { + resultPage.setRecords(Collections.emptyList()); + } + return resultPage; } // 递归查询所有子节点