Compare commits
12 Commits
feat/infer
...
04af23b814
| Author | SHA1 | Date | |
|---|---|---|---|
| 04af23b814 | |||
| a1fc62b3eb | |||
| ed3c901143 | |||
| b58b859470 | |||
| b78fda151a | |||
| 435a48afb9 | |||
| af0866ff5b | |||
| d0132ac697 | |||
|
|
4272558f32 | ||
| d83fb01cbe | |||
| 0425a6486d | |||
| 71e4ab14bd |
@@ -35,6 +35,11 @@ public class ChangeDetectionDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@CodeExpose
|
@CodeExpose
|
||||||
@@ -55,6 +60,11 @@ public class ChangeDetectionDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schema(name = "TestDto", description = "테스트용")
|
@Schema(name = "TestDto", description = "테스트용")
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ 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;
|
||||||
@@ -119,10 +120,12 @@ public class CommonCodeDto {
|
|||||||
String props2,
|
String props2,
|
||||||
String props3,
|
String props3,
|
||||||
ZonedDateTime deletedDttm) {
|
ZonedDateTime deletedDttm) {
|
||||||
|
String lang = LocaleContextHolder.getLocale().getLanguage();
|
||||||
|
boolean english = "en".equalsIgnoreCase(lang);
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
this.name = name;
|
this.name = english ? code : name;
|
||||||
this.order = order;
|
this.order = order;
|
||||||
this.used = used;
|
this.used = used;
|
||||||
this.deleted = deleted;
|
this.deleted = deleted;
|
||||||
|
|||||||
@@ -45,4 +45,9 @@ public enum CommonUseStatus implements EnumType {
|
|||||||
public EnumDto<CommonUseStatus> getEnumDto() {
|
public EnumDto<CommonUseStatus> getEnumDto() {
|
||||||
return new EnumDto<>(this, this.id, this.text);
|
return new EnumDto<>(this, this.id, this.text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,12 +9,13 @@ import lombok.Getter;
|
|||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum CrsType implements EnumType {
|
public enum CrsType implements EnumType {
|
||||||
EPSG_3857("Web Mercator, 웹지도 미터(EPSG:900913 동일)"),
|
EPSG_3857("Web Mercator, 웹지도 미터(EPSG:900913 동일)", "Web Mercator"),
|
||||||
EPSG_4326("WGS84 위경도, GeoJSON/OSM 기본"),
|
EPSG_4326("WGS84 위경도, GeoJSON/OSM 기본", "GeoJSON/OSM"),
|
||||||
EPSG_5186("5186::Korea 2000 중부 TM, 한국 SHP"),
|
EPSG_5186("5186::Korea 2000 중부 TM, 한국 SHP", "5186::Korea 2000"),
|
||||||
EPSG_5179("5179::Korea 2000 중부 TM, 한국 SHP");
|
EPSG_5179("5179::Korea 2000 중부 TM, 한국 SHP", "5179::Korea 2000");
|
||||||
|
|
||||||
private final String desc;
|
private final String desc;
|
||||||
|
private final String descEn;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getId() {
|
public String getId() {
|
||||||
@@ -25,4 +26,9 @@ public enum CrsType implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return descEn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,13 +9,14 @@ import lombok.Getter;
|
|||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum FileUploadStatus implements EnumType {
|
public enum FileUploadStatus implements EnumType {
|
||||||
INIT("초기화"),
|
INIT("초기화", "Init"),
|
||||||
UPLOADING("업로드중"),
|
UPLOADING("업로드중", "Uploading"),
|
||||||
DONE("업로드완료"),
|
DONE("업로드완료", "Upload Done"),
|
||||||
MERGED("병합완료"),
|
MERGED("병합완료", "Merged Done"),
|
||||||
MERGE_FAIL("병합 실패");
|
MERGE_FAIL("병합 실패", "Merge Failed");
|
||||||
|
|
||||||
private final String desc;
|
private final String desc;
|
||||||
|
private final String descEn;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getId() {
|
public String getId() {
|
||||||
@@ -26,4 +27,9 @@ public enum FileUploadStatus implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return descEn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,11 @@ public enum ImageryFitStatus implements EnumType {
|
|||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
|
|
||||||
public static ImageryFitStatus fromCode(String code) {
|
public static ImageryFitStatus fromCode(String code) {
|
||||||
if (code == null) {
|
if (code == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -10,14 +10,15 @@ import lombok.Getter;
|
|||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum LayerType implements EnumType {
|
public enum LayerType implements EnumType {
|
||||||
TILE("배경지도"),
|
TILE("배경지도", "Tile"),
|
||||||
GEOJSON("객체데이터"),
|
GEOJSON("객체데이터", "GeoJSON"),
|
||||||
WMTS("타일레이어"),
|
WMTS("타일레이어", "WMTS"),
|
||||||
WMS("지적도"),
|
WMS("지적도", "WMS"),
|
||||||
KAMCO_WMS("국유인WMS"),
|
KAMCO_WMS("국유인WMS", "KAMCO_WMS"),
|
||||||
KAMCO_WMTS("국유인WMTS");
|
KAMCO_WMTS("국유인WMTS", "KAMCO_WMTS");
|
||||||
|
|
||||||
private final String desc;
|
private final String desc;
|
||||||
|
private final String descEn;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getId() {
|
public String getId() {
|
||||||
@@ -29,6 +30,11 @@ public enum LayerType implements EnumType {
|
|||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return descEn;
|
||||||
|
}
|
||||||
|
|
||||||
public static Optional<LayerType> from(String type) {
|
public static Optional<LayerType> from(String type) {
|
||||||
try {
|
try {
|
||||||
return Optional.of(LayerType.valueOf(type));
|
return Optional.of(LayerType.valueOf(type));
|
||||||
|
|||||||
@@ -9,12 +9,13 @@ import lombok.Getter;
|
|||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum MngStateType implements EnumType {
|
public enum MngStateType implements EnumType {
|
||||||
NOTYET("동기화 시작"),
|
NOTYET("동기화 시작", "Sync Started"),
|
||||||
PROCESSING("데이터 체크"),
|
PROCESSING("데이터 체크", "Data Check"),
|
||||||
DONE("동기화 작업 종료"),
|
DONE("동기화 작업 종료", "Sync Completed"),
|
||||||
TAKINGERROR("오류 데이터 처리중");
|
TAKINGERROR("오류 데이터 처리중", "Processing Error Data");
|
||||||
|
|
||||||
private final String desc;
|
private final String desc;
|
||||||
|
private final String descEn;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getId() {
|
public String getId() {
|
||||||
@@ -25,4 +26,8 @@ public enum MngStateType implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getTextEn() {
|
||||||
|
return descEn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,4 +24,9 @@ public enum RoleType implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,4 +24,9 @@ public enum StatusType implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,4 +23,9 @@ public enum SyncCheckStateType implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,4 +30,9 @@ public enum SyncStateType implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,4 +5,6 @@ public interface EnumType {
|
|||||||
String getId();
|
String getId();
|
||||||
|
|
||||||
String getText();
|
String getText();
|
||||||
|
|
||||||
|
String getTextEn();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ 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 {
|
||||||
|
|
||||||
@@ -32,11 +33,13 @@ 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 = "en".equalsIgnoreCase(lang);
|
||||||
|
|
||||||
return Arrays.stream(enums)
|
return Arrays.stream(enums)
|
||||||
.map(e -> (EnumType) e)
|
.map(e -> (EnumType) e)
|
||||||
.filter(e -> !isHidden(enumClass, (Enum<?>) 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();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -192,6 +192,11 @@ public class ApiResponseDto<T> {
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
public static ApiResponseCode getCode(String name) {
|
public static ApiResponseCode getCode(String name) {
|
||||||
return ApiResponseCode.valueOf(name.toUpperCase());
|
return ApiResponseCode.valueOf(name.toUpperCase());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ public class GukYuinDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|||||||
@@ -26,4 +26,9 @@ public enum GukYuinStatus implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -448,4 +448,22 @@ public class InferenceResultApiController {
|
|||||||
UUID uuid) {
|
UUID uuid) {
|
||||||
return ApiResponseDto.ok(inferenceResultService.getInferenceRunMapId(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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,11 @@ public class InferenceResultDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 탐지 데이터 옵션 dto */
|
/** 탐지 데이터 옵션 dto */
|
||||||
@@ -79,6 +84,11 @@ public class InferenceResultDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@@ -108,6 +118,11 @@ public class InferenceResultDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@@ -129,6 +144,11 @@ public class InferenceResultDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 목록조회 dto */
|
/** 목록조회 dto */
|
||||||
|
|||||||
@@ -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.service.InferenceCommonService;
|
||||||
import com.kamco.cd.kamcoback.common.inference.utils.GeoJsonValidator;
|
import com.kamco.cd.kamcoback.common.inference.utils.GeoJsonValidator;
|
||||||
import com.kamco.cd.kamcoback.common.utils.UserUtil;
|
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;
|
||||||
import com.kamco.cd.kamcoback.config.resttemplate.ExternalHttpClient.ExternalCallResult;
|
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;
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.AnalResultInfo;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.*;
|
||||||
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.InferenceResultDto;
|
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.*;
|
||||||
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.InferenceSendDto;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto;
|
||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto.pred_requests_areas;
|
import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto.pred_requests_areas;
|
||||||
import com.kamco.cd.kamcoback.log.dto.AuditLogDto;
|
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.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
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.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -70,7 +50,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Transactional(readOnly = true)
|
@Transactional
|
||||||
public class InferenceResultService {
|
public class InferenceResultService {
|
||||||
|
|
||||||
private final InferenceResultCoreService inferenceResultCoreService;
|
private final InferenceResultCoreService inferenceResultCoreService;
|
||||||
@@ -1033,4 +1013,14 @@ public class InferenceResultService {
|
|||||||
}
|
}
|
||||||
return "";
|
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() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@CodeExpose
|
@CodeExpose
|
||||||
@@ -59,6 +64,11 @@ public class LabelAllocateDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@CodeExpose
|
@CodeExpose
|
||||||
@@ -80,6 +90,11 @@ public class LabelAllocateDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ public class LabelWorkDto {
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public static class LabelWorkMng {
|
public static class LabelWorkMng {
|
||||||
|
|
||||||
|
private Long analUid;
|
||||||
private UUID uuid;
|
private UUID uuid;
|
||||||
private Integer compareYyyy;
|
private Integer compareYyyy;
|
||||||
private Integer targetYyyy;
|
private Integer targetYyyy;
|
||||||
@@ -260,4 +261,18 @@ public class LabelWorkDto {
|
|||||||
return PageRequest.of(page, size);
|
return PageRequest.of(page, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public static class LabelCntInfo {
|
||||||
|
|
||||||
|
private Long assignedCnt;
|
||||||
|
private Long skipCnt;
|
||||||
|
private Long doneCnt;
|
||||||
|
private Long unconfirmCnt;
|
||||||
|
private Long exceptCnt;
|
||||||
|
private Long completeCnt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,11 @@ public class ErrorLogDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schema(name = "ErrorLogBasic", description = "에러로그 기본 정보")
|
@Schema(name = "ErrorLogBasic", description = "에러로그 기본 정보")
|
||||||
|
|||||||
@@ -21,4 +21,9 @@ public enum EventStatus implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,4 +39,9 @@ public enum EventType implements EnumType {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
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.beans.factory.annotation.Value;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
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.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
@Tag(name = "영상 관리", description = "영상 관리 API")
|
@Tag(name = "영상 관리", description = "영상 관리 API")
|
||||||
@@ -256,4 +249,11 @@ public class MapSheetMngApiController {
|
|||||||
return ApiResponseDto.ok(
|
return ApiResponseDto.ok(
|
||||||
mapSheetMngService.uploadChunkMapSheetFile(hstUid, upAddReqDto, chunkFile));
|
mapSheetMngService.uploadChunkMapSheetFile(hstUid, upAddReqDto, chunkFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "영상데이터관리 > 등록된 년도 데이터 전체 삭제", description = "영상데이터관리 > 등록된 년도 데이터 전체 삭제")
|
||||||
|
@DeleteMapping
|
||||||
|
public ApiResponseDto<Void> deleteByMngYyyyMngAll(@RequestParam Integer mngYyyy) {
|
||||||
|
mapSheetMngService.deleteByMngYyyyMngAll(mngYyyy);
|
||||||
|
return ApiResponseDto.ok(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ 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;
|
||||||
@@ -41,6 +42,11 @@ public class MapSheetMngDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schema(name = "MngSearchReq", description = "영상관리 검색 요청")
|
@Schema(name = "MngSearchReq", description = "영상관리 검색 요청")
|
||||||
@@ -217,7 +223,11 @@ public class MapSheetMngDto {
|
|||||||
enumId = "NOTYET";
|
enumId = "NOTYET";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String lang = LocaleContextHolder.getLocale().getLanguage();
|
||||||
MngStateType type = Enums.fromId(MngStateType.class, enumId);
|
MngStateType type = Enums.fromId(MngStateType.class, enumId);
|
||||||
|
if ("en".equalsIgnoreCase(lang)) {
|
||||||
|
return type.getTextEn();
|
||||||
|
}
|
||||||
return type.getText();
|
return type.getText();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -341,6 +351,10 @@ public class MapSheetMngDto {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SyncStateType type = Enums.fromId(SyncStateType.class, enumId);
|
SyncStateType type = Enums.fromId(SyncStateType.class, enumId);
|
||||||
|
String lang = LocaleContextHolder.getLocale().getLanguage();
|
||||||
|
if ("en".equalsIgnoreCase(lang)) {
|
||||||
|
return type.getTextEn();
|
||||||
|
}
|
||||||
return type.getText();
|
return type.getText();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Transactional(readOnly = true)
|
@Transactional
|
||||||
public class MapSheetMngService {
|
public class MapSheetMngService {
|
||||||
|
|
||||||
private final MapSheetMngCoreService mapSheetMngCoreService;
|
private final MapSheetMngCoreService mapSheetMngCoreService;
|
||||||
@@ -489,4 +489,8 @@ public class MapSheetMngService {
|
|||||||
|
|
||||||
return modelUploadResDto;
|
return modelUploadResDto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteByMngYyyyMngAll(Integer mngYyyy) {
|
||||||
|
mapSheetMngCoreService.deleteByMngYyyyMngAll(mngYyyy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ 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;
|
||||||
|
|
||||||
@@ -65,16 +66,20 @@ 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);
|
||||||
return type.getText();
|
String lang = LocaleContextHolder.getLocale().getLanguage();
|
||||||
|
boolean english = "en".equalsIgnoreCase(lang);
|
||||||
|
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 = "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;
|
||||||
}
|
}
|
||||||
return type.getText();
|
return english ? type.getTextEn() : type.getText();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class MenuDto {
|
|||||||
|
|
||||||
@JsonFormatDttm private ZonedDateTime updatedDttm;
|
@JsonFormatDttm private ZonedDateTime updatedDttm;
|
||||||
|
|
||||||
private String menuApiUrl;
|
private String menuNmEn;
|
||||||
|
|
||||||
public Basic(
|
public Basic(
|
||||||
String menuUid,
|
String menuUid,
|
||||||
@@ -45,7 +45,8 @@ public class MenuDto {
|
|||||||
Long updatedUid,
|
Long updatedUid,
|
||||||
List<MenuDto.Basic> children,
|
List<MenuDto.Basic> children,
|
||||||
ZonedDateTime createdDttm,
|
ZonedDateTime createdDttm,
|
||||||
ZonedDateTime updatedDttm) {
|
ZonedDateTime updatedDttm,
|
||||||
|
String menuNmEn) {
|
||||||
this.menuUid = menuUid;
|
this.menuUid = menuUid;
|
||||||
this.menuNm = menuNm;
|
this.menuNm = menuNm;
|
||||||
this.menuUrl = menuUrl;
|
this.menuUrl = menuUrl;
|
||||||
@@ -58,6 +59,7 @@ public class MenuDto {
|
|||||||
this.children = children;
|
this.children = children;
|
||||||
this.createdDttm = createdDttm;
|
this.createdDttm = createdDttm;
|
||||||
this.updatedDttm = updatedDttm;
|
this.updatedDttm = updatedDttm;
|
||||||
|
this.menuNmEn = menuNmEn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,11 @@ public class ModelMngDto {
|
|||||||
public String getText() {
|
public String getText() {
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTextEn() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schema(name = "ModelMgmtDto Basic", description = "모델관리 엔티티 기본 정보")
|
@Schema(name = "ModelMgmtDto Basic", description = "모델관리 엔티티 기본 정보")
|
||||||
|
|||||||
@@ -626,4 +626,8 @@ public class InferenceResultCoreService {
|
|||||||
public List<InferenceResultsTestingDto.Basic> getInferenceResultGroupList(List<Long> batchIds) {
|
public List<InferenceResultsTestingDto.Basic> getInferenceResultGroupList(List<Long> batchIds) {
|
||||||
return inferenceResultsTestingRepository.getInferenceResultGroupList(batchIds);
|
return inferenceResultsTestingRepository.getInferenceResultGroupList(batchIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long deleteInference(UUID uuid) {
|
||||||
|
return inferenceResultRepository.deleteInference(uuid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -379,4 +379,8 @@ public class MapSheetMngCoreService {
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteByMngYyyyMngAll(Integer mngYyyy) {
|
||||||
|
mapSheetMngRepository.deleteByMngYyyyMngAll(mngYyyy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ 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 org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -27,14 +28,15 @@ 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 = lang.equalsIgnoreCase("en");
|
||||||
return entities.stream()
|
return entities.stream()
|
||||||
.map(
|
.map(
|
||||||
parent -> {
|
parent -> {
|
||||||
MyMenuDto.Basic p =
|
MyMenuDto.Basic p =
|
||||||
new MyMenuDto.Basic(
|
new MyMenuDto.Basic(
|
||||||
parent.getMenuUid(),
|
parent.getMenuUid(),
|
||||||
parent.getMenuNm(),
|
english ? parent.getMenuNmEn() : parent.getMenuNm(),
|
||||||
parent.getMenuUrl(),
|
parent.getMenuUrl(),
|
||||||
parent.getMenuOrder());
|
parent.getMenuOrder());
|
||||||
|
|
||||||
@@ -48,7 +50,10 @@ public class MenuCoreService {
|
|||||||
.map(
|
.map(
|
||||||
c ->
|
c ->
|
||||||
new MyMenuDto.Basic(
|
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));
|
.forEach(childDto -> p.getChildren().add(childDto));
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
|
|||||||
@@ -229,6 +229,9 @@ public class MapSheetLearnEntity {
|
|||||||
@Column(name = "shp_error_message")
|
@Column(name = "shp_error_message")
|
||||||
private String shp_error_message;
|
private String shp_error_message;
|
||||||
|
|
||||||
|
@Column(name = "is_deleted")
|
||||||
|
private Boolean isDeleted;
|
||||||
|
|
||||||
public InferenceResultDto.ResultList toDto() {
|
public InferenceResultDto.ResultList toDto() {
|
||||||
return new InferenceResultDto.ResultList(
|
return new InferenceResultDto.ResultList(
|
||||||
this.uuid,
|
this.uuid,
|
||||||
|
|||||||
@@ -58,6 +58,9 @@ public class MenuEntity extends CommonDateEntity {
|
|||||||
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
|
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
|
||||||
private List<MenuEntity> children = new ArrayList<>();
|
private List<MenuEntity> children = new ArrayList<>();
|
||||||
|
|
||||||
|
@Column(name = "menu_nm_en")
|
||||||
|
private String menuNmEn; // 영문 메뉴명
|
||||||
|
|
||||||
public MenuDto.Basic toDto() {
|
public MenuDto.Basic toDto() {
|
||||||
return new MenuDto.Basic(
|
return new MenuDto.Basic(
|
||||||
this.menuUid,
|
this.menuUid,
|
||||||
@@ -71,6 +74,7 @@ public class MenuEntity extends CommonDateEntity {
|
|||||||
this.updatedUid,
|
this.updatedUid,
|
||||||
this.children.stream().map(MenuEntity::toDto).toList(),
|
this.children.stream().map(MenuEntity::toDto).toList(),
|
||||||
this.getCreatedDate(),
|
this.getCreatedDate(),
|
||||||
this.getModifiedDate());
|
this.getModifiedDate(),
|
||||||
|
this.menuNmEn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,4 +62,11 @@ public interface InferenceResultRepositoryCustom {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Optional<MapSheetAnalInferenceEntity> getAnalInferenceDataByLearnId(Long id);
|
Optional<MapSheetAnalInferenceEntity> getAnalInferenceDataByLearnId(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 추론 삭제
|
||||||
|
*
|
||||||
|
* @param uuid
|
||||||
|
*/
|
||||||
|
long deleteInference(UUID uuid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -346,4 +346,13 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC
|
|||||||
.where(mapSheetAnalInferenceEntity.learnId.eq(id))
|
.where(mapSheetAnalInferenceEntity.learnId.eq(id))
|
||||||
.fetchOne());
|
.fetchOne());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long deleteInference(UUID uuid) {
|
||||||
|
return queryFactory
|
||||||
|
.update(mapSheetLearnEntity)
|
||||||
|
.set(mapSheetLearnEntity.isDeleted, true)
|
||||||
|
.where(mapSheetLearnEntity.uuid.eq(uuid))
|
||||||
|
.execute();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,6 +90,9 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
builder.and(mapSheetLearnEntity.title.containsIgnoreCase(req.getTitle()));
|
builder.and(mapSheetLearnEntity.title.containsIgnoreCase(req.getTitle()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 삭제여부 값 추가
|
||||||
|
builder.and(mapSheetLearnEntity.isDeleted.eq(false).or(mapSheetLearnEntity.isDeleted.isNull()));
|
||||||
|
|
||||||
List<MapSheetLearnEntity> content =
|
List<MapSheetLearnEntity> content =
|
||||||
queryFactory
|
queryFactory
|
||||||
.select(mapSheetLearnEntity)
|
.select(mapSheetLearnEntity)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.InspectState;
|
|||||||
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelMngState;
|
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelMngState;
|
||||||
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelState;
|
import com.kamco.cd.kamcoback.label.dto.LabelAllocateDto.LabelState;
|
||||||
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto;
|
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto;
|
||||||
|
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.LabelCntInfo;
|
||||||
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.LabelWorkMng;
|
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.LabelWorkMng;
|
||||||
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.LabelWorkMngDetail;
|
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.LabelWorkMngDetail;
|
||||||
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.WorkerState;
|
import com.kamco.cd.kamcoback.label.dto.LabelWorkDto.WorkerState;
|
||||||
@@ -18,7 +19,6 @@ import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalDataInferenceGeomEnti
|
|||||||
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalInferenceEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.QMapSheetAnalInferenceEntity;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.QMemberEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.QMemberEntity;
|
||||||
import com.querydsl.core.BooleanBuilder;
|
import com.querydsl.core.BooleanBuilder;
|
||||||
import com.querydsl.core.types.Expression;
|
|
||||||
import com.querydsl.core.types.OrderSpecifier;
|
import com.querydsl.core.types.OrderSpecifier;
|
||||||
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;
|
||||||
@@ -86,7 +86,7 @@ public class LabelWorkRepositoryImpl implements LabelWorkRepositoryCustom {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 라벨링 작업관리 목록 조회 (복잡한 집계 쿼리로 인해 DTO 직접 반환)
|
* 라벨링 작업관리 목록 조회 :: 전체 geom 집계 -> inference 먼저 쿼리 하고 count 정보 따로 집계하도록 수정
|
||||||
*
|
*
|
||||||
* @param searchReq 검색 조건
|
* @param searchReq 검색 조건
|
||||||
* @return 라벨링 작업관리 목록 페이지
|
* @return 라벨링 작업관리 목록 페이지
|
||||||
@@ -95,9 +95,8 @@ public class LabelWorkRepositoryImpl implements LabelWorkRepositoryCustom {
|
|||||||
public Page<LabelWorkMng> labelWorkMngList(LabelWorkDto.LabelWorkMngSearchReq searchReq) {
|
public Page<LabelWorkMng> labelWorkMngList(LabelWorkDto.LabelWorkMngSearchReq searchReq) {
|
||||||
|
|
||||||
Pageable pageable = PageRequest.of(searchReq.getPage(), searchReq.getSize());
|
Pageable pageable = PageRequest.of(searchReq.getPage(), searchReq.getSize());
|
||||||
BooleanBuilder whereBuilder = new BooleanBuilder();
|
|
||||||
BooleanBuilder whereSubDataBuilder = new BooleanBuilder();
|
BooleanBuilder baseWhereBuilder = new BooleanBuilder();
|
||||||
BooleanBuilder whereSubBuilder = new BooleanBuilder();
|
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(searchReq.getDetectYear())) {
|
if (StringUtils.isNotBlank(searchReq.getDetectYear())) {
|
||||||
String[] years = searchReq.getDetectYear().split("-");
|
String[] years = searchReq.getDetectYear().split("-");
|
||||||
@@ -106,67 +105,14 @@ public class LabelWorkRepositoryImpl implements LabelWorkRepositoryCustom {
|
|||||||
Integer compareYear = Integer.valueOf(years[0]);
|
Integer compareYear = Integer.valueOf(years[0]);
|
||||||
Integer targetYear = Integer.valueOf(years[1]);
|
Integer targetYear = Integer.valueOf(years[1]);
|
||||||
|
|
||||||
whereBuilder.and(
|
baseWhereBuilder.and(
|
||||||
mapSheetAnalDataInferenceEntity
|
mapSheetAnalInferenceEntity
|
||||||
.compareYyyy
|
.compareYyyy
|
||||||
.eq(compareYear)
|
.eq(compareYear)
|
||||||
.and(mapSheetAnalDataInferenceEntity.targetYyyy.eq(targetYear)));
|
.and(mapSheetAnalInferenceEntity.targetYyyy.eq(targetYear)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
whereSubDataBuilder.and(
|
|
||||||
mapSheetAnalInferenceEntity.id.eq(mapSheetAnalDataInferenceEntity.analUid));
|
|
||||||
|
|
||||||
whereSubBuilder.and(
|
|
||||||
mapSheetAnalDataInferenceGeomEntity.dataUid.eq(mapSheetAnalDataInferenceEntity.id));
|
|
||||||
|
|
||||||
if (searchReq.getStrtDttm() != null && searchReq.getEndDttm() != null) {
|
|
||||||
|
|
||||||
ZoneId zoneId = ZoneId.of("Asia/Seoul");
|
|
||||||
|
|
||||||
ZonedDateTime start = searchReq.getStrtDttm().atStartOfDay(zoneId);
|
|
||||||
|
|
||||||
ZonedDateTime end = searchReq.getEndDttm().plusDays(1).atStartOfDay(zoneId);
|
|
||||||
|
|
||||||
whereSubBuilder.and(
|
|
||||||
mapSheetAnalDataInferenceGeomEntity
|
|
||||||
.labelStateDttm
|
|
||||||
.goe(start)
|
|
||||||
.and(mapSheetAnalDataInferenceGeomEntity.labelStateDttm.lt(end)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// labelTotCnt: pnu가 있고 fitState = UNFIT 인 건수만 라벨링 대상
|
|
||||||
NumberExpression<Long> labelTotCntExpr =
|
|
||||||
new CaseBuilder()
|
|
||||||
.when(
|
|
||||||
mapSheetAnalDataInferenceGeomEntity
|
|
||||||
.pnu
|
|
||||||
.gt(0)
|
|
||||||
.and(
|
|
||||||
mapSheetAnalDataInferenceGeomEntity.fitState.eq(
|
|
||||||
ImageryFitStatus.UNFIT.getId())))
|
|
||||||
.then(1L)
|
|
||||||
.otherwise(0L)
|
|
||||||
.sum();
|
|
||||||
|
|
||||||
// stagnation_yn = 'N'인 정상 진행 건수 (서브쿼리로 별도 집계)
|
|
||||||
Expression<Long> normalProgressCntSubQuery =
|
|
||||||
JPAExpressions.select(
|
|
||||||
new CaseBuilder()
|
|
||||||
.when(labelingAssignmentEntity.stagnationYn.eq('N'))
|
|
||||||
.then(1L)
|
|
||||||
.otherwise(0L)
|
|
||||||
.sum()
|
|
||||||
.coalesce(0L))
|
|
||||||
.from(labelingAssignmentEntity)
|
|
||||||
.where(labelingAssignmentEntity.analUid.eq(mapSheetAnalInferenceEntity.id));
|
|
||||||
|
|
||||||
// 총 배정 건수 (서브쿼리로 별도 집계)
|
|
||||||
Expression<Long> totalAssignmentCntSubQuery =
|
|
||||||
JPAExpressions.select(labelingAssignmentEntity.count().coalesce(0L))
|
|
||||||
.from(labelingAssignmentEntity)
|
|
||||||
.where(labelingAssignmentEntity.analUid.eq(mapSheetAnalInferenceEntity.id));
|
|
||||||
|
|
||||||
/** 순서 ING 진행중 ASSIGNED 작업할당 PENDING 작업대기 FINISH 종료 */
|
/** 순서 ING 진행중 ASSIGNED 작업할당 PENDING 작업대기 FINISH 종료 */
|
||||||
NumberExpression<Integer> stateOrder =
|
NumberExpression<Integer> stateOrder =
|
||||||
new CaseBuilder()
|
new CaseBuilder()
|
||||||
@@ -180,64 +126,31 @@ public class LabelWorkRepositoryImpl implements LabelWorkRepositoryCustom {
|
|||||||
.then(3)
|
.then(3)
|
||||||
.otherwise(99);
|
.otherwise(99);
|
||||||
|
|
||||||
|
// 1단계: anal_inference 기준으로 상위 페이지 목록만 조회
|
||||||
List<LabelWorkMng> foundContent =
|
List<LabelWorkMng> foundContent =
|
||||||
queryFactory
|
queryFactory
|
||||||
.select(
|
.select(
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
LabelWorkMng.class,
|
LabelWorkMng.class,
|
||||||
|
mapSheetAnalInferenceEntity.id, // analUid 추가
|
||||||
mapSheetAnalInferenceEntity.uuid,
|
mapSheetAnalInferenceEntity.uuid,
|
||||||
mapSheetAnalInferenceEntity.compareYyyy,
|
mapSheetAnalInferenceEntity.compareYyyy,
|
||||||
mapSheetAnalInferenceEntity.targetYyyy,
|
mapSheetAnalInferenceEntity.targetYyyy,
|
||||||
mapSheetAnalInferenceEntity.stage,
|
mapSheetAnalInferenceEntity.stage,
|
||||||
// 국유인 반영 컬럼 gukyuinApplyDttm
|
|
||||||
mapSheetAnalInferenceEntity.gukyuinApplyDttm,
|
mapSheetAnalInferenceEntity.gukyuinApplyDttm,
|
||||||
mapSheetAnalDataInferenceGeomEntity.dataUid.count(),
|
mapSheetAnalInferenceEntity.detectingCnt,
|
||||||
// labelTotCnt: pnu 있고 pass_yn = false인 건수
|
Expressions.constant(0L),
|
||||||
labelTotCntExpr,
|
Expressions.constant(0L),
|
||||||
new CaseBuilder()
|
Expressions.constant(0L),
|
||||||
.when(
|
Expressions.constant(0L),
|
||||||
mapSheetAnalDataInferenceGeomEntity.labelState.eq(
|
mapSheetAnalInferenceEntity.createdDttm,
|
||||||
LabelState.ASSIGNED.getId()))
|
|
||||||
.then(1L)
|
|
||||||
.otherwise(0L)
|
|
||||||
.sum(),
|
|
||||||
new CaseBuilder()
|
|
||||||
.when(
|
|
||||||
mapSheetAnalDataInferenceGeomEntity.labelState.eq(
|
|
||||||
LabelState.SKIP.getId())) // "STOP"?
|
|
||||||
.then(1L)
|
|
||||||
.otherwise(0L)
|
|
||||||
.sum(),
|
|
||||||
new CaseBuilder()
|
|
||||||
.when(
|
|
||||||
mapSheetAnalDataInferenceGeomEntity.labelState.eq(
|
|
||||||
LabelState.DONE.getId()))
|
|
||||||
.then(1L)
|
|
||||||
.otherwise(0L)
|
|
||||||
.sum(),
|
|
||||||
mapSheetAnalDataInferenceGeomEntity.labelStateDttm.min(),
|
|
||||||
// analState: tb_map_sheet_anal_inference.anal_state
|
|
||||||
mapSheetAnalInferenceEntity.analState,
|
mapSheetAnalInferenceEntity.analState,
|
||||||
// normalProgressCnt: stagnation_yn = 'N'인 건수 (서브쿼리)
|
Expressions.constant(0L),
|
||||||
normalProgressCntSubQuery,
|
Expressions.constant(0L),
|
||||||
// totalAssignmentCnt: 총 배정 건수 (서브쿼리)
|
|
||||||
totalAssignmentCntSubQuery,
|
|
||||||
mapSheetAnalInferenceEntity.labelingClosedYn,
|
mapSheetAnalInferenceEntity.labelingClosedYn,
|
||||||
mapSheetAnalInferenceEntity.inspectionClosedYn,
|
mapSheetAnalInferenceEntity.inspectionClosedYn,
|
||||||
new CaseBuilder()
|
Expressions.constant(0L),
|
||||||
.when(
|
Expressions.constant(0L),
|
||||||
mapSheetAnalDataInferenceGeomEntity.testState.eq(
|
|
||||||
InspectState.COMPLETE.getId()))
|
|
||||||
.then(1L)
|
|
||||||
.otherwise(0L)
|
|
||||||
.sum(),
|
|
||||||
new CaseBuilder()
|
|
||||||
.when(
|
|
||||||
mapSheetAnalDataInferenceGeomEntity.testState.eq(
|
|
||||||
InspectState.UNCONFIRM.getId()))
|
|
||||||
.then(1L)
|
|
||||||
.otherwise(0L)
|
|
||||||
.sum(),
|
|
||||||
new CaseBuilder()
|
new CaseBuilder()
|
||||||
.when(mapSheetAnalInferenceEntity.inspectionClosedYn.eq("Y"))
|
.when(mapSheetAnalInferenceEntity.inspectionClosedYn.eq("Y"))
|
||||||
.then(mapSheetAnalInferenceEntity.updatedDttm)
|
.then(mapSheetAnalInferenceEntity.updatedDttm)
|
||||||
@@ -247,23 +160,11 @@ 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)
|
||||||
.innerJoin(mapSheetAnalDataInferenceEntity)
|
|
||||||
.on(whereSubDataBuilder)
|
|
||||||
.innerJoin(mapSheetAnalDataInferenceGeomEntity)
|
|
||||||
.on(whereSubBuilder)
|
|
||||||
.leftJoin(mapSheetLearnEntity)
|
.leftJoin(mapSheetLearnEntity)
|
||||||
.on(mapSheetAnalInferenceEntity.learnId.eq(mapSheetLearnEntity.id))
|
.on(
|
||||||
.where(whereBuilder)
|
mapSheetAnalInferenceEntity.learnId.eq(mapSheetLearnEntity.id),
|
||||||
.groupBy(
|
mapSheetLearnEntity.isDeleted.eq(false).or(mapSheetLearnEntity.isDeleted.isNull()))
|
||||||
mapSheetAnalInferenceEntity.uuid,
|
.where(baseWhereBuilder)
|
||||||
mapSheetAnalInferenceEntity.compareYyyy,
|
|
||||||
mapSheetAnalInferenceEntity.targetYyyy,
|
|
||||||
mapSheetAnalInferenceEntity.stage,
|
|
||||||
mapSheetAnalInferenceEntity.createdDttm,
|
|
||||||
mapSheetAnalInferenceEntity.analState,
|
|
||||||
mapSheetAnalInferenceEntity.id,
|
|
||||||
mapSheetLearnEntity.uid,
|
|
||||||
mapSheetLearnEntity.uuid)
|
|
||||||
.orderBy(
|
.orderBy(
|
||||||
stateOrder.asc(),
|
stateOrder.asc(),
|
||||||
mapSheetAnalInferenceEntity.targetYyyy.desc(),
|
mapSheetAnalInferenceEntity.targetYyyy.desc(),
|
||||||
@@ -273,20 +174,122 @@ public class LabelWorkRepositoryImpl implements LabelWorkRepositoryCustom {
|
|||||||
.limit(pageable.getPageSize())
|
.limit(pageable.getPageSize())
|
||||||
.fetch();
|
.fetch();
|
||||||
|
|
||||||
// Count 쿼리 별도 실행 (null safe handling)
|
// total count
|
||||||
long total =
|
long total =
|
||||||
Optional.ofNullable(
|
Optional.ofNullable(
|
||||||
queryFactory
|
queryFactory
|
||||||
.select(mapSheetAnalInferenceEntity.uuid.countDistinct())
|
.select(mapSheetAnalInferenceEntity.count())
|
||||||
.from(mapSheetAnalInferenceEntity)
|
.from(mapSheetAnalInferenceEntity)
|
||||||
.innerJoin(mapSheetAnalDataInferenceEntity)
|
.where(baseWhereBuilder)
|
||||||
.on(whereSubDataBuilder)
|
|
||||||
.innerJoin(mapSheetAnalDataInferenceGeomEntity)
|
|
||||||
.on(whereSubBuilder)
|
|
||||||
.where(whereBuilder)
|
|
||||||
.fetchOne())
|
.fetchOne())
|
||||||
.orElse(0L);
|
.orElse(0L);
|
||||||
|
|
||||||
|
// 2단계: 각 analUid별 count 조회 후 세팅
|
||||||
|
for (LabelWorkMng item : foundContent) {
|
||||||
|
Long analUid = item.getAnalUid();
|
||||||
|
|
||||||
|
BooleanBuilder geomWhereBuilder = new BooleanBuilder();
|
||||||
|
geomWhereBuilder.and(mapSheetAnalDataInferenceEntity.analUid.eq(analUid));
|
||||||
|
geomWhereBuilder.and(
|
||||||
|
mapSheetAnalDataInferenceGeomEntity.dataUid.eq(mapSheetAnalDataInferenceEntity.id));
|
||||||
|
|
||||||
|
if (searchReq.getStrtDttm() != null && searchReq.getEndDttm() != null) {
|
||||||
|
ZoneId zoneId = ZoneId.of("Asia/Seoul");
|
||||||
|
ZonedDateTime start = searchReq.getStrtDttm().atStartOfDay(zoneId);
|
||||||
|
ZonedDateTime end = searchReq.getEndDttm().plusDays(1).atStartOfDay(zoneId);
|
||||||
|
|
||||||
|
geomWhereBuilder.and(
|
||||||
|
mapSheetAnalDataInferenceGeomEntity
|
||||||
|
.createdDttm
|
||||||
|
.goe(start)
|
||||||
|
.and(mapSheetAnalDataInferenceGeomEntity.createdDttm.lt(end)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// labelTotCnt: pnu > 0 and fitState = UNFIT
|
||||||
|
Long labelTotCnt =
|
||||||
|
Optional.ofNullable(
|
||||||
|
queryFactory
|
||||||
|
.select(mapSheetAnalDataInferenceGeomEntity.count())
|
||||||
|
.from(mapSheetAnalDataInferenceEntity)
|
||||||
|
.innerJoin(mapSheetAnalDataInferenceGeomEntity)
|
||||||
|
.on(
|
||||||
|
mapSheetAnalDataInferenceGeomEntity.dataUid.eq(
|
||||||
|
mapSheetAnalDataInferenceEntity.id))
|
||||||
|
.where(
|
||||||
|
geomWhereBuilder,
|
||||||
|
mapSheetAnalDataInferenceGeomEntity.pnu.gt(0),
|
||||||
|
mapSheetAnalDataInferenceGeomEntity.fitState.eq(
|
||||||
|
ImageryFitStatus.UNFIT.getId()))
|
||||||
|
.fetchOne())
|
||||||
|
.orElse(0L);
|
||||||
|
|
||||||
|
LabelCntInfo cntInfo =
|
||||||
|
queryFactory
|
||||||
|
.select(
|
||||||
|
Projections.constructor(
|
||||||
|
LabelCntInfo.class,
|
||||||
|
new CaseBuilder()
|
||||||
|
.when(labelingAssignmentEntity.workState.eq(LabelState.ASSIGNED.getId()))
|
||||||
|
.then(1L)
|
||||||
|
.otherwise(0L)
|
||||||
|
.sum()
|
||||||
|
.coalesce(0L),
|
||||||
|
new CaseBuilder()
|
||||||
|
.when(labelingAssignmentEntity.workState.eq(LabelState.SKIP.getId()))
|
||||||
|
.then(1L)
|
||||||
|
.otherwise(0L)
|
||||||
|
.sum()
|
||||||
|
.coalesce(0L),
|
||||||
|
new CaseBuilder()
|
||||||
|
.when(labelingAssignmentEntity.workState.eq(LabelState.DONE.getId()))
|
||||||
|
.then(1L)
|
||||||
|
.otherwise(0L)
|
||||||
|
.sum()
|
||||||
|
.coalesce(0L),
|
||||||
|
new CaseBuilder()
|
||||||
|
.when(
|
||||||
|
labelingAssignmentEntity.inspectState.eq(
|
||||||
|
InspectState.UNCONFIRM.getId()))
|
||||||
|
.then(1L)
|
||||||
|
.otherwise(0L)
|
||||||
|
.sum()
|
||||||
|
.coalesce(0L),
|
||||||
|
new CaseBuilder()
|
||||||
|
.when(
|
||||||
|
labelingAssignmentEntity.inspectState.eq(InspectState.EXCEPT.getId()))
|
||||||
|
.then(1L)
|
||||||
|
.otherwise(0L)
|
||||||
|
.sum()
|
||||||
|
.coalesce(0L),
|
||||||
|
new CaseBuilder()
|
||||||
|
.when(
|
||||||
|
labelingAssignmentEntity.inspectState.eq(
|
||||||
|
InspectState.COMPLETE.getId()))
|
||||||
|
.then(1L)
|
||||||
|
.otherwise(0L)
|
||||||
|
.sum()
|
||||||
|
.coalesce(0L)))
|
||||||
|
.from(labelingAssignmentEntity)
|
||||||
|
.where(labelingAssignmentEntity.analUid.eq(analUid))
|
||||||
|
.fetchOne();
|
||||||
|
|
||||||
|
Long normalProgressCnt = 0L;
|
||||||
|
Long totalAssignmentCnt = 0L;
|
||||||
|
|
||||||
|
if (cntInfo == null) {
|
||||||
|
cntInfo = new LabelCntInfo(0L, 0L, 0L, 0L, 0L, 0L);
|
||||||
|
}
|
||||||
|
|
||||||
|
item.setLabelTotCnt(labelTotCnt);
|
||||||
|
item.setLabelAssignCnt(cntInfo.getAssignedCnt());
|
||||||
|
item.setLabelSkipTotCnt(cntInfo.getSkipCnt());
|
||||||
|
item.setLabelCompleteTotCnt(cntInfo.getDoneCnt());
|
||||||
|
item.setNormalProgressCnt(normalProgressCnt);
|
||||||
|
item.setTotalAssignmentCnt(totalAssignmentCnt);
|
||||||
|
item.setInspectorCompleteTotCnt(cntInfo.getCompleteCnt());
|
||||||
|
item.setInspectorRemainCnt(cntInfo.getUnconfirmCnt());
|
||||||
|
}
|
||||||
|
|
||||||
return new PageImpl<>(foundContent, pageable, total);
|
return new PageImpl<>(foundContent, pageable, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.kamco.cd.kamcoback.log.dto.EventType;
|
|||||||
import com.kamco.cd.kamcoback.postgres.entity.AuditLogEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.AuditLogEntity;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.QMenuEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.QMenuEntity;
|
||||||
import com.querydsl.core.BooleanBuilder;
|
import com.querydsl.core.BooleanBuilder;
|
||||||
|
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;
|
||||||
import com.querydsl.core.types.dsl.CaseBuilder;
|
import com.querydsl.core.types.dsl.CaseBuilder;
|
||||||
@@ -26,6 +27,7 @@ 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;
|
||||||
@@ -83,13 +85,18 @@ 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();
|
||||||
|
|
||||||
|
Expression<String> menuNameExpr =
|
||||||
|
"en".equalsIgnoreCase(lang) ? menuEntity.menuNmEn.max() : menuEntity.menuNm.max();
|
||||||
|
|
||||||
List<AuditLogDto.MenuAuditList> foundContent =
|
List<AuditLogDto.MenuAuditList> foundContent =
|
||||||
queryFactory
|
queryFactory
|
||||||
.select(
|
.select(
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
AuditLogDto.MenuAuditList.class,
|
AuditLogDto.MenuAuditList.class,
|
||||||
auditLogEntity.menuUid.as("menuId"),
|
auditLogEntity.menuUid.as("menuId"),
|
||||||
menuEntity.menuNm.max().as("menuName"),
|
menuNameExpr,
|
||||||
readCount().as("readCount"),
|
readCount().as("readCount"),
|
||||||
cudCount().as("cudCount"),
|
cudCount().as("cudCount"),
|
||||||
printCount().as("printCount"),
|
printCount().as("printCount"),
|
||||||
@@ -217,21 +224,25 @@ 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 = "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
|
||||||
StringExpression parentMenuName =
|
StringExpression parentMenuName =
|
||||||
new CaseBuilder()
|
new CaseBuilder()
|
||||||
.when(parent.menuUid.isNull())
|
.when(parent.menuUid.isNull())
|
||||||
.then(menuEntity.menuNm)
|
.then(english ? menuEntity.menuNmEn : menuEntity.menuNm)
|
||||||
.otherwise(parent.menuNm);
|
.otherwise(english ? parent.menuNmEn : parent.menuNm);
|
||||||
|
|
||||||
// 2depth menu name
|
// 2depth menu name
|
||||||
StringExpression menuName =
|
StringExpression menuName =
|
||||||
new CaseBuilder()
|
new CaseBuilder()
|
||||||
.when(parent.menuUid.isNull())
|
.when(parent.menuUid.isNull())
|
||||||
.then(NULL_STRING)
|
.then(NULL_STRING)
|
||||||
.otherwise(menuEntity.menuNm);
|
.otherwise(english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||||
|
|
||||||
|
StringExpression menuNm = (english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||||
|
|
||||||
List<AuditLogDto.DailyDetail> foundContent =
|
List<AuditLogDto.DailyDetail> foundContent =
|
||||||
queryFactory
|
queryFactory
|
||||||
@@ -241,20 +252,20 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
auditLogEntity.id.as("logId"),
|
auditLogEntity.id.as("logId"),
|
||||||
memberEntity.name.as("userName"),
|
memberEntity.name.as("userName"),
|
||||||
memberEntity.employeeNo.as("loginId"),
|
memberEntity.employeeNo.as("loginId"),
|
||||||
menuEntity.menuNm.as("menuName"),
|
menuNm.as("menuName"),
|
||||||
auditLogEntity.eventType.as("eventType"),
|
auditLogEntity.eventType.as("eventType"),
|
||||||
Expressions.stringTemplate(
|
Expressions.stringTemplate(
|
||||||
"to_char({0}, 'YYYY-MM-DD HH24:MI')", auditLogEntity.createdDate)
|
"to_char({0}, 'YYYY-MM-DD HH24:MI')", auditLogEntity.createdDate)
|
||||||
.as("logDateTime"),
|
.as("logDateTime"),
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
AuditLogDto.LogDetail.class,
|
AuditLogDto.LogDetail.class,
|
||||||
Expressions.constant("한국자산관리공사"), // serviceName
|
Expressions.constant(english ? "Kamco" : "한국자산관리공사"), // serviceName
|
||||||
parentMenuName.as("parentMenuName"),
|
parentMenuName.as("parentMenuName"),
|
||||||
menuName,
|
menuName,
|
||||||
menuEntity.menuUrl.as("menuUrl"),
|
menuEntity.menuUrl.as("menuUrl"),
|
||||||
menuEntity.description.as("menuDescription"),
|
menuEntity.description.as("menuDescription"),
|
||||||
menuEntity.menuOrder.as("sortOrder"),
|
menuEntity.menuOrder.as("sortOrder"),
|
||||||
menuEntity.isUse.as("used")))) // TODO
|
menuEntity.isUse.as("used"))))
|
||||||
.from(auditLogEntity)
|
.from(auditLogEntity)
|
||||||
.leftJoin(menuEntity)
|
.leftJoin(menuEntity)
|
||||||
.on(auditLogEntity.menuUid.eq(menuEntity.menuUid))
|
.on(auditLogEntity.menuUid.eq(menuEntity.menuUid))
|
||||||
@@ -285,21 +296,23 @@ 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 = "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
|
||||||
StringExpression parentMenuName =
|
StringExpression parentMenuName =
|
||||||
new CaseBuilder()
|
new CaseBuilder()
|
||||||
.when(parent.menuUid.isNull())
|
.when(parent.menuUid.isNull())
|
||||||
.then(menuEntity.menuNm)
|
.then(english ? menuEntity.menuNmEn : menuEntity.menuNm)
|
||||||
.otherwise(parent.menuNm);
|
.otherwise(english ? parent.menuNmEn : parent.menuNm);
|
||||||
|
|
||||||
// 2depth menu name
|
// 2depth menu name
|
||||||
StringExpression menuName =
|
StringExpression menuName =
|
||||||
new CaseBuilder()
|
new CaseBuilder()
|
||||||
.when(parent.menuUid.isNull())
|
.when(parent.menuUid.isNull())
|
||||||
.then(NULL_STRING)
|
.then(NULL_STRING)
|
||||||
.otherwise(menuEntity.menuNm);
|
.otherwise(english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||||
|
|
||||||
List<AuditLogDto.MenuDetail> foundContent =
|
List<AuditLogDto.MenuDetail> foundContent =
|
||||||
queryFactory
|
queryFactory
|
||||||
@@ -315,7 +328,7 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
auditLogEntity.eventType.as("eventType"),
|
auditLogEntity.eventType.as("eventType"),
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
AuditLogDto.LogDetail.class,
|
AuditLogDto.LogDetail.class,
|
||||||
Expressions.constant("한국자산관리공사"), // serviceName
|
Expressions.constant(english ? "Kamco" : "한국자산관리공사"), // serviceName
|
||||||
parentMenuName.as("parentMenuName"),
|
parentMenuName.as("parentMenuName"),
|
||||||
menuName,
|
menuName,
|
||||||
menuEntity.menuUrl.as("menuUrl"),
|
menuEntity.menuUrl.as("menuUrl"),
|
||||||
@@ -352,21 +365,25 @@ 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 = "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
|
||||||
StringExpression parentMenuName =
|
StringExpression parentMenuName =
|
||||||
new CaseBuilder()
|
new CaseBuilder()
|
||||||
.when(parent.menuUid.isNull())
|
.when(parent.menuUid.isNull())
|
||||||
.then(menuEntity.menuNm)
|
.then(english ? menuEntity.menuNmEn : menuEntity.menuNm)
|
||||||
.otherwise(parent.menuNm);
|
.otherwise(english ? parent.menuNmEn : parent.menuNm);
|
||||||
|
|
||||||
// 2depth menu name
|
// 2depth menu name
|
||||||
StringExpression menuName =
|
StringExpression menuName =
|
||||||
new CaseBuilder()
|
new CaseBuilder()
|
||||||
.when(parent.menuUid.isNull())
|
.when(parent.menuUid.isNull())
|
||||||
.then(NULL_STRING)
|
.then(NULL_STRING)
|
||||||
.otherwise(menuEntity.menuNm);
|
.otherwise(english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||||
|
|
||||||
|
StringExpression menuNm = (english ? menuEntity.menuNmEn : menuEntity.menuNm);
|
||||||
|
|
||||||
List<AuditLogDto.UserDetail> foundContent =
|
List<AuditLogDto.UserDetail> foundContent =
|
||||||
queryFactory
|
queryFactory
|
||||||
@@ -377,11 +394,11 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
Expressions.stringTemplate(
|
Expressions.stringTemplate(
|
||||||
"to_char({0}, 'YYYY-MM-DD HH24:MI')", auditLogEntity.createdDate)
|
"to_char({0}, 'YYYY-MM-DD HH24:MI')", auditLogEntity.createdDate)
|
||||||
.as("logDateTime"),
|
.as("logDateTime"),
|
||||||
menuEntity.menuNm.as("menuName"),
|
menuNm.as("menuName"),
|
||||||
auditLogEntity.eventType.as("eventType"),
|
auditLogEntity.eventType.as("eventType"),
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
AuditLogDto.LogDetail.class,
|
AuditLogDto.LogDetail.class,
|
||||||
Expressions.constant("한국자산관리공사"), // serviceName
|
Expressions.constant(english ? "Kamco" : "한국자산관리공사"), // serviceName
|
||||||
parentMenuName.as("parentMenuName"),
|
parentMenuName.as("parentMenuName"),
|
||||||
menuName,
|
menuName,
|
||||||
menuEntity.menuUrl.as("menuUrl"),
|
menuEntity.menuUrl.as("menuUrl"),
|
||||||
@@ -442,7 +459,7 @@ public class AuditLogRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
if (StringUtils.isBlank(searchValue)) {
|
if (StringUtils.isBlank(searchValue)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return menuEntity.menuNm.contains(searchValue);
|
return menuEntity.menuNm.contains(searchValue).or(menuEntity.menuNmEn.contains(searchValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
private BooleanExpression loginIdOrUsernameContains(String searchValue) {
|
private BooleanExpression loginIdOrUsernameContains(String searchValue) {
|
||||||
|
|||||||
@@ -256,8 +256,9 @@ public class MapSheetInferenceJobService {
|
|||||||
String batchIdStr = batchIds.stream().map(String::valueOf).collect(Collectors.joining(","));
|
String batchIdStr = batchIds.stream().map(String::valueOf).collect(Collectors.joining(","));
|
||||||
|
|
||||||
// 0312 shp 파일 비동기 생성 (바꿔주세요)
|
// 0312 shp 파일 비동기 생성 (바꿔주세요)
|
||||||
shpPipelineService.makeShapeFile(sheet.getUid(), batchIds);
|
// shpPipelineService.makeShapeFile(sheet.getUid(), batchIds);
|
||||||
// shpPipelineService.runPipeline(jarPath, datasetDir, batchIdStr, sheet.getUid());
|
// 0511 shp-exporter-v2.jar 에 에러가 있어 우선 기존 로직으로 변경함
|
||||||
|
shpPipelineService.runPipeline(jarPath, datasetDir, batchIdStr, sheet.getUid());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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.responses.ApiResponses;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.web.ErrorResponse;
|
import org.springframework.web.ErrorResponse;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@@ -24,6 +26,12 @@ public class TestShapeApiController {
|
|||||||
|
|
||||||
private final ShpPipelineService shpPipelineService;
|
private final ShpPipelineService shpPipelineService;
|
||||||
|
|
||||||
|
@Value("${inference.jar-path}")
|
||||||
|
private String jarPath;
|
||||||
|
|
||||||
|
@Value("${file.dataset-dir}")
|
||||||
|
private String datasetDir;
|
||||||
|
|
||||||
@Operation(
|
@Operation(
|
||||||
summary = "shapefile 생성 테스트",
|
summary = "shapefile 생성 테스트",
|
||||||
description = "지정된 inference ID와 batch ID 목록으로 shapefile을 생성합니다.")
|
description = "지정된 inference ID와 batch ID 목록으로 shapefile을 생성합니다.")
|
||||||
@@ -47,4 +55,29 @@ public class TestShapeApiController {
|
|||||||
shpPipelineService.makeShapeFile(inferenceId, batchIds);
|
shpPipelineService.makeShapeFile(inferenceId, batchIds);
|
||||||
return ApiResponseDto.ok("Shapefile 생성이 시작되었습니다. inferenceId: " + inferenceId);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ spring:
|
|||||||
|
|
||||||
data:
|
data:
|
||||||
redis:
|
redis:
|
||||||
host: 192.168.2.109
|
host: 192.168.2.126
|
||||||
port: 6379
|
port: 6379
|
||||||
password: kamco
|
password: kamco
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ spring:
|
|||||||
|
|
||||||
data:
|
data:
|
||||||
redis:
|
redis:
|
||||||
host: 192.168.2.109
|
host: 192.168.2.126
|
||||||
port: 6379
|
port: 6379
|
||||||
password: kamco
|
password: kamco
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user