From 91aecdcc03983dfb7d4d3c768d1e1f33bbdee41d Mon Sep 17 00:00:00 2001 From: teddy Date: Fri, 21 Nov 2025 18:15:56 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B6=94=EB=A1=A0=EA=B4=80=EB=A6=AC=20>=20?= =?UTF-8?q?=EB=B6=84=EC=84=9D=EA=B2=B0=EA=B3=BC=20=EB=AA=A9=EB=A1=9D=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EC=B6=94=EA=B0=80=20=EA=B3=B5=ED=86=B5?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20repository=20=ED=8C=A8=ED=82=A4=EC=A7=80?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InferenceResultApiController.java | 7 +- .../inference/dto/InferenceResultDto.java | 41 ++++++++++++ .../service/InferenceResultService.java | 7 +- .../postgres/core/CommonCodeCoreService.java | 13 +++- .../core/InferenceResultCoreService.java | 35 ++-------- .../postgres/entity/MapSheetAnalEntity.java | 6 ++ .../Inference/InferenceResultRepository.java | 4 +- .../InferenceResultRepositoryCustom.java | 4 +- .../InferenceResultRepositoryImpl.java | 64 ++++++++++++++----- .../{ => code}/CommonCodeRepository.java | 2 +- .../CommonCodeRepositoryCustom.java | 4 +- .../{ => code}/CommonCodeRepositoryImpl.java | 18 +++++- 12 files changed, 148 insertions(+), 57 deletions(-) rename src/main/java/com/kamco/cd/kamcoback/postgres/repository/{ => code}/CommonCodeRepository.java (81%) rename src/main/java/com/kamco/cd/kamcoback/postgres/repository/{ => code}/CommonCodeRepositoryCustom.java (76%) rename src/main/java/com/kamco/cd/kamcoback/postgres/repository/{ => code}/CommonCodeRepositoryImpl.java (85%) diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java b/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java index 0b208b5f..281de3ee 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java @@ -10,7 +10,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 java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.GetMapping; @@ -43,7 +42,7 @@ public class InferenceResultApiController { @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @GetMapping("/list") - public ApiResponseDto> getInferenceResultList( + public ApiResponseDto> getInferenceResultList( @Parameter(description = "분석상태", example = "0000") @RequestParam(required = false) String statCode, @@ -53,7 +52,7 @@ public class InferenceResultApiController { int page ) { InferenceResultDto.SearchReq searchReq = new InferenceResultDto.SearchReq(statCode, title, page, 20, null); - Page zoos = inferenceResultService.getInferenceResultList(searchReq); - return ApiResponseDto.ok(zoos); + Page analResList = inferenceResultService.getInferenceResultList(searchReq); + return ApiResponseDto.ok(analResList); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceResultDto.java b/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceResultDto.java index 72c550d2..dde31522 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceResultDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceResultDto.java @@ -49,6 +49,47 @@ public class InferenceResultDto { } } + @Schema(name = "AnalysisResultList", description = "분석결과 목록") + @Getter + public static class AnalResList { + private Long id; + private String analTitle; + private String analMapSheet; + private Long detectingCnt; + @JsonFormatDttm + private ZonedDateTime analStrtDttm; + @JsonFormatDttm + private ZonedDateTime analEndDttm; + private Integer analSs; + private String analState; + private String analStateNm; + private String gukyuinUsed; + + public AnalResList( + Long id, + String analTitle, + String analMapSheet, + Long detectingCnt, + ZonedDateTime analStrtDttm, + ZonedDateTime analEndDttm, + Integer analSs, + String analState, + String analStateNm, + String gukyuinUsed + ) { + this.id = id; + this.analTitle = analTitle; + this.analMapSheet = analMapSheet; + this.detectingCnt = detectingCnt; + this.analStrtDttm = analStrtDttm; + this.analEndDttm = analEndDttm; + this.analSs = analSs; + this.analState = analState; + this.analStateNm = analStateNm; + this.gukyuinUsed = gukyuinUsed; + } + } + @Schema(name = "InferenceResultSearchReq", description = "분석결과 목록 요청 정보") @Getter diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java index 86a92530..fbd8041b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java @@ -15,7 +15,12 @@ public class InferenceResultService { private final InferenceResultCoreService inferenceResultCoreService; - public Page getInferenceResultList(InferenceResultDto.SearchReq searchReq) { + /** + * 추론관리 > 분석결과 목록 조회 + * @param searchReq + * @return + */ + public Page getInferenceResultList(InferenceResultDto.SearchReq searchReq) { return inferenceResultCoreService.getInferenceResultList(searchReq); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/CommonCodeCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/CommonCodeCoreService.java index 4aac8774..5432dec4 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/CommonCodeCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/CommonCodeCoreService.java @@ -4,10 +4,11 @@ import com.kamco.cd.kamcoback.code.dto.CommonCodeDto; import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.Basic; import com.kamco.cd.kamcoback.common.service.BaseCoreService; import com.kamco.cd.kamcoback.postgres.entity.CommonCodeEntity; -import com.kamco.cd.kamcoback.postgres.repository.CommonCodeRepository; +import com.kamco.cd.kamcoback.postgres.repository.code.CommonCodeRepository; import com.kamco.cd.kamcoback.zoo.dto.AnimalDto.SearchReq; import jakarta.persistence.EntityNotFoundException; import java.util.List; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; @@ -72,6 +73,16 @@ public class CommonCodeCoreService return commonCodeRepository.findByCode(code).stream().map(CommonCodeEntity::toDto).toList(); } + /** + * 공통코드 이름 조회 + * @param parentCodeCd + * @param childCodeCd + * @return + */ + public Optional getCode(String parentCodeCd, String childCodeCd) { + return commonCodeRepository.getCode(parentCodeCd, childCodeCd); + } + @Override public void remove(Long id) { CommonCodeEntity entity = diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java index 85f3a5c3..80115726 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java @@ -1,44 +1,23 @@ package com.kamco.cd.kamcoback.postgres.core; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto; -import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Basic; -import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataEntity; import com.kamco.cd.kamcoback.postgres.repository.Inference.InferenceResultRepository; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor -@Transactional(readOnly = true) public class InferenceResultCoreService { private final InferenceResultRepository inferenceResultRepository; - public Page getInferenceResultList(InferenceResultDto.SearchReq searchReq) { - Page list = inferenceResultRepository.getInferenceResultList(searchReq); - List result = - list.getContent().stream() - .map(infList ->toDto(infList)) - .collect(Collectors.toList()); - return new PageImpl<>(result, list.getPageable(), list.getTotalElements()); - } - - private Basic toDto(MapSheetAnalDataEntity entity) { - return new Basic( - entity.getId(), - entity.getDataName(), - entity.getMapSheepNum(), - entity.getDetectingCnt(), - entity.getAnalStrtDttm(), - entity.getAnalEndDttm(), - entity.getAnalSec(), - entity.getAnalState() - ); + /** + * 추론관리 > 분석결과 목록 조회 + * @param searchReq + * @return + */ + public Page getInferenceResultList(InferenceResultDto.SearchReq searchReq) { + return inferenceResultRepository.getInferenceResultList(searchReq); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalEntity.java index c0690af6..2cf13f0b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalEntity.java @@ -2,9 +2,12 @@ package com.kamco.cd.kamcoback.postgres.entity; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; import jakarta.persistence.SequenceGenerator; import jakarta.persistence.Table; import jakarta.validation.constraints.Size; @@ -84,4 +87,7 @@ public class MapSheetAnalEntity { @Column(name = "anal_title") private String analTitle; + @Column(name = "detecting_cnt") + private Long detectingCnt; + } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepository.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepository.java index dd001f4c..1599bb25 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepository.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepository.java @@ -1,8 +1,8 @@ package com.kamco.cd.kamcoback.postgres.repository.Inference; -import com.kamco.cd.kamcoback.postgres.entity.MapSheetLearnDataEntity; +import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalEntity; import org.springframework.data.jpa.repository.JpaRepository; -public interface InferenceResultRepository extends JpaRepository, InferenceResultRepositoryCustom { +public interface InferenceResultRepository extends JpaRepository, InferenceResultRepositoryCustom { } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java index a24bdbb7..5e76c638 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java @@ -1,9 +1,9 @@ package com.kamco.cd.kamcoback.postgres.repository.Inference; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto; -import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataEntity; +import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalEntity; import org.springframework.data.domain.Page; public interface InferenceResultRepositoryCustom { - Page getInferenceResultList(InferenceResultDto.SearchReq searchReq); + Page getInferenceResultList(InferenceResultDto.SearchReq searchReq); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java index 1ad4a5cc..dc8ac338 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java @@ -1,10 +1,9 @@ package com.kamco.cd.kamcoback.postgres.repository.Inference; - import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto; -import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataEntity; -import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataEntity; -import com.querydsl.jpa.impl.JPAQuery; +import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalEntity; +import com.querydsl.core.types.Projections; +import com.querydsl.core.types.dsl.Expressions; import com.querydsl.jpa.impl.JPAQueryFactory; import java.util.List; import lombok.RequiredArgsConstructor; @@ -12,30 +11,63 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Repository; +import com.querydsl.core.BooleanBuilder; @Repository @RequiredArgsConstructor public class InferenceResultRepositoryImpl implements InferenceResultRepositoryCustom { private final JPAQueryFactory queryFactory; - private final QMapSheetAnalDataEntity mapSheetAnalData = QMapSheetAnalDataEntity.mapSheetAnalDataEntity; + private final QMapSheetAnalEntity mapSheetAnal = QMapSheetAnalEntity.mapSheetAnalEntity; @Override - public Page getInferenceResultList(InferenceResultDto.SearchReq searchReq) { + public Page getInferenceResultList(InferenceResultDto.SearchReq searchReq) { Pageable pageable = searchReq.toPageable(); - JPAQuery query = - queryFactory.selectFrom(mapSheetAnalData) - ; - long total = query.fetchCount(); + // "0000" 전체조회 + BooleanBuilder builder = new BooleanBuilder(); + if (searchReq.getStatCode() != null && !"0000".equals(searchReq.getStatCode())) { + builder.and(mapSheetAnal.analState.eq(searchReq.getStatCode())); + } + + // 제목 + if (searchReq.getTitle() != null) { + builder.and(mapSheetAnal.analTitle.like("%" + searchReq.getTitle() + "%")); + } + + List content = queryFactory + .select(Projections.constructor(InferenceResultDto.AnalResList.class, + mapSheetAnal.id, + mapSheetAnal.analTitle, + mapSheetAnal.analMapSheet, + mapSheetAnal.detectingCnt, + mapSheetAnal.analStrtDttm, + mapSheetAnal.analEndDttm, + mapSheetAnal.analSs, + mapSheetAnal.analState, + Expressions.stringTemplate("fn_code_name({0}, {1})", "0002", mapSheetAnal.analState), + mapSheetAnal.gukyuinUsed + )) + .from(mapSheetAnal) + .where( + builder + ) + .offset(pageable.getOffset()) + .limit(pageable.getPageSize()) + .orderBy(mapSheetAnal.createdDttm.desc()) + .fetch(); + + long total = queryFactory + .select(mapSheetAnal.id) + .from(mapSheetAnal) + .where( + builder + ) + .fetchCount(); - List content = - query - .offset(pageable.getOffset()) - .limit(pageable.getPageSize()) - .orderBy(mapSheetAnalData.createdDttm.desc()) - .fetch(); return new PageImpl<>(content, pageable, total); + + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/CommonCodeRepository.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/code/CommonCodeRepository.java similarity index 81% rename from src/main/java/com/kamco/cd/kamcoback/postgres/repository/CommonCodeRepository.java rename to src/main/java/com/kamco/cd/kamcoback/postgres/repository/code/CommonCodeRepository.java index 70921aa8..4b232e12 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/CommonCodeRepository.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/code/CommonCodeRepository.java @@ -1,4 +1,4 @@ -package com.kamco.cd.kamcoback.postgres.repository; +package com.kamco.cd.kamcoback.postgres.repository.code; import com.kamco.cd.kamcoback.postgres.entity.CommonCodeEntity; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/CommonCodeRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/code/CommonCodeRepositoryCustom.java similarity index 76% rename from src/main/java/com/kamco/cd/kamcoback/postgres/repository/CommonCodeRepositoryCustom.java rename to src/main/java/com/kamco/cd/kamcoback/postgres/repository/code/CommonCodeRepositoryCustom.java index 2d0bf7ba..974b2073 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/CommonCodeRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/code/CommonCodeRepositoryCustom.java @@ -1,4 +1,4 @@ -package com.kamco.cd.kamcoback.postgres.repository; +package com.kamco.cd.kamcoback.postgres.repository.code; import com.kamco.cd.kamcoback.code.dto.CommonCodeDto; import com.kamco.cd.kamcoback.postgres.entity.CommonCodeEntity; @@ -13,4 +13,6 @@ public interface CommonCodeRepositoryCustom { List findByAll(); void updateOrder(CommonCodeDto.OrderReq req); + + Optional getCode(String parentCodeCd, String childCodeCd); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/CommonCodeRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/code/CommonCodeRepositoryImpl.java similarity index 85% rename from src/main/java/com/kamco/cd/kamcoback/postgres/repository/CommonCodeRepositoryImpl.java rename to src/main/java/com/kamco/cd/kamcoback/postgres/repository/code/CommonCodeRepositoryImpl.java index 2bacb370..5bb6594a 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/CommonCodeRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/code/CommonCodeRepositoryImpl.java @@ -1,4 +1,4 @@ -package com.kamco.cd.kamcoback.postgres.repository; +package com.kamco.cd.kamcoback.postgres.repository.code; import static com.kamco.cd.kamcoback.postgres.entity.QCommonCodeEntity.commonCodeEntity; @@ -83,6 +83,22 @@ public class CommonCodeRepositoryImpl extends QuerydslRepositorySupport }); } + @Override + public Optional getCode(String parentCodeCd, String childCodeCd) { + QCommonCodeEntity parent = QCommonCodeEntity.commonCodeEntity; + QCommonCodeEntity child = new QCommonCodeEntity("child"); + + String result = queryFactory + .select(child.name) + .from(child) + .join(child.parent, parent) + .where(parent.code.eq(parentCodeCd) + .and(child.code.eq(childCodeCd))) + .fetchFirst(); // 단일 결과만 + + return Optional.ofNullable(result); + } + private List findAllByIds(Set ids) { return queryFactory .selectFrom(commonCodeEntity)