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 1a358bd2..4f4f4413 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 @@ -305,6 +305,8 @@ public class InferenceDetailDto { Long mapSheetNum; String mapSheetName; String subUid; + String pnu; + String passYn; // @JsonIgnore String gemoStr; // @JsonIgnore String geomCenterStr; @@ -323,7 +325,9 @@ public class InferenceDetailDto { Double classAfterProb, Long mapSheetNum, String mapSheetName, - String subUid) { + String subUid, + String pnu, + String passYn) { this.uuid = uuid; this.uid = uid; this.compareYyyy = compareYyyy; @@ -338,20 +342,8 @@ public class InferenceDetailDto { this.mapSheetNum = mapSheetNum; this.mapSheetName = mapSheetName; this.subUid = subUid; - // this.gemoStr = gemoStr; - // this.geomCenterStr = geomCenterStr; - // - // ObjectMapper mapper = new ObjectMapper(); - // JsonNode geomJson; - // JsonNode geomCenterJson; - // try { - // geomJson = mapper.readTree(gemoStr); - // geomCenterJson = mapper.readTree(geomCenterStr); - // } catch (JsonProcessingException e) { - // throw new RuntimeException(e); - // } - // this.gemo = geomJson; - // this.geomCenter = geomCenterJson; + this.pnu = pnu; + this.passYn = passYn; } } 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 9c8f5f37..00818101 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 @@ -178,6 +178,12 @@ public class InferenceResultDto { @Schema(description = "uid") private String uid; + @Schema(description = "uid 앞 8자리") + @JsonProperty("subUid") + public String subUid() { + return this.uid.substring(0, 8).toUpperCase(); + } + @Schema(description = "상태명") @JsonProperty("statusName") public String statusName() { diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/PnuEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/PnuEntity.java new file mode 100644 index 00000000..46daada7 --- /dev/null +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/PnuEntity.java @@ -0,0 +1,50 @@ +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.NotNull; +import jakarta.validation.constraints.Size; +import java.time.OffsetDateTime; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.ColumnDefault; + +@Getter +@Setter +@Entity +@Table(name = "tb_pnu") +public class PnuEntity { + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "tb_pnu_id_gen") + @SequenceGenerator(name = "tb_pnu_id_gen", sequenceName = "tb_pnu_uid", allocationSize = 1) + @Column(name = "id", nullable = false) + private Long id; + + @NotNull + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "geo_uid", nullable = false) + private MapSheetAnalDataInferenceGeomEntity geo; + + @Size(max = 19) + @Column(name = "pnu", length = 19) + private String pnu; + + @Column(name = "created_dttm") + private OffsetDateTime createdDttm; + + @Column(name = "created_uid") + private Long createdUid; + + @ColumnDefault("false") + @Column(name = "del_yn") + private Boolean delYn; +} 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 78c1cd70..99f07ea0 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,8 +1,10 @@ package com.kamco.cd.kamcoback.postgres.repository.Inference; +import static com.kamco.cd.kamcoback.postgres.entity.QMapInkx50kEntity.mapInkx50kEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapInkx5kEntity.mapInkx5kEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetLearn5kEntity.mapSheetLearn5kEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetLearnEntity.mapSheetLearnEntity; +import static com.querydsl.jpa.JPAExpressions.select; import com.kamco.cd.kamcoback.scheduler.dto.JobStatusDto; import com.querydsl.core.BooleanBuilder; @@ -10,7 +12,6 @@ import com.querydsl.core.types.dsl.BooleanPath; import com.querydsl.core.types.dsl.Expressions; import com.querydsl.core.types.dsl.NumberPath; import com.querydsl.core.types.dsl.StringPath; -import com.querydsl.jpa.JPAExpressions; import com.querydsl.jpa.impl.JPAQueryFactory; import java.util.List; import java.util.UUID; @@ -55,7 +56,7 @@ public class MapSheetLearn5kRepositoryImpl implements MapSheetLearn5kRepositoryC } var learnIdSubQuery = - JPAExpressions.select(mapSheetLearnEntity.id) + select(mapSheetLearnEntity.id) .from(mapSheetLearnEntity) .where(mapSheetLearnEntity.uuid.eq(uuid)); @@ -102,7 +103,7 @@ public class MapSheetLearn5kRepositoryImpl implements MapSheetLearn5kRepositoryC } var learnIdSubQuery = - JPAExpressions.select(mapSheetLearnEntity.id) + select(mapSheetLearnEntity.id) .from(mapSheetLearnEntity) .where(mapSheetLearnEntity.uuid.eq(uuid)); @@ -201,24 +202,30 @@ public class MapSheetLearn5kRepositoryImpl implements MapSheetLearn5kRepositoryC .fetch(); } + /** + * 추론 진행 도엽 목록 + * + * @param uuid uuid + * @return + */ @Override public List getInferenceRunMapId(UUID uuid) { return queryFactory - .select(mapInkx5kEntity.mapidNm) - .from(mapSheetLearnEntity) - .innerJoin(mapSheetLearn5kEntity) - .on(mapSheetLearn5kEntity.learn.id.eq(mapSheetLearnEntity.id)) - .innerJoin(mapInkx5kEntity) - .on( - Expressions.booleanTemplate( - "function('regexp_match', {0}, '^[0-9]+$') is not null", - mapInkx5kEntity.mapidcdNo) - .and( - mapSheetLearn5kEntity.mapSheetNum.eq( - Expressions.numberTemplate( - Long.class, "cast({0} as long)", mapInkx5kEntity.mapidcdNo)))) - .where(mapSheetLearnEntity.uuid.eq(uuid)) - .groupBy(mapInkx5kEntity.mapidNm) + .select(mapInkx50kEntity.mapidNm.concat(mapInkx50kEntity.mapidcdNo)) + .from(mapInkx50kEntity) + .join(mapInkx5kEntity) + .on(mapInkx5kEntity.mapInkx50k.fid.eq(mapInkx50kEntity.fid)) + .where( + mapInkx5kEntity.mapidcdNo.in( + select( + Expressions.stringTemplate( + "CAST({0} AS text)", mapSheetLearn5kEntity.mapSheetNum)) + .from(mapSheetLearnEntity) + .join(mapSheetLearn5kEntity) + .on(mapSheetLearn5kEntity.learn.id.eq(mapSheetLearnEntity.id)) + .where(mapSheetLearnEntity.uuid.eq(uuid)))) + .groupBy(mapInkx50kEntity.mapidcdNo, mapInkx50kEntity.mapidNm) + .orderBy(mapInkx50kEntity.mapidNm.asc()) .fetch(); } } 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 cb43eadb..0c332003 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 @@ -7,6 +7,7 @@ import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataInferenceG import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalInferenceEntity.mapSheetAnalInferenceEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalSttcEntity.mapSheetAnalSttcEntity; import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetLearnEntity.mapSheetLearnEntity; +import static com.kamco.cd.kamcoback.postgres.entity.QPnuEntity.pnuEntity; import static com.kamco.cd.kamcoback.postgres.entity.QSystemMetricEntity.systemMetricEntity; import com.kamco.cd.kamcoback.common.exception.CustomApiException; @@ -28,6 +29,8 @@ 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; +import com.querydsl.jpa.JPAExpressions; import com.querydsl.jpa.impl.JPAQueryFactory; import java.time.OffsetDateTime; import java.util.List; @@ -411,6 +414,13 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto NumberExpression inkxNoAsLong = Expressions.numberTemplate(Long.class, "cast({0} as long)", mapInkx5kEntity.mapidcdNo); + StringExpression pnu = + Expressions.stringTemplate( + "coalesce(({0}), '')", + JPAExpressions.select(Expressions.stringTemplate("string_agg({0}, ',')", pnuEntity.pnu)) + .from(pnuEntity) + .where(pnuEntity.geo.geoUid.eq(mapSheetAnalDataInferenceGeomEntity.geoUid))); + // 4) content List content = queryFactory @@ -430,7 +440,9 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto mapInkx5kEntity.mapidNm, Expressions.stringTemplate( "substring({0} from 1 for 8)", - mapSheetAnalDataInferenceGeomEntity.resultUid))) + mapSheetAnalDataInferenceGeomEntity.resultUid), + pnu, + Expressions.nullExpression(String.class))) .from(mapSheetAnalInferenceEntity) .join(mapSheetAnalDataInferenceEntity) .on(mapSheetAnalDataInferenceEntity.analUid.eq(mapSheetAnalInferenceEntity.id))