추론결과, 변화탐지 테이블 수정으로 인한 변경

This commit is contained in:
2026-01-07 15:54:04 +09:00
parent 718295a46d
commit a33dbf9597
4 changed files with 59 additions and 60 deletions

View File

@@ -11,7 +11,10 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.transaction.Transactional;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Tag(name = "변화탐지", description = "변화탐지 API")
@RequiredArgsConstructor
@@ -43,7 +46,7 @@ public class ChangeDetectionApiController {
@Operation(summary = "변화탐지 분류별 건수", description = "변화탐지 분류별 건수")
@GetMapping("/class-count")
public ApiResponseDto<List<ChangeDetectionDto.CountDto>> getChangeDetectionClassCount(
@Parameter(description = "변화탐지 년도(차수) /year-list 의 analUid", example = "1") @RequestParam
@Parameter(description = "변화탐지 년도(차수) /year-list 의 analUid", example = "53") @RequestParam
Long id,
@Parameter(description = "탐지된 도엽번호", example = "34602060") @RequestParam String mapSheetNum) {
return ApiResponseDto.ok(changeDetectionService.getChangeDetectionClassCount(id, mapSheetNum));
@@ -54,7 +57,7 @@ public class ChangeDetectionApiController {
public ApiResponseDto<ChangeDetectionDto.CogUrlDto> getChangeDetectionCogUrl(
@Parameter(description = "이전 년도", example = "2023") @RequestParam Integer beforeYear,
@Parameter(description = "이후 년도", example = "2024") @RequestParam Integer afterYear,
@Parameter(description = "도엽번호(5k)", example = "36809010") @RequestParam String mapSheetNum) {
@Parameter(description = "도엽번호(5k)", example = "35905086") @RequestParam String mapSheetNum) {
ChangeDetectionDto.CogUrlReq req =
new ChangeDetectionDto.CogUrlReq(beforeYear, afterYear, mapSheetNum);
return ApiResponseDto.ok(changeDetectionService.getChangeDetectionCogUrl(req));
@@ -69,15 +72,15 @@ public class ChangeDetectionApiController {
@Operation(summary = "변화탐지 탐지된 도엽 목록", description = "변화탐지 탐지된 도엽 목록")
@GetMapping("/map-list")
public ApiResponseDto<List<ChangeDetectionDto.MapSheetList>> getChangeDetectionMapSheetList(
@Parameter(description = "도목록 id", example = "1") @RequestParam Long analUid) {
@Parameter(description = "목록 그룹id", example = "1") @RequestParam Long analUid) {
return ApiResponseDto.ok(changeDetectionService.getChangeDetectionMapSheetList(analUid));
}
@Operation(summary = "변화탐지 결과 Polygon", description = "변화탐지 결과 Polygon")
@GetMapping("/polygon")
public ApiResponseDto<ChangeDetectionDto.PolygonFeatureList> getChangeDetectionPolygonList(
@Parameter(description = "년도목록 id", example = "1") @RequestParam Long analUid,
@Parameter(description = "도엽번호", example = "34602060") @RequestParam String mapSheetNum) {
@Parameter(description = "년도목록 id", example = "53") @RequestParam Long analUid,
@Parameter(description = "도엽번호", example = "35905086") @RequestParam String mapSheetNum) {
return ApiResponseDto.ok(
changeDetectionService.getChangeDetectionPolygonList(analUid, mapSheetNum));
}
@@ -85,8 +88,8 @@ public class ChangeDetectionApiController {
@Operation(summary = "변화탐지 결과 Point", description = "변화탐지 결과 Point")
@GetMapping("/point")
public ApiResponseDto<ChangeDetectionDto.PointFeatureList> getChangeDetectionPointList(
@Parameter(description = "년도목록 id", example = "1") @RequestParam Long analUid,
@Parameter(description = "도엽번호", example = "34602060") @RequestParam String mapSheetNum) {
@Parameter(description = "년도목록 id", example = "53") @RequestParam Long analUid,
@Parameter(description = "도엽번호", example = "35905086") @RequestParam String mapSheetNum) {
return ApiResponseDto.ok(
changeDetectionService.getChangeDetectionPointList(analUid, mapSheetNum));
}

View File

@@ -75,7 +75,7 @@ public class InferenceResultApiController {
})
@GetMapping("/summary/{id}")
public ApiResponseDto<InferenceResultDto.AnalResSummary> getInferenceResultSummary(
@Parameter(description = "목록 id", example = "1") @PathVariable Long id) {
@Parameter(description = "목록 id", example = "53") @PathVariable Long id) {
return ApiResponseDto.ok(inferenceResultService.getInferenceResultSummary(id));
}
@@ -94,7 +94,7 @@ public class InferenceResultApiController {
})
@GetMapping("/detail/{id}")
public ApiResponseDto<InferenceResultDto.Detail> getInferenceDetail(
@Parameter(description = "목록 id", example = "1") @PathVariable Long id) {
@Parameter(description = "목록 id", example = "53") @PathVariable Long id) {
return ApiResponseDto.ok(inferenceResultService.getDetail(id));
}
@@ -113,7 +113,7 @@ public class InferenceResultApiController {
})
@GetMapping("/geom/{id}")
public ApiResponseDto<Page<InferenceResultDto.Geom>> getInferenceResultGeomList(
@Parameter(description = "분석결과 id", example = "1") @PathVariable Long id,
@Parameter(description = "분석결과 id", example = "53") @PathVariable Long id,
@Parameter(description = "기준년도 분류", example = "land") @RequestParam(required = false)
String targetClass,
@Parameter(description = "비교년도 분류", example = "waste") @RequestParam(required = false)

View File

@@ -58,7 +58,6 @@ public class InferenceResultDto {
private Long id;
private String analTitle;
private String analMapSheet;
private Long detectingCnt;
@JsonFormatDttm private ZonedDateTime analStrtDttm;
@JsonFormatDttm private ZonedDateTime analEndDttm;
@@ -71,7 +70,6 @@ public class InferenceResultDto {
public AnalResList(
Long id,
String analTitle,
String analMapSheet,
Long detectingCnt,
ZonedDateTime analStrtDttm,
ZonedDateTime analEndDttm,
@@ -82,7 +80,6 @@ public class InferenceResultDto {
String gukyuinUsed) {
this.id = id;
this.analTitle = analTitle;
this.analMapSheet = analMapSheet;
this.detectingCnt = detectingCnt;
this.analStrtDttm = analStrtDttm;
this.analEndDttm = analEndDttm;
@@ -103,7 +100,6 @@ public class InferenceResultDto {
private String modelInfo;
private Integer targetYyyy;
private Integer compareYyyy;
private String analMapSheet;
@JsonFormatDttm private ZonedDateTime analStrtDttm;
@JsonFormatDttm private ZonedDateTime analEndDttm;
private Long analSec;
@@ -120,7 +116,6 @@ public class InferenceResultDto {
String modelInfo,
Integer targetYyyy,
Integer compareYyyy,
String analMapSheet,
ZonedDateTime analStrtDttm,
ZonedDateTime analEndDttm,
Long analSec,
@@ -135,7 +130,6 @@ public class InferenceResultDto {
this.modelInfo = modelInfo;
this.targetYyyy = targetYyyy;
this.compareYyyy = compareYyyy;
this.analMapSheet = analMapSheet;
this.analStrtDttm = analStrtDttm;
this.analEndDttm = analEndDttm;
this.analSec = analSec;

View File

@@ -1,5 +1,7 @@
package com.kamco.cd.kamcoback.postgres.repository.Inference;
import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalInferenceEntity.mapSheetAnalInferenceEntity;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.AnalResList;
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.AnalResSummary;
@@ -9,7 +11,6 @@ import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataInferenceEntity;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataInferenceGeomEntity;
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataInferenceEntity;
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataInferenceGeomEntity;
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalInferenceEntity;
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalSttcEntity;
import com.kamco.cd.kamcoback.postgres.entity.QModelMngBakEntity;
import com.kamco.cd.kamcoback.postgres.entity.QModelVerEntity;
@@ -41,8 +42,8 @@ public class MapSheetAnalDataInferenceRepositoryImpl
private final JPAQueryFactory queryFactory;
private final QModelMngBakEntity tmm = QModelMngBakEntity.modelMngBakEntity;
private final QModelVerEntity tmv = QModelVerEntity.modelVerEntity;
private final QMapSheetAnalInferenceEntity mapSheetAnalEntity =
QMapSheetAnalInferenceEntity.mapSheetAnalInferenceEntity;
// private final QMapSheetAnalEntity mapSheetAnalEntity =
// mapSheetAnalEntity;
private final QMapSheetAnalDataInferenceEntity MapSheetAnalDataInferenceEntity =
QMapSheetAnalDataInferenceEntity.mapSheetAnalDataInferenceEntity;
private final QMapSheetAnalDataInferenceGeomEntity MapSheetAnalDataInferenceGeomEntity =
@@ -62,12 +63,12 @@ public class MapSheetAnalDataInferenceRepositoryImpl
// "0000" 전체조회
BooleanBuilder builder = new BooleanBuilder();
if (searchReq.getStatCode() != null && !"0000".equals(searchReq.getStatCode())) {
builder.and(mapSheetAnalEntity.analState.eq(searchReq.getStatCode()));
builder.and(mapSheetAnalInferenceEntity.analState.eq(searchReq.getStatCode()));
}
// 제목
if (searchReq.getTitle() != null) {
builder.and(mapSheetAnalEntity.analTitle.like("%" + searchReq.getTitle() + "%"));
builder.and(mapSheetAnalInferenceEntity.analTitle.like("%" + searchReq.getTitle() + "%"));
}
List<AnalResList> content =
@@ -75,28 +76,28 @@ public class MapSheetAnalDataInferenceRepositoryImpl
.select(
Projections.constructor(
InferenceResultDto.AnalResList.class,
mapSheetAnalEntity.id,
mapSheetAnalEntity.analTitle,
mapSheetAnalEntity.detectingCnt,
mapSheetAnalEntity.analStrtDttm,
mapSheetAnalEntity.analEndDttm,
mapSheetAnalEntity.analSec,
mapSheetAnalEntity.analPredSec,
mapSheetAnalEntity.analState,
mapSheetAnalInferenceEntity.id,
mapSheetAnalInferenceEntity.analTitle,
mapSheetAnalInferenceEntity.detectingCnt,
mapSheetAnalInferenceEntity.analStrtDttm,
mapSheetAnalInferenceEntity.analEndDttm,
mapSheetAnalInferenceEntity.analSec,
mapSheetAnalInferenceEntity.analPredSec,
mapSheetAnalInferenceEntity.analState,
Expressions.stringTemplate(
"fn_code_name({0}, {1})", "0002", mapSheetAnalEntity.analState),
mapSheetAnalEntity.gukyuinUsed))
.from(mapSheetAnalEntity)
"fn_code_name({0}, {1})", "0002", mapSheetAnalInferenceEntity.analState),
mapSheetAnalInferenceEntity.gukyuinUsed))
.from(mapSheetAnalInferenceEntity)
.where(builder)
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.orderBy(mapSheetAnalEntity.id.desc())
.orderBy(mapSheetAnalInferenceEntity.id.desc())
.fetch();
long total =
queryFactory
.select(mapSheetAnalEntity.id)
.from(mapSheetAnalEntity)
.select(mapSheetAnalInferenceEntity.id)
.from(mapSheetAnalInferenceEntity)
.where(builder)
.fetchCount();
@@ -122,27 +123,28 @@ public class MapSheetAnalDataInferenceRepositoryImpl
.select(
Projections.constructor(
InferenceResultDto.AnalResSummary.class,
mapSheetAnalEntity.id,
mapSheetAnalEntity.analTitle,
mapSheetAnalInferenceEntity.id,
mapSheetAnalInferenceEntity.analTitle,
tmm.modelNm.concat(" ").concat(tmv.modelVer).as("modelInfo"),
mapSheetAnalEntity.targetYyyy,
mapSheetAnalEntity.compareYyyy,
mapSheetAnalEntity.analStrtDttm,
mapSheetAnalEntity.analEndDttm,
mapSheetAnalEntity.analSec,
mapSheetAnalEntity.analPredSec,
mapSheetAnalEntity.resultUrl,
mapSheetAnalEntity.detectingCnt,
mapSheetAnalEntity.accuracy,
mapSheetAnalEntity.analState,
mapSheetAnalInferenceEntity.targetYyyy,
mapSheetAnalInferenceEntity.compareYyyy,
mapSheetAnalInferenceEntity.analStrtDttm,
mapSheetAnalInferenceEntity.analEndDttm,
mapSheetAnalInferenceEntity.analSec,
mapSheetAnalInferenceEntity.analPredSec,
mapSheetAnalInferenceEntity.resultUrl,
mapSheetAnalInferenceEntity.detectingCnt,
mapSheetAnalInferenceEntity.accuracy,
mapSheetAnalInferenceEntity.analState,
Expressions.stringTemplate(
"fn_code_name({0}, {1})", "0002", mapSheetAnalEntity.analState)))
.from(mapSheetAnalEntity)
"fn_code_name({0}, {1})",
"0002", mapSheetAnalInferenceEntity.analState)))
.from(mapSheetAnalInferenceEntity)
.leftJoin(tmm)
.on(mapSheetAnalEntity.modelUid.eq(tmm.id))
.on(mapSheetAnalInferenceEntity.modelUid.eq(tmm.id))
.leftJoin(tmv)
.on(tmv.modelUid.eq(tmm.id).and(tmv.id.eq(latestVerUidSub)))
.where(mapSheetAnalEntity.id.eq(id))
.where(mapSheetAnalInferenceEntity.id.eq(id))
.fetchOne());
return content;
}
@@ -231,7 +233,7 @@ public class MapSheetAnalDataInferenceRepositoryImpl
BooleanBuilder builder = new BooleanBuilder();
// 추론결과 id
builder.and(mapSheetAnalEntity.id.eq(id));
builder.and(mapSheetAnalInferenceEntity.id.eq(id));
// 기준년도 분류
if (searchGeoReq.getTargetClass() != null && !searchGeoReq.getTargetClass().equals("")) {
@@ -269,9 +271,9 @@ public class MapSheetAnalDataInferenceRepositoryImpl
MapSheetAnalDataInferenceGeomEntity.mapSheetNum,
MapSheetAnalDataInferenceGeomEntity.geom,
MapSheetAnalDataInferenceGeomEntity.geomCenter))
.from(mapSheetAnalEntity)
.from(mapSheetAnalInferenceEntity)
.join(MapSheetAnalDataInferenceEntity)
.on(MapSheetAnalDataInferenceEntity.analUid.eq(mapSheetAnalEntity.id))
.on(MapSheetAnalDataInferenceEntity.analUid.eq(mapSheetAnalInferenceEntity.id))
.join(MapSheetAnalDataInferenceGeomEntity)
.on(MapSheetAnalDataInferenceGeomEntity.dataUid.eq(MapSheetAnalDataInferenceEntity.id))
.where(builder)
@@ -282,9 +284,9 @@ public class MapSheetAnalDataInferenceRepositoryImpl
long total =
queryFactory
.select(MapSheetAnalDataInferenceGeomEntity.geoUid)
.from(mapSheetAnalEntity)
.from(mapSheetAnalInferenceEntity)
.join(MapSheetAnalDataInferenceEntity)
.on(MapSheetAnalDataInferenceEntity.analUid.eq(mapSheetAnalEntity.id))
.on(MapSheetAnalDataInferenceEntity.analUid.eq(mapSheetAnalInferenceEntity.id))
.join(MapSheetAnalDataInferenceGeomEntity)
.on(MapSheetAnalDataInferenceGeomEntity.dataUid.eq(MapSheetAnalDataInferenceEntity.id))
.where(builder)
@@ -303,10 +305,10 @@ public class MapSheetAnalDataInferenceRepositoryImpl
public List<Long> getSheets(Long id) {
return queryFactory
.select(MapSheetAnalDataInferenceEntity.mapSheetNum)
.from(mapSheetAnalEntity)
.from(mapSheetAnalInferenceEntity)
.join(MapSheetAnalDataInferenceEntity)
.on(MapSheetAnalDataInferenceEntity.analUid.eq(mapSheetAnalEntity.id))
.where(mapSheetAnalEntity.id.eq(id))
.on(MapSheetAnalDataInferenceEntity.analUid.eq(mapSheetAnalInferenceEntity.id))
.where(mapSheetAnalInferenceEntity.id.eq(id))
.groupBy(MapSheetAnalDataInferenceEntity.mapSheetNum)
.fetch();
}