Compare commits
23 Commits
4272558f32
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| 646e7afe2e | |||
| 522d0d02fa | |||
| d240e4349c | |||
| 4801ae8b7d | |||
| 8c33439bcd | |||
| ec4fb46cea | |||
| 63b3b3c09d | |||
| cfd5963a15 | |||
| 9116bf7b89 | |||
| 2d7413c8e1 | |||
| df7a67ed41 | |||
| 176d27c229 | |||
| 8c70ec345c | |||
| 8fd92f5691 | |||
| b69d09176e | |||
| 04af23b814 | |||
| a1fc62b3eb | |||
| ed3c901143 | |||
| b58b859470 | |||
| b78fda151a | |||
| 435a48afb9 | |||
| af0866ff5b | |||
| d0132ac697 |
@@ -35,6 +35,11 @@ public class ChangeDetectionDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@CodeExpose
|
||||
@@ -55,6 +60,11 @@ public class ChangeDetectionDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
@Schema(name = "TestDto", description = "테스트용")
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.kamco.cd.kamcoback.code.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.common.utils.html.HtmlEscapeDeserializer;
|
||||
import com.kamco.cd.kamcoback.common.utils.html.HtmlUnescapeSerializer;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||
@@ -119,10 +120,11 @@ public class CommonCodeDto {
|
||||
String props2,
|
||||
String props3,
|
||||
ZonedDateTime deletedDttm) {
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
this.id = id;
|
||||
this.code = code;
|
||||
this.description = description;
|
||||
this.name = name;
|
||||
this.name = english ? code : name;
|
||||
this.order = order;
|
||||
this.used = used;
|
||||
this.deleted = deleted;
|
||||
|
||||
@@ -45,4 +45,9 @@ public enum CommonUseStatus implements EnumType {
|
||||
public EnumDto<CommonUseStatus> getEnumDto() {
|
||||
return new EnumDto<>(this, this.id, this.text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,12 +9,13 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum CrsType implements EnumType {
|
||||
EPSG_3857("Web Mercator, 웹지도 미터(EPSG:900913 동일)"),
|
||||
EPSG_4326("WGS84 위경도, GeoJSON/OSM 기본"),
|
||||
EPSG_5186("5186::Korea 2000 중부 TM, 한국 SHP"),
|
||||
EPSG_5179("5179::Korea 2000 중부 TM, 한국 SHP");
|
||||
EPSG_3857("Web Mercator, 웹지도 미터(EPSG:900913 동일)", "Web Mercator"),
|
||||
EPSG_4326("WGS84 위경도, GeoJSON/OSM 기본", "GeoJSON/OSM"),
|
||||
EPSG_5186("5186::Korea 2000 중부 TM, 한국 SHP", "5186::Korea 2000"),
|
||||
EPSG_5179("5179::Korea 2000 중부 TM, 한국 SHP", "5179::Korea 2000");
|
||||
|
||||
private final String desc;
|
||||
private final String descEn;
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
@@ -25,4 +26,9 @@ public enum CrsType implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return descEn;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.kamco.cd.kamcoback.common.enums;
|
||||
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -51,6 +52,6 @@ public enum DetectionClassification {
|
||||
*/
|
||||
public static String fromStrDesc(String text) {
|
||||
DetectionClassification dtf = fromString(text);
|
||||
return dtf.getDesc();
|
||||
return HeaderUtil.isEnglishRequest() ? dtf.getId() : dtf.getDesc();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,13 +9,14 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum FileUploadStatus implements EnumType {
|
||||
INIT("초기화"),
|
||||
UPLOADING("업로드중"),
|
||||
DONE("업로드완료"),
|
||||
MERGED("병합완료"),
|
||||
MERGE_FAIL("병합 실패");
|
||||
INIT("초기화", "Init"),
|
||||
UPLOADING("업로드중", "Uploading"),
|
||||
DONE("업로드완료", "Upload Done"),
|
||||
MERGED("병합완료", "Merged Done"),
|
||||
MERGE_FAIL("병합 실패", "Merge Failed");
|
||||
|
||||
private final String desc;
|
||||
private final String descEn;
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
@@ -26,4 +27,9 @@ public enum FileUploadStatus implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return descEn;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.kamco.cd.kamcoback.common.enums;
|
||||
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
||||
import java.util.Arrays;
|
||||
@@ -25,6 +26,11 @@ public enum ImageryFitStatus implements EnumType {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
|
||||
public static ImageryFitStatus fromCode(String code) {
|
||||
if (code == null) {
|
||||
return null;
|
||||
@@ -38,6 +44,8 @@ public enum ImageryFitStatus implements EnumType {
|
||||
|
||||
public static String getDescByCode(String code) {
|
||||
ImageryFitStatus status = fromCode(code);
|
||||
return status != null ? status.getDesc() : null;
|
||||
return status != null
|
||||
? (HeaderUtil.isEnglishRequest() ? status.getTextEn() : status.getDesc())
|
||||
: null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,14 +10,15 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum LayerType implements EnumType {
|
||||
TILE("배경지도"),
|
||||
GEOJSON("객체데이터"),
|
||||
WMTS("타일레이어"),
|
||||
WMS("지적도"),
|
||||
KAMCO_WMS("국유인WMS"),
|
||||
KAMCO_WMTS("국유인WMTS");
|
||||
TILE("배경지도", "Tile"),
|
||||
GEOJSON("객체데이터", "GeoJSON"),
|
||||
WMTS("타일레이어", "WMTS"),
|
||||
WMS("지적도", "WMS"),
|
||||
KAMCO_WMS("국유인WMS", "KAMCO_WMS"),
|
||||
KAMCO_WMTS("국유인WMTS", "KAMCO_WMTS");
|
||||
|
||||
private final String desc;
|
||||
private final String descEn;
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
@@ -29,6 +30,11 @@ public enum LayerType implements EnumType {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return descEn;
|
||||
}
|
||||
|
||||
public static Optional<LayerType> from(String type) {
|
||||
try {
|
||||
return Optional.of(LayerType.valueOf(type));
|
||||
|
||||
@@ -9,12 +9,13 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum MngStateType implements EnumType {
|
||||
NOTYET("동기화 시작"),
|
||||
PROCESSING("데이터 체크"),
|
||||
DONE("동기화 작업 종료"),
|
||||
TAKINGERROR("오류 데이터 처리중");
|
||||
NOTYET("동기화 시작", "Sync Started"),
|
||||
PROCESSING("데이터 체크", "Data Check"),
|
||||
DONE("동기화 작업 종료", "Sync Completed"),
|
||||
TAKINGERROR("오류 데이터 처리중", "Processing Error Data");
|
||||
|
||||
private final String desc;
|
||||
private final String descEn;
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
@@ -25,4 +26,8 @@ public enum MngStateType implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public String getTextEn() {
|
||||
return descEn;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,4 +24,9 @@ public enum RoleType implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,4 +24,9 @@ public enum StatusType implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,4 +23,9 @@ public enum SyncCheckStateType implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,4 +30,9 @@ public enum SyncStateType implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.kamco.cd.kamcoback.common.utils;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import org.springframework.web.context.request.RequestAttributes;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
public final class HeaderUtil {
|
||||
|
||||
@@ -20,4 +23,20 @@ public final class HeaderUtil {
|
||||
public static String getRequired(HttpServletRequest request, String headerName) {
|
||||
return get(request, headerName);
|
||||
}
|
||||
|
||||
public static boolean isEnglishRequest() {
|
||||
RequestAttributes attrs = RequestContextHolder.getRequestAttributes();
|
||||
|
||||
if (!(attrs instanceof ServletRequestAttributes servletAttrs)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
String acceptLanguage = servletAttrs.getRequest().getHeader("Accept-Language");
|
||||
|
||||
if (acceptLanguage == null || acceptLanguage.isBlank()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return acceptLanguage.toLowerCase().startsWith("en");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,6 @@ public interface EnumType {
|
||||
String getId();
|
||||
|
||||
String getText();
|
||||
|
||||
String getTextEn();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.kamco.cd.kamcoback.common.utils.enums;
|
||||
|
||||
import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.CodeDto;
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -32,11 +33,12 @@ public class Enums {
|
||||
// enum -> CodeDto list
|
||||
public static List<CodeDto> toList(Class<? extends Enum<?>> enumClass) {
|
||||
Object[] enums = enumClass.getEnumConstants();
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
|
||||
return Arrays.stream(enums)
|
||||
.map(e -> (EnumType) e)
|
||||
.filter(e -> !isHidden(enumClass, (Enum<?>) e))
|
||||
.map(e -> new CodeDto(e.getId(), e.getText()))
|
||||
.map(e -> new CodeDto(e.getId(), english ? e.getTextEn() : e.getText()))
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
@@ -39,10 +39,10 @@ public class ApiLogFunction {
|
||||
|
||||
public static String getXFowardedForIp(HttpServletRequest request) {
|
||||
String ip = request.getHeader("X-Forwarded-For");
|
||||
if (ip != null) {
|
||||
ip = ip.split(",")[0].trim();
|
||||
if (ip != null && !ip.isBlank()) {
|
||||
return ip.split(",")[0].trim();
|
||||
}
|
||||
return ip;
|
||||
return request.getRemoteAddr();
|
||||
}
|
||||
|
||||
// 사용자 ID 추출 예시 (Spring Security 기준)
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.config.api;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
||||
import java.util.Arrays;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.ToString;
|
||||
@@ -192,6 +193,11 @@ public class ApiResponseDto<T> {
|
||||
return message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public static ApiResponseCode getCode(String name) {
|
||||
return ApiResponseCode.valueOf(name.toUpperCase());
|
||||
}
|
||||
@@ -220,5 +226,12 @@ public class ApiResponseDto<T> {
|
||||
|
||||
return INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
||||
public static ApiResponseCode fromMessage(String message) {
|
||||
return Arrays.stream(values())
|
||||
.filter(code -> code.getMessage().equals(message))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,11 @@ public class GukYuinDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
|
||||
@@ -26,4 +26,9 @@ public enum GukYuinStatus implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -448,4 +448,22 @@ public class InferenceResultApiController {
|
||||
UUID uuid) {
|
||||
return ApiResponseDto.ok(inferenceResultService.getInferenceRunMapId(uuid));
|
||||
}
|
||||
|
||||
@Operation(summary = "추론 삭제", description = "추론관리 > 추론목록 > 추론 상세 > 추론 삭제")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
responseCode = "201",
|
||||
description = "종료 성공",
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = Page.class))),
|
||||
@ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
@DeleteMapping("/delete-inference/{uuid}")
|
||||
public ApiResponseDto<ApiResponseDto.ResponseObj> deleteInference(@PathVariable UUID uuid) {
|
||||
return ApiResponseDto.ok(inferenceResultService.deleteInference(uuid));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.kamco.cd.kamcoback.common.enums.DetectionClassification;
|
||||
import com.kamco.cd.kamcoback.common.enums.ImageryFitStatus;
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.DetectOption;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetScope;
|
||||
@@ -156,9 +157,14 @@ public class InferenceDetailDto {
|
||||
String classAfterName;
|
||||
Long classAfterCnt;
|
||||
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
|
||||
public Dashboard(String classAfterCd, Long classAfterCnt) {
|
||||
this.classAfterCd = classAfterCd;
|
||||
this.classAfterName = DetectionClassification.fromString(classAfterCd).getDesc();
|
||||
this.classAfterName =
|
||||
english
|
||||
? DetectionClassification.fromString(classAfterCd).getId()
|
||||
: DetectionClassification.fromString(classAfterCd).getDesc();
|
||||
this.classAfterCnt = classAfterCnt;
|
||||
}
|
||||
}
|
||||
@@ -294,8 +300,10 @@ public class InferenceDetailDto {
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public static class Geom {
|
||||
|
||||
Long geoUid;
|
||||
UUID uuid;
|
||||
String uid;
|
||||
Integer compareYyyy;
|
||||
@@ -313,7 +321,10 @@ public class InferenceDetailDto {
|
||||
String pnu;
|
||||
String fitState;
|
||||
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
|
||||
public Geom(
|
||||
Long geoUid,
|
||||
UUID uuid,
|
||||
String uid,
|
||||
Integer compareYyyy,
|
||||
@@ -328,16 +339,23 @@ public class InferenceDetailDto {
|
||||
String subUid,
|
||||
String pnu,
|
||||
String fitState) {
|
||||
this.geoUid = geoUid;
|
||||
this.uuid = uuid;
|
||||
this.uid = uid;
|
||||
this.compareYyyy = compareYyyy;
|
||||
this.targetYyyy = targetYyyy;
|
||||
this.cdProb = cdProb;
|
||||
this.classBeforeCd = classBeforeCd;
|
||||
this.classBeforeName = DetectionClassification.fromString(classBeforeCd).getDesc();
|
||||
this.classBeforeName =
|
||||
english
|
||||
? DetectionClassification.fromString(classBeforeCd).getId()
|
||||
: DetectionClassification.fromString(classBeforeCd).getDesc();
|
||||
this.classBeforeProb = classBeforeProb;
|
||||
this.classAfterCd = classAfterCd;
|
||||
this.classAfterName = DetectionClassification.fromString(classAfterCd).getDesc();
|
||||
this.classAfterName =
|
||||
english
|
||||
? DetectionClassification.fromString(classAfterCd).getId()
|
||||
: DetectionClassification.fromString(classAfterCd).getDesc();
|
||||
this.classAfterProb = classAfterProb;
|
||||
this.mapSheetNum = mapSheetNum;
|
||||
this.mapSheetName = mapSheetName;
|
||||
@@ -424,11 +442,13 @@ public class InferenceDetailDto {
|
||||
private Long m1BatchId;
|
||||
private Long m2BatchId;
|
||||
private Long m3BatchId;
|
||||
private Long m4BatchId;
|
||||
private String status;
|
||||
private String runningModelType;
|
||||
private UUID m1ModelUuid;
|
||||
private UUID m2ModelUuid;
|
||||
private UUID m3ModelUuid;
|
||||
private UUID m4ModelUuid;
|
||||
private String uid;
|
||||
}
|
||||
|
||||
@@ -443,6 +463,7 @@ public class InferenceDetailDto {
|
||||
private String modelVer1;
|
||||
private String modelVer2;
|
||||
private String modelVer3;
|
||||
private String modelVer4;
|
||||
private Integer compareYyyy;
|
||||
private Integer targetYyyy;
|
||||
private String detectOption;
|
||||
@@ -465,6 +486,7 @@ public class InferenceDetailDto {
|
||||
String modelVer1,
|
||||
String modelVer2,
|
||||
String modelVer3,
|
||||
String modelVer4,
|
||||
Integer compareYyyy,
|
||||
Integer targetYyyy,
|
||||
String detectOption,
|
||||
@@ -481,6 +503,7 @@ public class InferenceDetailDto {
|
||||
this.modelVer1 = modelVer1;
|
||||
this.modelVer2 = modelVer2;
|
||||
this.modelVer3 = modelVer3;
|
||||
this.modelVer4 = modelVer4;
|
||||
this.compareYyyy = compareYyyy;
|
||||
this.targetYyyy = targetYyyy;
|
||||
this.detectOption = DetectOption.getDescByCode(detectOption);
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.kamco.cd.kamcoback.inference.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.EnumValid;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||
@@ -14,6 +15,8 @@ import java.time.ZonedDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -51,6 +54,11 @@ public class InferenceResultDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
/** 탐지 데이터 옵션 dto */
|
||||
@@ -79,6 +87,11 @@ public class InferenceResultDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
@@ -96,7 +109,12 @@ public class InferenceResultDto {
|
||||
}
|
||||
|
||||
public static String getDescByCode(String code) {
|
||||
return fromCode(code).getDesc();
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
if (english) {
|
||||
return fromCode(code).getTextEn();
|
||||
} else {
|
||||
return fromCode(code).getDesc();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -108,6 +126,11 @@ public class InferenceResultDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
@@ -129,6 +152,11 @@ public class InferenceResultDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
/** 목록조회 dto */
|
||||
@@ -211,7 +239,46 @@ public class InferenceResultDto {
|
||||
long m = (s % 3600) / 60;
|
||||
long sec = s % 60;
|
||||
|
||||
return String.format("%d시간 %d분 %d초", h, m, sec);
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
if (english) {
|
||||
return String.format("%dh %dm %ds", h, m, sec);
|
||||
} else {
|
||||
return String.format("%d시간 %d분 %d초", h, m, sec);
|
||||
}
|
||||
}
|
||||
|
||||
@JsonProperty("mapSheetCnt")
|
||||
public String getMapSheetCnt() {
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
String text = this.mapSheetCnt;
|
||||
|
||||
if (!english) {
|
||||
return text;
|
||||
}
|
||||
|
||||
// "창원 외 34건"
|
||||
Pattern otherPattern = Pattern.compile("^(.+) 외 (\\d+)건$");
|
||||
Matcher otherMatcher = otherPattern.matcher(text);
|
||||
|
||||
if (otherMatcher.find()) {
|
||||
String name = otherMatcher.group(1);
|
||||
int count = Integer.parseInt(otherMatcher.group(2));
|
||||
|
||||
return name + " and " + count + (count == 1 ? " other" : " others");
|
||||
}
|
||||
|
||||
// "창원 1건"
|
||||
Pattern itemPattern = Pattern.compile("^(.+) (\\d+)건$");
|
||||
Matcher itemMatcher = itemPattern.matcher(text);
|
||||
|
||||
if (itemMatcher.find()) {
|
||||
String name = itemMatcher.group(1);
|
||||
int count = Integer.parseInt(itemMatcher.group(2));
|
||||
|
||||
return name + " (" + count + (count == 1 ? " item" : " items") + ")";
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,6 +328,10 @@ public class InferenceResultDto {
|
||||
@NotNull
|
||||
private UUID model3Uuid;
|
||||
|
||||
@Schema(description = "G4", example = "58c1153e-dec6-4424-82a1-189083a9d9dc")
|
||||
@NotNull
|
||||
private UUID model4Uuid;
|
||||
|
||||
@Schema(description = "비교년도", example = "2023")
|
||||
@NotNull
|
||||
private Integer compareYyyy;
|
||||
@@ -311,6 +382,10 @@ public class InferenceResultDto {
|
||||
@JsonFormatDttm
|
||||
ZonedDateTime m3ModelStartDttm;
|
||||
|
||||
@Schema(description = "모델4 사용시간 시작일시")
|
||||
@JsonFormatDttm
|
||||
ZonedDateTime m4ModelStartDttm;
|
||||
|
||||
@Schema(description = "모델1 사용시간 종료일시")
|
||||
@JsonFormatDttm
|
||||
ZonedDateTime m1ModelEndDttm;
|
||||
@@ -323,6 +398,10 @@ public class InferenceResultDto {
|
||||
@JsonFormatDttm
|
||||
ZonedDateTime m3ModelEndDttm;
|
||||
|
||||
@Schema(description = "모델4 사용시간 종료일시")
|
||||
@JsonFormatDttm
|
||||
ZonedDateTime m4ModelEndDttm;
|
||||
|
||||
@Schema(description = "탐지대상 도엽수")
|
||||
private Long detectingCnt;
|
||||
|
||||
@@ -335,6 +414,9 @@ public class InferenceResultDto {
|
||||
@Schema(description = "모델3 분석 대기")
|
||||
private Integer m3PendingJobs;
|
||||
|
||||
@Schema(description = "모델4 분석 대기")
|
||||
private Integer m4PendingJobs;
|
||||
|
||||
@Schema(description = "모델1 분석 진행중")
|
||||
private Integer m1RunningJobs;
|
||||
|
||||
@@ -344,6 +426,9 @@ public class InferenceResultDto {
|
||||
@Schema(description = "모델3 분석 진행중")
|
||||
private Integer m3RunningJobs;
|
||||
|
||||
@Schema(description = "모델4 분석 진행중")
|
||||
private Integer m4RunningJobs;
|
||||
|
||||
@Schema(description = "모델1 분석 완료")
|
||||
private Integer m1CompletedJobs;
|
||||
|
||||
@@ -353,6 +438,9 @@ public class InferenceResultDto {
|
||||
@Schema(description = "모델3 분석 완료")
|
||||
private Integer m3CompletedJobs;
|
||||
|
||||
@Schema(description = "모델4 분석 완료")
|
||||
private Integer m4CompletedJobs;
|
||||
|
||||
@Schema(description = "모델1 분석 실패")
|
||||
private Integer m1FailedJobs;
|
||||
|
||||
@@ -362,6 +450,9 @@ public class InferenceResultDto {
|
||||
@Schema(description = "모델3 분석 실패")
|
||||
private Integer m3FailedJobs;
|
||||
|
||||
@Schema(description = "모델4 분석 실패")
|
||||
private Integer m4FailedJobs;
|
||||
|
||||
@Schema(description = "변화탐지 제목")
|
||||
private String title;
|
||||
|
||||
@@ -397,6 +488,9 @@ public class InferenceResultDto {
|
||||
@Schema(description = "모델3 버전")
|
||||
private String modelVer3;
|
||||
|
||||
@Schema(description = "모델4 버전")
|
||||
private String modelVer4;
|
||||
|
||||
@Schema(description = "탑지 도엽 수")
|
||||
@JsonIgnore
|
||||
private Long totalJobs;
|
||||
@@ -406,21 +500,27 @@ public class InferenceResultDto {
|
||||
Integer m1PendingJobs,
|
||||
Integer m2PendingJobs,
|
||||
Integer m3PendingJobs,
|
||||
Integer m4PendingJobs,
|
||||
Integer m1RunningJobs,
|
||||
Integer m2RunningJobs,
|
||||
Integer m3RunningJobs,
|
||||
Integer m4RunningJobs,
|
||||
Integer m1CompletedJobs,
|
||||
Integer m2CompletedJobs,
|
||||
Integer m3CompletedJobs,
|
||||
Integer m4CompletedJobs,
|
||||
Integer m1FailedJobs,
|
||||
Integer m2FailedJobs,
|
||||
Integer m3FailedJobs,
|
||||
Integer m4FailedJobs,
|
||||
ZonedDateTime m1ModelStartDttm,
|
||||
ZonedDateTime m2ModelStartDttm,
|
||||
ZonedDateTime m3ModelStartDttm,
|
||||
ZonedDateTime m4ModelStartDttm,
|
||||
ZonedDateTime m1ModelEndDttm,
|
||||
ZonedDateTime m2ModelEndDttm,
|
||||
ZonedDateTime m3ModelEndDttm,
|
||||
ZonedDateTime m4ModelEndDttm,
|
||||
String title,
|
||||
Integer compareYyyy,
|
||||
Integer targetYyyy,
|
||||
@@ -432,26 +532,33 @@ public class InferenceResultDto {
|
||||
String modelVer1,
|
||||
String modelVer2,
|
||||
String modelVer3,
|
||||
String modelVer4,
|
||||
Long totalJobs) {
|
||||
this.detectingCnt = detectingCnt;
|
||||
this.m1PendingJobs = m1PendingJobs;
|
||||
this.m2PendingJobs = m2PendingJobs;
|
||||
this.m3PendingJobs = m3PendingJobs;
|
||||
this.m4PendingJobs = m4PendingJobs;
|
||||
this.m1RunningJobs = m1RunningJobs;
|
||||
this.m2RunningJobs = m2RunningJobs;
|
||||
this.m3RunningJobs = m3RunningJobs;
|
||||
this.m4RunningJobs = m4RunningJobs;
|
||||
this.m1CompletedJobs = m1CompletedJobs;
|
||||
this.m2CompletedJobs = m2CompletedJobs;
|
||||
this.m3CompletedJobs = m3CompletedJobs;
|
||||
this.m4CompletedJobs = m4CompletedJobs;
|
||||
this.m1FailedJobs = m1FailedJobs;
|
||||
this.m2FailedJobs = m2FailedJobs;
|
||||
this.m3FailedJobs = m3FailedJobs;
|
||||
this.m4FailedJobs = m4FailedJobs;
|
||||
this.m1ModelStartDttm = m1ModelStartDttm;
|
||||
this.m2ModelStartDttm = m2ModelStartDttm;
|
||||
this.m3ModelStartDttm = m3ModelStartDttm;
|
||||
this.m4ModelStartDttm = m4ModelStartDttm;
|
||||
this.m1ModelEndDttm = m1ModelEndDttm;
|
||||
this.m2ModelEndDttm = m2ModelEndDttm;
|
||||
this.m3ModelEndDttm = m3ModelEndDttm;
|
||||
this.m4ModelEndDttm = m4ModelEndDttm;
|
||||
this.title = title;
|
||||
this.compareYyyy = compareYyyy;
|
||||
this.targetYyyy = targetYyyy;
|
||||
@@ -463,6 +570,7 @@ public class InferenceResultDto {
|
||||
this.modelVer1 = modelVer1;
|
||||
this.modelVer2 = modelVer2;
|
||||
this.modelVer3 = modelVer3;
|
||||
this.modelVer4 = modelVer4;
|
||||
this.totalJobs = totalJobs;
|
||||
}
|
||||
|
||||
@@ -470,14 +578,16 @@ public class InferenceResultDto {
|
||||
@JsonProperty("progress")
|
||||
private int getProgress() {
|
||||
long tiles = this.totalJobs == null ? 0L : this.totalJobs; // 도엽수
|
||||
int models = 3; // 모델 개수
|
||||
int models = 4; // 모델 개수
|
||||
int completed =
|
||||
this.m1CompletedJobs
|
||||
+ this.m2CompletedJobs
|
||||
+ this.m3CompletedJobs
|
||||
+ this.m4CompletedJobs
|
||||
+ this.m1FailedJobs
|
||||
+ this.m2FailedJobs
|
||||
+ this.m3FailedJobs; // 완료수
|
||||
+ this.m3FailedJobs
|
||||
+ this.m4FailedJobs; // 완료수
|
||||
|
||||
long total = tiles * models; // 전체 작업량
|
||||
if (completed >= total) {
|
||||
@@ -516,6 +626,12 @@ public class InferenceResultDto {
|
||||
return formatElapsedTime(this.m3ModelStartDttm, this.m3ModelEndDttm);
|
||||
}
|
||||
|
||||
@Schema(description = "G4 사용시간")
|
||||
@JsonProperty("m4ElapsedTim")
|
||||
public String getM4ElapsedTime() {
|
||||
return formatElapsedTime(this.m4ModelStartDttm, this.m4ModelEndDttm);
|
||||
}
|
||||
|
||||
private String formatElapsedTime(ZonedDateTime start, ZonedDateTime end) {
|
||||
if (start == null || end == null) {
|
||||
return null;
|
||||
|
||||
@@ -7,24 +7,13 @@ import com.kamco.cd.kamcoback.common.geometry.GeoJsonFileWriter.Scene;
|
||||
import com.kamco.cd.kamcoback.common.inference.service.InferenceCommonService;
|
||||
import com.kamco.cd.kamcoback.common.inference.utils.GeoJsonValidator;
|
||||
import com.kamco.cd.kamcoback.common.utils.UserUtil;
|
||||
import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
|
||||
import com.kamco.cd.kamcoback.config.resttemplate.ExternalHttpClient;
|
||||
import com.kamco.cd.kamcoback.config.resttemplate.ExternalHttpClient.ExternalCallResult;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.AnalResultInfo;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.Dashboard;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.Detail;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.Geom;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.MapSheet;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.SearchGeoReq;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.*;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.DetectOption;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceLearnDto;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceServerStatusDto;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceStatusDetailDto;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetScope;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.ResultList;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.SaveInferenceAiDto;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Status;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.*;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto;
|
||||
import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto.pred_requests_areas;
|
||||
import com.kamco.cd.kamcoback.log.dto.AuditLogDto;
|
||||
@@ -44,16 +33,7 @@ import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -70,7 +50,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
@Service
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Transactional(readOnly = true)
|
||||
@Transactional
|
||||
public class InferenceResultService {
|
||||
|
||||
private final InferenceResultCoreService inferenceResultCoreService;
|
||||
@@ -636,8 +616,10 @@ public class InferenceResultService {
|
||||
modelType = ModelType.G1.getId();
|
||||
} else if (modelInfo.getModelType().equals(ModelType.G2.getId())) {
|
||||
modelType = ModelType.G2.getId();
|
||||
} else {
|
||||
} else if (modelInfo.getModelType().equals(ModelType.G3.getId())) {
|
||||
modelType = ModelType.G3.getId();
|
||||
} else {
|
||||
modelType = ModelType.G4.getId();
|
||||
}
|
||||
|
||||
InferenceSendDto sendDto = new InferenceSendDto();
|
||||
@@ -1033,4 +1015,14 @@ public class InferenceResultService {
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public ApiResponseDto.ResponseObj deleteInference(UUID uuid) {
|
||||
long result = inferenceResultCoreService.deleteInference(uuid);
|
||||
if (result > 0) {
|
||||
return new ApiResponseDto.ResponseObj(ApiResponseDto.ApiResponseCode.OK, "삭제되었습니다.");
|
||||
} else {
|
||||
return new ApiResponseDto.ResponseObj(
|
||||
ApiResponseDto.ApiResponseCode.INTERNAL_SERVER_ERROR, "삭제 실패하였습니다. 관리자에게 문의해주세요.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,6 +37,11 @@ public class LabelAllocateDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@CodeExpose
|
||||
@@ -59,6 +64,11 @@ public class LabelAllocateDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@CodeExpose
|
||||
@@ -80,6 +90,11 @@ public class LabelAllocateDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.kamco.cd.kamcoback.label.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.kamco.cd.kamcoback.common.enums.RoleType;
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.Enums;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelMngState;
|
||||
@@ -109,7 +111,13 @@ public class LabelWorkDto {
|
||||
if (type == null) {
|
||||
return enumId;
|
||||
}
|
||||
return type.getText();
|
||||
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
if (!english) {
|
||||
return type.getText();
|
||||
}
|
||||
|
||||
return type.getTextEn();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -223,10 +231,8 @@ public class LabelWorkDto {
|
||||
}
|
||||
|
||||
public String getUserRoleName() {
|
||||
if (this.userRole.equals("LABELER")) {
|
||||
return "라벨러";
|
||||
}
|
||||
return "검수자";
|
||||
RoleType type = Enums.fromId(RoleType.class, this.userRole);
|
||||
return HeaderUtil.isEnglishRequest() ? type.getTextEn() : type.getText();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.kamco.cd.kamcoback.log.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
||||
import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import java.time.LocalDate;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -36,6 +39,11 @@ public class ErrorLogDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
@Schema(name = "ErrorLogBasic", description = "에러로그 기본 정보")
|
||||
@@ -56,6 +64,26 @@ public class ErrorLogDto {
|
||||
private final String errorMessage;
|
||||
private final String errorDetail;
|
||||
private final String createDate; // to_char해서 가져옴
|
||||
|
||||
@JsonProperty("errorMessage")
|
||||
public String getErrorMessage() {
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
if (!english) {
|
||||
return this.errorMessage;
|
||||
}
|
||||
|
||||
return ApiResponseDto.ApiResponseCode.fromMessage(this.errorMessage).toString();
|
||||
}
|
||||
|
||||
@JsonProperty("errorName")
|
||||
public String getErrorName() {
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
if (!english) {
|
||||
return this.errorName;
|
||||
}
|
||||
|
||||
return ApiResponseDto.ApiResponseCode.fromMessage(this.errorName).toString();
|
||||
}
|
||||
}
|
||||
|
||||
@Schema(name = "ErrorSearchReq", description = "에러로그 검색 요청")
|
||||
|
||||
@@ -21,4 +21,9 @@ public enum EventStatus implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,4 +39,9 @@ public enum EventType implements EnumType {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,14 +22,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RequestPart;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@Tag(name = "영상 관리", description = "영상 관리 API")
|
||||
@@ -256,4 +249,11 @@ public class MapSheetMngApiController {
|
||||
return ApiResponseDto.ok(
|
||||
mapSheetMngService.uploadChunkMapSheetFile(hstUid, upAddReqDto, chunkFile));
|
||||
}
|
||||
|
||||
@Operation(summary = "영상데이터관리 > 등록된 년도 데이터 전체 삭제", description = "영상데이터관리 > 등록된 년도 데이터 전체 삭제")
|
||||
@DeleteMapping
|
||||
public ApiResponseDto<Void> deleteByMngYyyyMngAll(@RequestParam Integer mngYyyy) {
|
||||
mapSheetMngService.deleteByMngYyyyMngAll(mngYyyy);
|
||||
return ApiResponseDto.ok(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.mapsheet.dto;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.kamco.cd.kamcoback.common.enums.MngStateType;
|
||||
import com.kamco.cd.kamcoback.common.enums.SyncStateType;
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.Enums;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||
@@ -41,6 +42,11 @@ public class MapSheetMngDto {
|
||||
public String getText() {
|
||||
return message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return message;
|
||||
}
|
||||
}
|
||||
|
||||
@Schema(name = "MngSearchReq", description = "영상관리 검색 요청")
|
||||
@@ -217,7 +223,11 @@ public class MapSheetMngDto {
|
||||
enumId = "NOTYET";
|
||||
}
|
||||
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
MngStateType type = Enums.fromId(MngStateType.class, enumId);
|
||||
if (english) {
|
||||
return type.getTextEn();
|
||||
}
|
||||
return type.getText();
|
||||
}
|
||||
}
|
||||
@@ -341,6 +351,10 @@ public class MapSheetMngDto {
|
||||
}
|
||||
|
||||
SyncStateType type = Enums.fromId(SyncStateType.class, enumId);
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
if (english) {
|
||||
return type.getTextEn();
|
||||
}
|
||||
return type.getText();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional(readOnly = true)
|
||||
@Transactional
|
||||
public class MapSheetMngService {
|
||||
|
||||
private final MapSheetMngCoreService mapSheetMngCoreService;
|
||||
@@ -489,4 +489,8 @@ public class MapSheetMngService {
|
||||
|
||||
return modelUploadResDto;
|
||||
}
|
||||
|
||||
public void deleteByMngYyyyMngAll(Integer mngYyyy) {
|
||||
mapSheetMngCoreService.deleteByMngYyyyMngAll(mngYyyy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.kamco.cd.kamcoback.auth.CustomUserDetails;
|
||||
import com.kamco.cd.kamcoback.auth.JwtTokenProvider;
|
||||
import com.kamco.cd.kamcoback.auth.RefreshTokenService;
|
||||
import com.kamco.cd.kamcoback.common.enums.StatusType;
|
||||
import com.kamco.cd.kamcoback.config.api.ApiLogFunction;
|
||||
import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
|
||||
import com.kamco.cd.kamcoback.members.dto.MembersDto;
|
||||
import com.kamco.cd.kamcoback.members.dto.SignInRequest;
|
||||
@@ -16,11 +17,13 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.nio.file.AccessDeniedException;
|
||||
import java.time.Duration;
|
||||
import java.util.UUID;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.ResponseCookie;
|
||||
@@ -34,6 +37,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@Slf4j
|
||||
@Tag(name = "인증(Auth)", description = "로그인, 토큰 재발급, 로그아웃 API")
|
||||
@RestController
|
||||
@RequestMapping("/api/auth")
|
||||
@@ -103,8 +107,13 @@ public class AuthController {
|
||||
required = true)
|
||||
@RequestBody
|
||||
SignInRequest request,
|
||||
HttpServletRequest servletRequest,
|
||||
HttpServletResponse response) {
|
||||
|
||||
// TODO: 접속 가능한 IP 대역 조회
|
||||
String clientIp = ApiLogFunction.getXFowardedForIp(servletRequest);
|
||||
log.info("####### clientIp: {}", clientIp);
|
||||
|
||||
// 사용자 상태 조회
|
||||
String status = authService.getUserStatus(request);
|
||||
Authentication authentication = null;
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.members.dto;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.kamco.cd.kamcoback.common.enums.RoleType;
|
||||
import com.kamco.cd.kamcoback.common.enums.StatusType;
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.common.utils.enums.Enums;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.EnumValid;
|
||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||
@@ -65,16 +66,18 @@ public class MembersDto {
|
||||
|
||||
private String getUserRoleName(String roleId) {
|
||||
RoleType type = Enums.fromId(RoleType.class, roleId);
|
||||
return type.getText();
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
return english ? type.getTextEn() : type.getText();
|
||||
}
|
||||
|
||||
private String getStatusName(String status, Boolean pwdResetYn) {
|
||||
StatusType type = Enums.fromId(StatusType.class, status);
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
pwdResetYn = pwdResetYn != null && pwdResetYn;
|
||||
if (type.equals(StatusType.PENDING) && pwdResetYn) {
|
||||
type = StatusType.ACTIVE;
|
||||
}
|
||||
return type.getText();
|
||||
return english ? type.getTextEn() : type.getText();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ public class MenuDto {
|
||||
|
||||
@JsonFormatDttm private ZonedDateTime updatedDttm;
|
||||
|
||||
private String menuApiUrl;
|
||||
private String menuNmEn;
|
||||
|
||||
public Basic(
|
||||
String menuUid,
|
||||
@@ -45,7 +45,8 @@ public class MenuDto {
|
||||
Long updatedUid,
|
||||
List<MenuDto.Basic> children,
|
||||
ZonedDateTime createdDttm,
|
||||
ZonedDateTime updatedDttm) {
|
||||
ZonedDateTime updatedDttm,
|
||||
String menuNmEn) {
|
||||
this.menuUid = menuUid;
|
||||
this.menuNm = menuNm;
|
||||
this.menuUrl = menuUrl;
|
||||
@@ -58,6 +59,7 @@ public class MenuDto {
|
||||
this.children = children;
|
||||
this.createdDttm = createdDttm;
|
||||
this.updatedDttm = updatedDttm;
|
||||
this.menuNmEn = menuNmEn;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@ public class ModelMngDto {
|
||||
public enum ModelType implements EnumType {
|
||||
G1("G1"),
|
||||
G2("G2"),
|
||||
G3("G3");
|
||||
G3("G3"),
|
||||
G4("G4");
|
||||
|
||||
private final String desc;
|
||||
|
||||
@@ -36,6 +37,11 @@ public class ModelMngDto {
|
||||
public String getText() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTextEn() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
|
||||
@Schema(name = "ModelMgmtDto Basic", description = "모델관리 엔티티 기본 정보")
|
||||
|
||||
@@ -47,7 +47,7 @@ public class ModelMngService {
|
||||
* @param searchReq 페이징
|
||||
* @param startDate 시작날짜
|
||||
* @param endDate 종료날짜
|
||||
* @param modelType 모델 타입 G1, G2, G3
|
||||
* @param modelType 모델 타입 G1, G2, G3, G4
|
||||
* @param searchVal 모델 ver
|
||||
* @return 모델 목록
|
||||
*/
|
||||
|
||||
@@ -117,6 +117,7 @@ public class InferenceResultCoreService {
|
||||
mapSheetLearnEntity.setM1ModelUuid(req.getModel1Uuid());
|
||||
mapSheetLearnEntity.setM2ModelUuid(req.getModel2Uuid());
|
||||
mapSheetLearnEntity.setM3ModelUuid(req.getModel3Uuid());
|
||||
mapSheetLearnEntity.setM4ModelUuid(req.getModel4Uuid());
|
||||
mapSheetLearnEntity.setCompareYyyy(req.getCompareYyyy());
|
||||
mapSheetLearnEntity.setTargetYyyy(req.getTargetYyyy());
|
||||
mapSheetLearnEntity.setMapSheetScope(req.getMapSheetScope());
|
||||
@@ -279,7 +280,10 @@ public class InferenceResultCoreService {
|
||||
|
||||
List<Long> batchIds =
|
||||
Stream.of(
|
||||
entity.getM1ModelBatchId(), entity.getM2ModelBatchId(), entity.getM3ModelBatchId())
|
||||
entity.getM1ModelBatchId(),
|
||||
entity.getM2ModelBatchId(),
|
||||
entity.getM3ModelBatchId(),
|
||||
entity.getM4ModelBatchId())
|
||||
.filter(Objects::nonNull)
|
||||
.distinct() // 중복 방지 (선택)
|
||||
.toList();
|
||||
@@ -333,6 +337,16 @@ public class InferenceResultCoreService {
|
||||
entity::setM3RunningJobs,
|
||||
entity::setM3CompletedJobs,
|
||||
entity::setM3FailedJobs);
|
||||
case "G4" ->
|
||||
applyModelFields(
|
||||
request,
|
||||
entity::setM4ModelBatchId,
|
||||
entity::setM4ModelStartDttm,
|
||||
entity::setM4ModelEndDttm,
|
||||
entity::setM4PendingJobs,
|
||||
entity::setM4RunningJobs,
|
||||
entity::setM4CompletedJobs,
|
||||
entity::setM4FailedJobs);
|
||||
default -> throw new IllegalArgumentException("Unknown type: " + request.getType());
|
||||
}
|
||||
}
|
||||
@@ -390,11 +404,13 @@ public class InferenceResultCoreService {
|
||||
inferenceBatchSheet.setM1BatchId(entity.getM1ModelBatchId());
|
||||
inferenceBatchSheet.setM2BatchId(entity.getM2ModelBatchId());
|
||||
inferenceBatchSheet.setM3BatchId(entity.getM3ModelBatchId());
|
||||
inferenceBatchSheet.setM4BatchId(entity.getM4ModelBatchId());
|
||||
inferenceBatchSheet.setStatus(entity.getStatus());
|
||||
inferenceBatchSheet.setRunningModelType(entity.getRunningModelType());
|
||||
inferenceBatchSheet.setM1ModelUuid(entity.getM1ModelUuid());
|
||||
inferenceBatchSheet.setM2ModelUuid(entity.getM2ModelUuid());
|
||||
inferenceBatchSheet.setM3ModelUuid(entity.getM3ModelUuid());
|
||||
inferenceBatchSheet.setM4ModelUuid(entity.getM4ModelUuid());
|
||||
inferenceBatchSheet.setUid(entity.getUid());
|
||||
return inferenceBatchSheet;
|
||||
}
|
||||
@@ -435,6 +451,9 @@ public class InferenceResultCoreService {
|
||||
SaveInferenceAiDto dto = new SaveInferenceAiDto();
|
||||
dto.setUuid(entity.getUuid());
|
||||
|
||||
if (entity.getM4ModelBatchId() != null) {
|
||||
dto.setBatchId(entity.getM4ModelBatchId());
|
||||
}
|
||||
if (entity.getM3ModelBatchId() != null) {
|
||||
dto.setBatchId(entity.getM3ModelBatchId());
|
||||
}
|
||||
@@ -626,4 +645,8 @@ public class InferenceResultCoreService {
|
||||
public List<InferenceResultsTestingDto.Basic> getInferenceResultGroupList(List<Long> batchIds) {
|
||||
return inferenceResultsTestingRepository.getInferenceResultGroupList(batchIds);
|
||||
}
|
||||
|
||||
public long deleteInference(UUID uuid) {
|
||||
return inferenceResultRepository.deleteInference(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -379,4 +379,8 @@ public class MapSheetMngCoreService {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void deleteByMngYyyyMngAll(Integer mngYyyy) {
|
||||
mapSheetMngRepository.deleteByMngYyyyMngAll(mngYyyy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.kamco.cd.kamcoback.postgres.core;
|
||||
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.menu.dto.MenuDto;
|
||||
import com.kamco.cd.kamcoback.menu.dto.MyMenuDto;
|
||||
import com.kamco.cd.kamcoback.postgres.entity.MenuEntity;
|
||||
@@ -7,8 +8,10 @@ import com.kamco.cd.kamcoback.postgres.repository.menu.MenuRepository;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class MenuCoreService {
|
||||
@@ -27,6 +30,8 @@ public class MenuCoreService {
|
||||
*/
|
||||
public List<MyMenuDto.Basic> getFindByRole(String role) {
|
||||
List<MenuEntity> entities = menuRepository.getFindByRole(role);
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
log.info("[LANG CHECK] english={}", english);
|
||||
|
||||
return entities.stream()
|
||||
.map(
|
||||
@@ -34,7 +39,7 @@ public class MenuCoreService {
|
||||
MyMenuDto.Basic p =
|
||||
new MyMenuDto.Basic(
|
||||
parent.getMenuUid(),
|
||||
parent.getMenuNm(),
|
||||
english ? parent.getMenuNmEn() : parent.getMenuNm(),
|
||||
parent.getMenuUrl(),
|
||||
parent.getMenuOrder());
|
||||
|
||||
@@ -48,7 +53,10 @@ public class MenuCoreService {
|
||||
.map(
|
||||
c ->
|
||||
new MyMenuDto.Basic(
|
||||
c.getMenuUid(), c.getMenuNm(), c.getMenuUrl(), c.getMenuOrder()))
|
||||
c.getMenuUid(),
|
||||
english ? c.getMenuNmEn() : c.getMenuNm(),
|
||||
c.getMenuUrl(),
|
||||
c.getMenuOrder()))
|
||||
.forEach(childDto -> p.getChildren().add(childDto));
|
||||
|
||||
return p;
|
||||
|
||||
@@ -136,6 +136,10 @@ public class MapSheetAnalInferenceEntity {
|
||||
@Column(name = "model_m3_ver", length = 50)
|
||||
private String modelM3Ver;
|
||||
|
||||
@Size(max = 50)
|
||||
@Column(name = "model_m4_ver", length = 50)
|
||||
private String modelM4Ver;
|
||||
|
||||
@Size(max = 20)
|
||||
@Column(name = "anal_target_type", length = 20)
|
||||
private String analTargetType;
|
||||
|
||||
@@ -64,6 +64,9 @@ public class MapSheetLearn5kEntity {
|
||||
@Column(name = "is_m3_fail")
|
||||
private Boolean isM3Fail = false;
|
||||
|
||||
@Column(name = "is_m4_fail")
|
||||
private Boolean isM4Fail = false;
|
||||
|
||||
@Column(name = "m1_error_message", columnDefinition = "text")
|
||||
private String m1ErrorMessage;
|
||||
|
||||
@@ -73,6 +76,9 @@ public class MapSheetLearn5kEntity {
|
||||
@Column(name = "m3_error_message", columnDefinition = "text")
|
||||
private String m3ErrorMessage;
|
||||
|
||||
@Column(name = "m4_error_message", columnDefinition = "text")
|
||||
private String m4ErrorMessage;
|
||||
|
||||
@Column(name = "m1_job_id")
|
||||
private Long m1JobId;
|
||||
|
||||
@@ -81,4 +87,7 @@ public class MapSheetLearn5kEntity {
|
||||
|
||||
@Column(name = "m3_job_id")
|
||||
private Long m3JobId;
|
||||
|
||||
@Column(name = "m4_job_id")
|
||||
private Long m4JobId;
|
||||
}
|
||||
|
||||
@@ -54,6 +54,9 @@ public class MapSheetLearnEntity {
|
||||
@Column(name = "m3_model_uuid")
|
||||
private UUID m3ModelUuid;
|
||||
|
||||
@Column(name = "m4_model_uuid")
|
||||
private UUID m4ModelUuid;
|
||||
|
||||
@Column(name = "compare_yyyy")
|
||||
private Integer compareYyyy;
|
||||
|
||||
@@ -187,6 +190,29 @@ public class MapSheetLearnEntity {
|
||||
@Column(name = "m3_failed_jobs", nullable = false)
|
||||
private int m3FailedJobs = 0;
|
||||
|
||||
/* ===================== M4 ===================== */
|
||||
|
||||
@Column(name = "m4_model_batch_id")
|
||||
private Long m4ModelBatchId;
|
||||
|
||||
@Column(name = "m4_model_start_dttm")
|
||||
private ZonedDateTime m4ModelStartDttm;
|
||||
|
||||
@Column(name = "m4_model_end_dttm")
|
||||
private ZonedDateTime m4ModelEndDttm;
|
||||
|
||||
@Column(name = "m4_pending_jobs", nullable = false)
|
||||
private int m4PendingJobs = 0;
|
||||
|
||||
@Column(name = "m4_running_jobs", nullable = false)
|
||||
private int m4RunningJobs = 0;
|
||||
|
||||
@Column(name = "m4_completed_jobs", nullable = false)
|
||||
private int m4CompletedJobs = 0;
|
||||
|
||||
@Column(name = "m4_failed_jobs", nullable = false)
|
||||
private int m4FailedJobs = 0;
|
||||
|
||||
@Column(name = "apply_status")
|
||||
private String applyStatus = GukYuinStatus.PENDING.getId();
|
||||
|
||||
@@ -229,6 +255,9 @@ public class MapSheetLearnEntity {
|
||||
@Column(name = "shp_error_message")
|
||||
private String shp_error_message;
|
||||
|
||||
@Column(name = "is_deleted")
|
||||
private Boolean isDeleted;
|
||||
|
||||
public InferenceResultDto.ResultList toDto() {
|
||||
return new InferenceResultDto.ResultList(
|
||||
this.uuid,
|
||||
|
||||
@@ -58,6 +58,9 @@ public class MenuEntity extends CommonDateEntity {
|
||||
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
|
||||
private List<MenuEntity> children = new ArrayList<>();
|
||||
|
||||
@Column(name = "menu_nm_en")
|
||||
private String menuNmEn; // 영문 메뉴명
|
||||
|
||||
public MenuDto.Basic toDto() {
|
||||
return new MenuDto.Basic(
|
||||
this.menuUid,
|
||||
@@ -71,6 +74,7 @@ public class MenuEntity extends CommonDateEntity {
|
||||
this.updatedUid,
|
||||
this.children.stream().map(MenuEntity::toDto).toList(),
|
||||
this.getCreatedDate(),
|
||||
this.getModifiedDate());
|
||||
this.getModifiedDate(),
|
||||
this.menuNmEn);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,4 +62,11 @@ public interface InferenceResultRepositoryCustom {
|
||||
* @return
|
||||
*/
|
||||
Optional<MapSheetAnalInferenceEntity> getAnalInferenceDataByLearnId(Long id);
|
||||
|
||||
/**
|
||||
* 추론 삭제
|
||||
*
|
||||
* @param uuid
|
||||
*/
|
||||
long deleteInference(UUID uuid);
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC
|
||||
m1_model_batch_id,
|
||||
m2_model_batch_id,
|
||||
m3_model_batch_id,
|
||||
m4_model_batch_id,
|
||||
learn_id,
|
||||
anal_state
|
||||
)
|
||||
@@ -51,6 +52,7 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC
|
||||
r.m1_model_batch_id,
|
||||
r.m2_model_batch_id,
|
||||
r.m3_model_batch_id,
|
||||
r.m4_model_batch_id,
|
||||
r.id,
|
||||
:pendingStateId
|
||||
FROM tb_map_sheet_learn r
|
||||
@@ -111,7 +113,8 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC
|
||||
ON r.batch_id IN (
|
||||
msl.m1_model_batch_id,
|
||||
msl.m2_model_batch_id,
|
||||
msl.m3_model_batch_id
|
||||
msl.m3_model_batch_id,
|
||||
msl.m4_model_batch_id
|
||||
)
|
||||
WHERE msl.anal_uid = :analId
|
||||
group by msl.anal_uid,
|
||||
@@ -207,7 +210,8 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC
|
||||
ON r.batch_id IN (
|
||||
msl.m1_model_batch_id,
|
||||
msl.m2_model_batch_id,
|
||||
msl.m3_model_batch_id
|
||||
msl.m3_model_batch_id,
|
||||
msl.m4_model_batch_id
|
||||
)
|
||||
INNER JOIN tb_map_sheet_anal_data_inference msadi
|
||||
ON msadi.anal_uid = msl.anal_uid
|
||||
@@ -346,4 +350,13 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC
|
||||
.where(mapSheetAnalInferenceEntity.learnId.eq(id))
|
||||
.fetchOne());
|
||||
}
|
||||
|
||||
@Override
|
||||
public long deleteInference(UUID uuid) {
|
||||
return queryFactory
|
||||
.update(mapSheetLearnEntity)
|
||||
.set(mapSheetLearnEntity.isDeleted, true)
|
||||
.where(mapSheetLearnEntity.uuid.eq(uuid))
|
||||
.execute();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,11 @@ public class MapSheetLearn5kRepositoryImpl implements MapSheetLearn5kRepositoryC
|
||||
jobIdPath = mapSheetLearn5kEntity.m3JobId;
|
||||
errorMsgPath = mapSheetLearn5kEntity.m3ErrorMessage;
|
||||
}
|
||||
case "G4" -> {
|
||||
failPath = mapSheetLearn5kEntity.isM4Fail;
|
||||
jobIdPath = mapSheetLearn5kEntity.m4JobId;
|
||||
errorMsgPath = mapSheetLearn5kEntity.m4ErrorMessage;
|
||||
}
|
||||
default -> {
|
||||
return;
|
||||
}
|
||||
@@ -97,6 +102,10 @@ public class MapSheetLearn5kRepositoryImpl implements MapSheetLearn5kRepositoryC
|
||||
failPath = mapSheetLearn5kEntity.isM3Fail;
|
||||
jobIdPath = mapSheetLearn5kEntity.m3JobId;
|
||||
}
|
||||
case "G4" -> {
|
||||
failPath = mapSheetLearn5kEntity.isM4Fail;
|
||||
jobIdPath = mapSheetLearn5kEntity.m4JobId;
|
||||
}
|
||||
default -> {
|
||||
return;
|
||||
}
|
||||
@@ -147,6 +156,10 @@ public class MapSheetLearn5kRepositoryImpl implements MapSheetLearn5kRepositoryC
|
||||
jobIdPath = mapSheetLearn5kEntity.m3JobId;
|
||||
failPath = mapSheetLearn5kEntity.isM3Fail;
|
||||
}
|
||||
case "G4" -> {
|
||||
jobIdPath = mapSheetLearn5kEntity.m4JobId;
|
||||
failPath = mapSheetLearn5kEntity.isM4Fail;
|
||||
}
|
||||
default -> {
|
||||
return List.of();
|
||||
}
|
||||
@@ -189,6 +202,9 @@ public class MapSheetLearn5kRepositoryImpl implements MapSheetLearn5kRepositoryC
|
||||
case "G3" -> {
|
||||
jobIdPath = mapSheetLearn5kEntity.m3JobId;
|
||||
}
|
||||
case "G4" -> {
|
||||
jobIdPath = mapSheetLearn5kEntity.m4JobId;
|
||||
}
|
||||
default -> {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalInferenceEntity;
|
||||
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetLearnEntity;
|
||||
import com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity;
|
||||
import com.querydsl.core.BooleanBuilder;
|
||||
import com.querydsl.core.Tuple;
|
||||
import com.querydsl.core.types.Expression;
|
||||
import com.querydsl.core.types.Projections;
|
||||
import com.querydsl.core.types.dsl.BooleanExpression;
|
||||
@@ -37,13 +38,10 @@ 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;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.data.domain.Page;
|
||||
@@ -90,6 +88,9 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
builder.and(mapSheetLearnEntity.title.containsIgnoreCase(req.getTitle()));
|
||||
}
|
||||
|
||||
// 삭제여부 값 추가
|
||||
builder.and(mapSheetLearnEntity.isDeleted.eq(false).or(mapSheetLearnEntity.isDeleted.isNull()));
|
||||
|
||||
List<MapSheetLearnEntity> content =
|
||||
queryFactory
|
||||
.select(mapSheetLearnEntity)
|
||||
@@ -195,6 +196,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
QModelMngEntity m1Model = new QModelMngEntity("m1Model");
|
||||
QModelMngEntity m2Model = new QModelMngEntity("m2Model");
|
||||
QModelMngEntity m3Model = new QModelMngEntity("m3Model");
|
||||
QModelMngEntity m4Model = new QModelMngEntity("m4Model");
|
||||
|
||||
InferenceStatusDetailDto foundContent =
|
||||
queryFactory
|
||||
@@ -205,21 +207,27 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
mapSheetLearnEntity.m1PendingJobs,
|
||||
mapSheetLearnEntity.m2PendingJobs,
|
||||
mapSheetLearnEntity.m3PendingJobs,
|
||||
mapSheetLearnEntity.m4PendingJobs,
|
||||
mapSheetLearnEntity.m1RunningJobs,
|
||||
mapSheetLearnEntity.m2RunningJobs,
|
||||
mapSheetLearnEntity.m3RunningJobs,
|
||||
mapSheetLearnEntity.m4RunningJobs,
|
||||
mapSheetLearnEntity.m1CompletedJobs,
|
||||
mapSheetLearnEntity.m2CompletedJobs,
|
||||
mapSheetLearnEntity.m3CompletedJobs,
|
||||
mapSheetLearnEntity.m4CompletedJobs,
|
||||
mapSheetLearnEntity.m1FailedJobs,
|
||||
mapSheetLearnEntity.m2FailedJobs,
|
||||
mapSheetLearnEntity.m3FailedJobs,
|
||||
mapSheetLearnEntity.m4FailedJobs,
|
||||
mapSheetLearnEntity.m1ModelStartDttm,
|
||||
mapSheetLearnEntity.m2ModelStartDttm,
|
||||
mapSheetLearnEntity.m3ModelStartDttm,
|
||||
mapSheetLearnEntity.m4ModelStartDttm,
|
||||
mapSheetLearnEntity.m1ModelEndDttm,
|
||||
mapSheetLearnEntity.m2ModelEndDttm,
|
||||
mapSheetLearnEntity.m3ModelEndDttm,
|
||||
mapSheetLearnEntity.m4ModelEndDttm,
|
||||
mapSheetLearnEntity.title,
|
||||
mapSheetLearnEntity.compareYyyy,
|
||||
mapSheetLearnEntity.targetYyyy,
|
||||
@@ -231,6 +239,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
m1Model.modelVer.as("model1Ver"),
|
||||
m2Model.modelVer.as("model2Ver"),
|
||||
m3Model.modelVer.as("model3Ver"),
|
||||
m4Model.modelVer.as("model4Ver"),
|
||||
mapSheetLearnEntity.totalJobs))
|
||||
.from(mapSheetLearnEntity)
|
||||
.leftJoin(m1Model)
|
||||
@@ -239,6 +248,8 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
.on(m2Model.uuid.eq(mapSheetLearnEntity.m2ModelUuid))
|
||||
.leftJoin(m3Model)
|
||||
.on(m3Model.uuid.eq(mapSheetLearnEntity.m3ModelUuid))
|
||||
.leftJoin(m4Model)
|
||||
.on(m4Model.uuid.eq(mapSheetLearnEntity.m4ModelUuid))
|
||||
.where(mapSheetLearnEntity.uuid.eq(uuid))
|
||||
.fetchOne();
|
||||
|
||||
@@ -296,6 +307,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
QModelMngEntity m1 = new QModelMngEntity("m1");
|
||||
QModelMngEntity m2 = new QModelMngEntity("m2");
|
||||
QModelMngEntity m3 = new QModelMngEntity("m3");
|
||||
QModelMngEntity m4 = new QModelMngEntity("m4");
|
||||
|
||||
return queryFactory
|
||||
.select(
|
||||
@@ -305,6 +317,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
m1.modelVer,
|
||||
m2.modelVer,
|
||||
m3.modelVer,
|
||||
m4.modelVer,
|
||||
mapSheetLearnEntity.compareYyyy,
|
||||
mapSheetLearnEntity.targetYyyy,
|
||||
mapSheetLearnEntity.detectOption,
|
||||
@@ -324,6 +337,8 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
.on(mapSheetLearnEntity.m2ModelUuid.eq(m2.uuid))
|
||||
.leftJoin(m3)
|
||||
.on(mapSheetLearnEntity.m3ModelUuid.eq(m3.uuid))
|
||||
.leftJoin(m4)
|
||||
.on(mapSheetLearnEntity.m4ModelUuid.eq(m4.uuid))
|
||||
.leftJoin(mapSheetAnalInferenceEntity)
|
||||
.on(mapSheetAnalInferenceEntity.learnId.eq(mapSheetLearnEntity.id))
|
||||
.where(mapSheetLearnEntity.uuid.eq(uuid))
|
||||
@@ -445,12 +460,14 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
NumberExpression<Long> inkxNoAsLong =
|
||||
Expressions.numberTemplate(Long.class, "cast({0} as long)", mapInkx5kEntity.mapidcdNo);
|
||||
|
||||
/* 미사용
|
||||
StringExpression pnu =
|
||||
Expressions.stringTemplate(
|
||||
"nullif(({0}), '')",
|
||||
JPAExpressions.select(Expressions.stringTemplate("string_agg({0}, ',')", pnuEntity.pnu))
|
||||
.from(pnuEntity)
|
||||
.where(pnuEntity.geo.geoUid.eq(mapSheetAnalDataInferenceGeomEntity.geoUid)));
|
||||
*/
|
||||
|
||||
// 4) content
|
||||
List<Geom> content =
|
||||
@@ -458,6 +475,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
.select(
|
||||
Projections.constructor(
|
||||
Geom.class,
|
||||
mapSheetAnalDataInferenceGeomEntity.geoUid,
|
||||
mapSheetAnalDataInferenceGeomEntity.uuid,
|
||||
mapSheetAnalDataInferenceGeomEntity.resultUid,
|
||||
mapSheetAnalDataInferenceGeomEntity.compareYyyy,
|
||||
@@ -472,7 +490,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
Expressions.stringTemplate(
|
||||
"substring({0} from 1 for 8)",
|
||||
mapSheetAnalDataInferenceGeomEntity.resultUid),
|
||||
pnu,
|
||||
Expressions.constant(""),
|
||||
mapSheetAnalDataInferenceGeomEntity.fitState))
|
||||
.from(mapSheetAnalInferenceEntity)
|
||||
.join(mapSheetAnalDataInferenceEntity)
|
||||
@@ -487,6 +505,33 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
||||
.limit(pageable.getPageSize())
|
||||
.fetch();
|
||||
|
||||
// 4-1) pnu 를 geoUid 로 검색하기 -> AS-IS 에서는 전체 tb_pnu 를 조회해서 오래 걸렸음
|
||||
List<Long> geoUids = content.stream().map(Geom::getGeoUid).filter(Objects::nonNull).toList();
|
||||
Map<Long, String> pnuMap = new HashMap<>();
|
||||
|
||||
if (!geoUids.isEmpty()) {
|
||||
StringExpression pnuAgg = Expressions.stringTemplate("string_agg({0}, ',')", pnuEntity.pnu);
|
||||
|
||||
List<Tuple> pnuRows =
|
||||
queryFactory
|
||||
.select(
|
||||
pnuEntity.geo.geoUid,
|
||||
Expressions.stringTemplate("string_agg({0}, ',')", pnuEntity.pnu))
|
||||
.from(pnuEntity)
|
||||
.where(pnuEntity.geo.geoUid.in(geoUids))
|
||||
.groupBy(pnuEntity.geo.geoUid)
|
||||
.fetch();
|
||||
|
||||
pnuMap =
|
||||
pnuRows.stream()
|
||||
.collect(
|
||||
Collectors.toMap(row -> row.get(pnuEntity.geo.geoUid), row -> row.get(pnuAgg)));
|
||||
}
|
||||
|
||||
for (Geom geom : content) {
|
||||
geom.setPnu(pnuMap.get(geom.getGeoUid()));
|
||||
}
|
||||
|
||||
// 5) total (조인 최소화 유지)
|
||||
Long total =
|
||||
queryFactory
|
||||
|
||||
@@ -211,8 +211,9 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
||||
.where(
|
||||
l.status
|
||||
.eq(Status.END.getId())
|
||||
.and(JPAExpressions.selectOne().from(d).where(d.analUid.eq(a.id)).exists()))
|
||||
.orderBy(l.id.asc())
|
||||
.and(JPAExpressions.selectOne().from(d).where(d.analUid.eq(a.id)).exists()),
|
||||
l.isDeleted.eq(false).or(l.isDeleted.isNull()))
|
||||
.orderBy(l.id.desc())
|
||||
.fetch();
|
||||
}
|
||||
|
||||
|
||||
@@ -160,8 +160,10 @@ public class LabelWorkRepositoryImpl implements LabelWorkRepositoryCustom {
|
||||
"substring({0} from 1 for 8)", mapSheetLearnEntity.uid),
|
||||
mapSheetLearnEntity.uuid))
|
||||
.from(mapSheetAnalInferenceEntity)
|
||||
.leftJoin(mapSheetLearnEntity)
|
||||
.on(mapSheetAnalInferenceEntity.learnId.eq(mapSheetLearnEntity.id))
|
||||
.innerJoin(mapSheetLearnEntity)
|
||||
.on(
|
||||
mapSheetAnalInferenceEntity.learnId.eq(mapSheetLearnEntity.id),
|
||||
mapSheetLearnEntity.isDeleted.eq(false).or(mapSheetLearnEntity.isDeleted.isNull()))
|
||||
.where(baseWhereBuilder)
|
||||
.orderBy(
|
||||
stateOrder.asc(),
|
||||
|
||||
@@ -5,6 +5,7 @@ import static com.kamco.cd.kamcoback.postgres.entity.QErrorLogEntity.errorLogEnt
|
||||
import static com.kamco.cd.kamcoback.postgres.entity.QMemberEntity.memberEntity;
|
||||
import static com.kamco.cd.kamcoback.postgres.entity.QMenuEntity.menuEntity;
|
||||
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.log.dto.AuditLogDto;
|
||||
import com.kamco.cd.kamcoback.log.dto.AuditLogDto.DownloadReq;
|
||||
import com.kamco.cd.kamcoback.log.dto.ErrorLogDto;
|
||||
@@ -13,6 +14,7 @@ import com.kamco.cd.kamcoback.log.dto.EventType;
|
||||
import com.kamco.cd.kamcoback.postgres.entity.AuditLogEntity;
|
||||
import com.kamco.cd.kamcoback.postgres.entity.QMenuEntity;
|
||||
import com.querydsl.core.BooleanBuilder;
|
||||
import com.querydsl.core.types.Expression;
|
||||
import com.querydsl.core.types.Projections;
|
||||
import com.querydsl.core.types.dsl.BooleanExpression;
|
||||
import com.querydsl.core.types.dsl.CaseBuilder;
|
||||
@@ -83,13 +85,16 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
||||
public Page<AuditLogDto.MenuAuditList> findLogByMenu(
|
||||
AuditLogDto.searchReq searchReq, String searchValue) {
|
||||
Pageable pageable = searchReq.toPageable();
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
Expression<String> menuNameExpr = english ? menuEntity.menuNmEn.max() : menuEntity.menuNm.max();
|
||||
|
||||
List<AuditLogDto.MenuAuditList> foundContent =
|
||||
queryFactory
|
||||
.select(
|
||||
Projections.constructor(
|
||||
AuditLogDto.MenuAuditList.class,
|
||||
auditLogEntity.menuUid.as("menuId"),
|
||||
menuEntity.menuNm.max().as("menuName"),
|
||||
menuNameExpr,
|
||||
readCount().as("readCount"),
|
||||
cudCount().as("cudCount"),
|
||||
printCount().as("printCount"),
|
||||
@@ -217,21 +222,24 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
||||
@Override
|
||||
public Page<AuditLogDto.DailyDetail> findLogByDailyResult(
|
||||
AuditLogDto.searchReq searchReq, LocalDate logDate) {
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
Pageable pageable = searchReq.toPageable();
|
||||
QMenuEntity parent = new QMenuEntity("parent");
|
||||
// 1depth menu name
|
||||
StringExpression parentMenuName =
|
||||
new CaseBuilder()
|
||||
.when(parent.menuUid.isNull())
|
||||
.then(menuEntity.menuNm)
|
||||
.otherwise(parent.menuNm);
|
||||
.then(english ? menuEntity.menuNmEn : menuEntity.menuNm)
|
||||
.otherwise(english ? parent.menuNmEn : parent.menuNm);
|
||||
|
||||
// 2depth menu name
|
||||
StringExpression menuName =
|
||||
new CaseBuilder()
|
||||
.when(parent.menuUid.isNull())
|
||||
.then(NULL_STRING)
|
||||
.otherwise(menuEntity.menuNm);
|
||||
.otherwise(english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||
|
||||
StringExpression menuNm = (english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||
|
||||
List<AuditLogDto.DailyDetail> foundContent =
|
||||
queryFactory
|
||||
@@ -241,20 +249,20 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
||||
auditLogEntity.id.as("logId"),
|
||||
memberEntity.name.as("userName"),
|
||||
memberEntity.employeeNo.as("loginId"),
|
||||
menuEntity.menuNm.as("menuName"),
|
||||
menuNm.as("menuName"),
|
||||
auditLogEntity.eventType.as("eventType"),
|
||||
Expressions.stringTemplate(
|
||||
"to_char({0}, 'YYYY-MM-DD HH24:MI')", auditLogEntity.createdDate)
|
||||
.as("logDateTime"),
|
||||
Projections.constructor(
|
||||
AuditLogDto.LogDetail.class,
|
||||
Expressions.constant("한국자산관리공사"), // serviceName
|
||||
Expressions.constant(english ? "Kamco" : "한국자산관리공사"), // serviceName
|
||||
parentMenuName.as("parentMenuName"),
|
||||
menuName,
|
||||
menuEntity.menuUrl.as("menuUrl"),
|
||||
menuEntity.description.as("menuDescription"),
|
||||
menuEntity.menuOrder.as("sortOrder"),
|
||||
menuEntity.isUse.as("used")))) // TODO
|
||||
menuEntity.isUse.as("used"))))
|
||||
.from(auditLogEntity)
|
||||
.leftJoin(menuEntity)
|
||||
.on(auditLogEntity.menuUid.eq(menuEntity.menuUid))
|
||||
@@ -285,21 +293,22 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
||||
@Override
|
||||
public Page<AuditLogDto.MenuDetail> findLogByMenuResult(
|
||||
AuditLogDto.searchReq searchReq, String menuUid) {
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
Pageable pageable = searchReq.toPageable();
|
||||
QMenuEntity parent = new QMenuEntity("parent");
|
||||
// 1depth menu name
|
||||
StringExpression parentMenuName =
|
||||
new CaseBuilder()
|
||||
.when(parent.menuUid.isNull())
|
||||
.then(menuEntity.menuNm)
|
||||
.otherwise(parent.menuNm);
|
||||
.then(english ? menuEntity.menuNmEn : menuEntity.menuNm)
|
||||
.otherwise(english ? parent.menuNmEn : parent.menuNm);
|
||||
|
||||
// 2depth menu name
|
||||
StringExpression menuName =
|
||||
new CaseBuilder()
|
||||
.when(parent.menuUid.isNull())
|
||||
.then(NULL_STRING)
|
||||
.otherwise(menuEntity.menuNm);
|
||||
.otherwise(english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||
|
||||
List<AuditLogDto.MenuDetail> foundContent =
|
||||
queryFactory
|
||||
@@ -315,7 +324,7 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
||||
auditLogEntity.eventType.as("eventType"),
|
||||
Projections.constructor(
|
||||
AuditLogDto.LogDetail.class,
|
||||
Expressions.constant("한국자산관리공사"), // serviceName
|
||||
Expressions.constant(english ? "Kamco" : "한국자산관리공사"), // serviceName
|
||||
parentMenuName.as("parentMenuName"),
|
||||
menuName,
|
||||
menuEntity.menuUrl.as("menuUrl"),
|
||||
@@ -352,21 +361,24 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
||||
@Override
|
||||
public Page<AuditLogDto.UserDetail> findLogByAccountResult(
|
||||
AuditLogDto.searchReq searchReq, Long userUid) {
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
Pageable pageable = searchReq.toPageable();
|
||||
QMenuEntity parent = new QMenuEntity("parent");
|
||||
// 1depth menu name
|
||||
StringExpression parentMenuName =
|
||||
new CaseBuilder()
|
||||
.when(parent.menuUid.isNull())
|
||||
.then(menuEntity.menuNm)
|
||||
.otherwise(parent.menuNm);
|
||||
.then(english ? menuEntity.menuNmEn : menuEntity.menuNm)
|
||||
.otherwise(english ? parent.menuNmEn : parent.menuNm);
|
||||
|
||||
// 2depth menu name
|
||||
StringExpression menuName =
|
||||
new CaseBuilder()
|
||||
.when(parent.menuUid.isNull())
|
||||
.then(NULL_STRING)
|
||||
.otherwise(menuEntity.menuNm);
|
||||
.otherwise(english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||
|
||||
StringExpression menuNm = (english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||
|
||||
List<AuditLogDto.UserDetail> foundContent =
|
||||
queryFactory
|
||||
@@ -377,11 +389,11 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
||||
Expressions.stringTemplate(
|
||||
"to_char({0}, 'YYYY-MM-DD HH24:MI')", auditLogEntity.createdDate)
|
||||
.as("logDateTime"),
|
||||
menuEntity.menuNm.as("menuName"),
|
||||
menuNm.as("menuName"),
|
||||
auditLogEntity.eventType.as("eventType"),
|
||||
Projections.constructor(
|
||||
AuditLogDto.LogDetail.class,
|
||||
Expressions.constant("한국자산관리공사"), // serviceName
|
||||
Expressions.constant(english ? "Kamco" : "한국자산관리공사"), // serviceName
|
||||
parentMenuName.as("parentMenuName"),
|
||||
menuName,
|
||||
menuEntity.menuUrl.as("menuUrl"),
|
||||
@@ -442,7 +454,7 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
||||
if (StringUtils.isBlank(searchValue)) {
|
||||
return null;
|
||||
}
|
||||
return menuEntity.menuNm.contains(searchValue);
|
||||
return menuEntity.menuNm.contains(searchValue).or(menuEntity.menuNmEn.contains(searchValue));
|
||||
}
|
||||
|
||||
private BooleanExpression loginIdOrUsernameContains(String searchValue) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import static com.kamco.cd.kamcoback.postgres.entity.QErrorLogEntity.errorLogEnt
|
||||
import static com.kamco.cd.kamcoback.postgres.entity.QMemberEntity.memberEntity;
|
||||
import static com.kamco.cd.kamcoback.postgres.entity.QMenuEntity.menuEntity;
|
||||
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.log.dto.ErrorLogDto;
|
||||
import com.kamco.cd.kamcoback.log.dto.EventStatus;
|
||||
import com.kamco.cd.kamcoback.log.dto.EventType;
|
||||
@@ -38,14 +39,17 @@ public class ErrorLogRepositoryImpl extends QuerydslRepositorySupport
|
||||
@Override
|
||||
public Page<ErrorLogDto.Basic> findLogByError(ErrorLogDto.ErrorSearchReq searchReq) {
|
||||
Pageable pageable = searchReq.toPageable();
|
||||
boolean english = HeaderUtil.isEnglishRequest();
|
||||
StringExpression menuNm = (english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||
|
||||
List<ErrorLogDto.Basic> foundContent =
|
||||
queryFactory
|
||||
.select(
|
||||
Projections.constructor(
|
||||
ErrorLogDto.Basic.class,
|
||||
errorLogEntity.id.as("logId"),
|
||||
Expressions.stringTemplate("{0}", "한국자산관리공사"), // serviceName
|
||||
menuEntity.menuNm.as("menuName"),
|
||||
Expressions.constant(english ? "Kamco" : "한국자산관리공사"), // serviceName
|
||||
menuNm.as("menuName"),
|
||||
memberEntity.employeeNo.as("loginId"),
|
||||
memberEntity.name.as("userName"),
|
||||
errorLogEntity.errorType.as("eventType"),
|
||||
|
||||
@@ -748,6 +748,13 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
|
||||
.delete(mapSheetMngTileEntity)
|
||||
.where(mapSheetMngTileEntity.mngYyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
|
||||
long updateNotYetCount =
|
||||
queryFactory
|
||||
.update(yearEntity)
|
||||
.set(yearEntity.status, "NOTYET")
|
||||
.where(yearEntity.yyyy.eq(mngYyyy))
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,7 +4,6 @@ import static com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity.modelMngEnt
|
||||
import static com.kamco.cd.kamcoback.postgres.entity.QModelResultMetricEntity.modelResultMetricEntity;
|
||||
|
||||
import com.kamco.cd.kamcoback.model.dto.ModelMngDto;
|
||||
import com.kamco.cd.kamcoback.postgres.QuerydslOrderUtil;
|
||||
import com.kamco.cd.kamcoback.postgres.entity.ModelMngEntity;
|
||||
import com.querydsl.core.BooleanBuilder;
|
||||
import com.querydsl.core.types.Expression;
|
||||
@@ -101,9 +100,10 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
|
||||
modelMngEntity.deleted.isFalse().or(modelMngEntity.deleted.isNull()))
|
||||
.offset(pageable.getOffset())
|
||||
.limit(pageable.getPageSize())
|
||||
.orderBy(
|
||||
QuerydslOrderUtil.getOrderSpecifiers(
|
||||
pageable, ModelMngEntity.class, "modelMngEntity"))
|
||||
.orderBy(modelMngEntity.createCompleteDttm.desc())
|
||||
// .orderBy(
|
||||
// QuerydslOrderUtil.getOrderSpecifiers(
|
||||
// pageable, ModelMngEntity.class, "modelMngEntity"))
|
||||
.fetch();
|
||||
|
||||
Long countQuery =
|
||||
|
||||
@@ -63,6 +63,8 @@ public class TrainingDataReviewJobRepositoryImpl extends QuerydslRepositorySuppo
|
||||
.then(ModelType.G1.getId())
|
||||
.when(mapSheetLearnDataGeomEntity.classAfterCd.eq("waste"))
|
||||
.then(ModelType.G2.getId())
|
||||
.when(mapSheetLearnDataGeomEntity.classAfterCd.eq("solar"))
|
||||
.then(ModelType.G4.getId())
|
||||
.otherwise(ModelType.G3.getId()),
|
||||
mapSheetLearnDataGeomEntity.classBeforeCd,
|
||||
mapSheetLearnDataGeomEntity.classAfterCd)))
|
||||
|
||||
@@ -508,7 +508,7 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport
|
||||
: "")
|
||||
.classificationName(
|
||||
DetectionClassification.fromStrDesc(
|
||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassAfterCd()))
|
||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeCd()))
|
||||
.probability(
|
||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb() != null
|
||||
? mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb()
|
||||
|
||||
@@ -534,7 +534,7 @@ public class TrainingDataReviewRepositoryImpl extends QuerydslRepositorySupport
|
||||
: "")
|
||||
.classificationName(
|
||||
DetectionClassification.fromStrDesc(
|
||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassAfterCd()))
|
||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeCd()))
|
||||
.probability(
|
||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb() != null
|
||||
? mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb()
|
||||
|
||||
@@ -3,24 +3,30 @@ package com.kamco.cd.kamcoback.scheduler;
|
||||
import com.kamco.cd.kamcoback.scheduler.service.MapSheetMngFileJobService;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class MapSheetMngFileJobController {
|
||||
|
||||
private final MapSheetMngFileJobService mapSheetMngFileJobService;
|
||||
|
||||
@Value("${spring.profiles.active}")
|
||||
private String profile;
|
||||
|
||||
// 현재 상태 확인용 Getter
|
||||
@Getter private boolean isSchedulerEnabled = false;
|
||||
@Getter private boolean isSchedulerEnabled = true;
|
||||
@Getter private boolean isFileSyncSchedulerEnabled = false;
|
||||
@Getter private int mngSyncPageSize = 20;
|
||||
|
||||
// 파일싱크 진행여부 확인하기
|
||||
@Scheduled(fixedDelay = 1000 * 10)
|
||||
public void checkMngFileSync() {
|
||||
if (!isSchedulerEnabled) {
|
||||
if ("local".equals(profile) || !isSchedulerEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -121,7 +121,10 @@ public class MapSheetInferenceJobService {
|
||||
* @return
|
||||
*/
|
||||
private Long resolveBatchId(InferenceBatchSheet sheet) {
|
||||
// G3 > G2 > G1
|
||||
// G4 > G3 > G2 > G1
|
||||
if (sheet.getM4BatchId() != null) {
|
||||
return sheet.getM4BatchId();
|
||||
}
|
||||
if (sheet.getM3BatchId() != null) {
|
||||
return sheet.getM3BatchId();
|
||||
}
|
||||
@@ -214,8 +217,8 @@ public class MapSheetInferenceJobService {
|
||||
// 현재 모델 종료 업데이트
|
||||
updateProcessingEndTimeByModel(job, sheet.getUuid(), now, currentType);
|
||||
|
||||
// G3이면 전체 종료
|
||||
if (ModelType.G3.getId().equals(currentType)) {
|
||||
// G3이면 전체 종료 -> G4 이면 전체 종료(7/14)
|
||||
if (ModelType.G4.getId().equals(currentType)) {
|
||||
endAll(sheet, now);
|
||||
return;
|
||||
}
|
||||
@@ -237,7 +240,11 @@ public class MapSheetInferenceJobService {
|
||||
private void endAll(InferenceBatchSheet sheet, ZonedDateTime now) {
|
||||
|
||||
List<Long> batchIds =
|
||||
Stream.of(sheet.getM1BatchId(), sheet.getM2BatchId(), sheet.getM3BatchId())
|
||||
Stream.of(
|
||||
sheet.getM1BatchId(),
|
||||
sheet.getM2BatchId(),
|
||||
sheet.getM3BatchId(),
|
||||
sheet.getM4BatchId())
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.toList();
|
||||
@@ -246,7 +253,7 @@ public class MapSheetInferenceJobService {
|
||||
save.setUuid(sheet.getUuid());
|
||||
save.setStatus(Status.END.getId());
|
||||
save.setInferEndDttm(now);
|
||||
save.setType(ModelType.G3.getId()); // 마지막 모델 기준
|
||||
save.setType(ModelType.G4.getId()); // 마지막 모델 기준 -> G4 (7/14)
|
||||
inferenceResultCoreService.update(save);
|
||||
|
||||
// 추론 종료일때 geom 데이터 저장
|
||||
@@ -256,8 +263,9 @@ public class MapSheetInferenceJobService {
|
||||
String batchIdStr = batchIds.stream().map(String::valueOf).collect(Collectors.joining(","));
|
||||
|
||||
// 0312 shp 파일 비동기 생성 (바꿔주세요)
|
||||
shpPipelineService.makeShapeFile(sheet.getUid(), batchIds);
|
||||
// shpPipelineService.runPipeline(jarPath, datasetDir, batchIdStr, sheet.getUid());
|
||||
// shpPipelineService.makeShapeFile(sheet.getUid(), batchIds);
|
||||
// 0511 shp-exporter-v2.jar 에 에러가 있어 우선 기존 로직으로 변경함
|
||||
shpPipelineService.runPipeline(jarPath, datasetDir, batchIdStr, sheet.getUid());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -273,6 +281,9 @@ public class MapSheetInferenceJobService {
|
||||
if (ModelType.G2.getId().equals(currentType)) {
|
||||
return ModelType.G3.getId();
|
||||
}
|
||||
if (ModelType.G3.getId().equals(currentType)) {
|
||||
return ModelType.G4.getId();
|
||||
}
|
||||
throw new IllegalArgumentException("Unknown runningModelType: " + currentType);
|
||||
}
|
||||
|
||||
@@ -293,6 +304,9 @@ public class MapSheetInferenceJobService {
|
||||
if (ModelType.G3.getId().equals(type)) {
|
||||
return sheet.getM3ModelUuid();
|
||||
}
|
||||
if (ModelType.G4.getId().equals(type)) {
|
||||
return sheet.getM4ModelUuid();
|
||||
}
|
||||
throw new IllegalArgumentException("Unknown type: " + type);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,9 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.ErrorResponse;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -24,6 +26,12 @@ public class TestShapeApiController {
|
||||
|
||||
private final ShpPipelineService shpPipelineService;
|
||||
|
||||
@Value("${inference.jar-path}")
|
||||
private String jarPath;
|
||||
|
||||
@Value("${file.dataset-dir}")
|
||||
private String datasetDir;
|
||||
|
||||
@Operation(
|
||||
summary = "shapefile 생성 테스트",
|
||||
description = "지정된 inference ID와 batch ID 목록으로 shapefile을 생성합니다.")
|
||||
@@ -47,4 +55,29 @@ public class TestShapeApiController {
|
||||
shpPipelineService.makeShapeFile(inferenceId, batchIds);
|
||||
return ApiResponseDto.ok("Shapefile 생성이 시작되었습니다. inferenceId: " + inferenceId);
|
||||
}
|
||||
|
||||
@Operation(
|
||||
summary = "기존 run pipeline 테스트",
|
||||
description = "지정된 inference ID와 batch ID 목록으로 shapefile을 생성합니다.")
|
||||
@ApiResponses({
|
||||
@ApiResponse(
|
||||
responseCode = "200",
|
||||
description = "shapefile 생성 요청 성공",
|
||||
content = @Content(schema = @Schema(implementation = String.class))),
|
||||
@ApiResponse(
|
||||
responseCode = "400",
|
||||
description = "잘못된 요청 데이터",
|
||||
content = @Content(schema = @Schema(implementation = ErrorResponse.class))),
|
||||
@ApiResponse(
|
||||
responseCode = "500",
|
||||
description = "서버 오류",
|
||||
content = @Content(schema = @Schema(implementation = ErrorResponse.class)))
|
||||
})
|
||||
@GetMapping("/run-pipeline")
|
||||
public ApiResponseDto<String> runPipeline(
|
||||
@RequestParam String inferenceId, @RequestParam List<Long> batchIds) {
|
||||
String batchIdStr = batchIds.stream().map(String::valueOf).collect(Collectors.joining(","));
|
||||
shpPipelineService.runPipeline(jarPath, datasetDir, batchIdStr, inferenceId);
|
||||
return ApiResponseDto.ok("runPipeline 생성이 시작되었습니다. inferenceId: " + inferenceId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.kamco.cd.kamcoback.common.enums.ImageryFitStatus;
|
||||
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||
import com.kamco.cd.kamcoback.common.utils.geometry.GeometryDeserializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import java.util.List;
|
||||
@@ -399,7 +400,10 @@ public class TrainingDataLabelDto {
|
||||
private String memo;
|
||||
|
||||
public InspectionResultInfo(String verificationResult, String inappropriateReason) {
|
||||
this.verificationResult = ImageryFitStatus.fromCode(verificationResult).getText();
|
||||
this.verificationResult =
|
||||
HeaderUtil.isEnglishRequest()
|
||||
? ImageryFitStatus.fromCode(verificationResult).getTextEn()
|
||||
: ImageryFitStatus.fromCode(verificationResult).getText();
|
||||
this.inappropriateReason = inappropriateReason;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ spring:
|
||||
|
||||
data:
|
||||
redis:
|
||||
host: 192.168.2.109
|
||||
host: 192.168.2.126
|
||||
port: 6379
|
||||
password: kamco
|
||||
|
||||
|
||||
Reference in New Issue
Block a user