diff --git a/src/main/java/com/kamco/cd/kamcoback/changedetection/ChangeDetectionApiController.java b/src/main/java/com/kamco/cd/kamcoback/changedetection/ChangeDetectionApiController.java index 5c44fbdb..f4b756cf 100644 --- a/src/main/java/com/kamco/cd/kamcoback/changedetection/ChangeDetectionApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/changedetection/ChangeDetectionApiController.java @@ -163,13 +163,13 @@ public class ChangeDetectionApiController { @RequestParam String chnDtctId, @Parameter(description = "polygon 32자 uid", example = "3B1A7E5F895A4D9698489540EE1BBE1E") - @RequestParam + @RequestParam(required = false) String cdObjectId, @Parameter( description = "polygon 32자 uids", example = "3B1A7E5F895A4D9698489540EE1BBE1E,3B221A2AF9614647A0903A972D56C574,3B22686A7ACE44FC9CB20F1B4FA6DEFD,3B376D94A183479BB5FBE3D7166E6E1A") - @RequestParam + @RequestParam(required = false) List cdObjectIds, @Parameter(description = "pnu") @RequestParam(required = false) String pnu) { return ApiResponseDto.ok( @@ -183,13 +183,13 @@ public class ChangeDetectionApiController { @RequestParam String chnDtctId, @Parameter(description = "polygon 32자 uid", example = "3B1A7E5F895A4D9698489540EE1BBE1E") - @RequestParam + @RequestParam(required = false) String cdObjectId, @Parameter( description = "polygon 32자 uids", example = "3B1A7E5F895A4D9698489540EE1BBE1E,3B221A2AF9614647A0903A972D56C574,3B22686A7ACE44FC9CB20F1B4FA6DEFD,3B376D94A183479BB5FBE3D7166E6E1A") - @RequestParam + @RequestParam(required = false) List cdObjectIds, @Parameter(description = "pnu") @RequestParam(required = false) String pnu) { return ApiResponseDto.ok( diff --git a/src/main/java/com/kamco/cd/kamcoback/changedetection/service/ChangeDetectionService.java b/src/main/java/com/kamco/cd/kamcoback/changedetection/service/ChangeDetectionService.java index 5418deaf..1f168378 100644 --- a/src/main/java/com/kamco/cd/kamcoback/changedetection/service/ChangeDetectionService.java +++ b/src/main/java/com/kamco/cd/kamcoback/changedetection/service/ChangeDetectionService.java @@ -101,7 +101,7 @@ public class ChangeDetectionService { */ public ChangeDetectionDto.PolygonFeatureList getPolygonListByCd( String chnDtctId, String cdObjectId, List cdObjectIds, String pnu) { - return changeDetectionCoreService.getPolygonListByCd(chnDtctId, cdObjectId, cdObjectIds); + return changeDetectionCoreService.getPolygonListByCd(chnDtctId, cdObjectId, cdObjectIds, pnu); } /** @@ -115,7 +115,7 @@ public class ChangeDetectionService { */ public ChangeDetectionDto.PointFeatureList getPointListByCd( String chnDtctId, String cdObjectId, List cdObjectIds, String pnu) { - return changeDetectionCoreService.getPointListByCd(chnDtctId, cdObjectId, cdObjectIds); + return changeDetectionCoreService.getPointListByCd(chnDtctId, cdObjectId, cdObjectIds, pnu); } /** diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ChangeDetectionCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ChangeDetectionCoreService.java index b8a1dffc..c67c1af9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ChangeDetectionCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ChangeDetectionCoreService.java @@ -108,8 +108,8 @@ public class ChangeDetectionCoreService { * @return */ public ChangeDetectionDto.PolygonFeatureList getPolygonListByCd( - String chnDtctId, String cdObjectId, List cdObjectIds) { - return changeDetectionRepository.getPolygonListByCd(chnDtctId, cdObjectId, cdObjectIds); + String chnDtctId, String cdObjectId, List cdObjectIds, String pnu) { + return changeDetectionRepository.getPolygonListByCd(chnDtctId, cdObjectId, cdObjectIds, pnu); } /** @@ -121,8 +121,8 @@ public class ChangeDetectionCoreService { * @return */ public ChangeDetectionDto.PointFeatureList getPointListByCd( - String chnDtctId, String cdObjectId, List cdObjectIds) { - return changeDetectionRepository.getPointListByCd(chnDtctId, cdObjectId, cdObjectIds); + String chnDtctId, String cdObjectId, List cdObjectIds, String pnu) { + return changeDetectionRepository.getPointListByCd(chnDtctId, cdObjectId, cdObjectIds, pnu); } /** diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryCustom.java index 012d7ead..7190ebf9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryCustom.java @@ -31,10 +31,10 @@ public interface ChangeDetectionRepositoryCustom { List getChangeDetectionMapSheet50kList(UUID uuid); ChangeDetectionDto.PolygonFeatureList getPolygonListByCd( - String chnDtctId, String cdObjectId, List cdObjectIds); + String chnDtctId, String cdObjectId, List cdObjectIds, String pnu); ChangeDetectionDto.PointFeatureList getPointListByCd( - String chnDtctId, String cdObjectId, List cdObjectIds); + String chnDtctId, String cdObjectId, List cdObjectIds, String pnu); ChangeDetectionDto.PolygonFeatureList getSelectedChangeDetectionPolygonListByPnu( String chnDtctId, String pnu); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryImpl.java index 4a73a3b2..ad9e1720 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/changedetection/ChangeDetectionRepositoryImpl.java @@ -18,7 +18,9 @@ import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto.DetectSearc import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto.MapScaleType; import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto.MapSheetList; import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto.PointFeatureList; +import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto.PointQueryData; import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto.PolygonFeatureList; +import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto.PolygonQueryData; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Status; import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataInferenceGeomEntity; import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataInferenceEntity; @@ -31,6 +33,7 @@ import com.querydsl.core.types.dsl.CaseBuilder; import com.querydsl.core.types.dsl.Expressions; import com.querydsl.core.types.dsl.StringExpression; import com.querydsl.jpa.JPAExpressions; +import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; import java.util.List; import java.util.Objects; @@ -391,16 +394,23 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport @Override public PolygonFeatureList getPolygonListByCd( - String chnDtctId, String cdObjectId, List cdObjectIds) { + String chnDtctId, String cdObjectId, List cdObjectIds, String pnu) { BooleanBuilder builder = new BooleanBuilder(); builder.and(mapSheetLearnEntity.uid.eq(chnDtctId)); - builder.and( - mapSheetAnalDataInferenceGeomEntity - .resultUid - .eq(chnDtctId) - .or(mapSheetAnalDataInferenceGeomEntity.resultUid.in(cdObjectIds))); - List list = + // pnu가 들어온 경우 + boolean hasPnu = pnu != null && !pnu.isBlank(); + + if (!hasPnu) { + builder.and( + mapSheetAnalDataInferenceGeomEntity + .resultUid + .eq(chnDtctId) + .or(mapSheetAnalDataInferenceGeomEntity.resultUid.in(cdObjectIds))); + } + + // List list = + JPAQuery query = queryFactory .select( Projections.constructor( @@ -425,10 +435,22 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport .innerJoin(mapSheetAnalInferenceEntity) .on(mapSheetAnalInferenceEntity.id.eq(mapSheetAnalDataInferenceEntity.analUid)) .innerJoin(mapSheetLearnEntity) - .on(mapSheetLearnEntity.id.eq(mapSheetAnalInferenceEntity.learnId)) - .where(builder) - .orderBy(mapSheetAnalDataInferenceGeomEntity.mapSheetNum.asc()) - .fetch(); + .on(mapSheetLearnEntity.id.eq(mapSheetAnalInferenceEntity.learnId)); + // .where(builder) + // .orderBy(mapSheetAnalDataInferenceGeomEntity.mapSheetNum.asc()); + // .fetch(); + + // 🔥 pnu 조건이면 tb_pnu join 추가 + if (hasPnu) { + query + .innerJoin(pnuEntity) + .on(pnuEntity.geo.geoUid.eq(mapSheetAnalDataInferenceGeomEntity.geoUid)); + + builder.and(pnuEntity.pnu.eq(pnu)); + } + + List list = + query.where(builder).orderBy(mapSheetAnalDataInferenceGeomEntity.mapSheetNum.asc()).fetch(); ObjectMapper mapper = new ObjectMapper(); List result = @@ -470,16 +492,23 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport @Override public PointFeatureList getPointListByCd( - String chnDtctId, String cdObjectId, List cdObjectIds) { + String chnDtctId, String cdObjectId, List cdObjectIds, String pnu) { BooleanBuilder builder = new BooleanBuilder(); builder.and(mapSheetLearnEntity.uid.eq(chnDtctId)); - builder.and( - mapSheetAnalDataInferenceGeomEntity - .resultUid - .eq(chnDtctId) - .or(mapSheetAnalDataInferenceGeomEntity.resultUid.in(cdObjectIds))); - List list = + // pnu가 들어온 경우 + boolean hasPnu = pnu != null && !pnu.isBlank(); + + if (!hasPnu) { + builder.and( + mapSheetAnalDataInferenceGeomEntity + .resultUid + .eq(chnDtctId) + .or(mapSheetAnalDataInferenceGeomEntity.resultUid.in(cdObjectIds))); + } + + // List list = + JPAQuery query = queryFactory .select( Projections.constructor( @@ -498,9 +527,21 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport .innerJoin(mapSheetAnalInferenceEntity) .on(mapSheetAnalInferenceEntity.id.eq(mapSheetAnalDataInferenceEntity.analUid)) .innerJoin(mapSheetLearnEntity) - .on(mapSheetLearnEntity.id.eq(mapSheetAnalInferenceEntity.learnId)) - .where(builder) - .fetch(); + .on(mapSheetLearnEntity.id.eq(mapSheetAnalInferenceEntity.learnId)); + // .where(builder) + // .fetch(); + + // 🔥 pnu 조건이면 tb_pnu join 추가 + if (hasPnu) { + query + .innerJoin(pnuEntity) + .on(pnuEntity.geo.geoUid.eq(mapSheetAnalDataInferenceGeomEntity.geoUid)); + + builder.and(pnuEntity.pnu.eq(pnu)); + } + + List list = + query.where(builder).orderBy(mapSheetAnalDataInferenceGeomEntity.mapSheetNum.asc()).fetch(); ObjectMapper mapper = new ObjectMapper(); List result =