diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceDetailDto.java b/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceDetailDto.java index 1b26d038..d825a462 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceDetailDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceDetailDto.java @@ -295,6 +295,7 @@ public class InferenceDetailDto { public static class Geom { UUID uuid; + String uid; Integer compareYyyy; Integer targetYyyy; Double cdProb; @@ -313,6 +314,7 @@ public class InferenceDetailDto { public Geom( UUID uuid, + String uid, Integer compareYyyy, Integer targetYyyy, Double cdProb, @@ -325,6 +327,7 @@ public class InferenceDetailDto { String gemoStr, String geomCenterStr) { this.uuid = uuid; + this.uid = uid; this.compareYyyy = compareYyyy; this.targetYyyy = targetYyyy; this.cdProb = cdProb; 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 4ce7ec20..400aedf2 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 @@ -426,4 +426,15 @@ public class InferenceResultCoreService { inferenceResultRepository.upsertGeomsFromInferenceResults(analId); inferenceResultRepository.upsertSttcFromInferenceResults(analId); } + + /** + * 모델별 도엽별 실패여부 저장 + * + * @param uuid learn 테이블 uuid + * @param failMapIds 실패한 도엽 목록 + * @param type 모델타입 + */ + public void saveFail5k(UUID uuid, List failMapIds, String type) { + mapSheetLearn5kRepository.saveFail5k(uuid, failMapIds, type); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataInferenceGeomEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataInferenceGeomEntity.java index 165f8207..fa46471b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataInferenceGeomEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataInferenceGeomEntity.java @@ -156,6 +156,9 @@ public class MapSheetAnalDataInferenceGeomEntity { @Column(name = "pass_yn_dttm") private ZonedDateTime passYnDttm; + @Column(name = "result_uid") + private String resultUid; + @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "map_5k_id", referencedColumnName = "fid") private MapInkx5kEntity map5k; diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearn5kEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearn5kEntity.java index 4e26409c..974ab5ee 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearn5kEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearn5kEntity.java @@ -54,4 +54,13 @@ public class MapSheetLearn5kEntity { @Column(name = "is_success") private Boolean isSuccess = false; + + @Column(name = "is_m1_fail") + private Boolean isM1Fail = false; + + @Column(name = "is_m2_fail") + private Boolean isM2Fail = false; + + @Column(name = "is_m3_fail") + private Boolean isM3Fail = false; } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearn5kRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearn5kRepositoryCustom.java index a81faeae..c3783621 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearn5kRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearn5kRepositoryCustom.java @@ -1,3 +1,9 @@ package com.kamco.cd.kamcoback.postgres.repository.Inference; -public interface MapSheetLearn5kRepositoryCustom {} +import java.util.List; +import java.util.UUID; + +public interface MapSheetLearn5kRepositoryCustom { + + void saveFail5k(UUID uuid, List failMapIds, String type); +} diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearn5kRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearn5kRepositoryImpl.java index 68c7593c..437abf06 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearn5kRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearn5kRepositoryImpl.java @@ -1,6 +1,62 @@ package com.kamco.cd.kamcoback.postgres.repository.Inference; +import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetLearn5kEntity.mapSheetLearn5kEntity; +import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetLearnEntity.mapSheetLearnEntity; + +import com.querydsl.core.types.dsl.BooleanPath; +import com.querydsl.jpa.impl.JPAQueryFactory; +import java.util.List; +import java.util.UUID; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @Repository -public class MapSheetLearn5kRepositoryImpl implements MapSheetLearn5kRepositoryCustom {} +@RequiredArgsConstructor +public class MapSheetLearn5kRepositoryImpl implements MapSheetLearn5kRepositoryCustom { + + private final JPAQueryFactory queryFactory; + + @Override + public void saveFail5k(UUID uuid, List failMapIds, String type) { + if (failMapIds == null || failMapIds.isEmpty()) { + return; + } + + Long id = + queryFactory + .select(mapSheetLearnEntity.id) + .from(mapSheetLearnEntity) + .where(mapSheetLearnEntity.uuid.eq(uuid)) + .fetchOne(); + + if (id == null) { + return; + } + + BooleanPath target; + + switch (type) { + case "M1": + target = mapSheetLearn5kEntity.isM1Fail; + break; + case "M2": + target = mapSheetLearn5kEntity.isM2Fail; + break; + case "M3": + target = mapSheetLearn5kEntity.isM3Fail; + break; + default: + return; + } + queryFactory + .update(mapSheetLearn5kEntity) + .set(target, true) + .where( + mapSheetLearn5kEntity + .learn + .id + .eq(id) + .and(mapSheetLearn5kEntity.mapSheetNum.in(failMapIds))) + .execute(); + } +} 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 4bca5c6a..e5e21aca 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 @@ -403,6 +403,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto Projections.constructor( Geom.class, mapSheetAnalDataInferenceGeomEntity.uuid, + mapSheetAnalDataInferenceGeomEntity.resultUid, mapSheetAnalDataInferenceGeomEntity.compareYyyy, mapSheetAnalDataInferenceGeomEntity.targetYyyy, mapSheetAnalDataInferenceGeomEntity.cdProb, diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java index 70a88916..4058600f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java @@ -18,6 +18,7 @@ import jakarta.transaction.Transactional; import java.time.ZonedDateTime; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.UUID; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -212,6 +213,8 @@ public class MapSheetInferenceJobService { // 추론 종료일때 geom 데이터 저장 inferenceResultCoreService.upsertGeomData(sheet.getId()); + // 추론 종료일때 도엽별 실패여부 저장 + // TODO jar로 생성하는걸로 변경 // 추론 종료일때 shp 파일 생성 // inferenceResultShpService.createShpFile(sheet.getId()); @@ -426,6 +429,13 @@ public class MapSheetInferenceJobService { saveInferenceAiDto.setCompletedJobs(dto.getCompletedJobs()); saveInferenceAiDto.setFailedJobs(dto.getFailedJobs()); inferenceResultCoreService.update(saveInferenceAiDto); + + List failedIds = + Optional.ofNullable(dto.getFailedIds()).orElse(List.of()).stream() + .map(Long::valueOf) + .toList(); + + inferenceResultCoreService.saveFail5k(uuid, failedIds, type); } /**