From ea6fcb236433d8e147eb67b3f83600e020b27c3b Mon Sep 17 00:00:00 2001 From: Moon Date: Wed, 17 Dec 2025 09:38:12 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=81=EC=83=81=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=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 | 20 ++++ .../mapsheet/service/MapSheetMngService.java | 13 ++- .../postgres/core/MapSheetMngCoreService.java | 4 + .../mapsheet/MapSheetMngRepositoryCustom.java | 2 + .../mapsheet/MapSheetMngRepositoryImpl.java | 100 ++++++++++++++++++ 5 files changed, 136 insertions(+), 3 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 79d0c548..4663a6f0 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java @@ -46,6 +46,26 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.findMapSheetMngList(searchReq)); } + @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) + }) + @GetMapping("/mng") + public ApiResponseDto findMapSheetMng( + @RequestParam int mngYyyy) { + + return ApiResponseDto.ok(mapSheetMngService.findMapSheetMng(mngYyyy)); + } + @Operation(summary = "영상관리 > 데이터 등록", description = "영상관리 > 데이터 등록") @ApiResponses( value = { 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 e6daa08f..b3288e60 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 @@ -212,14 +212,21 @@ public class MapSheetMngService { } } + + public Page findMapSheetMngList(MapSheetMngDto.MngSearchReq searchReq) { + return mapSheetMngCoreService.findMapSheetMngList(searchReq); + } + + public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { + return mapSheetMngCoreService.findMapSheetMng(mngYyyy); + } + public Page findMapSheetErrorList( MapSheetMngDto.@Valid ErrorSearchReq searchReq) { return mapSheetMngCoreService.findMapSheetErrorList(searchReq); } - public Page findMapSheetMngList(MapSheetMngDto.MngSearchReq searchReq) { - return mapSheetMngCoreService.findMapSheetMngList(searchReq); - } + @Transactional public MapSheetMngDto.DmlReturn mngDataSave(MapSheetMngDto.AddReq AddReq) { 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 462de13a..962b8615 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 @@ -42,6 +42,10 @@ public class MapSheetMngCoreService { return mapSheetMngRepository.findMapSheetMngList(searchReq); } + public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) { + return mapSheetMngRepository.findMapSheetMng(mngYyyy); + } + public MapSheetMngDto.DmlReturn uploadProcess(@Valid List hstUidList) { int count = 0; if (!Objects.isNull(hstUidList) && !hstUidList.isEmpty()) { 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 f6348a66..f9a30ad6 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 @@ -10,6 +10,8 @@ public interface MapSheetMngRepositoryCustom { Page findMapSheetMngList(MapSheetMngDto.MngSearchReq searchReq); + MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy); + Optional findMapSheetMngHstInfo(Long hstUid); int insertMapSheetOrgDataToMapSheetMngHst(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 eecc3beb..8680114d 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 @@ -171,6 +171,106 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport return new PageImpl<>(foundContent, pageable, countQuery); } + public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy){ + + BooleanBuilder whereBuilder = new BooleanBuilder(); + whereBuilder.and(mapSheetMngEntity.mngYyyy.eq(mngYyyy)); + + MapSheetMngDto.MngDto foundContent = + queryFactory + .select( + Projections.constructor( + MapSheetMngDto.MngDto.class, + Expressions.numberTemplate( + Integer.class, + "row_number() over(order by {0} desc)", + mapSheetMngEntity.createdDttm), + mapSheetMngEntity.mngYyyy, + mapSheetMngEntity.mngState, + mapSheetMngEntity.syncState, + mapSheetMngEntity.syncCheckState, + mapSheetMngHstEntity.count(), + new CaseBuilder() + .when(mapSheetMngHstEntity.dataState.eq("DONE")) + .then(1L) + .otherwise(0L) + .sum() + .as("syncStateDoneCnt"), + new CaseBuilder() + .when(mapSheetMngHstEntity.syncState.ne("NOTYET")) + .then(1L) + .otherwise(0L) + .sum(), + new CaseBuilder() + .when( + mapSheetMngHstEntity + .syncState + .eq("NOFILE") + .or(mapSheetMngHstEntity.syncState.eq("NOTPAIR"))) + .then(1L) + .otherwise(0L) + .sum(), + new CaseBuilder() + .when( + mapSheetMngHstEntity + .syncCheckState + .eq("DONE") + .and( + mapSheetMngHstEntity + .syncState + .eq("NOFILE") + .or(mapSheetMngHstEntity.syncState.eq("NOTPAIR")))) + .then(1L) + .otherwise(0L) + .sum(), + new CaseBuilder() + .when(mapSheetMngHstEntity.syncState.eq("DUPLICATE")) + .then(1L) + .otherwise(0L) + .sum(), + new CaseBuilder() + .when( + mapSheetMngHstEntity + .syncCheckState + .eq("DONE") + .and(mapSheetMngHstEntity.syncState.eq("DUPLICATE"))) + .then(1L) + .otherwise(0L) + .sum(), + new CaseBuilder() + .when( + mapSheetMngHstEntity + .syncState + .eq("TYPEERROR") + .or(mapSheetMngHstEntity.syncState.eq("SIZEERROR"))) + .then(1L) + .otherwise(0L) + .sum(), + new CaseBuilder() + .when( + mapSheetMngHstEntity + .syncCheckState + .eq("DONE") + .and( + mapSheetMngHstEntity + .syncState + .eq("TYPEERROR") + .or(mapSheetMngHstEntity.syncState.eq("SIZEERROR")))) + .then(1L) + .otherwise(0L) + .sum(), + mapSheetMngEntity.createdDttm, + mapSheetMngHstEntity.syncEndDttm.max())) + .from(mapSheetMngEntity) + .leftJoin(mapSheetMngHstEntity) + .on(mapSheetMngEntity.mngYyyy.eq(mapSheetMngHstEntity.mngYyyy)) + .where(whereBuilder) + .groupBy(mapSheetMngEntity.mngYyyy) + .fetchOne(); + + return foundContent; + } + @Override public Page findMapSheetErrorList( MapSheetMngDto.@Valid ErrorSearchReq searchReq) {