From f6d0034df27668f5cb81b868945a65f76cd35e50 Mon Sep 17 00:00:00 2001 From: Moon Date: Thu, 18 Dec 2025 09:31:20 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=EC=98=81=EC=83=81=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=ED=8C=8C=EC=9D=BC=EC=A0=9C=EA=B1=B0=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapsheet/MapSheetMngApiController.java | 14 ++- .../mapsheet/dto/MapSheetMngDto.java | 33 ++++--- .../mapsheet/service/MapSheetMngService.java | 36 ++++++-- .../postgres/core/MapSheetMngCoreService.java | 9 ++ .../mapsheet/MapSheetMngRepositoryCustom.java | 6 ++ .../mapsheet/MapSheetMngRepositoryImpl.java | 87 +++++++++++++++++++ 6 files changed, 157 insertions(+), 28 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 a0ff578a..08645dfa 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java @@ -139,10 +139,7 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.uploadProcess(hstUidList)); } - /** - * @param hstUidList - * @return - */ + @Operation(summary = "오류데이터 팝업 > 추론 제외", description = "오류데이터 팝업 > 추론 제외") @PutMapping("/except-inference") public ApiResponseDto updateExceptUseInference( @@ -162,4 +159,13 @@ public class MapSheetMngApiController { return ApiResponseDto.createOK( mapSheetMngService.uploadPair(tfwFile, tifFile, hstUid)); } + + + @GetMapping("/mng-file-list") + public ApiResponseDto> findHstUidToMapSheetFileList( + @RequestParam @Valid Long hstUid) { + return ApiResponseDto.ok(mapSheetMngService.findHstUidToMapSheetFileList(hstUid)); + } + + } diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java index 079ae777..889597c9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java @@ -164,6 +164,7 @@ public class MapSheetMngDto { public static class ErrorDataDto { // private Integer rowNum; private Long hstUid; + private String mapSheetNum; private String map50kName; private String map5kName; private String mapSrcName; @@ -242,25 +243,21 @@ public class MapSheetMngDto { private String message; } - - + @Schema(name = "MngFilesDto", description = "영상파일내역 검색 리턴") @Getter + @Setter + @NoArgsConstructor @AllArgsConstructor - public enum DataState implements EnumType { - NOTYET("대기중"), - PROCESSING("진행중"), - DONE("완료"); - - private final String desc; - - @Override - public String getId() { - return name(); - } - - @Override - public String getText() { - return desc; - } + public static class MngFilesDto { + private long fileUid; + private int mngYyyy; + private String mapSheetNum; + private String refMapSheetNum; + private String filePath; + private String fileName; + private String fileExt; + private Long hstUid; + private Long fileSize; } + } 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 b75b572a..b2475702 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 @@ -5,11 +5,15 @@ import static java.lang.String.CASE_INSENSITIVE_ORDER; import com.kamco.cd.kamcoback.common.exception.DuplicateFileException; import com.kamco.cd.kamcoback.common.exception.ValidationException; import com.kamco.cd.kamcoback.common.utils.FIleChecker; +import com.kamco.cd.kamcoback.config.FileConfig; 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.SrchFilesDepthDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; +import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.DmlReturn; +import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.ErrorDataDto; +import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngFilesDto; import com.kamco.cd.kamcoback.postgres.core.MapSheetMngCoreService; import jakarta.validation.Valid; import java.io.File; @@ -267,7 +271,7 @@ public class MapSheetMngService { } @Transactional - public MapSheetMngDto.DmlReturn uploadPair( + public DmlReturn uploadPair( MultipartFile tfwFile, MultipartFile tifFile, //String targetPath, @@ -275,9 +279,9 @@ public class MapSheetMngService { // 파일 유효성 검증 if (tfwFile == null || tfwFile.isEmpty() || tfwFile.getSize() == 0) { - return new MapSheetMngDto.DmlReturn("fail", "TFW 파일이(0Byte) 비어있습니다."); + return new DmlReturn("fail", "TFW SIZE 오류"); }else if (tifFile == null || tifFile.isEmpty() || tifFile.getSize() == 0) { - return new MapSheetMngDto.DmlReturn("fail", "TIF 파일이(0Byte) 비어있습니다."); + return new DmlReturn("fail", "TIF SIZE 오류"); } if( ! tfwFile.getOriginalFilename() @@ -285,19 +289,39 @@ public class MapSheetMngService { .toLowerCase() .equals("tfw") ) { - return new MapSheetMngDto.DmlReturn("fail", "파일명이 TFW형식이 아닙니다."); + return new DmlReturn("fail", "TFW TYPE ERROR"); }else if( ! tifFile.getOriginalFilename() .substring(tifFile.getOriginalFilename().lastIndexOf('.') + 1) .toLowerCase() .equals("tif") ) { - return new MapSheetMngDto.DmlReturn("fail", "파일명이 TIF형식이 아닙니다."); + return new DmlReturn("fail", "TIF TYPE ERROR"); } + //싱크파일목록 가저오기 + List mngFiles = mapSheetMngCoreService.findIdToMapSheetFileList(hstUid); + String uploadPath = ""; + for (MngFilesDto dto : mngFiles) { + uploadPath = dto.getFilePath(); + break; + } - return new MapSheetMngDto.DmlReturn("success", "파일 업로드 완료되었습니다."); + if( uploadPath.isEmpty() ) { + //ErrorDataDto errDto = mapSheetMngCoreService.findMapSheetError(hstUid); + //uploadPath = FileConfig.rootSyncDir+"\\"+errDto.getMapSheetNum(); + } + + //tfw가 있는 경우 + //tif가 있는 경우 + + return new DmlReturn("success", "파일 업로드 완료되었습니다."); } + + public List findHstUidToMapSheetFileList(Long hstUid) { + return mapSheetMngCoreService.findHstUidToMapSheetFileList(hstUid); + } + } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java index 74bfd2b3..d593a93e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java @@ -54,6 +54,9 @@ public class MapSheetMngCoreService { return mapSheetMngRepository.findMapSheetError(hstUid); } + public List findIdToMapSheetFileList(Long hstUid) { + return mapSheetMngRepository.findIdToMapSheetFileList(hstUid); + } public MapSheetMngDto.DmlReturn uploadProcess(@Valid List hstUidList) { @@ -203,4 +206,10 @@ public class MapSheetMngCoreService { return new MapSheetMngDto.DmlReturn("success", saved.getMngYyyy().toString()); } + + + public List findHstUidToMapSheetFileList(Long hstUid){ + return mapSheetMngRepository.findHstUidToMapSheetFileList(hstUid); + } + } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java index db933de3..bf3d6b4d 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java @@ -19,6 +19,10 @@ public interface MapSheetMngRepositoryCustom { int insertMapSheetOrgDataToMapSheetMngHst(int mngYyyy); + List findHstUidToMapSheetFileList(Long hstUid); + + MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy); + void deleteByMngYyyyMngAll(int mngYyyy); void deleteByMngYyyyMng(int mngYyyy); @@ -32,5 +36,7 @@ public interface MapSheetMngRepositoryCustom { MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid); + List findIdToMapSheetFileList(Long hstUid); + void updateHstFileSizes(Long hstUid, long tifSizeBytes, long tfwSizeBytes, long totalSizeBytes); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index 8edc9eb9..e64e4c87 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -380,6 +380,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport Projections.constructor( MapSheetMngDto.ErrorDataDto.class, mapSheetMngHstEntity.hstUid, + mapSheetMngHstEntity.mapSheetNum, Expressions.stringTemplate( "concat({0},substring({1}, 0, 6))", mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum).as("map50kName"), @@ -407,6 +408,92 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport return foundContent; } + @Override + public List findIdToMapSheetFileList(Long hstUid){ + + BooleanBuilder whereBuilder = new BooleanBuilder(); + whereBuilder.and( mapSheetMngFileEntity.hstUid.eq(hstUid) ); + + List foundContent = + queryFactory + .select( + Projections.constructor( + MapSheetMngDto.MngFilesDto.class, + mapSheetMngFileEntity.fileUid, + mapSheetMngFileEntity.mngYyyy, + mapSheetMngFileEntity.mapSheetNum, + mapSheetMngFileEntity.refMapSheetNum, + mapSheetMngFileEntity.filePath, + mapSheetMngFileEntity.fileName, + mapSheetMngFileEntity.fileExt, + mapSheetMngFileEntity.hstUid, + mapSheetMngFileEntity.fileSize + ) + ) + .from(mapSheetMngFileEntity) + .where(whereBuilder) + .fetch(); + + return foundContent; + } + + @Override + public List findHstUidToMapSheetFileList(Long hstUid) { + BooleanBuilder whereBuilder = new BooleanBuilder(); + whereBuilder.and( mapSheetMngFileEntity.hstUid.eq(hstUid) ); + + List foundContent = + queryFactory + .select( + Projections.constructor( + MapSheetMngDto.MngFilesDto.class, + mapSheetMngFileEntity.fileUid, + mapSheetMngFileEntity.mngYyyy, + mapSheetMngFileEntity.mapSheetNum, + mapSheetMngFileEntity.refMapSheetNum, + mapSheetMngFileEntity.filePath, + mapSheetMngFileEntity.fileName, + mapSheetMngFileEntity.fileExt, + mapSheetMngFileEntity.hstUid, + mapSheetMngFileEntity.fileSize + ) + ) + .from(mapSheetMngFileEntity) + .where(whereBuilder) + .orderBy(mapSheetMngFileEntity.fileExt.desc()) + .fetch(); + + return foundContent; + } + + @Override + public MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy){ + + BooleanBuilder whereBuilder = new BooleanBuilder(); + whereBuilder.and( mapSheetMngFileEntity.mngYyyy.eq(mngYyyy) ); + + MapSheetMngDto.MngFilesDto foundContent = + queryFactory + .select( + Projections.constructor( + MapSheetMngDto.MngFilesDto.class, + mapSheetMngFileEntity.fileUid, + mapSheetMngFileEntity.mngYyyy, + mapSheetMngFileEntity.mapSheetNum, + mapSheetMngFileEntity.refMapSheetNum, + mapSheetMngFileEntity.filePath, + mapSheetMngFileEntity.fileName, + mapSheetMngFileEntity.fileExt, + mapSheetMngFileEntity.hstUid, + mapSheetMngFileEntity.fileSize + ) + ) + .from(mapSheetMngFileEntity) + .where(whereBuilder) + .fetchOne(); + + return foundContent; + } public void MapSheetMngComplete(int mngYyyy) { long execCount = From 9d1d9aff69924dfaaa45ae961d0acf9306f7b421 Mon Sep 17 00:00:00 2001 From: Moon Date: Thu, 18 Dec 2025 10:42:50 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=EC=A4=91=EB=B3=B5=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kamcoback/common/utils/FIleChecker.java | 11 +++++++--- .../mapsheet/MapSheetMngApiController.java | 21 +++++++++++++++++++ .../MapSheetMngFileCheckerApiController.java | 6 ++++++ .../mapsheet/service/MapSheetMngService.java | 11 ++++++++++ .../postgres/core/MapSheetMngCoreService.java | 6 ++++++ .../mapsheet/MapSheetMngRepositoryCustom.java | 2 ++ .../mapsheet/MapSheetMngRepositoryImpl.java | 9 ++++++++ 7 files changed, 63 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java index 34f34152..9c150907 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java @@ -178,9 +178,14 @@ public class FIleChecker { if (isWindows) { // 윈도우용 - command.add("cmd.exe"); - command.add("/c"); - command.add(gdalinfoPath + " \"" + filePath + "\" | findstr /i Geo"); + command.add("cmd.exe"); // 윈도우 명령 프롬프트 실행 + command.add("/c"); // 명령어를 수행하고 종료한다는 옵션 + command.add("gdalinfo"); + command.add(filePath); + command.add("|"); + command.add("findstr"); + command.add("/i"); + command.add("Geo"); } else if (isMac || isUnix) { // 리눅스, 맥용 command.add("sh"); 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 36976c52..50fad7ed 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java @@ -161,5 +161,26 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.findHstUidToMapSheetFileList(hstUid)); } + @Operation(summary = "영상관리 > 파일삭제", description = "영상관리 > 파일삭제") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "201", + description = "파일삭제 처리 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = Long.class))), + @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) + @PutMapping("/del-mng-files") + public ApiResponseDto deleteByFileUidMngFile(@RequestParam @Valid List fileUids) { + return ApiResponseDto.ok(mapSheetMngService.deleteByFileUidMngFile(fileUids)); + } + + + } diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java index 239bf383..b57fa57e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java @@ -71,6 +71,7 @@ public class MapSheetMngFileCheckerApiController { return ApiResponseDto.createOK(mapSheetMngFileCheckerService.getFilesAll(srchDto)); } + /* @Operation(summary = "파일 업로드", description = "파일 업로드 및 TIF 검증") @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ApiResponseDto uploadFile( @@ -83,6 +84,9 @@ public class MapSheetMngFileCheckerApiController { mapSheetMngFileCheckerService.uploadFile(file, targetPath, overwrite, hstUid)); } + */ + + /* @Operation(summary = "파일 삭제", description = "중복 파일 등 파일 삭제") @PostMapping("/delete") public ApiResponseDto deleteFile(@RequestBody SrchFoldersDto dto) { @@ -97,6 +101,8 @@ public class MapSheetMngFileCheckerApiController { mapSheetMngFileCheckerService.deleteDuplicate(filePath, fileName)); } + */ + /* @Operation(summary = "지정폴더(하위폴더포함) 파일목록 조회", description = "지정폴더(하위폴더포함) 파일목록 조회") @ApiResponses( 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 b2475702..d9090def 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 @@ -324,4 +324,15 @@ public class MapSheetMngService { return mapSheetMngCoreService.findHstUidToMapSheetFileList(hstUid); } + + @Transactional + public MapSheetMngDto.DmlReturn deleteByFileUidMngFile(List fileUids) { + + for (Long uid : fileUids) { + MapSheetMngDto.DmlReturn dmlReturn = mapSheetMngCoreService.deleteByFileUidMngFile(uid); + } + + return new MapSheetMngDto.DmlReturn("success", fileUids.size() + "개 파일이 삭제되었습니다."); + } + } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java index d593a93e..986dfc94 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java @@ -212,4 +212,10 @@ public class MapSheetMngCoreService { return mapSheetMngRepository.findHstUidToMapSheetFileList(hstUid); } + public MapSheetMngDto.DmlReturn deleteByFileUidMngFile(Long fileUid) { + mapSheetMngRepository.deleteByFileUidMngFile(fileUid); + + return new MapSheetMngDto.DmlReturn("success", fileUid + " : 삭제되었습니다."); + } + } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java index bf3d6b4d..6626d575 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java @@ -21,6 +21,8 @@ public interface MapSheetMngRepositoryCustom { List findHstUidToMapSheetFileList(Long hstUid); + void deleteByFileUidMngFile(Long fileUid); + MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy); void deleteByMngYyyyMngAll(int mngYyyy); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index e64e4c87..0c5f5483 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -556,6 +556,15 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport .execute(); } + @Override + public void deleteByFileUidMngFile(Long fileUid){ + long deletedFileCount = + queryFactory + .delete(mapSheetMngFileEntity) + .where(mapSheetMngFileEntity.fileUid.eq(fileUid)) + .execute(); + } + @Override public int insertMapSheetOrgDataToMapSheetMngHst(int mngYyyy) { From 21f1e9fc3c0a9f4c991f5e114fed71189491af36 Mon Sep 17 00:00:00 2001 From: Moon Date: Thu, 18 Dec 2025 10:59:09 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=EC=98=81=EC=83=81=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=82=AD=EC=A0=9C,=20=EB=85=84=EB=8F=84?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kamcoback/common/utils/FIleChecker.java | 2 +- .../mapsheet/MapSheetMngApiController.java | 65 +++--- .../MapSheetMngFileCheckerApiController.java | 4 - .../mapsheet/dto/MapSheetMngDto.java | 10 +- .../mapsheet/service/MapSheetMngService.java | 85 ++++--- .../postgres/core/MapSheetMngCoreService.java | 13 +- .../mapsheet/MapSheetMngRepositoryCustom.java | 2 + .../mapsheet/MapSheetMngRepositoryImpl.java | 211 +++++++++--------- 8 files changed, 199 insertions(+), 193 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java index 9c150907..860a3a4e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java @@ -179,7 +179,7 @@ public class FIleChecker { if (isWindows) { // 윈도우용 command.add("cmd.exe"); // 윈도우 명령 프롬프트 실행 - command.add("/c"); // 명령어를 수행하고 종료한다는 옵션 + command.add("/c"); // 명령어를 수행하고 종료한다는 옵션 command.add("gdalinfo"); command.add(filePath); command.add("|"); 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 50fad7ed..69ff60e2 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java @@ -28,7 +28,7 @@ public class MapSheetMngApiController { private final CommonCodeService commonCodeService; private final MapSheetMngService mapSheetMngService; - @Operation(summary = "영상데이터관리목록 조회", description = "영상데이터관리목록 조회") + @Operation(summary = "영상 데이터 관리 목록 조회", description = "영상 데이터 관리 목록 조회") @ApiResponses( value = { @ApiResponse( @@ -47,7 +47,7 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.findMapSheetMngList()); } - @Operation(summary = "영상데이터관리 상세", description = "영상데이터관리 상세") + @Operation(summary = "영상 데이터 관리 상세", description = "영상 데이터 관리 상세") @ApiResponses( value = { @ApiResponse( @@ -105,12 +105,26 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.mngComplete(mngYyyy)); } - /** - * 오류데이터 목록 조회 - * - * @param searchReq - * @return - */ + @Operation(summary = "영상 데이터 관리 년도 목록", description = "영상 데이터 관리 년도 목록") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "조회 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = CommonCodeDto.Basic.class))), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) + @PostMapping("/mng-year-list") + public ApiResponseDto> findMapSheetMngYyyyList() { + + return ApiResponseDto.ok(mapSheetMngService.findMapSheetMngYyyyList()); + } + + @PostMapping("/error-list") public ApiResponseDto> findMapSheetErrorList( @RequestBody @Valid MapSheetMngDto.ErrorSearchReq searchReq) { @@ -137,7 +151,6 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.uploadProcess(hstUidList)); } - @Operation(summary = "오류데이터 팝업 > 추론 제외", description = "오류데이터 팝업 > 추론 제외") @PutMapping("/except-inference") public ApiResponseDto updateExceptUseInference( @@ -154,33 +167,29 @@ public class MapSheetMngApiController { return ApiResponseDto.createOK(mapSheetMngService.uploadPair(tfwFile, tifFile, hstUid)); } - @GetMapping("/mng-file-list") public ApiResponseDto> findHstUidToMapSheetFileList( - @RequestParam @Valid Long hstUid) { + @RequestParam @Valid Long hstUid) { return ApiResponseDto.ok(mapSheetMngService.findHstUidToMapSheetFileList(hstUid)); } @Operation(summary = "영상관리 > 파일삭제", description = "영상관리 > 파일삭제") @ApiResponses( - value = { - @ApiResponse( - responseCode = "201", - description = "파일삭제 처리 성공", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = Long.class))), - @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), - @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), - @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) - }) + value = { + @ApiResponse( + responseCode = "201", + description = "파일삭제 처리 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = Long.class))), + @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) @PutMapping("/del-mng-files") - public ApiResponseDto deleteByFileUidMngFile(@RequestParam @Valid List fileUids) { + public ApiResponseDto deleteByFileUidMngFile( + @RequestParam @Valid List fileUids) { return ApiResponseDto.ok(mapSheetMngService.deleteByFileUidMngFile(fileUids)); } - - - - } diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java index b57fa57e..f0a859bf 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java @@ -15,14 +15,10 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; @Tag(name = "영상 관리", description = "영상 관리 API") @RestController diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java index 889597c9..abf3b3a2 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java @@ -4,7 +4,6 @@ import com.kamco.cd.kamcoback.common.enums.MngStateType; import com.kamco.cd.kamcoback.common.enums.SyncStateType; import com.kamco.cd.kamcoback.common.utils.Enums; import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm; -import com.kamco.cd.kamcoback.config.enums.EnumType; import io.swagger.v3.oas.annotations.media.Schema; import java.time.ZonedDateTime; import lombok.AllArgsConstructor; @@ -107,10 +106,9 @@ public class MapSheetMngDto { return this.syncNotPaireExecCnt + this.syncDuplicateExecCnt + this.syncFaultExecCnt; } - public String getMngStateName() { String enumId = this.mngState; - if( enumId == null || enumId.isEmpty())enumId = "NOTYET"; + if (enumId == null || enumId.isEmpty()) enumId = "NOTYET"; MngStateType type = Enums.fromId(MngStateType.class, enumId); return type.getText(); @@ -181,8 +179,7 @@ public class MapSheetMngDto { private String errorCheckTfwFileName; private String errorCheckTifFileName; - //private List fileArray; - + // private List fileArray; public ErrorDataDto( Long hstUid, @@ -214,7 +211,7 @@ public class MapSheetMngDto { } private String getSyncStateName(String enumId) { - if( enumId == null || enumId.isEmpty())enumId = "NOTYET"; + if (enumId == null || enumId.isEmpty()) enumId = "NOTYET"; SyncStateType type = Enums.fromId(SyncStateType.class, enumId); return type.getText(); @@ -259,5 +256,4 @@ public class MapSheetMngDto { private Long hstUid; private Long fileSize; } - } 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 d9090def..0147608a 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 @@ -2,17 +2,12 @@ package com.kamco.cd.kamcoback.mapsheet.service; import static java.lang.String.CASE_INSENSITIVE_ORDER; -import com.kamco.cd.kamcoback.common.exception.DuplicateFileException; -import com.kamco.cd.kamcoback.common.exception.ValidationException; -import com.kamco.cd.kamcoback.common.utils.FIleChecker; -import com.kamco.cd.kamcoback.config.FileConfig; 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.SrchFilesDepthDto; import com.kamco.cd.kamcoback.mapsheet.dto.FileDto.SrchFilesDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.DmlReturn; -import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.ErrorDataDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngFilesDto; import com.kamco.cd.kamcoback.postgres.core.MapSheetMngCoreService; import jakarta.validation.Valid; @@ -224,11 +219,16 @@ public class MapSheetMngService { return mapSheetMngCoreService.findMapSheetMngList(); } + public List findMapSheetMngYyyyList() { + return mapSheetMngCoreService.findMapSheetMngYyyyList(); + } + + + public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { return mapSheetMngCoreService.findMapSheetMng(mngYyyy); } - @Transactional public MapSheetMngDto.DmlReturn mngComplete(int mngYyyy) { @@ -272,59 +272,55 @@ public class MapSheetMngService { @Transactional public DmlReturn uploadPair( - MultipartFile tfwFile, - MultipartFile tifFile, - //String targetPath, - Long hstUid) { + MultipartFile tfwFile, + MultipartFile tifFile, + // String targetPath, + Long hstUid) { - // 파일 유효성 검증 - if (tfwFile == null || tfwFile.isEmpty() || tfwFile.getSize() == 0) { - return new DmlReturn("fail", "TFW SIZE 오류"); - }else if (tifFile == null || tifFile.isEmpty() || tifFile.getSize() == 0) { - return new DmlReturn("fail", "TIF SIZE 오류"); - } + // 파일 유효성 검증 + if (tfwFile == null || tfwFile.isEmpty() || tfwFile.getSize() == 0) { + return new DmlReturn("fail", "TFW SIZE 오류"); + } else if (tifFile == null || tifFile.isEmpty() || tifFile.getSize() == 0) { + return new DmlReturn("fail", "TIF SIZE 오류"); + } - if( ! tfwFile.getOriginalFilename() - .substring(tfwFile.getOriginalFilename().lastIndexOf('.') + 1) - .toLowerCase() - .equals("tfw") ) - { - return new DmlReturn("fail", "TFW TYPE ERROR"); - }else if( ! tifFile.getOriginalFilename() + if (!tfwFile + .getOriginalFilename() + .substring(tfwFile.getOriginalFilename().lastIndexOf('.') + 1) + .toLowerCase() + .equals("tfw")) { + return new DmlReturn("fail", "TFW TYPE ERROR"); + } else if (!tifFile + .getOriginalFilename() .substring(tifFile.getOriginalFilename().lastIndexOf('.') + 1) .toLowerCase() - .equals("tif") ) - { - return new DmlReturn("fail", "TIF TYPE ERROR"); - } + .equals("tif")) { + return new DmlReturn("fail", "TIF TYPE ERROR"); + } - //싱크파일목록 가저오기 - List mngFiles = mapSheetMngCoreService.findIdToMapSheetFileList(hstUid); - String uploadPath = ""; - for (MngFilesDto dto : mngFiles) { - uploadPath = dto.getFilePath(); - break; - } + // 싱크파일목록 가저오기 + List mngFiles = mapSheetMngCoreService.findIdToMapSheetFileList(hstUid); + String uploadPath = ""; + for (MngFilesDto dto : mngFiles) { + uploadPath = dto.getFilePath(); + break; + } - if( uploadPath.isEmpty() ) { - //ErrorDataDto errDto = mapSheetMngCoreService.findMapSheetError(hstUid); - //uploadPath = FileConfig.rootSyncDir+"\\"+errDto.getMapSheetNum(); - } + if (uploadPath.isEmpty()) { + // ErrorDataDto errDto = mapSheetMngCoreService.findMapSheetError(hstUid); + // uploadPath = FileConfig.rootSyncDir+"\\"+errDto.getMapSheetNum(); + } - //tfw가 있는 경우 - //tif가 있는 경우 + // tfw가 있는 경우 + // tif가 있는 경우 return new DmlReturn("success", "파일 업로드 완료되었습니다."); - } - - public List findHstUidToMapSheetFileList(Long hstUid) { return mapSheetMngCoreService.findHstUidToMapSheetFileList(hstUid); } - @Transactional public MapSheetMngDto.DmlReturn deleteByFileUidMngFile(List fileUids) { @@ -334,5 +330,4 @@ public class MapSheetMngService { return new MapSheetMngDto.DmlReturn("success", fileUids.size() + "개 파일이 삭제되었습니다."); } - } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java index 986dfc94..adb05a62 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java @@ -36,6 +36,11 @@ public class MapSheetMngCoreService { return mapSheetMngRepository.findMapSheetMngList(); } + public List findMapSheetMngYyyyList() { + return mapSheetMngRepository.findMapSheetMngYyyyList(); + } + + public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { return mapSheetMngRepository.findMapSheetMng(mngYyyy); } @@ -44,13 +49,12 @@ public class MapSheetMngCoreService { mapSheetMngRepository.MapSheetMngComplete(mngYyyy); } - public Page findMapSheetErrorList( MapSheetMngDto.@Valid ErrorSearchReq searchReq) { return mapSheetMngRepository.findMapSheetErrorList(searchReq); } - public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid){ + public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid) { return mapSheetMngRepository.findMapSheetError(hstUid); } @@ -58,7 +62,6 @@ public class MapSheetMngCoreService { return mapSheetMngRepository.findIdToMapSheetFileList(hstUid); } - public MapSheetMngDto.DmlReturn uploadProcess(@Valid List hstUidList) { int count = 0; if (!Objects.isNull(hstUidList) && !hstUidList.isEmpty()) { @@ -207,8 +210,7 @@ public class MapSheetMngCoreService { return new MapSheetMngDto.DmlReturn("success", saved.getMngYyyy().toString()); } - - public List findHstUidToMapSheetFileList(Long hstUid){ + public List findHstUidToMapSheetFileList(Long hstUid) { return mapSheetMngRepository.findHstUidToMapSheetFileList(hstUid); } @@ -217,5 +219,4 @@ public class MapSheetMngCoreService { return new MapSheetMngDto.DmlReturn("success", fileUid + " : 삭제되었습니다."); } - } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java index 6626d575..3683f365 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryCustom.java @@ -11,6 +11,8 @@ public interface MapSheetMngRepositoryCustom { List findMapSheetMngList(); + List findMapSheetMngYyyyList(); + MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy); void MapSheetMngComplete(int mngYyyy); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index 0c5f5483..044bb4a9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -167,6 +167,18 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport return foundContent; } + public List findMapSheetMngYyyyList(){ + List foundContent = + queryFactory + .select(mapSheetMngEntity.mngYyyy) + .from(mapSheetMngEntity) + .where(mapSheetMngEntity.mngState.ne("COMPLETE")) + .orderBy(mapSheetMngEntity.mngYyyy.desc()) + .fetch(); + + return foundContent; + } + public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { BooleanBuilder whereBuilder = new BooleanBuilder(); @@ -367,72 +379,71 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport return new PageImpl<>(foundContent, pageable, countQuery); } - @Override - public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid){ + public MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid) { BooleanBuilder whereBuilder = new BooleanBuilder(); - whereBuilder.and( mapSheetMngHstEntity.hstUid.eq(hstUid)); + whereBuilder.and(mapSheetMngHstEntity.hstUid.eq(hstUid)); MapSheetMngDto.ErrorDataDto foundContent = - queryFactory - .select( - Projections.constructor( - MapSheetMngDto.ErrorDataDto.class, - mapSheetMngHstEntity.hstUid, - mapSheetMngHstEntity.mapSheetNum, - Expressions.stringTemplate( - "concat({0},substring({1}, 0, 6))", - mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum).as("map50kName"), - Expressions.stringTemplate( - "concat({0},substring({1}, 6, 8))", - mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum).as("map5kName"), - Expressions.stringTemplate( - "concat({0},substring({1}, 6, 8))", - mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum).as("mapSrcName"), - mapInkx5kEntity.fid, - mapSheetMngHstEntity.createdDate, - mapSheetMngHstEntity.syncState, - mapSheetMngHstEntity.syncTfwFileName, - mapSheetMngHstEntity.syncTifFileName, - mapSheetMngHstEntity.syncCheckState, - mapSheetMngHstEntity.syncCheckTfwFileName, - mapSheetMngHstEntity.syncCheckTifFileName - ) - ) - .from(mapSheetMngHstEntity) - .innerJoin(mapInkx5kEntity).on(mapSheetMngHstEntity.mapSheetNum.eq(mapInkx5kEntity.mapidcdNo)) - .where(whereBuilder) - .fetchOne(); + queryFactory + .select( + Projections.constructor( + MapSheetMngDto.ErrorDataDto.class, + mapSheetMngHstEntity.hstUid, + mapSheetMngHstEntity.mapSheetNum, + Expressions.stringTemplate( + "concat({0},substring({1}, 0, 6))", + mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum) + .as("map50kName"), + Expressions.stringTemplate( + "concat({0},substring({1}, 6, 8))", + mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum) + .as("map5kName"), + Expressions.stringTemplate( + "concat({0},substring({1}, 6, 8))", + mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum) + .as("mapSrcName"), + mapInkx5kEntity.fid, + mapSheetMngHstEntity.createdDate, + mapSheetMngHstEntity.syncState, + mapSheetMngHstEntity.syncTfwFileName, + mapSheetMngHstEntity.syncTifFileName, + mapSheetMngHstEntity.syncCheckState, + mapSheetMngHstEntity.syncCheckTfwFileName, + mapSheetMngHstEntity.syncCheckTifFileName)) + .from(mapSheetMngHstEntity) + .innerJoin(mapInkx5kEntity) + .on(mapSheetMngHstEntity.mapSheetNum.eq(mapInkx5kEntity.mapidcdNo)) + .where(whereBuilder) + .fetchOne(); return foundContent; } @Override - public List findIdToMapSheetFileList(Long hstUid){ + public List findIdToMapSheetFileList(Long hstUid) { BooleanBuilder whereBuilder = new BooleanBuilder(); - whereBuilder.and( mapSheetMngFileEntity.hstUid.eq(hstUid) ); + whereBuilder.and(mapSheetMngFileEntity.hstUid.eq(hstUid)); List foundContent = - queryFactory - .select( - Projections.constructor( - MapSheetMngDto.MngFilesDto.class, - mapSheetMngFileEntity.fileUid, - mapSheetMngFileEntity.mngYyyy, - mapSheetMngFileEntity.mapSheetNum, - mapSheetMngFileEntity.refMapSheetNum, - mapSheetMngFileEntity.filePath, - mapSheetMngFileEntity.fileName, - mapSheetMngFileEntity.fileExt, - mapSheetMngFileEntity.hstUid, - mapSheetMngFileEntity.fileSize - ) - ) - .from(mapSheetMngFileEntity) - .where(whereBuilder) - .fetch(); + queryFactory + .select( + Projections.constructor( + MapSheetMngDto.MngFilesDto.class, + mapSheetMngFileEntity.fileUid, + mapSheetMngFileEntity.mngYyyy, + mapSheetMngFileEntity.mapSheetNum, + mapSheetMngFileEntity.refMapSheetNum, + mapSheetMngFileEntity.filePath, + mapSheetMngFileEntity.fileName, + mapSheetMngFileEntity.fileExt, + mapSheetMngFileEntity.hstUid, + mapSheetMngFileEntity.fileSize)) + .from(mapSheetMngFileEntity) + .where(whereBuilder) + .fetch(); return foundContent; } @@ -440,68 +451,64 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport @Override public List findHstUidToMapSheetFileList(Long hstUid) { BooleanBuilder whereBuilder = new BooleanBuilder(); - whereBuilder.and( mapSheetMngFileEntity.hstUid.eq(hstUid) ); + whereBuilder.and(mapSheetMngFileEntity.hstUid.eq(hstUid)); List foundContent = - queryFactory - .select( - Projections.constructor( - MapSheetMngDto.MngFilesDto.class, - mapSheetMngFileEntity.fileUid, - mapSheetMngFileEntity.mngYyyy, - mapSheetMngFileEntity.mapSheetNum, - mapSheetMngFileEntity.refMapSheetNum, - mapSheetMngFileEntity.filePath, - mapSheetMngFileEntity.fileName, - mapSheetMngFileEntity.fileExt, - mapSheetMngFileEntity.hstUid, - mapSheetMngFileEntity.fileSize - ) - ) - .from(mapSheetMngFileEntity) - .where(whereBuilder) - .orderBy(mapSheetMngFileEntity.fileExt.desc()) - .fetch(); + queryFactory + .select( + Projections.constructor( + MapSheetMngDto.MngFilesDto.class, + mapSheetMngFileEntity.fileUid, + mapSheetMngFileEntity.mngYyyy, + mapSheetMngFileEntity.mapSheetNum, + mapSheetMngFileEntity.refMapSheetNum, + mapSheetMngFileEntity.filePath, + mapSheetMngFileEntity.fileName, + mapSheetMngFileEntity.fileExt, + mapSheetMngFileEntity.hstUid, + mapSheetMngFileEntity.fileSize)) + .from(mapSheetMngFileEntity) + .where(whereBuilder) + .orderBy(mapSheetMngFileEntity.fileExt.desc()) + .fetch(); return foundContent; } @Override - public MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy){ + public MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy) { BooleanBuilder whereBuilder = new BooleanBuilder(); - whereBuilder.and( mapSheetMngFileEntity.mngYyyy.eq(mngYyyy) ); + whereBuilder.and(mapSheetMngFileEntity.mngYyyy.eq(mngYyyy)); MapSheetMngDto.MngFilesDto foundContent = - queryFactory - .select( - Projections.constructor( - MapSheetMngDto.MngFilesDto.class, - mapSheetMngFileEntity.fileUid, - mapSheetMngFileEntity.mngYyyy, - mapSheetMngFileEntity.mapSheetNum, - mapSheetMngFileEntity.refMapSheetNum, - mapSheetMngFileEntity.filePath, - mapSheetMngFileEntity.fileName, - mapSheetMngFileEntity.fileExt, - mapSheetMngFileEntity.hstUid, - mapSheetMngFileEntity.fileSize - ) - ) - .from(mapSheetMngFileEntity) - .where(whereBuilder) - .fetchOne(); + queryFactory + .select( + Projections.constructor( + MapSheetMngDto.MngFilesDto.class, + mapSheetMngFileEntity.fileUid, + mapSheetMngFileEntity.mngYyyy, + mapSheetMngFileEntity.mapSheetNum, + mapSheetMngFileEntity.refMapSheetNum, + mapSheetMngFileEntity.filePath, + mapSheetMngFileEntity.fileName, + mapSheetMngFileEntity.fileExt, + mapSheetMngFileEntity.hstUid, + mapSheetMngFileEntity.fileSize)) + .from(mapSheetMngFileEntity) + .where(whereBuilder) + .fetchOne(); return foundContent; } public void MapSheetMngComplete(int mngYyyy) { long execCount = - queryFactory - .update(mapSheetMngEntity) - .set(mapSheetMngEntity.mngState, "COMPLETE") - .where(mapSheetMngEntity.mngYyyy.eq(mngYyyy)) - .execute(); + queryFactory + .update(mapSheetMngEntity) + .set(mapSheetMngEntity.mngState, "COMPLETE") + .where(mapSheetMngEntity.mngYyyy.eq(mngYyyy)) + .execute(); } @Override @@ -557,12 +564,12 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport } @Override - public void deleteByFileUidMngFile(Long fileUid){ + public void deleteByFileUidMngFile(Long fileUid) { long deletedFileCount = - queryFactory - .delete(mapSheetMngFileEntity) - .where(mapSheetMngFileEntity.fileUid.eq(fileUid)) - .execute(); + queryFactory + .delete(mapSheetMngFileEntity) + .where(mapSheetMngFileEntity.fileUid.eq(fileUid)) + .execute(); } @Override From dd02e5d8866d097c4ac202d0c6c028db7fdd0efd Mon Sep 17 00:00:00 2001 From: Moon Date: Thu, 18 Dec 2025 11:10:28 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=EB=85=84=EB=8F=84=EB=AA=A9=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapsheet/MapSheetMngApiController.java | 30 ++++++++++++++++++- .../mapsheet/MapSheetMngRepositoryImpl.java | 2 +- 2 files changed, 30 insertions(+), 2 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 69ff60e2..c72d2c8b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java @@ -124,13 +124,26 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.findMapSheetMngYyyyList()); } - + @Operation(summary = "영상 데이터 관리 오류 목록", description = "영상 데이터 관리 오류 목록") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "조회 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = CommonCodeDto.Basic.class))), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) @PostMapping("/error-list") public ApiResponseDto> findMapSheetErrorList( @RequestBody @Valid MapSheetMngDto.ErrorSearchReq searchReq) { return ApiResponseDto.ok(mapSheetMngService.findMapSheetErrorList(searchReq)); } + @Operation(summary = "오류데이터 팝업 > 업로드 처리", description = "오류데이터 팝업 > 업로드 처리") @ApiResponses( value = { @@ -151,6 +164,7 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.uploadProcess(hstUidList)); } + @Operation(summary = "오류데이터 팝업 > 추론 제외", description = "오류데이터 팝업 > 추론 제외") @PutMapping("/except-inference") public ApiResponseDto updateExceptUseInference( @@ -167,6 +181,20 @@ public class MapSheetMngApiController { return ApiResponseDto.createOK(mapSheetMngService.uploadPair(tfwFile, tifFile, hstUid)); } + @Operation(summary = "영상관리 > 파일조회", description = "영상관리 > 파일조회") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "201", + description = "파일삭제 처리 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = Long.class))), + @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) @GetMapping("/mng-file-list") public ApiResponseDto> findHstUidToMapSheetFileList( @RequestParam @Valid Long hstUid) { diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index 044bb4a9..a39b9748 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -469,7 +469,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport mapSheetMngFileEntity.fileSize)) .from(mapSheetMngFileEntity) .where(whereBuilder) - .orderBy(mapSheetMngFileEntity.fileExt.desc()) + .orderBy(mapSheetMngFileEntity.filePath.asc()) .fetch(); return foundContent; From 121b5db31698fc5bffd28179aa11f5a256b6b5f2 Mon Sep 17 00:00:00 2001 From: teddy Date: Thu, 18 Dec 2025 11:12:44 +0900 Subject: [PATCH 5/5] =?UTF-8?q?spotlessApply=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + .../code/CommonCodeApiController.java | 19 +++++ .../cd/kamcoback/code/dto/CommonCodeDto.java | 10 +++ .../code/service/CommonCodeService.java | 7 ++ .../kamcoback/common/enums/MngStateType.java | 4 +- .../cd/kamcoback/common/enums/RoleType.java | 4 +- .../cd/kamcoback/common/enums/StatusType.java | 4 +- .../kamcoback/common/enums/SyncStateType.java | 4 +- .../cd/kamcoback/common/utils/Enums.java | 19 ----- .../kamcoback/common/utils/enums/CodeDto.java | 20 ++++++ .../common/utils/enums/CodeExpose.java | 10 +++ .../utils}/enums/EnumType.java | 2 +- .../utils/{ => enums}/EnumValidator.java | 2 +- .../kamcoback/common/utils/enums/Enums.java | 51 ++++++++++++++ .../common/utils/interfaces/EnumValid.java | 2 +- .../kamcoback/config/api/ApiResponseDto.java | 2 +- .../cd/kamcoback/log/dto/ErrorLogDto.java | 2 +- .../cd/kamcoback/log/dto/EventStatus.java | 2 +- .../kamco/cd/kamcoback/log/dto/EventType.java | 2 +- .../mapsheet/MapSheetMngApiController.java | 70 +++++++++---------- .../mapsheet/dto/MapSheetMngDto.java | 17 ++++- .../mapsheet/service/MapSheetMngService.java | 2 - .../cd/kamcoback/members/dto/MembersDto.java | 2 +- .../postgres/core/MapSheetMngCoreService.java | 1 - .../mapsheet/MapSheetMngRepositoryImpl.java | 14 ++-- .../kamco/cd/kamcoback/zoo/dto/AnimalDto.java | 2 +- src/main/resources/application-local.yml | 4 +- 27 files changed, 196 insertions(+), 83 deletions(-) delete mode 100644 src/main/java/com/kamco/cd/kamcoback/common/utils/Enums.java create mode 100644 src/main/java/com/kamco/cd/kamcoback/common/utils/enums/CodeDto.java create mode 100644 src/main/java/com/kamco/cd/kamcoback/common/utils/enums/CodeExpose.java rename src/main/java/com/kamco/cd/kamcoback/{config => common/utils}/enums/EnumType.java (58%) rename src/main/java/com/kamco/cd/kamcoback/common/utils/{ => enums}/EnumValidator.java (93%) create mode 100644 src/main/java/com/kamco/cd/kamcoback/common/utils/enums/Enums.java diff --git a/build.gradle b/build.gradle index 836a952d..223d47bf 100644 --- a/build.gradle +++ b/build.gradle @@ -80,6 +80,7 @@ dependencies { runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.5' // JSON (Jackson) implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' + implementation 'org.reflections:reflections:0.10.2' } configurations.configureEach { diff --git a/src/main/java/com/kamco/cd/kamcoback/code/CommonCodeApiController.java b/src/main/java/com/kamco/cd/kamcoback/code/CommonCodeApiController.java index 44d43fd7..e8b47c06 100644 --- a/src/main/java/com/kamco/cd/kamcoback/code/CommonCodeApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/code/CommonCodeApiController.java @@ -2,6 +2,7 @@ package com.kamco.cd.kamcoback.code; import com.kamco.cd.kamcoback.code.config.CommonCodeCacheManager; import com.kamco.cd.kamcoback.code.dto.CommonCodeDto; +import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.CodeDto; import com.kamco.cd.kamcoback.code.service.CommonCodeService; import com.kamco.cd.kamcoback.common.utils.CommonCodeUtil; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; @@ -13,6 +14,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import java.util.List; +import java.util.Map; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -288,4 +290,21 @@ public class CommonCodeApiController { int count = commonCodeCacheManager.getCachedCommonCodeCount(); return ApiResponseDto.ok(count); } + + @Operation(summary = "코드 조회", description = "enum 코드 조회") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "코드 조회 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = CodeDto.class))), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) + @GetMapping("/enums") + public ApiResponseDto>> getCode() { + return ApiResponseDto.ok(commonCodeService.getAllCodes()); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/code/dto/CommonCodeDto.java b/src/main/java/com/kamco/cd/kamcoback/code/dto/CommonCodeDto.java index 82cf4312..baa9fdc5 100644 --- a/src/main/java/com/kamco/cd/kamcoback/code/dto/CommonCodeDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/code/dto/CommonCodeDto.java @@ -50,6 +50,7 @@ public class CommonCodeDto { @NoArgsConstructor @AllArgsConstructor public static class ModifyReq { + @NotEmpty private String name; private String description; private boolean used; @@ -70,6 +71,7 @@ public class CommonCodeDto { @NoArgsConstructor @AllArgsConstructor public static class OrderReq { + @NotNull private Long id; @NotNull private Integer order; } @@ -176,4 +178,12 @@ public class CommonCodeDto { this.color = color; } } + + @Getter + @AllArgsConstructor + public static class CodeDto { + + private String code; + private String name; + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/code/service/CommonCodeService.java b/src/main/java/com/kamco/cd/kamcoback/code/service/CommonCodeService.java index ea562ef8..c4c48c1d 100644 --- a/src/main/java/com/kamco/cd/kamcoback/code/service/CommonCodeService.java +++ b/src/main/java/com/kamco/cd/kamcoback/code/service/CommonCodeService.java @@ -2,11 +2,14 @@ package com.kamco.cd.kamcoback.code.service; import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.AddReq; import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.Basic; +import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.CodeDto; import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.ModifyReq; import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.OrderReq; +import com.kamco.cd.kamcoback.common.utils.enums.Enums; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.postgres.core.CommonCodeCoreService; import java.util.List; +import java.util.Map; import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.CacheEvict; @@ -118,4 +121,8 @@ public class CommonCodeService { public Optional getCode(String parentCodeCd, String childCodeCd) { return commonCodeCoreService.getCode(parentCodeCd, childCodeCd); } + + public Map> getAllCodes() { + return Enums.getAllCodes(); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/common/enums/MngStateType.java b/src/main/java/com/kamco/cd/kamcoback/common/enums/MngStateType.java index 342064d6..377c1fec 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/enums/MngStateType.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/enums/MngStateType.java @@ -1,9 +1,11 @@ package com.kamco.cd.kamcoback.common.enums; -import com.kamco.cd.kamcoback.config.enums.EnumType; +import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import lombok.AllArgsConstructor; import lombok.Getter; +@CodeExpose @Getter @AllArgsConstructor public enum MngStateType implements EnumType { diff --git a/src/main/java/com/kamco/cd/kamcoback/common/enums/RoleType.java b/src/main/java/com/kamco/cd/kamcoback/common/enums/RoleType.java index 1aeb0269..3321e905 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/enums/RoleType.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/enums/RoleType.java @@ -1,9 +1,11 @@ package com.kamco.cd.kamcoback.common.enums; -import com.kamco.cd.kamcoback.config.enums.EnumType; +import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import lombok.AllArgsConstructor; import lombok.Getter; +@CodeExpose @Getter @AllArgsConstructor public enum RoleType implements EnumType { diff --git a/src/main/java/com/kamco/cd/kamcoback/common/enums/StatusType.java b/src/main/java/com/kamco/cd/kamcoback/common/enums/StatusType.java index 6d83bac7..fa7ab678 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/enums/StatusType.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/enums/StatusType.java @@ -1,9 +1,11 @@ package com.kamco.cd.kamcoback.common.enums; -import com.kamco.cd.kamcoback.config.enums.EnumType; +import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import lombok.AllArgsConstructor; import lombok.Getter; +@CodeExpose @Getter @AllArgsConstructor public enum StatusType implements EnumType { diff --git a/src/main/java/com/kamco/cd/kamcoback/common/enums/SyncStateType.java b/src/main/java/com/kamco/cd/kamcoback/common/enums/SyncStateType.java index 2acba320..f4a4ac6b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/enums/SyncStateType.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/enums/SyncStateType.java @@ -1,9 +1,11 @@ package com.kamco.cd.kamcoback.common.enums; -import com.kamco.cd.kamcoback.config.enums.EnumType; +import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import lombok.AllArgsConstructor; import lombok.Getter; +@CodeExpose @Getter @AllArgsConstructor public enum SyncStateType implements EnumType { diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/Enums.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/Enums.java deleted file mode 100644 index 98c4c727..00000000 --- a/src/main/java/com/kamco/cd/kamcoback/common/utils/Enums.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.kamco.cd.kamcoback.common.utils; - -import com.kamco.cd.kamcoback.config.enums.EnumType; - -public class Enums { - - // code로 text - public static & EnumType> E fromId(Class enumClass, String id) { - if (id == null) { - return null; - } - for (E e : enumClass.getEnumConstants()) { - if (id.equalsIgnoreCase(e.getId())) { - return e; - } - } - return null; // 못 찾으면 null - } -} diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/CodeDto.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/CodeDto.java new file mode 100644 index 00000000..c77d1a25 --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/CodeDto.java @@ -0,0 +1,20 @@ +package com.kamco.cd.kamcoback.common.utils.enums; + +public class CodeDto { + + private String code; + private String name; + + public CodeDto(String code, String name) { + this.code = code; + this.name = name; + } + + public String getCode() { + return code; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/CodeExpose.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/CodeExpose.java new file mode 100644 index 00000000..425e1f8a --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/CodeExpose.java @@ -0,0 +1,10 @@ +package com.kamco.cd.kamcoback.common.utils.enums; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface CodeExpose {} diff --git a/src/main/java/com/kamco/cd/kamcoback/config/enums/EnumType.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/EnumType.java similarity index 58% rename from src/main/java/com/kamco/cd/kamcoback/config/enums/EnumType.java rename to src/main/java/com/kamco/cd/kamcoback/common/utils/enums/EnumType.java index 274bfe72..22761bb2 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/enums/EnumType.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/EnumType.java @@ -1,4 +1,4 @@ -package com.kamco.cd.kamcoback.config.enums; +package com.kamco.cd.kamcoback.common.utils.enums; public interface EnumType { diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/EnumValidator.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/EnumValidator.java similarity index 93% rename from src/main/java/com/kamco/cd/kamcoback/common/utils/EnumValidator.java rename to src/main/java/com/kamco/cd/kamcoback/common/utils/enums/EnumValidator.java index 02dd3d16..344fb025 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/utils/EnumValidator.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/EnumValidator.java @@ -1,4 +1,4 @@ -package com.kamco.cd.kamcoback.common.utils; +package com.kamco.cd.kamcoback.common.utils.enums; import com.kamco.cd.kamcoback.common.utils.interfaces.EnumValid; import jakarta.validation.ConstraintValidator; diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/Enums.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/Enums.java new file mode 100644 index 00000000..17e413e3 --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/enums/Enums.java @@ -0,0 +1,51 @@ +package com.kamco.cd.kamcoback.common.utils.enums; + +import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.CodeDto; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.reflections.Reflections; + +public class Enums { + + // code로 text + public static & EnumType> E fromId(Class enumClass, String id) { + if (id == null) { + return null; + } + for (E e : enumClass.getEnumConstants()) { + if (id.equalsIgnoreCase(e.getId())) { + return e; + } + } + return null; // 못 찾으면 null + } + + public static List toList(Class> enumClass) { + + Object[] enums = enumClass.getEnumConstants(); + + return Arrays.stream(enums) + .map(e -> (EnumType) e) + .map(e -> new CodeDto(e.getId(), e.getText())) + .toList(); + } + + public static Map> getAllCodes() { + + Reflections reflections = new Reflections("com.kamco.cd.kamcoback"); + + Set> types = reflections.getTypesAnnotatedWith(CodeExpose.class); + + Map> result = new HashMap<>(); + + for (Class clazz : types) { + if (clazz.isEnum() && EnumType.class.isAssignableFrom(clazz)) { + result.put(clazz.getSimpleName(), Enums.toList((Class>) clazz)); + } + } + return result; + } +} diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/interfaces/EnumValid.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/interfaces/EnumValid.java index c6d80b35..5033df9b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/utils/interfaces/EnumValid.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/interfaces/EnumValid.java @@ -1,6 +1,6 @@ package com.kamco.cd.kamcoback.common.utils.interfaces; -import com.kamco.cd.kamcoback.common.utils.EnumValidator; +import com.kamco.cd.kamcoback.common.utils.enums.EnumValidator; import jakarta.validation.Constraint; import jakarta.validation.Payload; import java.lang.annotation.ElementType; diff --git a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseDto.java b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseDto.java index fb5beaa0..e0767419 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseDto.java @@ -2,7 +2,7 @@ package com.kamco.cd.kamcoback.config.api; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; -import com.kamco.cd.kamcoback.config.enums.EnumType; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.ToString; diff --git a/src/main/java/com/kamco/cd/kamcoback/log/dto/ErrorLogDto.java b/src/main/java/com/kamco/cd/kamcoback/log/dto/ErrorLogDto.java index 089a545a..61dcf1f2 100644 --- a/src/main/java/com/kamco/cd/kamcoback/log/dto/ErrorLogDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/log/dto/ErrorLogDto.java @@ -1,6 +1,6 @@ package com.kamco.cd.kamcoback.log.dto; -import com.kamco.cd.kamcoback.config.enums.EnumType; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDate; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/kamco/cd/kamcoback/log/dto/EventStatus.java b/src/main/java/com/kamco/cd/kamcoback/log/dto/EventStatus.java index bef06921..1768945c 100644 --- a/src/main/java/com/kamco/cd/kamcoback/log/dto/EventStatus.java +++ b/src/main/java/com/kamco/cd/kamcoback/log/dto/EventStatus.java @@ -1,6 +1,6 @@ package com.kamco.cd.kamcoback.log.dto; -import com.kamco.cd.kamcoback.config.enums.EnumType; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java b/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java index 318b5f17..2f923681 100644 --- a/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java +++ b/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java @@ -1,6 +1,6 @@ package com.kamco.cd.kamcoback.log.dto; -import com.kamco.cd.kamcoback.config.enums.EnumType; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import lombok.AllArgsConstructor; import lombok.Getter; 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 c72d2c8b..36e4ea89 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java @@ -107,17 +107,17 @@ public class MapSheetMngApiController { @Operation(summary = "영상 데이터 관리 년도 목록", description = "영상 데이터 관리 년도 목록") @ApiResponses( - value = { - @ApiResponse( - responseCode = "200", - description = "조회 성공", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = CommonCodeDto.Basic.class))), - @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), - @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) - }) + value = { + @ApiResponse( + responseCode = "200", + description = "조회 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = CommonCodeDto.Basic.class))), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) @PostMapping("/mng-year-list") public ApiResponseDto> findMapSheetMngYyyyList() { @@ -126,24 +126,23 @@ public class MapSheetMngApiController { @Operation(summary = "영상 데이터 관리 오류 목록", description = "영상 데이터 관리 오류 목록") @ApiResponses( - value = { - @ApiResponse( - responseCode = "200", - description = "조회 성공", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = CommonCodeDto.Basic.class))), - @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), - @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) - }) + value = { + @ApiResponse( + responseCode = "200", + description = "조회 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = CommonCodeDto.Basic.class))), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) @PostMapping("/error-list") public ApiResponseDto> findMapSheetErrorList( @RequestBody @Valid MapSheetMngDto.ErrorSearchReq searchReq) { return ApiResponseDto.ok(mapSheetMngService.findMapSheetErrorList(searchReq)); } - @Operation(summary = "오류데이터 팝업 > 업로드 처리", description = "오류데이터 팝업 > 업로드 처리") @ApiResponses( value = { @@ -164,7 +163,6 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.uploadProcess(hstUidList)); } - @Operation(summary = "오류데이터 팝업 > 추론 제외", description = "오류데이터 팝업 > 추론 제외") @PutMapping("/except-inference") public ApiResponseDto updateExceptUseInference( @@ -183,18 +181,18 @@ public class MapSheetMngApiController { @Operation(summary = "영상관리 > 파일조회", description = "영상관리 > 파일조회") @ApiResponses( - value = { - @ApiResponse( - responseCode = "201", - description = "파일삭제 처리 성공", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = Long.class))), - @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), - @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), - @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) - }) + value = { + @ApiResponse( + responseCode = "201", + description = "파일삭제 처리 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = Long.class))), + @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) @GetMapping("/mng-file-list") public ApiResponseDto> findHstUidToMapSheetFileList( @RequestParam @Valid Long hstUid) { diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java index abf3b3a2..81325b29 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java @@ -2,7 +2,7 @@ package com.kamco.cd.kamcoback.mapsheet.dto; import com.kamco.cd.kamcoback.common.enums.MngStateType; import com.kamco.cd.kamcoback.common.enums.SyncStateType; -import com.kamco.cd.kamcoback.common.utils.Enums; +import com.kamco.cd.kamcoback.common.utils.enums.Enums; import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm; import io.swagger.v3.oas.annotations.media.Schema; import java.time.ZonedDateTime; @@ -44,6 +44,7 @@ public class MapSheetMngDto { @NoArgsConstructor @AllArgsConstructor public static class AddReq { + @Schema(description = "관리년도", example = "2022") private int mngYyyy; @@ -57,6 +58,7 @@ public class MapSheetMngDto { @NoArgsConstructor @AllArgsConstructor public static class DeleteFileReq { + @Schema(description = "파일 경로", example = "/app/original-images/2024/00000001.tif") private String filePath; } @@ -67,6 +69,7 @@ public class MapSheetMngDto { @NoArgsConstructor @AllArgsConstructor public static class MngDto { + private int rowNum; private int mngYyyy; private String mngState; @@ -108,7 +111,9 @@ public class MapSheetMngDto { public String getMngStateName() { String enumId = this.mngState; - if (enumId == null || enumId.isEmpty()) enumId = "NOTYET"; + if (enumId == null || enumId.isEmpty()) { + enumId = "NOTYET"; + } MngStateType type = Enums.fromId(MngStateType.class, enumId); return type.getText(); @@ -160,6 +165,7 @@ public class MapSheetMngDto { @Getter @Setter public static class ErrorDataDto { + // private Integer rowNum; private Long hstUid; private String mapSheetNum; @@ -211,7 +217,9 @@ public class MapSheetMngDto { } private String getSyncStateName(String enumId) { - if (enumId == null || enumId.isEmpty()) enumId = "NOTYET"; + if (enumId == null || enumId.isEmpty()) { + enumId = "NOTYET"; + } SyncStateType type = Enums.fromId(SyncStateType.class, enumId); return type.getText(); @@ -222,6 +230,7 @@ public class MapSheetMngDto { @Getter @Setter public static class MngFIleDto { + private Long fileUid; private String filePath; private String fileName; @@ -236,6 +245,7 @@ public class MapSheetMngDto { @NoArgsConstructor @AllArgsConstructor public static class DmlReturn { + private String flag; private String message; } @@ -246,6 +256,7 @@ public class MapSheetMngDto { @NoArgsConstructor @AllArgsConstructor public static class MngFilesDto { + private long fileUid; private int mngYyyy; private String mapSheetNum; 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 0147608a..e3939b9f 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 @@ -223,8 +223,6 @@ public class MapSheetMngService { return mapSheetMngCoreService.findMapSheetMngYyyyList(); } - - public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { return mapSheetMngCoreService.findMapSheetMng(mngYyyy); } diff --git a/src/main/java/com/kamco/cd/kamcoback/members/dto/MembersDto.java b/src/main/java/com/kamco/cd/kamcoback/members/dto/MembersDto.java index 55494625..6fc2e6db 100644 --- a/src/main/java/com/kamco/cd/kamcoback/members/dto/MembersDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/members/dto/MembersDto.java @@ -2,7 +2,7 @@ package com.kamco.cd.kamcoback.members.dto; import com.kamco.cd.kamcoback.common.enums.RoleType; import com.kamco.cd.kamcoback.common.enums.StatusType; -import com.kamco.cd.kamcoback.common.utils.Enums; +import com.kamco.cd.kamcoback.common.utils.enums.Enums; import com.kamco.cd.kamcoback.common.utils.interfaces.EnumValid; import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java index adb05a62..e7b7eb5e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MapSheetMngCoreService.java @@ -40,7 +40,6 @@ public class MapSheetMngCoreService { return mapSheetMngRepository.findMapSheetMngYyyyList(); } - public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { return mapSheetMngRepository.findMapSheetMng(mngYyyy); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index a39b9748..e56eb8b6 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -167,14 +167,14 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport return foundContent; } - public List findMapSheetMngYyyyList(){ + public List findMapSheetMngYyyyList() { List foundContent = - queryFactory - .select(mapSheetMngEntity.mngYyyy) - .from(mapSheetMngEntity) - .where(mapSheetMngEntity.mngState.ne("COMPLETE")) - .orderBy(mapSheetMngEntity.mngYyyy.desc()) - .fetch(); + queryFactory + .select(mapSheetMngEntity.mngYyyy) + .from(mapSheetMngEntity) + .where(mapSheetMngEntity.mngState.ne("COMPLETE")) + .orderBy(mapSheetMngEntity.mngYyyy.desc()) + .fetch(); return foundContent; } diff --git a/src/main/java/com/kamco/cd/kamcoback/zoo/dto/AnimalDto.java b/src/main/java/com/kamco/cd/kamcoback/zoo/dto/AnimalDto.java index ad55c5e5..9e23ae92 100644 --- a/src/main/java/com/kamco/cd/kamcoback/zoo/dto/AnimalDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/zoo/dto/AnimalDto.java @@ -2,7 +2,7 @@ package com.kamco.cd.kamcoback.zoo.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.kamco.cd.kamcoback.config.enums.EnumType; +import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import io.swagger.v3.oas.annotations.media.Schema; import java.time.ZonedDateTime; import lombok.AllArgsConstructor; diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index a5395888..054d08ac 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -15,8 +15,8 @@ spring: format_sql: true # ⚠️ 선택 - SQL 포맷팅 (가독성) datasource: - #url: jdbc:postgresql://192.168.2.127:15432/kamco_cds - url: jdbc:postgresql://localhost:15432/kamco_cds + url: jdbc:postgresql://192.168.2.127:15432/kamco_cds + #url: jdbc:postgresql://localhost:15432/kamco_cds username: kamco_cds password: kamco_cds_Q!W@E#R$ hikari: