Compare commits
13 Commits
04af23b814
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| d240e4349c | |||
| 4801ae8b7d | |||
| 8c33439bcd | |||
| ec4fb46cea | |||
| 63b3b3c09d | |||
| cfd5963a15 | |||
| 9116bf7b89 | |||
| 2d7413c8e1 | |||
| df7a67ed41 | |||
| 176d27c229 | |||
| 8c70ec345c | |||
| 8fd92f5691 | |||
| b69d09176e |
@@ -2,6 +2,7 @@ package com.kamco.cd.kamcoback.code.dto;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
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.HtmlEscapeDeserializer;
|
||||||
import com.kamco.cd.kamcoback.common.utils.html.HtmlUnescapeSerializer;
|
import com.kamco.cd.kamcoback.common.utils.html.HtmlUnescapeSerializer;
|
||||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||||
@@ -14,7 +15,6 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
@@ -120,8 +120,7 @@ public class CommonCodeDto {
|
|||||||
String props2,
|
String props2,
|
||||||
String props3,
|
String props3,
|
||||||
ZonedDateTime deletedDttm) {
|
ZonedDateTime deletedDttm) {
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
boolean english = "en".equalsIgnoreCase(lang);
|
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.kamco.cd.kamcoback.common.enums;
|
package com.kamco.cd.kamcoback.common.enums;
|
||||||
|
|
||||||
|
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@@ -51,6 +52,6 @@ public enum DetectionClassification {
|
|||||||
*/
|
*/
|
||||||
public static String fromStrDesc(String text) {
|
public static String fromStrDesc(String text) {
|
||||||
DetectionClassification dtf = fromString(text);
|
DetectionClassification dtf = fromString(text);
|
||||||
return dtf.getDesc();
|
return HeaderUtil.isEnglishRequest() ? dtf.getId() : dtf.getDesc();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.kamco.cd.kamcoback.common.enums;
|
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.CodeExpose;
|
||||||
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -43,6 +44,8 @@ public enum ImageryFitStatus implements EnumType {
|
|||||||
|
|
||||||
public static String getDescByCode(String code) {
|
public static String getDescByCode(String code) {
|
||||||
ImageryFitStatus status = fromCode(code);
|
ImageryFitStatus status = fromCode(code);
|
||||||
return status != null ? status.getDesc() : null;
|
return status != null
|
||||||
|
? (HeaderUtil.isEnglishRequest() ? status.getTextEn() : status.getDesc())
|
||||||
|
: null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package com.kamco.cd.kamcoback.common.utils;
|
package com.kamco.cd.kamcoback.common.utils;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
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 {
|
public final class HeaderUtil {
|
||||||
|
|
||||||
@@ -20,4 +23,20 @@ public final class HeaderUtil {
|
|||||||
public static String getRequired(HttpServletRequest request, String headerName) {
|
public static String getRequired(HttpServletRequest request, String headerName) {
|
||||||
return get(request, 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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package com.kamco.cd.kamcoback.common.utils.enums;
|
package com.kamco.cd.kamcoback.common.utils.enums;
|
||||||
|
|
||||||
import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.CodeDto;
|
import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.CodeDto;
|
||||||
|
import com.kamco.cd.kamcoback.common.utils.HeaderUtil;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
|
||||||
|
|
||||||
public class Enums {
|
public class Enums {
|
||||||
|
|
||||||
@@ -33,8 +33,7 @@ public class Enums {
|
|||||||
// enum -> CodeDto list
|
// enum -> CodeDto list
|
||||||
public static List<CodeDto> toList(Class<? extends Enum<?>> enumClass) {
|
public static List<CodeDto> toList(Class<? extends Enum<?>> enumClass) {
|
||||||
Object[] enums = enumClass.getEnumConstants();
|
Object[] enums = enumClass.getEnumConstants();
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
boolean english = "en".equalsIgnoreCase(lang);
|
|
||||||
|
|
||||||
return Arrays.stream(enums)
|
return Arrays.stream(enums)
|
||||||
.map(e -> (EnumType) e)
|
.map(e -> (EnumType) e)
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ public class ApiLogFunction {
|
|||||||
|
|
||||||
public static String getXFowardedForIp(HttpServletRequest request) {
|
public static String getXFowardedForIp(HttpServletRequest request) {
|
||||||
String ip = request.getHeader("X-Forwarded-For");
|
String ip = request.getHeader("X-Forwarded-For");
|
||||||
if (ip != null) {
|
if (ip != null && !ip.isBlank()) {
|
||||||
ip = ip.split(",")[0].trim();
|
return ip.split(",")[0].trim();
|
||||||
}
|
}
|
||||||
return ip;
|
return request.getRemoteAddr();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 사용자 ID 추출 예시 (Spring Security 기준)
|
// 사용자 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.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
||||||
|
import java.util.Arrays;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
@@ -225,5 +226,12 @@ public class ApiResponseDto<T> {
|
|||||||
|
|
||||||
return INTERNAL_SERVER_ERROR;
|
return INTERNAL_SERVER_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ApiResponseCode fromMessage(String message) {
|
||||||
|
return Arrays.stream(values())
|
||||||
|
.filter(code -> code.getMessage().equals(message))
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.JsonNode;
|
|||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.kamco.cd.kamcoback.common.enums.DetectionClassification;
|
import com.kamco.cd.kamcoback.common.enums.DetectionClassification;
|
||||||
import com.kamco.cd.kamcoback.common.enums.ImageryFitStatus;
|
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.common.utils.interfaces.JsonFormatDttm;
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.DetectOption;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.DetectOption;
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetScope;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetScope;
|
||||||
@@ -156,9 +157,14 @@ public class InferenceDetailDto {
|
|||||||
String classAfterName;
|
String classAfterName;
|
||||||
Long classAfterCnt;
|
Long classAfterCnt;
|
||||||
|
|
||||||
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
|
|
||||||
public Dashboard(String classAfterCd, Long classAfterCnt) {
|
public Dashboard(String classAfterCd, Long classAfterCnt) {
|
||||||
this.classAfterCd = classAfterCd;
|
this.classAfterCd = classAfterCd;
|
||||||
this.classAfterName = DetectionClassification.fromString(classAfterCd).getDesc();
|
this.classAfterName =
|
||||||
|
english
|
||||||
|
? DetectionClassification.fromString(classAfterCd).getId()
|
||||||
|
: DetectionClassification.fromString(classAfterCd).getDesc();
|
||||||
this.classAfterCnt = classAfterCnt;
|
this.classAfterCnt = classAfterCnt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -294,8 +300,10 @@ public class InferenceDetailDto {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
@Setter
|
||||||
public static class Geom {
|
public static class Geom {
|
||||||
|
|
||||||
|
Long geoUid;
|
||||||
UUID uuid;
|
UUID uuid;
|
||||||
String uid;
|
String uid;
|
||||||
Integer compareYyyy;
|
Integer compareYyyy;
|
||||||
@@ -313,7 +321,10 @@ public class InferenceDetailDto {
|
|||||||
String pnu;
|
String pnu;
|
||||||
String fitState;
|
String fitState;
|
||||||
|
|
||||||
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
|
|
||||||
public Geom(
|
public Geom(
|
||||||
|
Long geoUid,
|
||||||
UUID uuid,
|
UUID uuid,
|
||||||
String uid,
|
String uid,
|
||||||
Integer compareYyyy,
|
Integer compareYyyy,
|
||||||
@@ -328,16 +339,23 @@ public class InferenceDetailDto {
|
|||||||
String subUid,
|
String subUid,
|
||||||
String pnu,
|
String pnu,
|
||||||
String fitState) {
|
String fitState) {
|
||||||
|
this.geoUid = geoUid;
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
this.uid = uid;
|
this.uid = uid;
|
||||||
this.compareYyyy = compareYyyy;
|
this.compareYyyy = compareYyyy;
|
||||||
this.targetYyyy = targetYyyy;
|
this.targetYyyy = targetYyyy;
|
||||||
this.cdProb = cdProb;
|
this.cdProb = cdProb;
|
||||||
this.classBeforeCd = classBeforeCd;
|
this.classBeforeCd = classBeforeCd;
|
||||||
this.classBeforeName = DetectionClassification.fromString(classBeforeCd).getDesc();
|
this.classBeforeName =
|
||||||
|
english
|
||||||
|
? DetectionClassification.fromString(classBeforeCd).getId()
|
||||||
|
: DetectionClassification.fromString(classBeforeCd).getDesc();
|
||||||
this.classBeforeProb = classBeforeProb;
|
this.classBeforeProb = classBeforeProb;
|
||||||
this.classAfterCd = classAfterCd;
|
this.classAfterCd = classAfterCd;
|
||||||
this.classAfterName = DetectionClassification.fromString(classAfterCd).getDesc();
|
this.classAfterName =
|
||||||
|
english
|
||||||
|
? DetectionClassification.fromString(classAfterCd).getId()
|
||||||
|
: DetectionClassification.fromString(classAfterCd).getDesc();
|
||||||
this.classAfterProb = classAfterProb;
|
this.classAfterProb = classAfterProb;
|
||||||
this.mapSheetNum = mapSheetNum;
|
this.mapSheetNum = mapSheetNum;
|
||||||
this.mapSheetName = mapSheetName;
|
this.mapSheetName = mapSheetName;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.kamco.cd.kamcoback.inference.dto;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
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.enums.EnumType;
|
||||||
import com.kamco.cd.kamcoback.common.utils.interfaces.EnumValid;
|
import com.kamco.cd.kamcoback.common.utils.interfaces.EnumValid;
|
||||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||||
@@ -14,6 +15,8 @@ import java.time.ZonedDateTime;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@@ -106,7 +109,12 @@ public class InferenceResultDto {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String getDescByCode(String code) {
|
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
|
@Override
|
||||||
@@ -121,7 +129,7 @@ public class InferenceResultDto {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTextEn() {
|
public String getTextEn() {
|
||||||
return desc;
|
return name();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,7 +239,46 @@ public class InferenceResultDto {
|
|||||||
long m = (s % 3600) / 60;
|
long m = (s % 3600) / 60;
|
||||||
long sec = s % 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.kamco.cd.kamcoback.label.dto;
|
package com.kamco.cd.kamcoback.label.dto;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
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.enums.Enums;
|
||||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||||
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelMngState;
|
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelMngState;
|
||||||
@@ -109,7 +111,13 @@ public class LabelWorkDto {
|
|||||||
if (type == null) {
|
if (type == null) {
|
||||||
return enumId;
|
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() {
|
public String getUserRoleName() {
|
||||||
if (this.userRole.equals("LABELER")) {
|
RoleType type = Enums.fromId(RoleType.class, this.userRole);
|
||||||
return "라벨러";
|
return HeaderUtil.isEnglishRequest() ? type.getTextEn() : type.getText();
|
||||||
}
|
|
||||||
return "검수자";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.kamco.cd.kamcoback.log.dto;
|
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.CodeExpose;
|
||||||
import com.kamco.cd.kamcoback.common.utils.enums.EnumType;
|
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 io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -61,6 +64,26 @@ public class ErrorLogDto {
|
|||||||
private final String errorMessage;
|
private final String errorMessage;
|
||||||
private final String errorDetail;
|
private final String errorDetail;
|
||||||
private final String createDate; // to_char해서 가져옴
|
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 = "에러로그 검색 요청")
|
@Schema(name = "ErrorSearchReq", description = "에러로그 검색 요청")
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.mapsheet.dto;
|
|||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.kamco.cd.kamcoback.common.enums.MngStateType;
|
import com.kamco.cd.kamcoback.common.enums.MngStateType;
|
||||||
import com.kamco.cd.kamcoback.common.enums.SyncStateType;
|
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.EnumType;
|
||||||
import com.kamco.cd.kamcoback.common.utils.enums.Enums;
|
import com.kamco.cd.kamcoback.common.utils.enums.Enums;
|
||||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||||
@@ -16,7 +17,6 @@ import lombok.Builder;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
@@ -223,9 +223,9 @@ public class MapSheetMngDto {
|
|||||||
enumId = "NOTYET";
|
enumId = "NOTYET";
|
||||||
}
|
}
|
||||||
|
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
MngStateType type = Enums.fromId(MngStateType.class, enumId);
|
MngStateType type = Enums.fromId(MngStateType.class, enumId);
|
||||||
if ("en".equalsIgnoreCase(lang)) {
|
if (english) {
|
||||||
return type.getTextEn();
|
return type.getTextEn();
|
||||||
}
|
}
|
||||||
return type.getText();
|
return type.getText();
|
||||||
@@ -351,8 +351,8 @@ public class MapSheetMngDto {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SyncStateType type = Enums.fromId(SyncStateType.class, enumId);
|
SyncStateType type = Enums.fromId(SyncStateType.class, enumId);
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
if ("en".equalsIgnoreCase(lang)) {
|
if (english) {
|
||||||
return type.getTextEn();
|
return type.getTextEn();
|
||||||
}
|
}
|
||||||
return type.getText();
|
return type.getText();
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.kamco.cd.kamcoback.auth.CustomUserDetails;
|
|||||||
import com.kamco.cd.kamcoback.auth.JwtTokenProvider;
|
import com.kamco.cd.kamcoback.auth.JwtTokenProvider;
|
||||||
import com.kamco.cd.kamcoback.auth.RefreshTokenService;
|
import com.kamco.cd.kamcoback.auth.RefreshTokenService;
|
||||||
import com.kamco.cd.kamcoback.common.enums.StatusType;
|
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.config.api.ApiResponseDto;
|
||||||
import com.kamco.cd.kamcoback.members.dto.MembersDto;
|
import com.kamco.cd.kamcoback.members.dto.MembersDto;
|
||||||
import com.kamco.cd.kamcoback.members.dto.SignInRequest;
|
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.ApiResponse;
|
||||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import java.nio.file.AccessDeniedException;
|
import java.nio.file.AccessDeniedException;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.ResponseCookie;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Tag(name = "인증(Auth)", description = "로그인, 토큰 재발급, 로그아웃 API")
|
@Tag(name = "인증(Auth)", description = "로그인, 토큰 재발급, 로그아웃 API")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/auth")
|
@RequestMapping("/api/auth")
|
||||||
@@ -103,8 +107,13 @@ public class AuthController {
|
|||||||
required = true)
|
required = true)
|
||||||
@RequestBody
|
@RequestBody
|
||||||
SignInRequest request,
|
SignInRequest request,
|
||||||
|
HttpServletRequest servletRequest,
|
||||||
HttpServletResponse response) {
|
HttpServletResponse response) {
|
||||||
|
|
||||||
|
// TODO: 접속 가능한 IP 대역 조회
|
||||||
|
String clientIp = ApiLogFunction.getXFowardedForIp(servletRequest);
|
||||||
|
log.info("####### clientIp: {}", clientIp);
|
||||||
|
|
||||||
// 사용자 상태 조회
|
// 사용자 상태 조회
|
||||||
String status = authService.getUserStatus(request);
|
String status = authService.getUserStatus(request);
|
||||||
Authentication authentication = null;
|
Authentication authentication = null;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.kamco.cd.kamcoback.members.dto;
|
|||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.kamco.cd.kamcoback.common.enums.RoleType;
|
import com.kamco.cd.kamcoback.common.enums.RoleType;
|
||||||
import com.kamco.cd.kamcoback.common.enums.StatusType;
|
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.enums.Enums;
|
||||||
import com.kamco.cd.kamcoback.common.utils.interfaces.EnumValid;
|
import com.kamco.cd.kamcoback.common.utils.interfaces.EnumValid;
|
||||||
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm;
|
||||||
@@ -15,7 +16,6 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
|
||||||
@@ -66,15 +66,13 @@ public class MembersDto {
|
|||||||
|
|
||||||
private String getUserRoleName(String roleId) {
|
private String getUserRoleName(String roleId) {
|
||||||
RoleType type = Enums.fromId(RoleType.class, roleId);
|
RoleType type = Enums.fromId(RoleType.class, roleId);
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
boolean english = "en".equalsIgnoreCase(lang);
|
|
||||||
return english ? type.getTextEn() : type.getText();
|
return english ? type.getTextEn() : type.getText();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getStatusName(String status, Boolean pwdResetYn) {
|
private String getStatusName(String status, Boolean pwdResetYn) {
|
||||||
StatusType type = Enums.fromId(StatusType.class, status);
|
StatusType type = Enums.fromId(StatusType.class, status);
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
boolean english = "en".equalsIgnoreCase(lang);
|
|
||||||
pwdResetYn = pwdResetYn != null && pwdResetYn;
|
pwdResetYn = pwdResetYn != null && pwdResetYn;
|
||||||
if (type.equals(StatusType.PENDING) && pwdResetYn) {
|
if (type.equals(StatusType.PENDING) && pwdResetYn) {
|
||||||
type = StatusType.ACTIVE;
|
type = StatusType.ACTIVE;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.kamco.cd.kamcoback.postgres.core;
|
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.MenuDto;
|
||||||
import com.kamco.cd.kamcoback.menu.dto.MyMenuDto;
|
import com.kamco.cd.kamcoback.menu.dto.MyMenuDto;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.MenuEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.MenuEntity;
|
||||||
@@ -7,9 +8,10 @@ import com.kamco.cd.kamcoback.postgres.repository.menu.MenuRepository;
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class MenuCoreService {
|
public class MenuCoreService {
|
||||||
@@ -28,8 +30,9 @@ public class MenuCoreService {
|
|||||||
*/
|
*/
|
||||||
public List<MyMenuDto.Basic> getFindByRole(String role) {
|
public List<MyMenuDto.Basic> getFindByRole(String role) {
|
||||||
List<MenuEntity> entities = menuRepository.getFindByRole(role);
|
List<MenuEntity> entities = menuRepository.getFindByRole(role);
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
boolean english = lang.equalsIgnoreCase("en");
|
log.info("[LANG CHECK] english={}", english);
|
||||||
|
|
||||||
return entities.stream()
|
return entities.stream()
|
||||||
.map(
|
.map(
|
||||||
parent -> {
|
parent -> {
|
||||||
|
|||||||
@@ -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.QMapSheetLearnEntity;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity;
|
||||||
import com.querydsl.core.BooleanBuilder;
|
import com.querydsl.core.BooleanBuilder;
|
||||||
|
import com.querydsl.core.Tuple;
|
||||||
import com.querydsl.core.types.Expression;
|
import com.querydsl.core.types.Expression;
|
||||||
import com.querydsl.core.types.Projections;
|
import com.querydsl.core.types.Projections;
|
||||||
import com.querydsl.core.types.dsl.BooleanExpression;
|
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.Expressions;
|
||||||
import com.querydsl.core.types.dsl.NumberExpression;
|
import com.querydsl.core.types.dsl.NumberExpression;
|
||||||
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.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Objects;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.UUID;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@@ -448,12 +446,14 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
NumberExpression<Long> inkxNoAsLong =
|
NumberExpression<Long> inkxNoAsLong =
|
||||||
Expressions.numberTemplate(Long.class, "cast({0} as long)", mapInkx5kEntity.mapidcdNo);
|
Expressions.numberTemplate(Long.class, "cast({0} as long)", mapInkx5kEntity.mapidcdNo);
|
||||||
|
|
||||||
|
/* 미사용
|
||||||
StringExpression pnu =
|
StringExpression pnu =
|
||||||
Expressions.stringTemplate(
|
Expressions.stringTemplate(
|
||||||
"nullif(({0}), '')",
|
"nullif(({0}), '')",
|
||||||
JPAExpressions.select(Expressions.stringTemplate("string_agg({0}, ',')", pnuEntity.pnu))
|
JPAExpressions.select(Expressions.stringTemplate("string_agg({0}, ',')", pnuEntity.pnu))
|
||||||
.from(pnuEntity)
|
.from(pnuEntity)
|
||||||
.where(pnuEntity.geo.geoUid.eq(mapSheetAnalDataInferenceGeomEntity.geoUid)));
|
.where(pnuEntity.geo.geoUid.eq(mapSheetAnalDataInferenceGeomEntity.geoUid)));
|
||||||
|
*/
|
||||||
|
|
||||||
// 4) content
|
// 4) content
|
||||||
List<Geom> content =
|
List<Geom> content =
|
||||||
@@ -461,6 +461,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
.select(
|
.select(
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
Geom.class,
|
Geom.class,
|
||||||
|
mapSheetAnalDataInferenceGeomEntity.geoUid,
|
||||||
mapSheetAnalDataInferenceGeomEntity.uuid,
|
mapSheetAnalDataInferenceGeomEntity.uuid,
|
||||||
mapSheetAnalDataInferenceGeomEntity.resultUid,
|
mapSheetAnalDataInferenceGeomEntity.resultUid,
|
||||||
mapSheetAnalDataInferenceGeomEntity.compareYyyy,
|
mapSheetAnalDataInferenceGeomEntity.compareYyyy,
|
||||||
@@ -475,7 +476,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
Expressions.stringTemplate(
|
Expressions.stringTemplate(
|
||||||
"substring({0} from 1 for 8)",
|
"substring({0} from 1 for 8)",
|
||||||
mapSheetAnalDataInferenceGeomEntity.resultUid),
|
mapSheetAnalDataInferenceGeomEntity.resultUid),
|
||||||
pnu,
|
Expressions.constant(""),
|
||||||
mapSheetAnalDataInferenceGeomEntity.fitState))
|
mapSheetAnalDataInferenceGeomEntity.fitState))
|
||||||
.from(mapSheetAnalInferenceEntity)
|
.from(mapSheetAnalInferenceEntity)
|
||||||
.join(mapSheetAnalDataInferenceEntity)
|
.join(mapSheetAnalDataInferenceEntity)
|
||||||
@@ -490,6 +491,33 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
.limit(pageable.getPageSize())
|
.limit(pageable.getPageSize())
|
||||||
.fetch();
|
.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 (조인 최소화 유지)
|
// 5) total (조인 최소화 유지)
|
||||||
Long total =
|
Long total =
|
||||||
queryFactory
|
queryFactory
|
||||||
|
|||||||
@@ -211,8 +211,9 @@ public class ChangeDetectionRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
.where(
|
.where(
|
||||||
l.status
|
l.status
|
||||||
.eq(Status.END.getId())
|
.eq(Status.END.getId())
|
||||||
.and(JPAExpressions.selectOne().from(d).where(d.analUid.eq(a.id)).exists()))
|
.and(JPAExpressions.selectOne().from(d).where(d.analUid.eq(a.id)).exists()),
|
||||||
.orderBy(l.id.asc())
|
l.isDeleted.eq(false).or(l.isDeleted.isNull()))
|
||||||
|
.orderBy(l.id.desc())
|
||||||
.fetch();
|
.fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ public class LabelWorkRepositoryImpl implements LabelWorkRepositoryCustom {
|
|||||||
"substring({0} from 1 for 8)", mapSheetLearnEntity.uid),
|
"substring({0} from 1 for 8)", mapSheetLearnEntity.uid),
|
||||||
mapSheetLearnEntity.uuid))
|
mapSheetLearnEntity.uuid))
|
||||||
.from(mapSheetAnalInferenceEntity)
|
.from(mapSheetAnalInferenceEntity)
|
||||||
.leftJoin(mapSheetLearnEntity)
|
.innerJoin(mapSheetLearnEntity)
|
||||||
.on(
|
.on(
|
||||||
mapSheetAnalInferenceEntity.learnId.eq(mapSheetLearnEntity.id),
|
mapSheetAnalInferenceEntity.learnId.eq(mapSheetLearnEntity.id),
|
||||||
mapSheetLearnEntity.isDeleted.eq(false).or(mapSheetLearnEntity.isDeleted.isNull()))
|
mapSheetLearnEntity.isDeleted.eq(false).or(mapSheetLearnEntity.isDeleted.isNull()))
|
||||||
|
|||||||
@@ -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.QMemberEntity.memberEntity;
|
||||||
import static com.kamco.cd.kamcoback.postgres.entity.QMenuEntity.menuEntity;
|
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;
|
||||||
import com.kamco.cd.kamcoback.log.dto.AuditLogDto.DownloadReq;
|
import com.kamco.cd.kamcoback.log.dto.AuditLogDto.DownloadReq;
|
||||||
import com.kamco.cd.kamcoback.log.dto.ErrorLogDto;
|
import com.kamco.cd.kamcoback.log.dto.ErrorLogDto;
|
||||||
@@ -27,7 +28,6 @@ import java.time.ZoneId;
|
|||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageImpl;
|
import org.springframework.data.domain.PageImpl;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
@@ -85,10 +85,8 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
public Page<AuditLogDto.MenuAuditList> findLogByMenu(
|
public Page<AuditLogDto.MenuAuditList> findLogByMenu(
|
||||||
AuditLogDto.searchReq searchReq, String searchValue) {
|
AuditLogDto.searchReq searchReq, String searchValue) {
|
||||||
Pageable pageable = searchReq.toPageable();
|
Pageable pageable = searchReq.toPageable();
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
|
Expression<String> menuNameExpr = english ? menuEntity.menuNmEn.max() : menuEntity.menuNm.max();
|
||||||
Expression<String> menuNameExpr =
|
|
||||||
"en".equalsIgnoreCase(lang) ? menuEntity.menuNmEn.max() : menuEntity.menuNm.max();
|
|
||||||
|
|
||||||
List<AuditLogDto.MenuAuditList> foundContent =
|
List<AuditLogDto.MenuAuditList> foundContent =
|
||||||
queryFactory
|
queryFactory
|
||||||
@@ -224,8 +222,7 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
@Override
|
@Override
|
||||||
public Page<AuditLogDto.DailyDetail> findLogByDailyResult(
|
public Page<AuditLogDto.DailyDetail> findLogByDailyResult(
|
||||||
AuditLogDto.searchReq searchReq, LocalDate logDate) {
|
AuditLogDto.searchReq searchReq, LocalDate logDate) {
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
boolean english = "en".equalsIgnoreCase(lang);
|
|
||||||
Pageable pageable = searchReq.toPageable();
|
Pageable pageable = searchReq.toPageable();
|
||||||
QMenuEntity parent = new QMenuEntity("parent");
|
QMenuEntity parent = new QMenuEntity("parent");
|
||||||
// 1depth menu name
|
// 1depth menu name
|
||||||
@@ -296,8 +293,7 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
@Override
|
@Override
|
||||||
public Page<AuditLogDto.MenuDetail> findLogByMenuResult(
|
public Page<AuditLogDto.MenuDetail> findLogByMenuResult(
|
||||||
AuditLogDto.searchReq searchReq, String menuUid) {
|
AuditLogDto.searchReq searchReq, String menuUid) {
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
boolean english = "en".equalsIgnoreCase(lang);
|
|
||||||
Pageable pageable = searchReq.toPageable();
|
Pageable pageable = searchReq.toPageable();
|
||||||
QMenuEntity parent = new QMenuEntity("parent");
|
QMenuEntity parent = new QMenuEntity("parent");
|
||||||
// 1depth menu name
|
// 1depth menu name
|
||||||
@@ -365,8 +361,7 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
@Override
|
@Override
|
||||||
public Page<AuditLogDto.UserDetail> findLogByAccountResult(
|
public Page<AuditLogDto.UserDetail> findLogByAccountResult(
|
||||||
AuditLogDto.searchReq searchReq, Long userUid) {
|
AuditLogDto.searchReq searchReq, Long userUid) {
|
||||||
String lang = LocaleContextHolder.getLocale().getLanguage();
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
boolean english = "en".equalsIgnoreCase(lang);
|
|
||||||
Pageable pageable = searchReq.toPageable();
|
Pageable pageable = searchReq.toPageable();
|
||||||
QMenuEntity parent = new QMenuEntity("parent");
|
QMenuEntity parent = new QMenuEntity("parent");
|
||||||
// 1depth menu name
|
// 1depth menu name
|
||||||
|
|||||||
@@ -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.QMemberEntity.memberEntity;
|
||||||
import static com.kamco.cd.kamcoback.postgres.entity.QMenuEntity.menuEntity;
|
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.ErrorLogDto;
|
||||||
import com.kamco.cd.kamcoback.log.dto.EventStatus;
|
import com.kamco.cd.kamcoback.log.dto.EventStatus;
|
||||||
import com.kamco.cd.kamcoback.log.dto.EventType;
|
import com.kamco.cd.kamcoback.log.dto.EventType;
|
||||||
@@ -38,14 +39,17 @@ public class ErrorLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
@Override
|
@Override
|
||||||
public Page<ErrorLogDto.Basic> findLogByError(ErrorLogDto.ErrorSearchReq searchReq) {
|
public Page<ErrorLogDto.Basic> findLogByError(ErrorLogDto.ErrorSearchReq searchReq) {
|
||||||
Pageable pageable = searchReq.toPageable();
|
Pageable pageable = searchReq.toPageable();
|
||||||
|
boolean english = HeaderUtil.isEnglishRequest();
|
||||||
|
StringExpression menuNm = (english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||||
|
|
||||||
List<ErrorLogDto.Basic> foundContent =
|
List<ErrorLogDto.Basic> foundContent =
|
||||||
queryFactory
|
queryFactory
|
||||||
.select(
|
.select(
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
ErrorLogDto.Basic.class,
|
ErrorLogDto.Basic.class,
|
||||||
errorLogEntity.id.as("logId"),
|
errorLogEntity.id.as("logId"),
|
||||||
Expressions.stringTemplate("{0}", "한국자산관리공사"), // serviceName
|
Expressions.constant(english ? "Kamco" : "한국자산관리공사"), // serviceName
|
||||||
menuEntity.menuNm.as("menuName"),
|
menuNm.as("menuName"),
|
||||||
memberEntity.employeeNo.as("loginId"),
|
memberEntity.employeeNo.as("loginId"),
|
||||||
memberEntity.name.as("userName"),
|
memberEntity.name.as("userName"),
|
||||||
errorLogEntity.errorType.as("eventType"),
|
errorLogEntity.errorType.as("eventType"),
|
||||||
|
|||||||
@@ -748,6 +748,13 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
.delete(mapSheetMngTileEntity)
|
.delete(mapSheetMngTileEntity)
|
||||||
.where(mapSheetMngTileEntity.mngYyyy.eq(mngYyyy))
|
.where(mapSheetMngTileEntity.mngYyyy.eq(mngYyyy))
|
||||||
.execute();
|
.execute();
|
||||||
|
|
||||||
|
long updateNotYetCount =
|
||||||
|
queryFactory
|
||||||
|
.update(yearEntity)
|
||||||
|
.set(yearEntity.status, "NOTYET")
|
||||||
|
.where(yearEntity.yyyy.eq(mngYyyy))
|
||||||
|
.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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 static com.kamco.cd.kamcoback.postgres.entity.QModelResultMetricEntity.modelResultMetricEntity;
|
||||||
|
|
||||||
import com.kamco.cd.kamcoback.model.dto.ModelMngDto;
|
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.kamco.cd.kamcoback.postgres.entity.ModelMngEntity;
|
||||||
import com.querydsl.core.BooleanBuilder;
|
import com.querydsl.core.BooleanBuilder;
|
||||||
import com.querydsl.core.types.Expression;
|
import com.querydsl.core.types.Expression;
|
||||||
@@ -101,9 +100,10 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
modelMngEntity.deleted.isFalse().or(modelMngEntity.deleted.isNull()))
|
modelMngEntity.deleted.isFalse().or(modelMngEntity.deleted.isNull()))
|
||||||
.offset(pageable.getOffset())
|
.offset(pageable.getOffset())
|
||||||
.limit(pageable.getPageSize())
|
.limit(pageable.getPageSize())
|
||||||
.orderBy(
|
.orderBy(modelMngEntity.createCompleteDttm.desc())
|
||||||
QuerydslOrderUtil.getOrderSpecifiers(
|
// .orderBy(
|
||||||
pageable, ModelMngEntity.class, "modelMngEntity"))
|
// QuerydslOrderUtil.getOrderSpecifiers(
|
||||||
|
// pageable, ModelMngEntity.class, "modelMngEntity"))
|
||||||
.fetch();
|
.fetch();
|
||||||
|
|
||||||
Long countQuery =
|
Long countQuery =
|
||||||
|
|||||||
@@ -508,7 +508,7 @@ public class TrainingDataLabelRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
: "")
|
: "")
|
||||||
.classificationName(
|
.classificationName(
|
||||||
DetectionClassification.fromStrDesc(
|
DetectionClassification.fromStrDesc(
|
||||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassAfterCd()))
|
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeCd()))
|
||||||
.probability(
|
.probability(
|
||||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb() != null
|
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb() != null
|
||||||
? mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb()
|
? mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb()
|
||||||
|
|||||||
@@ -534,7 +534,7 @@ public class TrainingDataReviewRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
: "")
|
: "")
|
||||||
.classificationName(
|
.classificationName(
|
||||||
DetectionClassification.fromStrDesc(
|
DetectionClassification.fromStrDesc(
|
||||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassAfterCd()))
|
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeCd()))
|
||||||
.probability(
|
.probability(
|
||||||
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb() != null
|
mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb() != null
|
||||||
? mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb()
|
? mapSheetAnalDataInferenceGeomEntityEntity.getClassBeforeProb()
|
||||||
|
|||||||
@@ -3,24 +3,30 @@ package com.kamco.cd.kamcoback.scheduler;
|
|||||||
import com.kamco.cd.kamcoback.scheduler.service.MapSheetMngFileJobService;
|
import com.kamco.cd.kamcoback.scheduler.service.MapSheetMngFileJobService;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class MapSheetMngFileJobController {
|
public class MapSheetMngFileJobController {
|
||||||
|
|
||||||
private final MapSheetMngFileJobService mapSheetMngFileJobService;
|
private final MapSheetMngFileJobService mapSheetMngFileJobService;
|
||||||
|
|
||||||
|
@Value("${spring.profiles.active}")
|
||||||
|
private String profile;
|
||||||
|
|
||||||
// 현재 상태 확인용 Getter
|
// 현재 상태 확인용 Getter
|
||||||
@Getter private boolean isSchedulerEnabled = false;
|
@Getter private boolean isSchedulerEnabled = true;
|
||||||
@Getter private boolean isFileSyncSchedulerEnabled = false;
|
@Getter private boolean isFileSyncSchedulerEnabled = false;
|
||||||
@Getter private int mngSyncPageSize = 20;
|
@Getter private int mngSyncPageSize = 20;
|
||||||
|
|
||||||
// 파일싱크 진행여부 확인하기
|
// 파일싱크 진행여부 확인하기
|
||||||
@Scheduled(fixedDelay = 1000 * 10)
|
@Scheduled(fixedDelay = 1000 * 10)
|
||||||
public void checkMngFileSync() {
|
public void checkMngFileSync() {
|
||||||
if (!isSchedulerEnabled) {
|
if ("local".equals(profile) || !isSchedulerEnabled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import com.kamco.cd.kamcoback.common.enums.ImageryFitStatus;
|
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 com.kamco.cd.kamcoback.common.utils.geometry.GeometryDeserializer;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -399,7 +400,10 @@ public class TrainingDataLabelDto {
|
|||||||
private String memo;
|
private String memo;
|
||||||
|
|
||||||
public InspectionResultInfo(String verificationResult, String inappropriateReason) {
|
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;
|
this.inappropriateReason = inappropriateReason;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user