From bce49b7a0b6377c577b52a88e8ca53275af0cddf Mon Sep 17 00:00:00 2001 From: "Harry M. You" Date: Thu, 4 Dec 2025 11:36:28 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EB=AA=A9=EB=A1=9D=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20Depth=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapsheet/MapSheetMngApiController.java | 8 +++-- .../cd/kamcoback/mapsheet/dto/FileDto.java | 14 ++++++++- .../mapsheet/service/MapSheetMngService.java | 31 +++++++------------ 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java index aa56b911..ad0c3e5e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java @@ -5,6 +5,7 @@ import com.kamco.cd.kamcoback.code.service.CommonCodeService; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FilesDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FoldersDto; +import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDepthDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFoldersDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; @@ -48,7 +49,8 @@ public class MapSheetMngApiController { return ApiResponseDto.createOK(mapSheetMngService.getFolderAll(srchDto)); } - @Operation(summary = "파일목록 조회", description = "파일목록 조회") + + @Operation(summary = "지정폴더내 파일목록 조회", description = "지정폴더내 파일목록 조회") @ApiResponses( value = { @ApiResponse( @@ -67,7 +69,7 @@ public class MapSheetMngApiController { return ApiResponseDto.createOK(mapSheetMngService.getFilesAll(srchDto)); } - @Operation(summary = "파일목록 조회", description = "파일목록 조회") + @Operation(summary = "지정폴더(하위폴더포함) 파일목록 조회", description = "지정폴더(하위폴더포함) 파일목록 조회") @ApiResponses( value = { @ApiResponse( @@ -81,7 +83,7 @@ public class MapSheetMngApiController { @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PostMapping("/file-all-list") - public ApiResponseDto getAllFiles(@RequestBody SrchFilesDto srchDto) { + public ApiResponseDto getAllFiles(@RequestBody SrchFilesDepthDto srchDto) { return ApiResponseDto.createOK(mapSheetMngService.getFilesDepthAll(srchDto)); } diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/FileDto.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/FileDto.java index 90a3eced..bc663d42 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/FileDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/FileDto.java @@ -1,5 +1,6 @@ package com.kamco.cd.kamcoback.mapsheet.dto; +import com.fasterxml.jackson.annotation.JsonView; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import java.util.List; @@ -23,7 +24,7 @@ public class FileDto { @NoArgsConstructor @AllArgsConstructor public static class SrchFilesDto { - @Schema(description = "디렉토리경로", example = "/data") + @Schema(description = "디렉토리경로", example = "D:\\kamco\\2022\\캠코_2021_2022_34602060_D1") @NotNull private String dirPath; @@ -42,6 +43,17 @@ public class FileDto { @Schema(description = "파일종료위치", example = "100") @NotNull private Integer endPos; + + } + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class SrchFilesDepthDto extends SrchFilesDto { + @Schema(description = "최대폴더Depth", example = "5") + @NotNull + private Integer maxDepth; } @Schema(name = "FolderDto", description = "폴더 정보") diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java index 6dbf5cc8..2d90a674 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java @@ -7,6 +7,7 @@ import com.kamco.cd.kamcoback.mapsheet.dto.FileDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FilesDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FolderDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.FoldersDto; +import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDepthDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFoldersDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; @@ -181,19 +182,22 @@ public class MapSheetMngService { } } - FilesDto filesDto = new FilesDto(dirPath, fileTotCnt, fileTotSize, files); - return filesDto; + return new FilesDto(dirPath, fileTotCnt, fileTotSize, files); } - public FilesDto getFilesDepthAll(SrchFilesDto srchDto) { + public FilesDto getFilesDepthAll(SrchFilesDepthDto srchDto) { - int maxDepth = 20; Path startPath = Paths.get(srchDto.getDirPath()); + int maxDepth = srchDto.getMaxDepth(); String dirPath = srchDto.getDirPath(); String extension = srchDto.getExtension(); String sortType = srchDto.getSortType(); + int startPos = srchDto.getStartPos(); + int endPos = srchDto.getEndPos(); + int limit = endPos - startPos + 1; + Set targetExtensions = createExtensionSet(extension); List fileDtoList = new ArrayList<>(); @@ -202,6 +206,7 @@ public class MapSheetMngService { int fileTotCnt = 0; long fileTotSize = 0; + try (Stream stream = Files.walk(startPath, maxDepth)) { fileDtoList = @@ -214,6 +219,8 @@ public class MapSheetMngService { || extension.equals("*") || targetExtensions.contains(extractExtension(p))) .sorted(getFileComparator(sortType)) + .skip(startPos) + .limit(limit) .map( path -> { int depth = path.getNameCount(); @@ -236,23 +243,7 @@ public class MapSheetMngService { fileTotCnt = fileDtoList.size(); fileTotSize = fileDtoList.stream().mapToLong(FileDto.Basic::getFileSize).sum(); - /* - if( sort.equals("name")) { - fileDtoList.sort( - Comparator.comparing( - FileDto.Basic::getFileNm, String.CASE_INSENSITIVE_ORDER - ) - .reversed()); - } - else if( sort.equals("date")) { - fileDtoList.sort( - Comparator.comparing( - FileDto.Basic::getLastModified - ) - .reversed()); - } - */ } catch (IOException e) { System.err.println("파일 I/O 오류 발생: " + e.getMessage());