diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java index dabfdb54..3e5cfff2 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultShpService.java @@ -5,7 +5,10 @@ import com.kamco.cd.kamcoback.inference.dto.InferenceResultShpDto; import com.kamco.cd.kamcoback.postgres.core.InferenceResultCoreService; import com.kamco.cd.kamcoback.postgres.core.InferenceResultShpCoreService; import com.kamco.cd.kamcoback.scheduler.service.ShpPipelineService; +import java.util.Objects; import java.util.UUID; +import java.util.stream.Collectors; +import java.util.stream.Stream; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -46,10 +49,12 @@ public class InferenceResultShpService { if (dto == null) { return; } - Long m1BatchId = dto.getM1ModelBatchId(); - Long m2BatchId = dto.getM2ModelBatchId(); - Long m3BatchId = dto.getM3ModelBatchId(); - String batchId = m1BatchId + "," + m2BatchId + "," + m3BatchId; + + String batchId = + Stream.of(dto.getM1ModelBatchId(), dto.getM2ModelBatchId(), dto.getM3ModelBatchId()) + .filter(Objects::nonNull) + .map(String::valueOf) + .collect(Collectors.joining(",")); // shp 파일 비동기 생성 shpPipelineService.runPipeline(jarPath, datasetDir, batchId, dto.getUid()); 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 ac81238e..ae415883 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 @@ -69,8 +69,8 @@ public class InferenceResultCoreService { * @return */ public Page getInferenceResultList(InferenceResultDto.SearchListReq req) { - Page list = mapSheetLearnRepository.getInferenceMgnResultList(req); - return list.map(MapSheetLearnEntity::toDto); + Page list = mapSheetLearnRepository.getInferenceMgnResultList(req); + return list; } /** @@ -110,8 +110,7 @@ public class InferenceResultCoreService { mapSheetLearnEntity.setDetectOption(req.getDetectOption()); mapSheetLearnEntity.setCreatedUid(userUtil.getId()); mapSheetLearnEntity.setMapSheetCnt(mapSheetName); - // 도엽건수가 아니라 실제 탐지건수(polygon), 추론 1분 배치에서 업데이트 - mapSheetLearnEntity.setDetectingCnt(0L); + mapSheetLearnEntity.setDetectingCnt((long) detectingCnt); // 회차는 국유인 반영할때 update로 변경됨 // mapSheetLearnEntity.setStage( // mapSheetLearnRepository.getLearnStage(req.getCompareYyyy(), req.getTargetYyyy())); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryCustom.java index 41ad1fa2..5d0b8323 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryCustom.java @@ -10,6 +10,7 @@ import com.kamco.cd.kamcoback.inference.dto.InferenceProgressDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceServerStatusDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceStatusDetailDto; +import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.ResultList; import com.kamco.cd.kamcoback.postgres.entity.MapSheetLearnEntity; import java.util.List; import java.util.Optional; @@ -18,7 +19,7 @@ import org.springframework.data.domain.Page; public interface MapSheetLearnRepositoryCustom { - Page getInferenceMgnResultList(InferenceResultDto.SearchListReq req); + Page getInferenceMgnResultList(InferenceResultDto.SearchListReq req); Optional getInferenceResultByUuid(UUID uuid); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java index 7a210a0f..3bccbccc 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java @@ -24,8 +24,10 @@ import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceServerStatusDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceStatusDetailDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetScope; +import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.ResultList; import com.kamco.cd.kamcoback.model.service.ModelMngService; import com.kamco.cd.kamcoback.postgres.entity.MapSheetLearnEntity; +import com.kamco.cd.kamcoback.postgres.entity.QInferenceResultsTestingEntity; import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalInferenceEntity; import com.kamco.cd.kamcoback.postgres.entity.QMapSheetLearnEntity; import com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity; @@ -60,7 +62,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto private final ModelMngService modelMngService; @Override - public Page getInferenceMgnResultList(InferenceResultDto.SearchListReq req) { + public Page getInferenceMgnResultList(InferenceResultDto.SearchListReq req) { Pageable pageable = req.toPageable(); BooleanBuilder builder = new BooleanBuilder(); @@ -90,24 +92,75 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto builder.and(mapSheetLearnEntity.title.containsIgnoreCase(req.getTitle())); } - List content = + QInferenceResultsTestingEntity irt = + QInferenceResultsTestingEntity.inferenceResultsTestingEntity; + BooleanExpression joinCond = + mapSheetLearnEntity + .m1ModelBatchId + .isNotNull() + .and(irt.batchId.eq(mapSheetLearnEntity.m1ModelBatchId)) + .or( + mapSheetLearnEntity + .m2ModelBatchId + .isNotNull() + .and(irt.batchId.eq(mapSheetLearnEntity.m2ModelBatchId))) + .or( + mapSheetLearnEntity + .m3ModelBatchId + .isNotNull() + .and(irt.batchId.eq(mapSheetLearnEntity.m3ModelBatchId))); + + List content = queryFactory - .select(mapSheetLearnEntity) + .select( + Projections.constructor( + ResultList.class, + mapSheetLearnEntity.uuid, + mapSheetLearnEntity.title, + mapSheetLearnEntity.stage, + mapSheetLearnEntity.status, + mapSheetLearnEntity.mapSheetCnt, + irt.seq.count(), + mapSheetLearnEntity.inferStartDttm, + mapSheetLearnEntity.inferEndDttm, + mapSheetLearnEntity.applyYn, + mapSheetLearnEntity.applyDttm, + mapSheetLearnEntity.compareYyyy, + mapSheetLearnEntity.targetYyyy, + mapSheetLearnEntity.uid)) .from(mapSheetLearnEntity) + .leftJoin(irt) + .on(joinCond) .where(builder) + .groupBy( + mapSheetLearnEntity.id, + mapSheetLearnEntity.uuid, + mapSheetLearnEntity.title, + mapSheetLearnEntity.stage, + mapSheetLearnEntity.status, + mapSheetLearnEntity.mapSheetCnt, + mapSheetLearnEntity.inferStartDttm, + mapSheetLearnEntity.inferEndDttm, + mapSheetLearnEntity.applyYn, + mapSheetLearnEntity.applyDttm, + mapSheetLearnEntity.compareYyyy, + mapSheetLearnEntity.targetYyyy, + mapSheetLearnEntity.uid) + .orderBy(mapSheetLearnEntity.id.desc()) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) - .orderBy(mapSheetLearnEntity.id.desc()) .fetch(); Long total = - queryFactory - .select(mapSheetLearnEntity.count()) - .from(mapSheetLearnEntity) - .where(builder) - .fetchOne(); + Optional.ofNullable( + queryFactory + .select(mapSheetLearnEntity.count()) + .from(mapSheetLearnEntity) + .where(builder) + .fetchOne()) + .orElse(0L); - return new PageImpl<>(content, pageable, total == null ? 0L : total); + return new PageImpl<>(content, pageable, total); } @Override