Merge pull request 'feat/infer_dev_260107' (#252) from feat/infer_dev_260107 into develop
Reviewed-on: https://kamco.gitea.gs.dabeeo.com/dabeeo/kamco-dabeeo-backoffice/pulls/252
This commit is contained in:
@@ -323,9 +323,9 @@ public class InferenceResultApiController {
|
|||||||
})
|
})
|
||||||
@GetMapping("/infer-result-info")
|
@GetMapping("/infer-result-info")
|
||||||
public ApiResponseDto<InferenceDetailDto.AnalResultInfo> getInferenceResultInfo(
|
public ApiResponseDto<InferenceDetailDto.AnalResultInfo> getInferenceResultInfo(
|
||||||
@Parameter(description = "회차 uuid", example = "932fbd72-2e8e-4a49-b189-09046787f9d1")
|
@Parameter(description = "회차 uuid", example = "f30e8817-9625-4fff-ba43-c1e6ed2067c4")
|
||||||
@RequestParam
|
@RequestParam
|
||||||
String uuid) {
|
UUID uuid) {
|
||||||
return ApiResponseDto.ok(inferenceResultService.getInferenceResultInfo(uuid));
|
return ApiResponseDto.ok(inferenceResultService.getInferenceResultInfo(uuid));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -344,9 +344,9 @@ public class InferenceResultApiController {
|
|||||||
})
|
})
|
||||||
@GetMapping("/infer-class-count")
|
@GetMapping("/infer-class-count")
|
||||||
public ApiResponseDto<List<InferenceDetailDto.Dashboard>> getInferenceClassCountList(
|
public ApiResponseDto<List<InferenceDetailDto.Dashboard>> getInferenceClassCountList(
|
||||||
@Parameter(description = "회차 uuid", example = "8584e8d4-53b3-4582-bde2-28a81495a626")
|
@Parameter(description = "회차 uuid", example = "242750c5-a627-429b-950a-dce5a87c1c01")
|
||||||
@RequestParam
|
@RequestParam
|
||||||
String uuid) {
|
UUID uuid) {
|
||||||
return ApiResponseDto.ok(inferenceResultService.getInferenceClassCountList(uuid));
|
return ApiResponseDto.ok(inferenceResultService.getInferenceClassCountList(uuid));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -365,7 +365,7 @@ public class InferenceResultApiController {
|
|||||||
})
|
})
|
||||||
@GetMapping("/geom-list")
|
@GetMapping("/geom-list")
|
||||||
public ApiResponseDto<Page<InferenceDetailDto.Geom>> getInferenceGeomList(
|
public ApiResponseDto<Page<InferenceDetailDto.Geom>> getInferenceGeomList(
|
||||||
@Parameter(description = "회차 uuid", example = "8584e8d4-53b3-4582-bde2-28a81495a626")
|
@Parameter(description = "회차 uuid", example = "242750c5-a627-429b-950a-dce5a87c1c01")
|
||||||
@RequestParam(required = true)
|
@RequestParam(required = true)
|
||||||
UUID uuid,
|
UUID uuid,
|
||||||
@Parameter(description = "기준년도 분류", example = "land") @RequestParam(required = false)
|
@Parameter(description = "기준년도 분류", example = "land") @RequestParam(required = false)
|
||||||
|
|||||||
@@ -472,14 +472,16 @@ public class InferenceDetailDto {
|
|||||||
? Duration.between(inferStartDttm, inferEndDttm)
|
? Duration.between(inferStartDttm, inferEndDttm)
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
long seconds = elapsed.getSeconds();
|
if (elapsed != null) {
|
||||||
long abs = Math.abs(seconds);
|
long seconds = elapsed.getSeconds();
|
||||||
|
long abs = Math.abs(seconds);
|
||||||
|
|
||||||
long h = abs / 3600;
|
long h = abs / 3600;
|
||||||
long m = (abs % 3600) / 60;
|
long m = (abs % 3600) / 60;
|
||||||
long s = abs % 60;
|
long s = abs % 60;
|
||||||
|
|
||||||
this.elapsedDuration = String.format("%02d:%02d:%02d", h, m, s);
|
this.elapsedDuration = String.format("%02d:%02d:%02d", h, m, s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ public class InferenceResultService {
|
|||||||
private final ModelMngCoreService modelMngCoreService;
|
private final ModelMngCoreService modelMngCoreService;
|
||||||
private final ExternalHttpClient externalHttpClient;
|
private final ExternalHttpClient externalHttpClient;
|
||||||
private final ObjectMapper objectMapper;
|
private final ObjectMapper objectMapper;
|
||||||
|
private final UserUtil userUtil;
|
||||||
|
|
||||||
@Value("${inference.url}")
|
@Value("${inference.url}")
|
||||||
private String inferenceUrl;
|
private String inferenceUrl;
|
||||||
@@ -72,8 +73,6 @@ public class InferenceResultService {
|
|||||||
@Value("${spring.profiles.active}")
|
@Value("${spring.profiles.active}")
|
||||||
private String profile;
|
private String profile;
|
||||||
|
|
||||||
private final UserUtil userUtil;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 추론관리 목록
|
* 추론관리 목록
|
||||||
*
|
*
|
||||||
@@ -494,11 +493,11 @@ public class InferenceResultService {
|
|||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AnalResultInfo getInferenceResultInfo(String uuid) {
|
public AnalResultInfo getInferenceResultInfo(UUID uuid) {
|
||||||
return inferenceResultCoreService.getInferenceResultInfo(uuid);
|
return inferenceResultCoreService.getInferenceResultInfo(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Dashboard> getInferenceClassCountList(String uuid) {
|
public List<Dashboard> getInferenceClassCountList(UUID uuid) {
|
||||||
return inferenceResultCoreService.getInferenceClassCountList(uuid);
|
return inferenceResultCoreService.getInferenceClassCountList(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -256,36 +256,18 @@ public class LabelAllocateApiController {
|
|||||||
mediaType = "application/json",
|
mediaType = "application/json",
|
||||||
schema = @Schema(implementation = UpdateClosedRequest.class),
|
schema = @Schema(implementation = UpdateClosedRequest.class),
|
||||||
examples = {
|
examples = {
|
||||||
@io.swagger.v3.oas.annotations.media.ExampleObject(
|
|
||||||
name = "라벨링 종료",
|
|
||||||
value =
|
|
||||||
"""
|
|
||||||
{"closedType": "LABELING", "closedYn": "Y"}
|
|
||||||
"""),
|
|
||||||
@io.swagger.v3.oas.annotations.media.ExampleObject(
|
|
||||||
name = "검수 종료",
|
|
||||||
value =
|
|
||||||
"""
|
|
||||||
{"closedType": "INSPECTION", "closedYn": "Y"}
|
|
||||||
"""),
|
|
||||||
@io.swagger.v3.oas.annotations.media.ExampleObject(
|
|
||||||
name = "라벨링 재개",
|
|
||||||
value =
|
|
||||||
"""
|
|
||||||
{"closedType": "LABELING", "closedYn": "N"}
|
|
||||||
"""),
|
|
||||||
@io.swagger.v3.oas.annotations.media.ExampleObject(
|
|
||||||
name = "검수 재개",
|
|
||||||
value =
|
|
||||||
"""
|
|
||||||
{"closedType": "INSPECTION", "closedYn": "N"}
|
|
||||||
"""),
|
|
||||||
@io.swagger.v3.oas.annotations.media.ExampleObject(
|
@io.swagger.v3.oas.annotations.media.ExampleObject(
|
||||||
name = "특정 프로젝트 라벨링 전체 종료",
|
name = "특정 프로젝트 라벨링 전체 종료",
|
||||||
value =
|
value =
|
||||||
"""
|
"""
|
||||||
|
{"uuid": "f97dc186-e6d3-4645-9737-3173dde8dc64", "closedType": "LABELING", "closedYn": "Y"}
|
||||||
|
"""),
|
||||||
|
@io.swagger.v3.oas.annotations.media.ExampleObject(
|
||||||
|
name = "특정 프로젝트 검수 전체 종료",
|
||||||
|
value =
|
||||||
|
"""
|
||||||
{"uuid": "f97dc186-e6d3-4645-9737-3173dde8dc64", "closedType": "INSPECTION", "closedYn": "Y"}
|
{"uuid": "f97dc186-e6d3-4645-9737-3173dde8dc64", "closedType": "INSPECTION", "closedYn": "Y"}
|
||||||
""")
|
""")
|
||||||
}))
|
}))
|
||||||
@RequestBody
|
@RequestBody
|
||||||
@Valid
|
@Valid
|
||||||
|
|||||||
@@ -403,11 +403,11 @@ public class InferenceResultCoreService {
|
|||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AnalResultInfo getInferenceResultInfo(String uuid) {
|
public AnalResultInfo getInferenceResultInfo(UUID uuid) {
|
||||||
return mapSheetLearnRepository.getInferenceResultInfo(uuid);
|
return mapSheetLearnRepository.getInferenceResultInfo(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Dashboard> getInferenceClassCountList(String uuid) {
|
public List<Dashboard> getInferenceClassCountList(UUID uuid) {
|
||||||
return mapSheetLearnRepository.getInferenceClassCountList(uuid);
|
return mapSheetLearnRepository.getInferenceClassCountList(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,38 +37,38 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC
|
|||||||
public Long upsertGroupsFromMapSheetAnal(Long id) {
|
public Long upsertGroupsFromMapSheetAnal(Long id) {
|
||||||
String sql =
|
String sql =
|
||||||
"""
|
"""
|
||||||
INSERT INTO tb_map_sheet_anal_inference (
|
INSERT INTO tb_map_sheet_anal_inference (
|
||||||
stage,
|
stage,
|
||||||
compare_yyyy,
|
compare_yyyy,
|
||||||
target_yyyy,
|
target_yyyy,
|
||||||
anal_title,
|
anal_title,
|
||||||
detecting_cnt,
|
detecting_cnt,
|
||||||
created_dttm,
|
created_dttm,
|
||||||
m1_model_batch_id,
|
m1_model_batch_id,
|
||||||
m2_model_batch_id,
|
m2_model_batch_id,
|
||||||
m3_model_batch_id,
|
m3_model_batch_id,
|
||||||
learn_id
|
learn_id
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
r.stage,
|
r.stage,
|
||||||
r.compare_yyyy,
|
r.compare_yyyy,
|
||||||
r.target_yyyy,
|
r.target_yyyy,
|
||||||
CONCAT(r.stage, '_', r.compare_yyyy, '_', r.target_yyyy) AS anal_title,
|
r.title,
|
||||||
r.detecting_cnt,
|
r.detecting_cnt,
|
||||||
now(),
|
now(),
|
||||||
r.m1_model_batch_id,
|
r.m1_model_batch_id,
|
||||||
r.m2_model_batch_id,
|
r.m2_model_batch_id,
|
||||||
r.m3_model_batch_id,
|
r.m3_model_batch_id,
|
||||||
r.id
|
r.id
|
||||||
FROM tb_map_sheet_learn r
|
FROM tb_map_sheet_learn r
|
||||||
WHERE r.id = :id
|
WHERE r.id = :id
|
||||||
ON CONFLICT (stage, compare_yyyy, target_yyyy)
|
ON CONFLICT (stage, compare_yyyy, target_yyyy)
|
||||||
DO UPDATE SET
|
DO UPDATE SET
|
||||||
detecting_cnt = EXCLUDED.detecting_cnt,
|
detecting_cnt = EXCLUDED.detecting_cnt,
|
||||||
anal_title = EXCLUDED.anal_title,
|
anal_title = EXCLUDED.anal_title,
|
||||||
updated_dttm = now(),
|
updated_dttm = now(),
|
||||||
learn_id = EXCLUDED.learn_id
|
learn_id = EXCLUDED.learn_id
|
||||||
RETURNING anal_uid
|
RETURNING anal_uid
|
||||||
""";
|
""";
|
||||||
|
|
||||||
Object result = em.createNativeQuery(sql).setParameter("id", id).getSingleResult();
|
Object result = em.createNativeQuery(sql).setParameter("id", id).getSingleResult();
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ public interface MapSheetLearnRepositoryCustom {
|
|||||||
|
|
||||||
Integer getLearnStage(Integer compareYear, Integer targetYear);
|
Integer getLearnStage(Integer compareYear, Integer targetYear);
|
||||||
|
|
||||||
AnalResultInfo getInferenceResultInfo(String uuid);
|
AnalResultInfo getInferenceResultInfo(UUID uuid);
|
||||||
|
|
||||||
List<Dashboard> getInferenceClassCountList(String uuid);
|
List<Dashboard> getInferenceClassCountList(UUID uuid);
|
||||||
|
|
||||||
Page<Geom> getInferenceGeomList(UUID uuid, SearchGeoReq searchGeoReq);
|
Page<Geom> getInferenceGeomList(UUID uuid, SearchGeoReq searchGeoReq);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto;
|
|||||||
import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceServerStatusDto;
|
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.InferenceStatusDetailDto;
|
||||||
import com.kamco.cd.kamcoback.model.service.ModelMngService;
|
import com.kamco.cd.kamcoback.model.service.ModelMngService;
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalInferenceEntity;
|
|
||||||
import com.kamco.cd.kamcoback.postgres.entity.MapSheetLearnEntity;
|
import com.kamco.cd.kamcoback.postgres.entity.MapSheetLearnEntity;
|
||||||
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;
|
||||||
@@ -28,7 +27,6 @@ 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.jpa.impl.JPAQueryFactory;
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||||
import jakarta.persistence.EntityNotFoundException;
|
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -292,7 +290,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AnalResultInfo getInferenceResultInfo(String uuid) {
|
public AnalResultInfo getInferenceResultInfo(UUID uuid) {
|
||||||
QModelMngEntity m1 = new QModelMngEntity("m1");
|
QModelMngEntity m1 = new QModelMngEntity("m1");
|
||||||
QModelMngEntity m2 = new QModelMngEntity("m2");
|
QModelMngEntity m2 = new QModelMngEntity("m2");
|
||||||
QModelMngEntity m3 = new QModelMngEntity("m3");
|
QModelMngEntity m3 = new QModelMngEntity("m3");
|
||||||
@@ -319,22 +317,22 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
.on(mapSheetLearnEntity.m2ModelUuid.eq(m2.uuid))
|
.on(mapSheetLearnEntity.m2ModelUuid.eq(m2.uuid))
|
||||||
.leftJoin(m3)
|
.leftJoin(m3)
|
||||||
.on(mapSheetLearnEntity.m3ModelUuid.eq(m3.uuid))
|
.on(mapSheetLearnEntity.m3ModelUuid.eq(m3.uuid))
|
||||||
.where(mapSheetLearnEntity.uuid.eq(UUID.fromString(uuid)))
|
.where(mapSheetLearnEntity.uuid.eq(uuid))
|
||||||
.fetchOne();
|
.fetchOne();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Dashboard> getInferenceClassCountList(String uuid) {
|
public List<Dashboard> getInferenceClassCountList(UUID uuid) {
|
||||||
|
|
||||||
// analUid로 분석 정보 조회
|
// analUid로 분석 정보 조회
|
||||||
MapSheetAnalInferenceEntity analEntity =
|
MapSheetLearnEntity learnEntity =
|
||||||
queryFactory
|
queryFactory
|
||||||
.selectFrom(mapSheetAnalInferenceEntity)
|
.selectFrom(mapSheetLearnEntity)
|
||||||
.where(mapSheetAnalInferenceEntity.uuid.eq(UUID.fromString(uuid)))
|
.where(mapSheetLearnEntity.uuid.eq(uuid))
|
||||||
.fetchOne();
|
.fetchOne();
|
||||||
|
|
||||||
if (Objects.isNull(analEntity)) {
|
if (Objects.isNull(learnEntity)) {
|
||||||
throw new EntityNotFoundException("MapSheetAnalInferenceEntity not found for analUid: ");
|
throw new CustomApiException("NOT_FOUND_DATA", HttpStatus.NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
return queryFactory
|
return queryFactory
|
||||||
@@ -343,8 +341,10 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
Dashboard.class,
|
Dashboard.class,
|
||||||
mapSheetAnalSttcEntity.id.classAfterCd,
|
mapSheetAnalSttcEntity.id.classAfterCd,
|
||||||
mapSheetAnalSttcEntity.classAfterCnt.sum()))
|
mapSheetAnalSttcEntity.classAfterCnt.sum()))
|
||||||
.from(mapSheetAnalSttcEntity)
|
.from(mapSheetAnalInferenceEntity)
|
||||||
.where(mapSheetAnalSttcEntity.id.analUid.eq(analEntity.getId()))
|
.innerJoin(mapSheetAnalSttcEntity)
|
||||||
|
.on(mapSheetAnalInferenceEntity.id.eq(mapSheetAnalSttcEntity.id.analUid))
|
||||||
|
.where(mapSheetAnalInferenceEntity.learnId.eq(learnEntity.getId()))
|
||||||
.groupBy(mapSheetAnalSttcEntity.id.classAfterCd)
|
.groupBy(mapSheetAnalSttcEntity.id.classAfterCd)
|
||||||
.orderBy(mapSheetAnalSttcEntity.id.classAfterCd.asc())
|
.orderBy(mapSheetAnalSttcEntity.id.classAfterCd.asc())
|
||||||
.fetch();
|
.fetch();
|
||||||
@@ -362,10 +362,10 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
BooleanBuilder builder = new BooleanBuilder();
|
BooleanBuilder builder = new BooleanBuilder();
|
||||||
|
|
||||||
// analUid로 분석 정보 조회
|
// analUid로 분석 정보 조회
|
||||||
MapSheetAnalInferenceEntity analEntity =
|
MapSheetLearnEntity analEntity =
|
||||||
queryFactory
|
queryFactory
|
||||||
.selectFrom(mapSheetAnalInferenceEntity)
|
.selectFrom(mapSheetLearnEntity)
|
||||||
.where(mapSheetAnalInferenceEntity.uuid.eq(uuid))
|
.where(mapSheetLearnEntity.uuid.eq(uuid))
|
||||||
.fetchOne();
|
.fetchOne();
|
||||||
|
|
||||||
if (Objects.isNull(analEntity)) {
|
if (Objects.isNull(analEntity)) {
|
||||||
@@ -373,7 +373,7 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 추론결과 id
|
// 추론결과 id
|
||||||
builder.and(mapSheetAnalInferenceEntity.id.eq(analEntity.getId()));
|
builder.and(mapSheetAnalInferenceEntity.learnId.eq(analEntity.getId()));
|
||||||
|
|
||||||
// 기준년도 분류
|
// 기준년도 분류
|
||||||
if (searchGeoReq.getTargetClass() != null && !searchGeoReq.getTargetClass().equals("")) {
|
if (searchGeoReq.getTargetClass() != null && !searchGeoReq.getTargetClass().equals("")) {
|
||||||
|
|||||||
Reference in New Issue
Block a user