From bc564dd4da0bf080c41fbbbbb8b051fa8c03ad7f Mon Sep 17 00:00:00 2001 From: lilin Date: Tue, 10 Jun 2025 16:42:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/component/TaskStatusHolder.java | 8 +- .../controller/TsFilesController.java | 2 - .../service/impl/TsFilesServiceImpl.java | 120 ++++++++---------- .../controller/NodesController.java | 72 ++++++----- 4 files changed, 94 insertions(+), 108 deletions(-) diff --git a/java/src/main/java/com/yfd/platform/component/TaskStatusHolder.java b/java/src/main/java/com/yfd/platform/component/TaskStatusHolder.java index a78bf19..86e37b4 100644 --- a/java/src/main/java/com/yfd/platform/component/TaskStatusHolder.java +++ b/java/src/main/java/com/yfd/platform/component/TaskStatusHolder.java @@ -15,10 +15,6 @@ public class TaskStatusHolder { return taskId + ":" + nodeId; } - public String generateKeybyId(List dataset) { - return dataset + ":" ; - } - // 生成专项扫描唯一Key:project_id public String specialGenerateKey(String id) { return id + "扫描:"; @@ -47,4 +43,8 @@ public class TaskStatusHolder { public String getStatus(String key) { return taskStatusMap.getOrDefault(key, "TASK_NOT_FOUND"); } + + public String getValue(String key) { + return taskStatusMap.get(key); + } } diff --git a/java/src/main/java/com/yfd/platform/modules/experimentalData/controller/TsFilesController.java b/java/src/main/java/com/yfd/platform/modules/experimentalData/controller/TsFilesController.java index 89af084..adc85cc 100644 --- a/java/src/main/java/com/yfd/platform/modules/experimentalData/controller/TsFilesController.java +++ b/java/src/main/java/com/yfd/platform/modules/experimentalData/controller/TsFilesController.java @@ -329,8 +329,6 @@ public class TsFilesController { dataset = Arrays.asList(splitIds); } Page tsfilesPage = tsFilesService.compareMd5(dataset, nodeId, taskId, page); - - //List dtos = tsFilesService.compareMd5(dataset, nodeId, taskId); return ResponseResult.successData(tsfilesPage); } catch (Exception e) { return ResponseResult.error("对比失败"); 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 86c95bc..2535ba3 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 @@ -388,27 +388,22 @@ public class TsFilesServiceImpl extends ServiceImpl impl ***********************************/ @Override public List getsListTsFiles(String id, String path, String nodeId, String taskId) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("is_file", "FOLDER"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TsFiles::getIsFile, "FOLDER"); if (StringUtils.isNotBlank(id)) { - queryWrapper.eq("parent_id", id); + queryWrapper.eq(TsFiles::getParentId, id); } if (StringUtils.isNotBlank(path)) { - queryWrapper.eq("work_path", path); + queryWrapper.eq(TsFiles::getWorkPath, path); } if (StringUtils.isNotBlank(nodeId)) { - queryWrapper.eq("node_id", nodeId); + queryWrapper.eq(TsFiles::getNodeId, nodeId); } if (StringUtils.isNotBlank(taskId)) { - queryWrapper.eq("task_id", taskId); + queryWrapper.eq(TsFiles::getTaskId, taskId); } - queryWrapper.isNotNull("work_path"); + queryWrapper.isNotNull(TsFiles::getWorkPath); List tsFiles = tsFilesMapper.selectList(queryWrapper); - -// for (TsFiles tsFiles1 : tsFiles) { -// String ProcessingPath = processingPath(tsFiles1.getWorkPath(), nodeId); -// tsFiles1.setWorkPath(ProcessingPath); -// } return tsFiles; } @@ -429,6 +424,11 @@ public class TsFilesServiceImpl extends ServiceImpl impl } LOGGER.info("已清理缓存:taskid={}, node={}, pages=1-5", tsFiles.getTaskId(), tsFiles.getNodeId()); + // 参数校验 + if (tsFiles.getFileName() == null || tsFiles.getFileSize() == null) { + return ResponseResult.error("文件名或文件大小不能为空!"); + } + Boolean value = true; //文件名称和大小 因为支持多个上传所以用,分隔 List names = Arrays.asList(tsFiles.getFileName().split(",")); @@ -444,13 +444,13 @@ public class TsFilesServiceImpl extends ServiceImpl impl return ResponseResult.error("文件名称和文件大小的列表长度不一致!"); } - List filesToSave = new ArrayList<>(); // 设置当前时间 LocalDateTime now = LocalDateTime.now(); // 转换为 Timestamp Timestamp currentTime = Timestamp.valueOf(now); tsFiles.setUploadTime(currentTime); + List filesToSave = new ArrayList<>(); for (int i = 0; i < names.size(); i++) { String name = names.get(i).trim(); String sizeStr = sizes.get(i).trim(); @@ -464,12 +464,12 @@ public class TsFilesServiceImpl extends ServiceImpl impl } //通过节点ID 任务ID 路径 上级ID 文件名称 查询是否重复 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("node_id", tsFiles.getNodeId()); - queryWrapper.eq("task_id", tsFiles.getTaskId()); - queryWrapper.eq("work_path", tsFiles.getWorkPath()); - queryWrapper.eq("parent_id", tsFiles.getParentId()); - queryWrapper.eq("file_name", name); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TsFiles::getNodeId, tsFiles.getNodeId()); + queryWrapper.eq(TsFiles::getTaskId, tsFiles.getTaskId()); + queryWrapper.eq(TsFiles::getWorkPath, tsFiles.getWorkPath()); + queryWrapper.eq(TsFiles::getParentId, tsFiles.getParentId()); + queryWrapper.eq(TsFiles::getFileName, name); int count = tsFilesMapper.selectCount(queryWrapper); // 大于0说明 区域名称重复 if (count > 0) { @@ -514,12 +514,7 @@ public class TsFilesServiceImpl extends ServiceImpl impl } } } - if (value) { - return ResponseResult.success("新增文件成功!"); - } else { - return ResponseResult.error("新增文件失败!"); - } - + return value ? ResponseResult.success("新增文件成功!") : ResponseResult.error("新增文件失败!"); } @@ -539,26 +534,25 @@ public class TsFilesServiceImpl extends ServiceImpl impl redisTemplate.delete(redisKey); } LOGGER.info("已清理缓存:taskid={}, node={}, pages=1-5", tsFiles.getTaskId(), tsFiles.getNodeId()); + //上传人是当前登录人 + UsernamePasswordAuthenticationToken authentication = + (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication(); + LoginUser loginuser = (LoginUser) authentication.getPrincipal(); + // 设置当前时间 + LocalDateTime now = LocalDateTime.now(); + // 转换为 Timestamp + Timestamp currentTime = Timestamp.valueOf(now); if (tsFiles.getIsFile().equals("FILE")) { StorageSourceConfig config = getStorageConfig("filePath", "local"); String basePath = config.getValue() + tsFiles.getWorkPath(); // 拼接完整的文件路径 Path filePath = Paths.get(basePath, tsFiles.getFileName() + ".txt"); - // 确保目录存在,如果不存在则创建目录 Files.createDirectories(filePath.getParent()); - // 使用 Files.write() 写入字符串内容 Files.write(filePath, "默认内容".getBytes(StandardCharsets.UTF_8)); tsFiles.setFileName(tsFiles.getFileName() + ".txt"); - UsernamePasswordAuthenticationToken authentication = - (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication(); - LoginUser loginuser = (LoginUser) authentication.getPrincipal(); - // 设置当前时间 - LocalDateTime now = LocalDateTime.now(); - // 转换为 Timestamp - Timestamp currentTime = Timestamp.valueOf(now); tsFiles.setUploadTime(currentTime); tsFiles.setUploader(loginuser.getUsername()); tsFiles.setFileSize("0.001"); @@ -576,23 +570,14 @@ public class TsFilesServiceImpl extends ServiceImpl impl if (containsInvalidCharacters(fileName)) { return ResponseResult.error("文件名包含非法字符(<>:\"/\\|?*)!"); } - - //上传人是当前登录人 - UsernamePasswordAuthenticationToken authentication = - (UsernamePasswordAuthenticationToken) SecurityContextHolder.getContext().getAuthentication(); - LoginUser loginuser = (LoginUser) authentication.getPrincipal(); - // 设置当前时间 - LocalDateTime now = LocalDateTime.now(); - // 转换为 Timestamp - Timestamp currentTime = Timestamp.valueOf(now); tsFiles.setUploadTime(currentTime); tsFiles.setUploader(loginuser.getUsername()); tsFiles.setFileSize("0"); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("node_id", tsFiles.getNodeId()); - queryWrapper.eq("task_id", tsFiles.getTaskId()); - queryWrapper.eq("parent_id", tsFiles.getParentId()); - queryWrapper.eq("file_name", tsFiles.getFileName()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TsFiles::getNodeId, tsFiles.getNodeId()); + queryWrapper.eq(TsFiles::getTaskId, tsFiles.getTaskId()); + queryWrapper.eq(TsFiles::getParentId, tsFiles.getParentId()); + queryWrapper.eq(TsFiles::getFileName, tsFiles.getFileName()); int count = tsFilesMapper.selectCount(queryWrapper); // 大于0说明 区域名称重复 if (count > 0) { @@ -604,11 +589,10 @@ public class TsFilesServiceImpl extends ServiceImpl impl newFolderRequest.setPath(tsFiles.getWorkPath()); newFolderRequest.setPassword(null); newFolderRequest.setName(tsFiles.getFileName()); - AbstractBaseFileService fileServicefolder = storageSourceContext.getByStorageKey(newFolderRequest.getStorageKey()); boolean flagfolder = fileServicefolder.newFolder(newFolderRequest.getPath(), newFolderRequest.getName()); + //创建成功以后新增表结构 if (flagfolder) { -// tsFiles.setWorkPath(File.separator + tsFiles.getNodeId() + tsFiles.getWorkPath()); int valueAdded = tsFilesMapper.insert(tsFiles); if (valueAdded == 1) { LOGGER.info("表结构和本地都创建文件夹成功"); @@ -664,12 +648,12 @@ public class TsFilesServiceImpl extends ServiceImpl impl //校验文件夹会不会重命名 if ("FOLDER".equals(tsFiles.getIsFile())) { //如果是文件夹 递归修改它下面的所有文件的路径 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("node_id", tsFiles.getNodeId()); - queryWrapper.eq("task_id", tsFiles.getTaskId()); - queryWrapper.eq("work_path", tsFiles.getWorkPath()); - queryWrapper.eq("parent_id", tsFiles.getParentId()); - queryWrapper.eq("file_name", tsFiles.getFileName()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TsFiles::getNodeId, tsFiles.getNodeId()); + queryWrapper.eq(TsFiles::getTaskId, tsFiles.getTaskId()); + queryWrapper.eq(TsFiles::getWorkPath, tsFiles.getWorkPath()); + queryWrapper.eq(TsFiles::getParentId, tsFiles.getParentId()); + queryWrapper.eq(TsFiles::getFileName, tsFiles.getFileName()); int count = tsFilesMapper.selectCount(queryWrapper); // 大于0说明 区域名称重复 if (count > 0) { @@ -754,12 +738,12 @@ public class TsFilesServiceImpl extends ServiceImpl impl } } else { //如果是文件 直接修改就可以 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("node_id", tsFiles.getNodeId()); - queryWrapper.eq("task_id", tsFiles.getTaskId()); - queryWrapper.eq("work_path", tsFiles.getWorkPath()); - queryWrapper.eq("parent_id", tsFiles.getParentId()); - queryWrapper.eq("file_name", tsFiles.getFileName()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TsFiles::getNodeId, tsFiles.getNodeId()); + queryWrapper.eq(TsFiles::getTaskId, tsFiles.getTaskId()); + queryWrapper.eq(TsFiles::getWorkPath, tsFiles.getWorkPath()); + queryWrapper.eq(TsFiles::getParentId, tsFiles.getParentId()); + queryWrapper.eq(TsFiles::getFileName, tsFiles.getFileName()); int count = tsFilesMapper.selectCount(queryWrapper); // 大于0说明 区域名称重复 if (count > 0) { @@ -1352,12 +1336,12 @@ public class TsFilesServiceImpl extends ServiceImpl impl tsFiles.setUploader(loginuser.getUsername()); // 通过 nodeid taskid 名称查询 如果存在就不 新增 - QueryWrapper queryWrapperTsFiles = new QueryWrapper<>(); - queryWrapperTsFiles.eq("node_id", filesList.get(0).getNodeId()); - queryWrapperTsFiles.eq("task_id", filesList.get(0).getTaskId()); - queryWrapperTsFiles.eq("work_path", workPath); - queryWrapperTsFiles.eq("file_name", zipFileName); - queryWrapperTsFiles.eq("parent_id", filesList.get(0).getParentId()); + LambdaQueryWrapper queryWrapperTsFiles = new LambdaQueryWrapper<>(); + queryWrapperTsFiles.eq(TsFiles::getNodeId, filesList.get(0).getNodeId()); + queryWrapperTsFiles.eq(TsFiles::getTaskId, filesList.get(0).getTaskId()); + queryWrapperTsFiles.eq(TsFiles::getWorkPath, workPath); + queryWrapperTsFiles.eq(TsFiles::getFileName, zipFileName); + queryWrapperTsFiles.eq(TsFiles::getParentId, filesList.get(0).getParentId()); TsFiles tsFilesdata = tsFilesMapper.selectOne(queryWrapperTsFiles); //covered 是否覆盖 0 覆盖更新updateTime时间 1提示文件存在 if ("0".equals(covered)) { diff --git a/java/src/main/java/com/yfd/platform/modules/specialDocument/controller/NodesController.java b/java/src/main/java/com/yfd/platform/modules/specialDocument/controller/NodesController.java index 2f06a44..aa58390 100644 --- a/java/src/main/java/com/yfd/platform/modules/specialDocument/controller/NodesController.java +++ b/java/src/main/java/com/yfd/platform/modules/specialDocument/controller/NodesController.java @@ -147,7 +147,7 @@ public class NodesController { // 原子性启动新任务 if (taskStatusHolder.startTaskIfAbsent(asyncKey)) { // 直接异步执行并推送结果 - nodesService.specialScanByIdAsync(id,loginuser); + nodesService.specialScanByIdAsync(id, loginuser); return ResponseResult.success("专项文档扫描任务开始处理!"); } else { return ResponseResult.success("专项文档扫描任务已由其他请求启动!"); @@ -172,45 +172,49 @@ public class NodesController { } JSONObject jsonObject1 = new JSONObject(); // 生成唯一Key - String asyncKey = taskStatusHolder.specialGenerateKey(id); + String scanKey = taskStatusHolder.specialGenerateKey(id); // 检查任务是否已存在 - String existingStatus = taskStatusHolder.getStatus(asyncKey); - if ("TASK_NOT_FOUND".equals(existingStatus)) { + String scanStatus = taskStatusHolder.getStatus(scanKey); - jsonObject1.putOpt("status", "1"); - jsonObject1.putOpt("name", "扫描"); - return ResponseResult.successData(jsonObject1); - } - if ("IN_PROGRESS".equals(existingStatus)) { - jsonObject1.putOpt("status", "0"); - jsonObject1.putOpt("name", "扫描"); - return ResponseResult.successData(jsonObject1); - } else if ("COMPLETED".equals(existingStatus)) { - jsonObject1.putOpt("status", "1"); - jsonObject1.putOpt("name", "扫描"); - return ResponseResult.successData(jsonObject1); + String scanValue = taskStatusHolder.getValue(scanKey); + if (!StrUtil.isEmpty(scanValue)) { + if ("IN_PROGRESS".equals(scanStatus)) { + jsonObject1.putOpt("scanstatus", "0"); + jsonObject1.putOpt("scanname", "扫描"); + } else { + jsonObject1.putOpt("scanstatus", "1"); + jsonObject1.putOpt("scanname", "扫描"); + } + }else { + jsonObject1.putOpt("scanstatus", "1"); + jsonObject1.putOpt("scanname", "扫描"); } // 上传生成唯一Key - String asyncKeySc = taskStatusHolder.documentUploadKey(id); + String uploadKey = taskStatusHolder.documentUploadKey(id); // 检查任务是否已存在 - String existingStatusSc = taskStatusHolder.getStatus(asyncKeySc); - if ("TASK_NOT_FOUND".equals(existingStatusSc)) { - - jsonObject1.putOpt("status", "1"); - jsonObject1.putOpt("name", "上传"); - return ResponseResult.successData(jsonObject1); + String uploadStatus = taskStatusHolder.getStatus(uploadKey); + String uploadValue = taskStatusHolder.getValue(uploadKey); + if (!StrUtil.isEmpty(uploadValue)) { + if ("IN_PROGRESS".equals(uploadStatus)) { + jsonObject1.putOpt("uploadstatus", "0"); + jsonObject1.putOpt("uploadname", "上传"); + } else { + jsonObject1.putOpt("uploadstatus", "1"); + jsonObject1.putOpt("uploadname", "上传"); + } + }else { + jsonObject1.putOpt("uploadstatus", "1"); + jsonObject1.putOpt("uploadname", "上传"); } - if ("IN_PROGRESS".equals(existingStatusSc)) { - jsonObject1.putOpt("status", "0"); - jsonObject1.putOpt("name", "上传"); - return ResponseResult.successData(jsonObject1); - } else if ("COMPLETED".equals(existingStatusSc)) { - jsonObject1.putOpt("status", "1"); - jsonObject1.putOpt("name", "上传"); - return ResponseResult.successData(jsonObject1); + //如果都为空 + if (StrUtil.isEmpty(scanValue)&& StrUtil.isEmpty(uploadValue)) { + jsonObject1.putOpt("scanstatus", "1"); + jsonObject1.putOpt("scanname", "扫描"); + jsonObject1.putOpt("uploadstatus", "1"); + jsonObject1.putOpt("uploadname", "上传"); } - return null; + return ResponseResult.successData(jsonObject1); } @@ -263,13 +267,13 @@ public class NodesController { @Log(module = "查询可不可以初始化专项文档扫描", value = "查询可不可以初始化专项文档扫描!") @PostMapping("/selectNodesByProjectId") @ApiOperation("查询可不可以初始化专项文档扫描") - public ResponseResult selectNodesByProjectId( String projectId) { + public ResponseResult selectNodesByProjectId(String projectId) { if (StrUtil.isBlank(projectId)) { return ResponseResult.error("参数为空"); } List nodesList = nodesService.list(new QueryWrapper().eq("project_id", projectId)); //如果节点不为空 就不能初始化了 - if (nodesList.size()>0) { + if (nodesList.size() > 0) { return ResponseResult.success("该项目已经初始化完成,局部更新请选择节点上传文件!"); } else { return ResponseResult.success("可以初始化!");