From dbb0dea7ad3b4a25415516f05d2d6c7c04e0373d Mon Sep 17 00:00:00 2001 From: Moon Date: Thu, 11 Dec 2025 17:15:48 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EC=98=81=EC=83=81=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kamco/cd/kamcoback/config/FileConfig.java | 18 +++++ .../mapsheet/MapSheetMngApiController.java | 33 ++++++++ .../MapSheetMngFileCheckerApiController.java | 10 ++- .../cd/kamcoback/mapsheet/dto/FileDto.java | 2 +- .../mapsheet/dto/MapSheetMngDto.java | 34 ++++++--- .../MapSheetMngFileCheckerService.java | 9 ++- .../mapsheet/service/MapSheetMngService.java | 4 + .../postgres/core/MapSheetMngCoreService.java | 16 +++- .../postgres/entity/MapSheetMngEntity.java | 35 +++++++-- .../postgres/entity/MapSheetMngHstEntity.java | 33 +++++--- .../mapsheet/MapSheetMngRepositoryCustom.java | 1 + .../mapsheet/MapSheetMngRepositoryImpl.java | 76 +++++++++++++++---- 12 files changed, 218 insertions(+), 53 deletions(-) create mode 100644 src/main/java/com/kamco/cd/kamcoback/config/FileConfig.java diff --git a/src/main/java/com/kamco/cd/kamcoback/config/FileConfig.java b/src/main/java/com/kamco/cd/kamcoback/config/FileConfig.java new file mode 100644 index 00000000..d401940d --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/config/FileConfig.java @@ -0,0 +1,18 @@ +package com.kamco.cd.kamcoback.config; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** GeoJSON 파일 모니터링 설정 */ +@Component +@ConfigurationProperties(prefix = "file.config") +@Getter +@Setter +public class FileConfig { + + private String rootSyncDir = "D:\\app\\original-images"; + // private String rootSyncDir = "/app/original-images"; + +} 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 d783a512..03f478b7 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngApiController.java @@ -57,11 +57,44 @@ public class MapSheetMngApiController { return ApiResponseDto.ok(mapSheetMngService.findMapSheetMngList(searchReq)); } + @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("/mng-data-save") + public ApiResponseDto mngDataSave( + @RequestBody @Valid MapSheetMngDto.AddReq AddReq) { + return ApiResponseDto.ok(mapSheetMngService.mngDataSave(AddReq)); + } + /** * @param hstUidList * @return */ @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("/upload-process") public ApiResponseDto uploadProcess( @RequestBody @Valid List hstUidList) { 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 003f20f1..260e7775 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/MapSheetMngFileCheckerApiController.java @@ -5,10 +5,8 @@ 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.ImageryDto; import com.kamco.cd.kamcoback.mapsheet.service.MapSheetMngFileCheckerService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; @@ -16,7 +14,6 @@ import io.swagger.v3.oas.annotations.media.Schema; 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 jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -32,7 +29,7 @@ public class MapSheetMngFileCheckerApiController { private final CommonCodeService commonCodeService; private final MapSheetMngFileCheckerService mapSheetMngFileCheckerService; - @Operation(summary = "폴더 조회", description = "폴더 조회") + @Operation(summary = "폴더 조회", description = "폴더 조회 (ROOT:/app/original-images 이하로 경로입력)") @ApiResponses( value = { @ApiResponse( @@ -47,6 +44,7 @@ public class MapSheetMngFileCheckerApiController { }) @PostMapping("/folder-list") public ApiResponseDto getDir(@RequestBody SrchFoldersDto srchDto) { + return ApiResponseDto.createOK(mapSheetMngFileCheckerService.getFolderAll(srchDto)); } @@ -69,6 +67,7 @@ public class MapSheetMngFileCheckerApiController { return ApiResponseDto.createOK(mapSheetMngFileCheckerService.getFilesAll(srchDto)); } + /* @Operation(summary = "지정폴더(하위폴더포함) 파일목록 조회", description = "지정폴더(하위폴더포함) 파일목록 조회") @ApiResponses( value = { @@ -106,4 +105,7 @@ public class MapSheetMngFileCheckerApiController { @RequestBody @Valid ImageryDto.searchReq searchReq) { return ApiResponseDto.ok(mapSheetMngFileCheckerService.syncProcess(searchReq)); } + + + */ } 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 2e9aaa5f..3792c713 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 @@ -15,7 +15,7 @@ public class FileDto { @NoArgsConstructor @AllArgsConstructor public static class SrchFoldersDto { - @Schema(description = "디렉토리경로", example = "D:\\kamco") + @Schema(description = "디렉토리경로(ROOT:/app/original-images)", example = "") @NotNull private String dirPath; } 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 0f0ae768..98b4923c 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 @@ -1,7 +1,9 @@ package com.kamco.cd.kamcoback.mapsheet.dto; +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; import lombok.Getter; import lombok.NoArgsConstructor; @@ -62,6 +64,19 @@ public class MapSheetMngDto { private DataState dataState; } + @Schema(name = "MngAddReq", description = "영상관리 생성 요청") + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class AddReq { + @Schema(description = "관리년도", example = "2022") + private int mngYyyy; + + @Schema(description = "선택폴더경로", example = "D:\\app\\original-images\\2022") + private String mngPath; + } + @Schema(name = "MngDto", description = "영상관리 검색 리턴") @Getter @Setter @@ -72,17 +87,18 @@ public class MapSheetMngDto { private int mngYyyy; private String mngState; private String syncState; - private String mngStateDttm; - private String syncStateDttm; - // private int sheetCnt; - // private int exceptCnt; - private String mngPath; - private String createdDttm; - private Long createdUid; - private String updatedDttm; - private Long updatedUid; + private String syncCheckState; + private Long syncTotCnt; + private Long syncStateDoneCnt; + private Long syncCheckStateDoneCnt; + private Long syncNotFileCnt; + private Long syncTypeErrorCnt; + private Long syncSizeErrorCnt; + @JsonFormatDttm private ZonedDateTime rgstStrtDttm; + @JsonFormatDttm private ZonedDateTime rgstEndDttm; } + @Schema(name = "DmlReturn", description = "영상관리 DML 수행 후 리턴") @Getter @Setter diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngFileCheckerService.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngFileCheckerService.java index ff53e1d5..575a513a 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngFileCheckerService.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngFileCheckerService.java @@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.mapsheet.service; import static java.lang.String.CASE_INSENSITIVE_ORDER; import com.kamco.cd.kamcoback.common.utils.NameValidator; +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.FolderDto; @@ -38,11 +39,15 @@ import org.springframework.transaction.annotation.Transactional; public class MapSheetMngFileCheckerService { private final MapSheetMngFileCheckerCoreService mapSheetMngFileCheckerCoreService; + private final FileConfig fileConfig; public FoldersDto getFolderAll(SrchFoldersDto srchDto) { - Path startPath = Paths.get(srchDto.getDirPath()); - String dirPath = srchDto.getDirPath(); + Path startPath = Paths.get(fileConfig.getRootSyncDir() + srchDto.getDirPath()); + String dirPath = fileConfig.getRootSyncDir() + srchDto.getDirPath(); + + // Path startPath = Paths.get(fileConfig.getRootSyncDir()+srchDto.getDirPath()); + // String dirPath = fileConfig.getRootSyncDir()+srchDto.getDirPath(); int maxDepth = 1; 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 f56e10e0..b898b607 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 @@ -222,6 +222,10 @@ public class MapSheetMngService { return mapSheetMngCoreService.findMapSheetMngList(searchReq); } + public MapSheetMngDto.DmlReturn mngDataSave(@Valid MapSheetMngDto.AddReq AddReq) { + return mapSheetMngCoreService.mngDataSave(AddReq); + } + public MapSheetMngDto.DmlReturn uploadProcess(@Valid List hstUidList) { return mapSheetMngCoreService.uploadProcess(hstUidList); } 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 c93d046a..c3d6c494 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 @@ -1,6 +1,7 @@ package com.kamco.cd.kamcoback.postgres.core; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; +import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngEntity; import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngHstEntity; import com.kamco.cd.kamcoback.postgres.repository.mapsheet.MapSheetMngRepository; import jakarta.persistence.EntityNotFoundException; @@ -67,9 +68,11 @@ public class MapSheetMngCoreService { count += 1; } + /* MapSheetMngDto.DataState dataState = flag ? MapSheetMngDto.DataState.SUCCESS : MapSheetMngDto.DataState.FAIL; entity.get().updateDataState(dataState); + */ } } return new MapSheetMngDto.DmlReturn("success", count + "개 업로드 성공하였습니다."); @@ -84,7 +87,7 @@ public class MapSheetMngCoreService { .findMapSheetMngHstInfo(hstUid) .orElseThrow(EntityNotFoundException::new)); - entity.get().updateUseInference(true); + // entity.get().updateUseInference(true); } } return new MapSheetMngDto.DmlReturn("success", hstUidList.size() + "개 추론제외 업데이트 하였습니다."); @@ -122,4 +125,15 @@ public class MapSheetMngCoreService { throw new RuntimeException("File search error", e); } } + + public MapSheetMngDto.DmlReturn mngDataSave(@Valid MapSheetMngDto.AddReq addReq) { + + MapSheetMngEntity entity = new MapSheetMngEntity(); + entity.setMngYyyy(addReq.getMngYyyy()); + entity.setMngPath(addReq.getMngPath()); + + MapSheetMngEntity saved = mapSheetMngRepository.save(entity); + + return new MapSheetMngDto.DmlReturn("success", saved.getMngYyyy().toString()); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngEntity.java index 68adf025..a92036ea 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngEntity.java @@ -5,7 +5,7 @@ import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; import jakarta.validation.constraints.Size; -import java.time.OffsetDateTime; +import java.time.ZonedDateTime; import lombok.Getter; import lombok.Setter; import org.hibernate.annotations.ColumnDefault; @@ -18,30 +18,32 @@ public class MapSheetMngEntity { @Id @Column(name = "mng_yyyy", nullable = false) - private Integer id; + private Integer mngYyyy; @Size(max = 20) + @ColumnDefault("'NOTYET'") @Column(name = "mng_state", length = 20) - private String mngState; + private String mngState = "NOTYET"; @Size(max = 20) + @ColumnDefault("'NOTYET'") @Column(name = "sync_state", length = 20) - private String syncState; + private String syncState = "NOTYET"; @Column(name = "mng_state_dttm") - private OffsetDateTime mngStateDttm; + private ZonedDateTime mngStateDttm = ZonedDateTime.now(); @Column(name = "sync_state_dttm") - private OffsetDateTime syncStateDttm; + private ZonedDateTime syncStateDttm = ZonedDateTime.now(); @Column(name = "created_dttm") - private OffsetDateTime createdDttm; + private ZonedDateTime createdDttm = ZonedDateTime.now(); @Column(name = "created_uid") private Long createdUid; @Column(name = "updated_dttm") - private OffsetDateTime updatedDttm; + private ZonedDateTime updatedDttm = ZonedDateTime.now(); @Column(name = "updated_uid") private Long updatedUid; @@ -50,4 +52,21 @@ public class MapSheetMngEntity { @ColumnDefault("'NULL::character varying'") @Column(name = "mng_path") private String mngPath; + + @Size(max = 20) + @ColumnDefault("'NOTYET'") + @Column(name = "sync_check_state", length = 20) + private String syncCheckState = "NOTYET"; + + @Column(name = "sync_strt_dttm") + private ZonedDateTime syncStrtDttm; + + @Column(name = "sync_end_dttm") + private ZonedDateTime syncEndDttm; + + @Column(name = "sync_check_strt_dttm") + private ZonedDateTime syncCheckStrtDttm; + + @Column(name = "sync_check_end_dttm") + private ZonedDateTime syncCheckEndDttm; } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngHstEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngHstEntity.java index bb3459ab..22114522 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngHstEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetMngHstEntity.java @@ -1,8 +1,8 @@ package com.kamco.cd.kamcoback.postgres.entity; -import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; import com.kamco.cd.kamcoback.postgres.CommonDateEntity; import jakarta.persistence.*; +import jakarta.validation.constraints.Size; import java.time.ZonedDateTime; import lombok.Getter; import lombok.Setter; @@ -35,9 +35,8 @@ public class MapSheetMngHstEntity extends CommonDateEntity { @Column(name = "scale_ratio") private Integer scaleRatio; - @Column(name = "data_state") - @Enumerated(EnumType.STRING) - private MapSheetMngDto.DataState dataState; + @Column(name = "data_state", length = 20) + private String dataState; @Column(name = "data_state_dttm") private ZonedDateTime dataStateDttm; @@ -60,13 +59,23 @@ public class MapSheetMngHstEntity extends CommonDateEntity { @Column(name = "updated_uid") private Long updatedUid; - public void updateDataState(MapSheetMngDto.DataState dataState) { - this.dataState = dataState; - this.dataStateDttm = ZonedDateTime.now(); - } + @Size(max = 20) + @Column(name = "sync_state", length = 20) + private String syncState; - public void updateUseInference(Boolean useInference) { - this.useInference = useInference; - this.useInferenceDttm = ZonedDateTime.now(); - } + @Size(max = 20) + @Column(name = "sync_check_state", length = 20) + private String syncCheckState; + + @Column(name = "sync_strt_dttm") + private ZonedDateTime syncStrtDttm; + + @Column(name = "sync_end_dttm") + private ZonedDateTime syncEndDttm; + + @Column(name = "sync_check_strt_dttm") + private ZonedDateTime syncCheckStrtDttm; + + @Column(name = "sync_check_end_dttm") + private ZonedDateTime syncCheckEndDttm; } 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 3611bc7f..817cca55 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 @@ -7,6 +7,7 @@ import java.util.Optional; import org.springframework.data.domain.Page; public interface MapSheetMngRepositoryCustom { + Page findMapSheetErrorList( MapSheetMngDto.@Valid searchReq searchReq); 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 27ca8423..2ca6853f 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 @@ -10,6 +10,7 @@ import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngHstEntity; import com.querydsl.core.BooleanBuilder; import com.querydsl.core.types.Projections; import com.querydsl.core.types.dsl.BooleanExpression; +import com.querydsl.core.types.dsl.CaseBuilder; import com.querydsl.core.types.dsl.Expressions; import com.querydsl.core.types.dsl.NumberExpression; import com.querydsl.core.types.dsl.StringExpression; @@ -64,7 +65,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport .on(mapInkx5kEntity.fidK50.eq(mapInkx50kEntity.fid.longValue())) .where( mapSheetMngHstEntity.mngYyyy.eq(searchReq.getMngYyyy()), - mapSheetMngHstEntity.dataState.eq(MapSheetMngDto.DataState.FAIL), // 오류만 검색 + // mapSheetMngHstEntity.dataState.eq(MapSheetMngDto.DataState.FAIL), // 오류만 검색 mapSheetErrorSearchValue(searchReq)) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) @@ -81,7 +82,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport .on(mapInkx5kEntity.fidK50.eq(mapInkx50kEntity.fid.longValue())) .where( mapSheetMngHstEntity.mngYyyy.eq(searchReq.getMngYyyy()), - mapSheetMngHstEntity.dataState.eq(MapSheetMngDto.DataState.FAIL), // 오류만 검색 + // mapSheetMngHstEntity.dataState.eq(MapSheetMngDto.DataState.FAIL), // 오류만 검색 mapSheetErrorSearchValue(searchReq)) .fetchOne(); @@ -96,9 +97,30 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport BooleanBuilder whereBuilder = new BooleanBuilder(); if (searchReq.getMngYyyy() != null) { - whereBuilder.and(mapSheetMngEntity.id.eq(searchReq.getMngYyyy())); + whereBuilder.and(mapSheetMngEntity.mngYyyy.eq(searchReq.getMngYyyy())); } + /* + QMapSheetMngEntity m = mapSheetMngEntity; + QMapSheetMngHstEntity h = mapSheetMngHstEntity; + + List summaryContent = + queryFactory + .select( + Projections.constructor( + MapSheetSummaryDto.class, + mapSheetMngHstEntity.mngYyyy, + mapSheetMngHstEntity.mngYyyy.count().as("syncTotCnt"), + new CaseBuilder() + .when(mapSheetMngHstEntity.syncState.eq("DONE")).then(1L).otherwise(0L) + .sum().as("syncStateDoneCnt") + )) + .from(mapSheetMngHstEntity) + .groupBy(mapSheetMngHstEntity.mngYyyy) // mng_yyyy 별로 그룹핑 + .fetch(); + + */ + List foundContent = queryFactory .select( @@ -108,30 +130,52 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport Integer.class, "row_number() over(order by {0} desc)", mapSheetMngEntity.createdDttm), - mapSheetMngEntity.id, + mapSheetMngEntity.mngYyyy, mapSheetMngEntity.mngState, mapSheetMngEntity.syncState, - Expressions.stringTemplate( - "to_char({0}, 'YYYY-MM-DD HH24:MI:SS')", mapSheetMngEntity.mngStateDttm), - Expressions.stringTemplate( - "to_char({0}, 'YYYY-MM-DD HH24:MI:SS')", mapSheetMngEntity.syncStateDttm), - mapSheetMngEntity.mngPath, - Expressions.stringTemplate( - "to_char({0}, 'YYYY-MM-DD HH24:MI:SS')", mapSheetMngEntity.createdDttm), - mapSheetMngEntity.createdUid, - Expressions.stringTemplate( - "to_char({0}, 'YYYY-MM-DD HH24:MI:SS')", mapSheetMngEntity.updatedDttm), - mapSheetMngEntity.updatedUid)) + mapSheetMngEntity.syncCheckState, + mapSheetMngHstEntity.count(), + new CaseBuilder() + .when(mapSheetMngHstEntity.syncState.eq("DONE")) + .then(1L) + .otherwise(0L) + .sum() + .as("syncStateDoneCnt"), + new CaseBuilder() + .when(mapSheetMngHstEntity.syncCheckState.eq("DONE")) + .then(1L) + .otherwise(0L) + .sum(), + new CaseBuilder() + .when(mapSheetMngHstEntity.dataState.eq("NOT")) + .then(1L) + .otherwise(0L) + .sum(), + new CaseBuilder() + .when(mapSheetMngHstEntity.dataState.eq("TYPEERROR")) + .then(1L) + .otherwise(0L) + .sum(), + new CaseBuilder() + .when(mapSheetMngHstEntity.dataState.eq("SIZEERROR")) + .then(1L) + .otherwise(0L) + .sum(), + mapSheetMngHstEntity.syncStrtDttm.min(), + mapSheetMngHstEntity.syncCheckEndDttm.max())) .from(mapSheetMngEntity) + .leftJoin(mapSheetMngHstEntity) + .on(mapSheetMngEntity.mngYyyy.eq(mapSheetMngHstEntity.mngYyyy)) .where(whereBuilder) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .orderBy(mapSheetMngEntity.createdDttm.desc()) + .groupBy(mapSheetMngEntity.mngYyyy) .fetch(); Long countQuery = queryFactory - .select(mapSheetMngEntity.id.count()) + .select(mapSheetMngEntity.mngYyyy.count()) .from(mapSheetMngEntity) .where(whereBuilder) .fetchOne(); From 5105fc855a9c64d9d952c14129848f941f7bc648 Mon Sep 17 00:00:00 2001 From: DanielLee <198891672+sanghyeonhd@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:23:48 +0900 Subject: [PATCH 2/2] Sportless Apply only --- .../java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java | 1 - 1 file changed, 1 deletion(-) 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 98b4923c..aaf6594a 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 @@ -98,7 +98,6 @@ public class MapSheetMngDto { @JsonFormatDttm private ZonedDateTime rgstEndDttm; } - @Schema(name = "DmlReturn", description = "영상관리 DML 수행 후 리턴") @Getter @Setter