Merge pull request '개발서버 반영' (#23) from feat/demo-20251205 into develop
Reviewed-on: https://kamco.gitea.gs.dabeeo.com/dabeeo/kamco-dabeeo-backoffice/pulls/23
This commit is contained in:
@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
@Tag(name = "변화탐지", description = "변화탐지 API")
|
@Tag(name = "변화탐지", description = "변화탐지 API")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/change-detection")
|
@RequestMapping({"/api/change-detection", "/demo/api/change-detection"})
|
||||||
@Transactional
|
@Transactional
|
||||||
public class ChangeDetectionApiController {
|
public class ChangeDetectionApiController {
|
||||||
|
|
||||||
@@ -41,11 +41,12 @@ public class ChangeDetectionApiController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "변화탐지 분류별 건수", description = "변화탐지 분류별 건수")
|
@Operation(summary = "변화탐지 분류별 건수", description = "변화탐지 분류별 건수")
|
||||||
@GetMapping("/class-count/{id}")
|
@GetMapping("/class-count")
|
||||||
public ApiResponseDto<List<ChangeDetectionDto.CountDto>> getChangeDetectionClassCount(
|
public ApiResponseDto<List<ChangeDetectionDto.CountDto>> getChangeDetectionClassCount(
|
||||||
@Parameter(description = "변화탐지 년도(차수) /year-list 의 analUid", example = "1") @PathVariable
|
@Parameter(description = "변화탐지 년도(차수) /year-list 의 analUid", example = "1") @RequestParam
|
||||||
Long id) {
|
Long id,
|
||||||
return ApiResponseDto.ok(changeDetectionService.getChangeDetectionClassCount(id));
|
@Parameter(description = "탐지된 도엽번호", example = "34602060") @RequestParam String mapSheetNum) {
|
||||||
|
return ApiResponseDto.ok(changeDetectionService.getChangeDetectionClassCount(id, mapSheetNum));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "변화탐지 COG Url", description = "변화탐지 COG Url")
|
@Operation(summary = "변화탐지 COG Url", description = "변화탐지 COG Url")
|
||||||
@@ -64,4 +65,29 @@ public class ChangeDetectionApiController {
|
|||||||
public ApiResponseDto<List<ChangeDetectionDto.AnalYearList>> getChangeDetectionYearList() {
|
public ApiResponseDto<List<ChangeDetectionDto.AnalYearList>> getChangeDetectionYearList() {
|
||||||
return ApiResponseDto.ok(changeDetectionService.getChangeDetectionYearList());
|
return ApiResponseDto.ok(changeDetectionService.getChangeDetectionYearList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "변화탐지 탐지된 도엽 목록", description = "변화탐지 탐지된 도엽 목록")
|
||||||
|
@GetMapping("/map-list")
|
||||||
|
public ApiResponseDto<List<ChangeDetectionDto.MapSheetList>> getChangeDetectionMapSheetList(
|
||||||
|
@Parameter(description = "년도목록 id", example = "1") @RequestParam Long analUid) {
|
||||||
|
return ApiResponseDto.ok(changeDetectionService.getChangeDetectionMapSheetList(analUid));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "변화탐지 결과 Polygon", description = "변화탐지 결과 Polygon")
|
||||||
|
@GetMapping("/polygon")
|
||||||
|
public ApiResponseDto<List<ChangeDetectionDto.PolygonGeometry>> getChangeDetectionPolygonList(
|
||||||
|
@Parameter(description = "년도목록 id", example = "1") @RequestParam Long analUid,
|
||||||
|
@Parameter(description = "도엽번호", example = "34602060") @RequestParam String mapSheetNum) {
|
||||||
|
return ApiResponseDto.ok(
|
||||||
|
changeDetectionService.getChangeDetectionPolygonList(analUid, mapSheetNum));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "변화탐지 결과 Point", description = "변화탐지 결과 Point")
|
||||||
|
@GetMapping("/point")
|
||||||
|
public ApiResponseDto<List<ChangeDetectionDto.PointGeometry>> getChangeDetectionPointList(
|
||||||
|
@Parameter(description = "년도목록 id", example = "1") @RequestParam Long analUid,
|
||||||
|
@Parameter(description = "도엽번호", example = "34602060") @RequestParam String mapSheetNum) {
|
||||||
|
return ApiResponseDto.ok(
|
||||||
|
changeDetectionService.getChangeDetectionPointList(analUid, mapSheetNum));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ public class ChangeDetectionDto {
|
|||||||
private Long id;
|
private Long id;
|
||||||
private Geometry polygon;
|
private Geometry polygon;
|
||||||
private Double centroidX;
|
private Double centroidX;
|
||||||
;
|
|
||||||
private Double centroidY;
|
private Double centroidY;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,6 +67,17 @@ public class ChangeDetectionDto {
|
|||||||
private String baseMapSheetNum;
|
private String baseMapSheetNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Schema(name = "MapSheetList", description = "년도에 해당하는 도엽 목록")
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public static class MapSheetList {
|
||||||
|
private String mapSheetNum;
|
||||||
|
private String mapSheetName;
|
||||||
|
private String alias;
|
||||||
|
}
|
||||||
|
|
||||||
@Schema(name = "PolygonGeometry", description = "폴리곤 리턴 객체")
|
@Schema(name = "PolygonGeometry", description = "폴리곤 리턴 객체")
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@@ -75,37 +85,30 @@ public class ChangeDetectionDto {
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public static class PointGeometry {
|
public static class PointGeometry {
|
||||||
private Long geoUid;
|
private Long geoUid;
|
||||||
private String type; // "Point"
|
private Geometry geometry; // Point 값
|
||||||
private Geometry coordinates; // Point 값
|
private String classCd; // after 분류
|
||||||
private String before_class; // 기준 분류
|
|
||||||
private String after_class; // 비교 분류
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schema(name = "PolygonGeometry", description = "폴리곤 리턴 객체")
|
@Schema(name = "PolygonGeometry", description = "폴리곤 리턴 객체")
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public static class PolygonGeometry {
|
public static class PolygonGeometry {
|
||||||
private Long geoUid;
|
private Long geoUid;
|
||||||
private String type; // "MultiPolygon"
|
private Geometry geometry; // Polygon 값
|
||||||
private Geometry coordinates; // Polygon 값
|
private PolygonProperties properties;
|
||||||
private Double center_latitude; // 폴리곤 중심 위도
|
|
||||||
private Double center_longitude; // 폴리곤 중심 경도
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schema(name = "PolygonProperties", description = "폴리곤 정보")
|
@Schema(name = "PolygonProperties", description = "폴리곤 정보")
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public static class PolygonProperties {
|
public static class PolygonProperties {
|
||||||
private Double area; // 면적
|
private Double area; // 면적
|
||||||
private String before_year; // 기준년도
|
private Integer beforeYear; // 기준년도
|
||||||
private Double before_confidence; // 기준 신뢰도(확률)
|
private Double beforeConfidence; // 기준 신뢰도(확률)
|
||||||
private String before_class; // 기준 분류
|
private String beforeClass; // 기준 분류
|
||||||
private String after_year; // 비교년도
|
private Integer afterYear; // 비교년도
|
||||||
private Double after_confidence; // 비교 신뢰도(확률)
|
private Double afterConfidence; // 비교 신뢰도(확률)
|
||||||
private String after_class; // 비교 분류
|
private String afterClass; // 비교 분류
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,8 +21,9 @@ public class ChangeDetectionService {
|
|||||||
return changeDetectionCoreService.getPolygonToJson();
|
return changeDetectionCoreService.getPolygonToJson();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ChangeDetectionDto.CountDto> getChangeDetectionClassCount(Long id) {
|
public List<ChangeDetectionDto.CountDto> getChangeDetectionClassCount(
|
||||||
return changeDetectionCoreService.getChangeDetectionClassCount(id);
|
Long id, String mapSheetNum) {
|
||||||
|
return changeDetectionCoreService.getChangeDetectionClassCount(id, mapSheetNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ChangeDetectionDto.CogUrlDto getChangeDetectionCogUrl(ChangeDetectionDto.CogUrlReq req) {
|
public ChangeDetectionDto.CogUrlDto getChangeDetectionCogUrl(ChangeDetectionDto.CogUrlReq req) {
|
||||||
@@ -32,4 +33,18 @@ public class ChangeDetectionService {
|
|||||||
public List<ChangeDetectionDto.AnalYearList> getChangeDetectionYearList() {
|
public List<ChangeDetectionDto.AnalYearList> getChangeDetectionYearList() {
|
||||||
return changeDetectionCoreService.getChangeDetectionYearList();
|
return changeDetectionCoreService.getChangeDetectionYearList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ChangeDetectionDto.PolygonGeometry> getChangeDetectionPolygonList(
|
||||||
|
Long analUid, String mapSheetNum) {
|
||||||
|
return changeDetectionCoreService.getChangeDetectionPolygonList(analUid, mapSheetNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ChangeDetectionDto.PointGeometry> getChangeDetectionPointList(
|
||||||
|
Long analUid, String mapSheetNum) {
|
||||||
|
return changeDetectionCoreService.getChangeDetectionPointList(analUid, mapSheetNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ChangeDetectionDto.MapSheetList> getChangeDetectionMapSheetList(Long analUid) {
|
||||||
|
return changeDetectionCoreService.getChangeDetectionMapSheetList(analUid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,4 +41,14 @@ public enum DetectionClassification {
|
|||||||
return ETC;
|
return ETC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Desc 한글명 get 하기
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String fromStrDesc(String text) {
|
||||||
|
DetectionClassification dtf = fromString(text);
|
||||||
|
return dtf.getDesc();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,9 +103,9 @@ public class InferenceResultApiController {
|
|||||||
@ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content),
|
@ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content),
|
||||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||||
})
|
})
|
||||||
@GetMapping("/detail")
|
@GetMapping("/detail/{id}")
|
||||||
public ApiResponseDto<InferenceResultDto.Detail> getInferenceDetail(
|
public ApiResponseDto<InferenceResultDto.Detail> getInferenceDetail(
|
||||||
@Parameter(description = "목록 id", example = "1") @RequestParam Long id) {
|
@Parameter(description = "목록 id", example = "1") @PathVariable Long id) {
|
||||||
return ApiResponseDto.ok(inferenceResultService.getDetail(id));
|
return ApiResponseDto.ok(inferenceResultService.getDetail(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -148,47 +148,14 @@ public class InferenceResultDto {
|
|||||||
@Getter
|
@Getter
|
||||||
public static class Dashboard {
|
public static class Dashboard {
|
||||||
|
|
||||||
Integer compareYyyy;
|
String classAfterCd;
|
||||||
Integer targetYyyy;
|
|
||||||
Long mapSheetNum;
|
|
||||||
String classBeforeName;
|
|
||||||
String classAfterName;
|
String classAfterName;
|
||||||
Long classBeforeCnt;
|
|
||||||
Long classAfterCnt;
|
Long classAfterCnt;
|
||||||
@JsonFormatDttm ZonedDateTime createdDttm;
|
|
||||||
Long createdUid;
|
|
||||||
@JsonFormatDttm ZonedDateTime updatedDttm;
|
|
||||||
Long updatedUid;
|
|
||||||
Long refMapSheetNum;
|
|
||||||
Long dataUid;
|
|
||||||
|
|
||||||
public Dashboard(
|
public Dashboard(String classAfterCd, Long classAfterCnt) {
|
||||||
Integer compareYyyy,
|
this.classAfterCd = classAfterCd;
|
||||||
Integer targetYyyy,
|
this.classAfterName = DetectionClassification.fromString(classAfterCd).getDesc();
|
||||||
Long mapSheetNum,
|
|
||||||
String classBeforeName,
|
|
||||||
String classAfterName,
|
|
||||||
Long classBeforeCnt,
|
|
||||||
Long classAfterCnt,
|
|
||||||
ZonedDateTime createdDttm,
|
|
||||||
Long createdUid,
|
|
||||||
ZonedDateTime updatedDttm,
|
|
||||||
Long updatedUid,
|
|
||||||
Long refMapSheetNum,
|
|
||||||
Long dataUid) {
|
|
||||||
this.compareYyyy = compareYyyy;
|
|
||||||
this.targetYyyy = targetYyyy;
|
|
||||||
this.mapSheetNum = mapSheetNum;
|
|
||||||
this.classBeforeName = classBeforeName;
|
|
||||||
this.classAfterName = classAfterName;
|
|
||||||
this.classBeforeCnt = classBeforeCnt;
|
|
||||||
this.classAfterCnt = classAfterCnt;
|
this.classAfterCnt = classAfterCnt;
|
||||||
this.createdDttm = createdDttm;
|
|
||||||
this.createdUid = createdUid;
|
|
||||||
this.updatedDttm = updatedDttm;
|
|
||||||
this.updatedUid = updatedUid;
|
|
||||||
this.refMapSheetNum = refMapSheetNum;
|
|
||||||
this.dataUid = dataUid;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,9 +163,13 @@ public class InferenceResultDto {
|
|||||||
public static class Detail {
|
public static class Detail {
|
||||||
|
|
||||||
AnalResSummary summary;
|
AnalResSummary summary;
|
||||||
|
List<Dashboard> dashboard;
|
||||||
|
Long totalCnt;
|
||||||
|
|
||||||
public Detail(AnalResSummary summary) {
|
public Detail(AnalResSummary summary, List<Dashboard> dashboard, Long totalCnt) {
|
||||||
this.summary = summary;
|
this.summary = summary;
|
||||||
|
this.dashboard = dashboard;
|
||||||
|
this.totalCnt = totalCnt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.kamco.cd.kamcoback.inference.service;
|
package com.kamco.cd.kamcoback.inference.service;
|
||||||
|
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
||||||
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Dashboard;
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Detail;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Detail;
|
||||||
import com.kamco.cd.kamcoback.postgres.core.InferenceResultCoreService;
|
import com.kamco.cd.kamcoback.postgres.core.InferenceResultCoreService;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -37,6 +38,16 @@ public class InferenceResultService {
|
|||||||
return inferenceResultCoreService.getInferenceResultSummary(id);
|
return inferenceResultCoreService.getInferenceResultSummary(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 분석결과 상세 class name별 탐지 개수
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<Dashboard> getDashboard(Long id) {
|
||||||
|
return inferenceResultCoreService.getDashboard(id);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 분석결과 상세 목록
|
* 분석결과 상세 목록
|
||||||
*
|
*
|
||||||
@@ -57,7 +68,14 @@ public class InferenceResultService {
|
|||||||
public Detail getDetail(Long id) {
|
public Detail getDetail(Long id) {
|
||||||
// summary
|
// summary
|
||||||
InferenceResultDto.AnalResSummary summary = this.getInferenceResultSummary(id);
|
InferenceResultDto.AnalResSummary summary = this.getInferenceResultSummary(id);
|
||||||
return new Detail(summary);
|
|
||||||
|
// Dashboard
|
||||||
|
List<Dashboard> dashboards = this.getDashboard(id);
|
||||||
|
|
||||||
|
// 전체 탐지건수
|
||||||
|
Long totalCnt = dashboards.stream().mapToLong(Dashboard::getClassAfterCnt).sum();
|
||||||
|
|
||||||
|
return new Detail(summary, dashboards, totalCnt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -31,11 +31,18 @@ public class ErrorLogApiController {
|
|||||||
@RequestParam(required = false) LocalDate endDate,
|
@RequestParam(required = false) LocalDate endDate,
|
||||||
@RequestParam int page,
|
@RequestParam int page,
|
||||||
@RequestParam(defaultValue = "20") int size) {
|
@RequestParam(defaultValue = "20") int size) {
|
||||||
|
try {
|
||||||
|
|
||||||
ErrorLogDto.ErrorSearchReq searchReq =
|
ErrorLogDto.ErrorSearchReq searchReq =
|
||||||
new ErrorLogDto.ErrorSearchReq(
|
new ErrorLogDto.ErrorSearchReq(
|
||||||
logErrorLevel, eventType, startDate, endDate, page, size, "created_dttm,desc");
|
logErrorLevel, eventType, startDate, endDate, page, size, "created_dttm,desc");
|
||||||
Page<ErrorLogDto.Basic> result = errorLogService.findLogByError(searchReq);
|
Page<ErrorLogDto.Basic> result = errorLogService.findLogByError(searchReq);
|
||||||
|
|
||||||
return ApiResponseDto.ok(result);
|
return ApiResponseDto.ok(result);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
package com.kamco.cd.kamcoback.log.dto;
|
package com.kamco.cd.kamcoback.log.dto;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
|
||||||
import com.kamco.cd.kamcoback.config.enums.EnumType;
|
import com.kamco.cd.kamcoback.config.enums.EnumType;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.ZonedDateTime;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@@ -18,43 +15,21 @@ public class ErrorLogDto {
|
|||||||
|
|
||||||
@Schema(name = "ErrorLogBasic", description = "에러로그 기본 정보")
|
@Schema(name = "ErrorLogBasic", description = "에러로그 기본 정보")
|
||||||
@Getter
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@AllArgsConstructor
|
||||||
public static class Basic {
|
public static class Basic {
|
||||||
|
|
||||||
@JsonIgnore private final Long id;
|
private final Long id;
|
||||||
private final String requestId;
|
private final String serviceName;
|
||||||
|
private final String menuNm;
|
||||||
|
private final String loginId;
|
||||||
|
private final String userName;
|
||||||
private final EventType errorType;
|
private final EventType errorType;
|
||||||
|
private final String errorName;
|
||||||
private final LogErrorLevel errorLevel;
|
private final LogErrorLevel errorLevel;
|
||||||
private final String errorCode;
|
private final String errorCode;
|
||||||
private final String errorMessage;
|
private final String errorMessage;
|
||||||
private final String stackTrace;
|
private final String createDate; // to_char해서 가져옴
|
||||||
private final Long handlerUid;
|
|
||||||
|
|
||||||
@JsonFormatDttm private final ZonedDateTime handledDttm;
|
|
||||||
|
|
||||||
@JsonFormatDttm private final ZonedDateTime createdDttm;
|
|
||||||
|
|
||||||
public Basic(
|
|
||||||
Long id,
|
|
||||||
String requestId,
|
|
||||||
EventType errorType,
|
|
||||||
LogErrorLevel errorLevel,
|
|
||||||
String errorCode,
|
|
||||||
String errorMessage,
|
|
||||||
String stackTrace,
|
|
||||||
Long handlerUid,
|
|
||||||
ZonedDateTime handledDttm,
|
|
||||||
ZonedDateTime createdDttm) {
|
|
||||||
this.id = id;
|
|
||||||
this.requestId = requestId;
|
|
||||||
this.errorType = errorType;
|
|
||||||
this.errorLevel = errorLevel;
|
|
||||||
this.errorCode = errorCode;
|
|
||||||
this.errorMessage = errorMessage;
|
|
||||||
this.stackTrace = stackTrace;
|
|
||||||
this.handlerUid = handlerUid;
|
|
||||||
this.handledDttm = handledDttm;
|
|
||||||
this.createdDttm = createdDttm;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schema(name = "ErrorSearchReq", description = "에러로그 검색 요청")
|
@Schema(name = "ErrorSearchReq", description = "에러로그 검색 요청")
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
|||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto;
|
import com.kamco.cd.kamcoback.changedetection.dto.ChangeDetectionDto;
|
||||||
|
import com.kamco.cd.kamcoback.common.enums.DetectionClassification;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataGeomEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataGeomEntity;
|
||||||
import com.kamco.cd.kamcoback.postgres.repository.changedetection.ChangeDetectionRepository;
|
import com.kamco.cd.kamcoback.postgres.repository.changedetection.ChangeDetectionRepository;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -51,8 +52,20 @@ public class ChangeDetectionCoreService {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ChangeDetectionDto.CountDto> getChangeDetectionClassCount(Long id) {
|
public List<ChangeDetectionDto.CountDto> getChangeDetectionClassCount(
|
||||||
return changeDetectionRepository.getChangeDetectionClassCount(id);
|
Long id, String mapSheetNum) {
|
||||||
|
List<ChangeDetectionDto.CountDto> list =
|
||||||
|
changeDetectionRepository.getChangeDetectionClassCount(id, mapSheetNum);
|
||||||
|
|
||||||
|
return list.stream()
|
||||||
|
.map(
|
||||||
|
s -> {
|
||||||
|
String classCd = String.valueOf(s.getClassCd());
|
||||||
|
s.setClassCd(DetectionClassification.fromString(classCd).name());
|
||||||
|
s.setClassName(DetectionClassification.fromStrDesc(classCd));
|
||||||
|
return s;
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ChangeDetectionDto.CogUrlDto getChangeDetectionCogUrl(ChangeDetectionDto.CogUrlReq req) {
|
public ChangeDetectionDto.CogUrlDto getChangeDetectionCogUrl(ChangeDetectionDto.CogUrlReq req) {
|
||||||
@@ -62,4 +75,27 @@ public class ChangeDetectionCoreService {
|
|||||||
public List<ChangeDetectionDto.AnalYearList> getChangeDetectionYearList() {
|
public List<ChangeDetectionDto.AnalYearList> getChangeDetectionYearList() {
|
||||||
return changeDetectionRepository.getChangeDetectionYearList();
|
return changeDetectionRepository.getChangeDetectionYearList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ChangeDetectionDto.PolygonGeometry> getChangeDetectionPolygonList(
|
||||||
|
Long analUid, String mapSheetNum) {
|
||||||
|
return changeDetectionRepository.getChangeDetectionPolygonList(analUid, mapSheetNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ChangeDetectionDto.PointGeometry> getChangeDetectionPointList(
|
||||||
|
Long analUid, String mapSheetNum) {
|
||||||
|
return changeDetectionRepository.getChangeDetectionPointList(analUid, mapSheetNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ChangeDetectionDto.MapSheetList> getChangeDetectionMapSheetList(Long analUid) {
|
||||||
|
List<ChangeDetectionDto.MapSheetList> list =
|
||||||
|
changeDetectionRepository.getChangeDetectionMapSheetList(analUid);
|
||||||
|
return list.stream()
|
||||||
|
.map(
|
||||||
|
s -> {
|
||||||
|
String name = s.getMapSheetName();
|
||||||
|
s.setAlias(name + s.getMapSheetNum().substring(5, 8));
|
||||||
|
return s;
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.kamco.cd.kamcoback.postgres.core;
|
package com.kamco.cd.kamcoback.postgres.core;
|
||||||
|
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
||||||
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Dashboard;
|
||||||
import com.kamco.cd.kamcoback.postgres.repository.Inference.InferenceResultRepository;
|
import com.kamco.cd.kamcoback.postgres.repository.Inference.InferenceResultRepository;
|
||||||
import jakarta.persistence.EntityNotFoundException;
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -39,6 +40,16 @@ public class InferenceResultCoreService {
|
|||||||
return summary;
|
return summary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 분석결과 상세 class name별 탐지 개수
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<Dashboard> getDashboard(Long id) {
|
||||||
|
return inferenceResultRepository.getDashboard(id);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 분석결과 상세 목록
|
* 분석결과 상세 목록
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package com.kamco.cd.kamcoback.postgres.entity;
|
||||||
|
|
||||||
|
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Table(name = "demo_learning_analysis_scene_item")
|
||||||
|
@Entity
|
||||||
|
public class DemoLearningAnalysisSceneItemEntity {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(
|
||||||
|
strategy = GenerationType.SEQUENCE,
|
||||||
|
generator = "demo_learning_analysis_scene_item_group_item_id_gen")
|
||||||
|
@SequenceGenerator(
|
||||||
|
name = "demo_learning_analysis_scene_item_group_item_id_gen",
|
||||||
|
sequenceName = "demo_learning_analysis_scene_item_group_item_id_seq",
|
||||||
|
allocationSize = 1)
|
||||||
|
@Column(name = "group_item_id", nullable = false)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Column(name = "group_id")
|
||||||
|
private Long groupId;
|
||||||
|
|
||||||
|
@Column(name = "fid")
|
||||||
|
private Long fid;
|
||||||
|
|
||||||
|
@JsonFormatDttm
|
||||||
|
@Column(name = "created_dttm")
|
||||||
|
private ZonedDateTime createdDttm;
|
||||||
|
}
|
||||||
@@ -5,8 +5,7 @@ import jakarta.persistence.EmbeddedId;
|
|||||||
import jakarta.persistence.Entity;
|
import jakarta.persistence.Entity;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.Size;
|
import java.time.OffsetDateTime;
|
||||||
import java.time.ZonedDateTime;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.hibernate.annotations.ColumnDefault;
|
import org.hibernate.annotations.ColumnDefault;
|
||||||
@@ -19,24 +18,22 @@ public class MapSheetAnalSttcEntity {
|
|||||||
|
|
||||||
@EmbeddedId private MapSheetAnalSttcEntityId id;
|
@EmbeddedId private MapSheetAnalSttcEntityId id;
|
||||||
|
|
||||||
@ColumnDefault("0")
|
|
||||||
@Column(name = "class_before_cnt")
|
@Column(name = "class_before_cnt")
|
||||||
private Long classBeforeCnt;
|
private Long classBeforeCnt;
|
||||||
|
|
||||||
@ColumnDefault("0")
|
|
||||||
@Column(name = "class_after_cnt")
|
@Column(name = "class_after_cnt")
|
||||||
private Long classAfterCnt;
|
private Long classAfterCnt;
|
||||||
|
|
||||||
@ColumnDefault("now()")
|
@ColumnDefault("now()")
|
||||||
@Column(name = "created_dttm")
|
@Column(name = "created_dttm")
|
||||||
private ZonedDateTime createdDttm;
|
private OffsetDateTime createdDttm;
|
||||||
|
|
||||||
@Column(name = "created_uid")
|
@Column(name = "created_uid")
|
||||||
private Long createdUid;
|
private Long createdUid;
|
||||||
|
|
||||||
@ColumnDefault("now()")
|
@ColumnDefault("now()")
|
||||||
@Column(name = "updated_dttm")
|
@Column(name = "updated_dttm")
|
||||||
private ZonedDateTime updatedDttm;
|
private OffsetDateTime updatedDttm;
|
||||||
|
|
||||||
@Column(name = "updated_uid")
|
@Column(name = "updated_uid")
|
||||||
private Long updatedUid;
|
private Long updatedUid;
|
||||||
@@ -45,15 +42,6 @@ public class MapSheetAnalSttcEntity {
|
|||||||
@Column(name = "ref_map_sheet_num", nullable = false)
|
@Column(name = "ref_map_sheet_num", nullable = false)
|
||||||
private Long refMapSheetNum;
|
private Long refMapSheetNum;
|
||||||
|
|
||||||
@NotNull
|
@Column(name = "class_after_prob_avg")
|
||||||
@Column(name = "data_uid", nullable = false)
|
private Double classAfterProbAvg;
|
||||||
private Long dataUid;
|
|
||||||
|
|
||||||
@Size(max = 30)
|
|
||||||
@Column(name = "class_before_cd", length = 30)
|
|
||||||
private String classBeforeCd;
|
|
||||||
|
|
||||||
@Size(max = 30)
|
|
||||||
@Column(name = "class_after_cd", length = 30)
|
|
||||||
private String classAfterCd;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,18 +3,20 @@ package com.kamco.cd.kamcoback.postgres.entity;
|
|||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.Embeddable;
|
import jakarta.persistence.Embeddable;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.hibernate.Hibernate;
|
import org.hibernate.Hibernate;
|
||||||
|
import org.hibernate.annotations.ColumnDefault;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@Embeddable
|
@Embeddable
|
||||||
public class MapSheetAnalSttcEntityId implements Serializable {
|
public class MapSheetAnalSttcEntityId implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 2285491656408229553L;
|
private static final long serialVersionUID = 3649782418773406961L;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Column(name = "compare_yyyy", nullable = false)
|
@Column(name = "compare_yyyy", nullable = false)
|
||||||
@@ -28,6 +30,25 @@ public class MapSheetAnalSttcEntityId implements Serializable {
|
|||||||
@Column(name = "map_sheet_num", nullable = false)
|
@Column(name = "map_sheet_num", nullable = false)
|
||||||
private Long mapSheetNum;
|
private Long mapSheetNum;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Column(name = "data_uid", nullable = false)
|
||||||
|
private Long dataUid;
|
||||||
|
|
||||||
|
@Size(max = 30)
|
||||||
|
@NotNull
|
||||||
|
@ColumnDefault("NULL")
|
||||||
|
@Column(name = "class_before_cd", nullable = false, length = 30)
|
||||||
|
private String classBeforeCd;
|
||||||
|
|
||||||
|
@Size(max = 30)
|
||||||
|
@NotNull
|
||||||
|
@ColumnDefault("NULL")
|
||||||
|
@Column(name = "class_after_cd", nullable = false, length = 30)
|
||||||
|
private String classAfterCd;
|
||||||
|
|
||||||
|
@Column(name = "anal_uid")
|
||||||
|
private Long analUid;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (this == o) {
|
if (this == o) {
|
||||||
@@ -38,12 +59,17 @@ public class MapSheetAnalSttcEntityId implements Serializable {
|
|||||||
}
|
}
|
||||||
MapSheetAnalSttcEntityId entity = (MapSheetAnalSttcEntityId) o;
|
MapSheetAnalSttcEntityId entity = (MapSheetAnalSttcEntityId) o;
|
||||||
return Objects.equals(this.targetYyyy, entity.targetYyyy)
|
return Objects.equals(this.targetYyyy, entity.targetYyyy)
|
||||||
|
&& Objects.equals(this.analUid, entity.analUid)
|
||||||
|
&& Objects.equals(this.dataUid, entity.dataUid)
|
||||||
|
&& Objects.equals(this.classAfterCd, entity.classAfterCd)
|
||||||
&& Objects.equals(this.compareYyyy, entity.compareYyyy)
|
&& Objects.equals(this.compareYyyy, entity.compareYyyy)
|
||||||
|
&& Objects.equals(this.classBeforeCd, entity.classBeforeCd)
|
||||||
&& Objects.equals(this.mapSheetNum, entity.mapSheetNum);
|
&& Objects.equals(this.mapSheetNum, entity.mapSheetNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(targetYyyy, compareYyyy, mapSheetNum);
|
return Objects.hash(
|
||||||
|
targetYyyy, analUid, dataUid, classAfterCd, compareYyyy, classBeforeCd, mapSheetNum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.kamco.cd.kamcoback.postgres.repository.Inference;
|
package com.kamco.cd.kamcoback.postgres.repository.Inference;
|
||||||
|
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
||||||
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Dashboard;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@@ -16,4 +17,6 @@ public interface InferenceResultRepositoryCustom {
|
|||||||
Long id, InferenceResultDto.SearchGeoReq searchGeoReq);
|
Long id, InferenceResultDto.SearchGeoReq searchGeoReq);
|
||||||
|
|
||||||
List<Long> getSheets(Long id);
|
List<Long> getSheets(Long id);
|
||||||
|
|
||||||
|
List<Dashboard> getDashboard(Long id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package com.kamco.cd.kamcoback.postgres.repository.Inference;
|
package com.kamco.cd.kamcoback.postgres.repository.Inference;
|
||||||
|
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
||||||
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Dashboard;
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.SearchGeoReq;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.SearchGeoReq;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataEntity;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataGeomEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataGeomEntity;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalEntity;
|
||||||
|
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalSttcEntity;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.QModelVerEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.QModelVerEntity;
|
||||||
import com.querydsl.core.BooleanBuilder;
|
import com.querydsl.core.BooleanBuilder;
|
||||||
@@ -33,6 +35,8 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC
|
|||||||
QMapSheetAnalDataEntity.mapSheetAnalDataEntity;
|
QMapSheetAnalDataEntity.mapSheetAnalDataEntity;
|
||||||
private final QMapSheetAnalDataGeomEntity mapSheetAnalDataGeomEntity =
|
private final QMapSheetAnalDataGeomEntity mapSheetAnalDataGeomEntity =
|
||||||
QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity;
|
QMapSheetAnalDataGeomEntity.mapSheetAnalDataGeomEntity;
|
||||||
|
private final QMapSheetAnalSttcEntity mapSheetAnalSttcEntity =
|
||||||
|
QMapSheetAnalSttcEntity.mapSheetAnalSttcEntity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 분석결과 목록 조회
|
* 분석결과 목록 조회
|
||||||
@@ -134,6 +138,27 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC
|
|||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 분석결과 상세 class name별 탐지 개수
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<Dashboard> getDashboard(Long id) {
|
||||||
|
return queryFactory
|
||||||
|
.select(
|
||||||
|
Projections.constructor(
|
||||||
|
Dashboard.class,
|
||||||
|
mapSheetAnalSttcEntity.id.classAfterCd,
|
||||||
|
mapSheetAnalSttcEntity.classAfterCnt.sum()))
|
||||||
|
.from(mapSheetAnalSttcEntity)
|
||||||
|
.where(mapSheetAnalSttcEntity.id.analUid.eq(id))
|
||||||
|
.groupBy(mapSheetAnalSttcEntity.id.classAfterCd)
|
||||||
|
.orderBy(mapSheetAnalSttcEntity.id.classAfterCd.asc())
|
||||||
|
.fetch();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 분석결과 상세 목록
|
* 분석결과 상세 목록
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -9,9 +9,17 @@ public interface ChangeDetectionRepositoryCustom {
|
|||||||
|
|
||||||
List<String> findPolygonJson();
|
List<String> findPolygonJson();
|
||||||
|
|
||||||
List<ChangeDetectionDto.CountDto> getChangeDetectionClassCount(Long id);
|
List<ChangeDetectionDto.CountDto> getChangeDetectionClassCount(Long id, String mapSheetNum);
|
||||||
|
|
||||||
ChangeDetectionDto.CogUrlDto getChangeDetectionCogUrl(ChangeDetectionDto.CogUrlReq req);
|
ChangeDetectionDto.CogUrlDto getChangeDetectionCogUrl(ChangeDetectionDto.CogUrlReq req);
|
||||||
|
|
||||||
List<ChangeDetectionDto.AnalYearList> getChangeDetectionYearList();
|
List<ChangeDetectionDto.AnalYearList> getChangeDetectionYearList();
|
||||||
|
|
||||||
|
List<ChangeDetectionDto.PolygonGeometry> getChangeDetectionPolygonList(
|
||||||
|
Long analUid, String mapSheetNum);
|
||||||
|
|
||||||
|
List<ChangeDetectionDto.PointGeometry> getChangeDetectionPointList(
|
||||||
|
Long analUid, String mapSheetNum);
|
||||||
|
|
||||||
|
List<ChangeDetectionDto.MapSheetList> getChangeDetectionMapSheetList(Long analUid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.kamco.cd.kamcoback.postgres.repository.changedetection;
|
package com.kamco.cd.kamcoback.postgres.repository.changedetection;
|
||||||
|
|
||||||
|
import static com.kamco.cd.kamcoback.postgres.entity.QDemoLearningAnalysisSceneItemEntity.demoLearningAnalysisSceneItemEntity;
|
||||||
import static com.kamco.cd.kamcoback.postgres.entity.QImageryEntity.imageryEntity;
|
import static com.kamco.cd.kamcoback.postgres.entity.QImageryEntity.imageryEntity;
|
||||||
import static com.kamco.cd.kamcoback.postgres.entity.QMapInkx5kEntity.mapInkx5kEntity;
|
import static com.kamco.cd.kamcoback.postgres.entity.QMapInkx5kEntity.mapInkx5kEntity;
|
||||||
import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataEntity.mapSheetAnalDataEntity;
|
import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataEntity.mapSheetAnalDataEntity;
|
||||||
@@ -13,6 +14,7 @@ import com.querydsl.core.types.Projections;
|
|||||||
import com.querydsl.core.types.dsl.CaseBuilder;
|
import com.querydsl.core.types.dsl.CaseBuilder;
|
||||||
import com.querydsl.core.types.dsl.Expressions;
|
import com.querydsl.core.types.dsl.Expressions;
|
||||||
import com.querydsl.core.types.dsl.StringExpression;
|
import com.querydsl.core.types.dsl.StringExpression;
|
||||||
|
import com.querydsl.jpa.JPAExpressions;
|
||||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;
|
import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;
|
||||||
@@ -43,20 +45,23 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ChangeDetectionDto.CountDto> getChangeDetectionClassCount(Long id) {
|
public List<ChangeDetectionDto.CountDto> getChangeDetectionClassCount(
|
||||||
|
Long id, String mapSheetNum) {
|
||||||
return queryFactory
|
return queryFactory
|
||||||
.select(
|
.select(
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
ChangeDetectionDto.CountDto.class,
|
ChangeDetectionDto.CountDto.class,
|
||||||
mapSheetAnalSttcEntity.classAfterCd.toUpperCase(),
|
mapSheetAnalSttcEntity.classAfterCd.as("classCd"),
|
||||||
null, // TOOD classAfterName 삭제해서 수정 필요
|
mapSheetAnalSttcEntity.classAfterCd.as("classNm"), // 앞단 CoreService 에서 한글명으로 변환
|
||||||
mapSheetAnalSttcEntity.classAfterCnt.sum()))
|
mapSheetAnalSttcEntity.classAfterCnt.sum()))
|
||||||
.from(mapSheetAnalEntity)
|
.from(mapSheetAnalEntity)
|
||||||
.innerJoin(mapSheetAnalDataEntity)
|
.innerJoin(mapSheetAnalDataEntity)
|
||||||
.on(mapSheetAnalDataEntity.analUid.eq(mapSheetAnalEntity.id))
|
.on(mapSheetAnalDataEntity.analUid.eq(mapSheetAnalEntity.id))
|
||||||
.innerJoin(mapSheetAnalSttcEntity)
|
.innerJoin(mapSheetAnalSttcEntity)
|
||||||
.on(mapSheetAnalSttcEntity.dataUid.eq(mapSheetAnalDataEntity.id))
|
.on(mapSheetAnalSttcEntity.dataUid.eq(mapSheetAnalDataEntity.id))
|
||||||
.where(mapSheetAnalEntity.id.eq(id))
|
.where(
|
||||||
|
mapSheetAnalEntity.id.eq(id),
|
||||||
|
mapSheetAnalSttcEntity.id.mapSheetNum.eq(Long.valueOf(mapSheetNum)))
|
||||||
.groupBy(mapSheetAnalSttcEntity.classAfterCd)
|
.groupBy(mapSheetAnalSttcEntity.classAfterCd)
|
||||||
.fetch();
|
.fetch();
|
||||||
}
|
}
|
||||||
@@ -99,6 +104,72 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
.fetch();
|
.fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ChangeDetectionDto.PolygonGeometry> getChangeDetectionPolygonList(
|
||||||
|
Long analUid, String mapSheetNum) {
|
||||||
|
return queryFactory
|
||||||
|
.select(
|
||||||
|
Projections.constructor(
|
||||||
|
ChangeDetectionDto.PolygonGeometry.class,
|
||||||
|
mapSheetAnalDataGeomEntity.id,
|
||||||
|
mapSheetAnalDataGeomEntity.geom, // polygon
|
||||||
|
Projections.constructor(
|
||||||
|
ChangeDetectionDto.PolygonProperties.class,
|
||||||
|
mapSheetAnalDataGeomEntity.area,
|
||||||
|
mapSheetAnalDataGeomEntity.compareYyyy,
|
||||||
|
mapSheetAnalDataGeomEntity.classBeforeProb,
|
||||||
|
mapSheetAnalDataGeomEntity.classBeforeCd.toUpperCase(),
|
||||||
|
mapSheetAnalDataGeomEntity.targetYyyy,
|
||||||
|
mapSheetAnalDataGeomEntity.classAfterProb,
|
||||||
|
mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase())))
|
||||||
|
.from(mapSheetAnalDataGeomEntity)
|
||||||
|
.where(
|
||||||
|
mapSheetAnalDataGeomEntity.dataUid.in(
|
||||||
|
JPAExpressions.select(mapSheetAnalDataEntity.id)
|
||||||
|
.from(mapSheetAnalDataEntity)
|
||||||
|
.where(mapSheetAnalDataEntity.analUid.eq(analUid))),
|
||||||
|
mapSheetAnalDataGeomEntity.mapSheetNum.eq(Long.valueOf(mapSheetNum)))
|
||||||
|
.fetch();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ChangeDetectionDto.PointGeometry> getChangeDetectionPointList(
|
||||||
|
Long analUid, String mapSheetNum) {
|
||||||
|
return queryFactory
|
||||||
|
.select(
|
||||||
|
Projections.constructor(
|
||||||
|
ChangeDetectionDto.PointGeometry.class,
|
||||||
|
mapSheetAnalDataGeomEntity.id,
|
||||||
|
mapSheetAnalDataGeomEntity.geomCenter, // point
|
||||||
|
mapSheetAnalDataGeomEntity.classAfterCd.toUpperCase()))
|
||||||
|
.from(mapSheetAnalDataGeomEntity)
|
||||||
|
.where(
|
||||||
|
mapSheetAnalDataGeomEntity.dataUid.in(
|
||||||
|
JPAExpressions.select(mapSheetAnalDataEntity.id)
|
||||||
|
.from(mapSheetAnalDataEntity)
|
||||||
|
.where(mapSheetAnalDataEntity.analUid.eq(analUid))),
|
||||||
|
mapSheetAnalDataGeomEntity.mapSheetNum.eq(Long.valueOf(mapSheetNum)))
|
||||||
|
.fetch();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ChangeDetectionDto.MapSheetList> getChangeDetectionMapSheetList(Long analUid) {
|
||||||
|
return queryFactory
|
||||||
|
.select(
|
||||||
|
Projections.constructor(
|
||||||
|
ChangeDetectionDto.MapSheetList.class,
|
||||||
|
mapInkx5kEntity.mapidcdNo,
|
||||||
|
mapInkx5kEntity.mapidNm,
|
||||||
|
mapInkx5kEntity.mapidNm // alias 앞단 core에서
|
||||||
|
))
|
||||||
|
.from(demoLearningAnalysisSceneItemEntity)
|
||||||
|
.innerJoin(mapInkx5kEntity)
|
||||||
|
.on(demoLearningAnalysisSceneItemEntity.fid.eq(mapInkx5kEntity.fid.longValue()))
|
||||||
|
.where(demoLearningAnalysisSceneItemEntity.groupId.eq(analUid))
|
||||||
|
.orderBy(mapInkx5kEntity.mapidNm.asc(), mapInkx5kEntity.mapidcdNo.asc())
|
||||||
|
.fetch();
|
||||||
|
}
|
||||||
|
|
||||||
private StringExpression makeCogUrl(Integer year) {
|
private StringExpression makeCogUrl(Integer year) {
|
||||||
return new CaseBuilder()
|
return new CaseBuilder()
|
||||||
.when(imageryEntity.year.eq(year))
|
.when(imageryEntity.year.eq(year))
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class ErrorLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
ErrorLogDto.Basic.class,
|
ErrorLogDto.Basic.class,
|
||||||
errorLogEntity.id.as("logId"),
|
errorLogEntity.id.as("logId"),
|
||||||
Expressions.constant("한국자산관리공사"), // serviceName
|
Expressions.stringTemplate("{0}", "한국자산관리공사"), // serviceName
|
||||||
menuEntity.menuNm.as("menuName"),
|
menuEntity.menuNm.as("menuName"),
|
||||||
userEntity.userId.as("loginId"),
|
userEntity.userId.as("loginId"),
|
||||||
userEntity.userNm.as("userName"),
|
userEntity.userNm.as("userName"),
|
||||||
@@ -54,7 +54,8 @@ public class ErrorLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
errorLogEntity.errorCode.as("errorCode"),
|
errorLogEntity.errorCode.as("errorCode"),
|
||||||
errorLogEntity.errorMessage.as("errorMessage"),
|
errorLogEntity.errorMessage.as("errorMessage"),
|
||||||
errorLogEntity.stackTrace.as("errorDetail"),
|
errorLogEntity.stackTrace.as("errorDetail"),
|
||||||
errorLogEntity.createdDate))
|
Expressions.stringTemplate(
|
||||||
|
"to_char({0}, 'YYYY-MM-DD')", errorLogEntity.createdDate)))
|
||||||
.from(errorLogEntity)
|
.from(errorLogEntity)
|
||||||
.leftJoin(auditLogEntity)
|
.leftJoin(auditLogEntity)
|
||||||
.on(errorLogEntity.id.eq(auditLogEntity.errorLogUid))
|
.on(errorLogEntity.id.eq(auditLogEntity.errorLogUid))
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ spring:
|
|||||||
leak-detection-threshold: 60000
|
leak-detection-threshold: 60000
|
||||||
jpa:
|
jpa:
|
||||||
hibernate:
|
hibernate:
|
||||||
ddl-auto: update # 스키마 검증만 수행, 자동 변경하지 않음 (안전)
|
ddl-auto: update # 테이블이 없으면 생성, 있으면 업데이트
|
||||||
properties:
|
properties:
|
||||||
hibernate:
|
hibernate:
|
||||||
jdbc:
|
jdbc:
|
||||||
|
|||||||
Reference in New Issue
Block a user