From 11c17eb3bce682b50fd42f70272863208cd77f03 Mon Sep 17 00:00:00 2001 From: lilin Date: Fri, 30 May 2025 15:51:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/TsFilesMapper.java | 2 + .../service/ITsFilesService.java | 2 + .../service/impl/TsFilesServiceImpl.java | 6 ++ .../service/impl/TsNodesServiceImpl.java | 91 +++++++++++-------- .../service/impl/NodesServiceImpl.java | 1 - .../mapper/experimentalData/TsFilesMapper.xml | 20 +++- 6 files changed, 83 insertions(+), 39 deletions(-) diff --git a/java/src/main/java/com/yfd/platform/modules/experimentalData/mapper/TsFilesMapper.java b/java/src/main/java/com/yfd/platform/modules/experimentalData/mapper/TsFilesMapper.java index 614ff68..5f98fed 100644 --- a/java/src/main/java/com/yfd/platform/modules/experimentalData/mapper/TsFilesMapper.java +++ b/java/src/main/java/com/yfd/platform/modules/experimentalData/mapper/TsFilesMapper.java @@ -19,4 +19,6 @@ public interface TsFilesMapper extends BaseMapper { int batchInsertTsFiles(List tsFilesToCreate); int updateParentIdByPathHierarchy(@Param("taskId") String taskId, @Param("nodeId") String nodeId); + + int countFiles(@Param("id") String id); } diff --git a/java/src/main/java/com/yfd/platform/modules/experimentalData/service/ITsFilesService.java b/java/src/main/java/com/yfd/platform/modules/experimentalData/service/ITsFilesService.java index 0a7023a..3eed989 100644 --- a/java/src/main/java/com/yfd/platform/modules/experimentalData/service/ITsFilesService.java +++ b/java/src/main/java/com/yfd/platform/modules/experimentalData/service/ITsFilesService.java @@ -250,4 +250,6 @@ public interface ITsFilesService extends IService { void automaticFileBackupAsyncByIds(List dataset,String taskId, String nodeId) throws IOException; IPage getCachedTsFilesPage(String taskId, String nodeId, int currentPage,String id); + + int countFiles(String id); } 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 e9925cd..c3089d9 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 @@ -328,6 +328,12 @@ public class TsFilesServiceImpl extends ServiceImpl impl // return null; } + @Override + public int countFiles(String id) { + int count = tsFilesMapper.countFiles(id); + return count; + } + private boolean isValidPage(IPage page) { return page.getRecords() != null diff --git a/java/src/main/java/com/yfd/platform/modules/experimentalData/service/impl/TsNodesServiceImpl.java b/java/src/main/java/com/yfd/platform/modules/experimentalData/service/impl/TsNodesServiceImpl.java index ec252c3..7c7e242 100644 --- a/java/src/main/java/com/yfd/platform/modules/experimentalData/service/impl/TsNodesServiceImpl.java +++ b/java/src/main/java/com/yfd/platform/modules/experimentalData/service/impl/TsNodesServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.yfd.platform.component.TaskStatusHolder; import com.yfd.platform.component.WebSocketServer; import com.yfd.platform.config.ResponseResult; @@ -458,32 +459,36 @@ public class TsNodesServiceImpl extends ServiceImpl impl List nodeIds = tsNodesList.stream() .map(TsNodes::getNodeId) // 获取每个节点的 ID .collect(Collectors.toList()); - - - //查询所有的文件 - QueryWrapper queryWrapper1 = new QueryWrapper<>(); - queryWrapper1.in("node_id", nodeIds); - queryWrapper1.eq("task_id", tsNodes.getTaskId()); - List tsFiles = tsFilesMapper.selectList(queryWrapper1); - //获取所有文件的ID集合 - List dataset = new ArrayList<>(); - if (tsFiles != null && !tsFiles.isEmpty()) { - dataset.addAll(tsFiles.stream() - .map(TsFiles::getId) - .collect(Collectors.toList())); - } - if (dataset.size() > 0) { - //批量修改 + //修改项目ID 和所有节点id的workPath字段为空 + if (CollectionUtils.isNotEmpty(nodeIds)) { + // 4. 批量更新:将这些节点的文件工作路径置空 LambdaUpdateWrapper updateWrapper1 = new LambdaUpdateWrapper<>(); - updateWrapper1.in(TsFiles::getId, dataset).set(TsFiles::getWorkPath, ""); + updateWrapper1.in(TsFiles::getNodeId, nodeIds).eq(TsFiles::getTaskId, tsNodes.getTaskId()).set(TsFiles::getWorkPath, ""); tsFilesMapper.update(null, updateWrapper1); + + // 5. 删除符合条件的文件记录 LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); - deleteWrapper.in(TsFiles::getId, dataset) + deleteWrapper.in(TsFiles::getNodeId, nodeIds) + .eq(TsFiles::getTaskId, tsNodes.getTaskId()) .and(wrapper -> wrapper.isNull(TsFiles::getBackupPath).or().eq(TsFiles::getBackupPath, "")) .and(wrapper -> wrapper.isNull(TsFiles::getWorkPath).or().eq(TsFiles::getWorkPath, "")); tsFilesMapper.delete(deleteWrapper); } + +// //查询所有的文件 +// QueryWrapper queryWrapper1 = new QueryWrapper<>(); +// queryWrapper1.in("node_id", nodeIds); +// queryWrapper1.eq("task_id", tsNodes.getTaskId()); +// List tsFiles = tsFilesMapper.selectList(queryWrapper1); +// //获取所有文件的ID集合 +// List dataset = new ArrayList<>(); +// if (tsFiles != null && !tsFiles.isEmpty()) { +// dataset.addAll(tsFiles.stream() +// .map(TsFiles::getId) +// .collect(Collectors.toList())); +// } + //删除当前节点的文件夹 todo 这个地方改动 // 删除 sdlocal 中的文件夹 List deleteItemList = new ArrayList<>(); @@ -521,8 +526,8 @@ public class TsNodesServiceImpl extends ServiceImpl impl } if (deleteSuccessCount >= 1) { // 删除当前节点 - int deleteCount = tsNodesMapper.deleteById(id); - if (deleteCount == 1) { + int deleteCount = tsNodesMapper.deleteBatchIds(nodeIds); + if (deleteCount >= 1) { LOGGER.info("tsnodes表结删除改成功"); return true; } else { @@ -697,19 +702,23 @@ public class TsNodesServiceImpl extends ServiceImpl impl jsonObject.putOpt("status", "1"); return ResponseResult.successData(jsonObject); } - //递归查询所有的子节点 - List tsNodesList = selectChildrentsNodes(tsNodes.getNodeId(), tsNodes.getTaskId()); - // 提取所有节点的 ID - List nodeIds = tsNodesList.stream() - .map(TsNodes::getNodeId) // 获取每个节点的 ID - .collect(Collectors.toList()); +// //递归查询所有的子节点 +// List tsNodesList = selectChildrentsNodes(tsNodes.getNodeId(), tsNodes.getTaskId()); +// // 提取所有节点的 ID +// List nodeIds = tsNodesList.stream() +// .map(TsNodes::getNodeId) // 获取每个节点的 ID +// .collect(Collectors.toList()); +// +// +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.eq(TsFiles::getTaskId, tsNodes.getTaskId()) +// .in(TsFiles::getNodeId, nodeIds) +// .and(wrapper -> wrapper.isNotNull(TsFiles::getBackupPath) +// .or().ne(TsFiles::getBackupPath, "")); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(TsFiles::getTaskId, tsNodes.getTaskId()) - .in(TsFiles::getNodeId, nodeIds) - .and(wrapper -> wrapper.isNotNull(TsFiles::getBackupPath) - .or().ne(TsFiles::getBackupPath, "")); - int count = tsFilesService.count(queryWrapper); + + //SQL通过节点ID 递归查询节点下面的所有子节点 以及files表中 backup_path IS NOT NULL + int count = tsFilesService.countFiles(id); //如果大于0不让删 if (count > 0) { jsonObject.putOpt("status", "0"); @@ -786,7 +795,18 @@ public class TsNodesServiceImpl extends ServiceImpl impl */ private void otherLevelsData(String taskId, String nodeId, String nodeName, String path, String parentId) throws Exception { - + //获取当前登录用户 上传人是当前登录人 + UsernamePasswordAuthenticationToken authentication = + (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication(); + LoginUser loginuser = null; + if (authentication != null) { + loginuser = (LoginUser) authentication.getPrincipal(); + } + //登录人 + String uploader = null; + if (loginuser != null) { + uploader = loginuser.getUsername(); + } // 存储所有目录和文件的列表 List tsFilesToCreate = new ArrayList<>(); @@ -828,7 +848,7 @@ public class TsNodesServiceImpl extends ServiceImpl impl //工作空间路径 tsFiles1.setWorkPath(ensurePathFormat(finalPath)); tsFiles1.setUploadTime(currentTime); - + tsFiles1.setUploader(uploader); if ("null".equals(String.valueOf(subDir.length()))) { tsFiles1.setFileSize("0.001"); @@ -875,8 +895,7 @@ public class TsNodesServiceImpl extends ServiceImpl impl //工作空间路径 tsFiles1.setWorkPath(ensurePathFormat(finalPath)); tsFiles1.setUploadTime(currentTime); - - + tsFiles1.setUploader(uploader); if ("null".equals(String.valueOf(file.length()))) { tsFiles1.setFileSize("0.001"); } else { diff --git a/java/src/main/java/com/yfd/platform/modules/specialDocument/service/impl/NodesServiceImpl.java b/java/src/main/java/com/yfd/platform/modules/specialDocument/service/impl/NodesServiceImpl.java index 636635b..877734b 100644 --- a/java/src/main/java/com/yfd/platform/modules/specialDocument/service/impl/NodesServiceImpl.java +++ b/java/src/main/java/com/yfd/platform/modules/specialDocument/service/impl/NodesServiceImpl.java @@ -538,7 +538,6 @@ public class NodesServiceImpl extends ServiceImpl implements public boolean deleteNodesById(String id, String path) { Boolean value = false; - // 根据ID 查询当前数据 Nodes nodes = nodesMapper.selectById(id); diff --git a/java/src/main/resources/mapper/experimentalData/TsFilesMapper.xml b/java/src/main/resources/mapper/experimentalData/TsFilesMapper.xml index 6442f45..22e743b 100644 --- a/java/src/main/resources/mapper/experimentalData/TsFilesMapper.xml +++ b/java/src/main/resources/mapper/experimentalData/TsFilesMapper.xml @@ -5,11 +5,11 @@ INSERT INTO ts_files - (id,node_id, task_id, is_file, parent_id, file_name, file_size, work_path,upload_time) + (id,node_id, task_id, is_file, parent_id, file_name, file_size, work_path,upload_time,uploader) VALUES (#{item.id},#{item.nodeId}, #{item.taskId}, #{item.isFile}, #{item.parentId}, - #{item.fileName}, #{item.fileSize}, #{item.workPath}, #{item.uploadTime}) + #{item.fileName}, #{item.fileSize}, #{item.workPath}, #{item.uploadTime},#{item.uploader}) @@ -25,4 +25,20 @@ AND b.node_id = #{nodeId} + +