[KC-103] 추론 실행 배치 수정
This commit is contained in:
@@ -29,6 +29,7 @@ import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Consumer;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
@@ -101,7 +102,7 @@ public class InferenceResultCoreService {
|
||||
mapSheetLearnEntity.setMapSheetCnt(mapSheetName);
|
||||
mapSheetLearnEntity.setDetectingCnt((long) detectingCnt);
|
||||
mapSheetLearnEntity.setStage(
|
||||
mapSheetLearnRepository.getLearnStage(req.getCompareYyyy(), req.getTargetYyyy()));
|
||||
mapSheetLearnRepository.getLearnStage(req.getCompareYyyy(), req.getTargetYyyy()));
|
||||
|
||||
// learn 테이블 저장
|
||||
MapSheetLearnEntity savedLearn = mapSheetLearnRepository.save(mapSheetLearnEntity);
|
||||
@@ -163,9 +164,9 @@ public class InferenceResultCoreService {
|
||||
*/
|
||||
public InferenceDetailDto.AnalResSummary getInferenceResultSummary(Long id) {
|
||||
InferenceDetailDto.AnalResSummary summary =
|
||||
mapSheetAnalDataRepository
|
||||
.getInferenceResultSummary(id)
|
||||
.orElseThrow(() -> new EntityNotFoundException("요약정보를 찾을 수 없습니다. " + id));
|
||||
mapSheetAnalDataRepository
|
||||
.getInferenceResultSummary(id)
|
||||
.orElseThrow(() -> new EntityNotFoundException("요약정보를 찾을 수 없습니다. " + id));
|
||||
return summary;
|
||||
}
|
||||
|
||||
@@ -186,7 +187,7 @@ public class InferenceResultCoreService {
|
||||
* @return
|
||||
*/
|
||||
public Page<InferenceDetailDto.Geom> getInferenceResultGeomList(
|
||||
Long id, InferenceDetailDto.SearchGeoReq searchGeoReq) {
|
||||
Long id, InferenceDetailDto.SearchGeoReq searchGeoReq) {
|
||||
return mapSheetAnalDataRepository.getInferenceGeomList(id, searchGeoReq);
|
||||
}
|
||||
|
||||
@@ -198,16 +199,16 @@ public class InferenceResultCoreService {
|
||||
*/
|
||||
@Transactional(readOnly = true)
|
||||
public Page<InferenceDetailDto.DetailListEntity> listInferenceResultWithGeom(
|
||||
@NotNull Long analyId, InferenceDetailDto.SearchGeoReq searchReq) {
|
||||
@NotNull Long analyId, InferenceDetailDto.SearchGeoReq searchReq) {
|
||||
// 분석 ID 에 해당하는 dataids를 가져온다.
|
||||
List<Long> dataIds =
|
||||
mapSheetAnalDataRepository.listAnalyGeom(analyId).stream()
|
||||
.mapToLong(MapSheetAnalDataInferenceEntity::getId)
|
||||
.boxed()
|
||||
.toList();
|
||||
mapSheetAnalDataRepository.listAnalyGeom(analyId).stream()
|
||||
.mapToLong(MapSheetAnalDataInferenceEntity::getId)
|
||||
.boxed()
|
||||
.toList();
|
||||
// 해당데이터의 폴리곤데이터를 가져온다
|
||||
Page<MapSheetAnalDataInferenceGeomEntity> mapSheetAnalDataGeomEntities =
|
||||
mapSheetAnalDataRepository.listInferenceResultWithGeom(dataIds, searchReq);
|
||||
mapSheetAnalDataRepository.listInferenceResultWithGeom(dataIds, searchReq);
|
||||
return mapSheetAnalDataGeomEntities.map(MapSheetAnalDataInferenceGeomEntity::toEntity);
|
||||
}
|
||||
|
||||
@@ -224,108 +225,112 @@ public class InferenceResultCoreService {
|
||||
@Transactional(readOnly = true)
|
||||
public List<MapSheet> listGetScenes5k(Long analyId) {
|
||||
List<String> sceneCodes =
|
||||
mapSheetAnalDataRepository.listAnalyGeom(analyId).stream()
|
||||
.mapToLong(MapSheetAnalDataInferenceEntity::getMapSheetNum)
|
||||
.mapToObj(String::valueOf)
|
||||
.toList();
|
||||
mapSheetAnalDataRepository.listAnalyGeom(analyId).stream()
|
||||
.mapToLong(MapSheetAnalDataInferenceEntity::getMapSheetNum)
|
||||
.mapToObj(String::valueOf)
|
||||
.toList();
|
||||
|
||||
return mapInkx5kRepository.listGetScenes5k(sceneCodes).stream()
|
||||
.map(MapInkx5kEntity::toEntity)
|
||||
.toList();
|
||||
.map(MapInkx5kEntity::toEntity)
|
||||
.toList();
|
||||
}
|
||||
|
||||
/**
|
||||
* learn 테이블 update
|
||||
*
|
||||
* @param request 추론 실행 정보
|
||||
*/
|
||||
public void update(SaveInferenceAiDto request) {
|
||||
MapSheetLearnEntity entity =
|
||||
mapSheetLearnRepository
|
||||
.getInferenceResultByUuid(request.getUuid())
|
||||
.orElseThrow(() -> new EntityNotFoundException());
|
||||
mapSheetLearnRepository.getInferenceResultByUuid(request.getUuid())
|
||||
.orElseThrow(EntityNotFoundException::new);
|
||||
|
||||
// M1/M2/M3 영역 업데이트
|
||||
if (request.getType() != null) {
|
||||
switch (request.getType()) {
|
||||
case "M1" -> {
|
||||
if (request.getBatchId() != null) {
|
||||
entity.setM1ModelBatchId(request.getBatchId());
|
||||
}
|
||||
|
||||
if (request.getModelStartDttm() != null) {
|
||||
entity.setM1ModelStartDttm(request.getModelStartDttm());
|
||||
}
|
||||
|
||||
if (request.getModelEndDttm() != null) {
|
||||
entity.setM1ModelEndDttm(request.getModelEndDttm());
|
||||
}
|
||||
}
|
||||
case "M2" -> {
|
||||
if (request.getBatchId() != null) {
|
||||
entity.setM2ModelBatchId(request.getBatchId());
|
||||
}
|
||||
|
||||
if (request.getModelStartDttm() != null) {
|
||||
entity.setM2ModelStartDttm(request.getModelStartDttm());
|
||||
}
|
||||
|
||||
if (request.getModelEndDttm() != null) {
|
||||
entity.setM2ModelEndDttm(request.getModelEndDttm());
|
||||
}
|
||||
}
|
||||
case "M3" -> {
|
||||
if (request.getBatchId() != null) {
|
||||
entity.setM3ModelBatchId(request.getBatchId());
|
||||
}
|
||||
|
||||
if (request.getModelStartDttm() != null) {
|
||||
entity.setM3ModelStartDttm(request.getModelStartDttm());
|
||||
}
|
||||
|
||||
if (request.getModelEndDttm() != null) {
|
||||
entity.setM3ModelEndDttm(request.getModelEndDttm());
|
||||
}
|
||||
}
|
||||
}
|
||||
applyModelUpdate(entity, request);
|
||||
}
|
||||
|
||||
if (request.getRunningModelType() != null) {
|
||||
entity.setRunningModelType(request.getRunningModelType());
|
||||
}
|
||||
|
||||
if (request.getInferStartDttm() != null) {
|
||||
entity.setInferStartDttm(request.getInferStartDttm());
|
||||
}
|
||||
|
||||
if (request.getInferEndDttm() != null) {
|
||||
entity.setInferEndDttm(request.getInferEndDttm());
|
||||
}
|
||||
|
||||
if (request.getModelComparePath() != null) {
|
||||
entity.setModelComparePath(request.getModelComparePath());
|
||||
}
|
||||
|
||||
if (request.getModelTargetPath() != null) {
|
||||
entity.setModelTargetPath(request.getModelTargetPath());
|
||||
}
|
||||
|
||||
if (request.getDetectEndCnt() != null) {
|
||||
entity.setDetectEndCnt(request.getDetectEndCnt());
|
||||
}
|
||||
|
||||
if (request.getStatus() != null) {
|
||||
entity.setStatus(request.getStatus());
|
||||
}
|
||||
|
||||
if (request.getUpdateUid() != null) {
|
||||
entity.setUpdatedUid(request.getUpdateUid());
|
||||
}
|
||||
// 공통 영역 업데이트
|
||||
applyIfNotNull(request.getRunningModelType(), entity::setRunningModelType);
|
||||
applyIfNotNull(request.getInferStartDttm(), entity::setInferStartDttm);
|
||||
applyIfNotNull(request.getInferEndDttm(), entity::setInferEndDttm);
|
||||
applyIfNotNull(request.getModelComparePath(), entity::setModelComparePath);
|
||||
applyIfNotNull(request.getModelTargetPath(), entity::setModelTargetPath);
|
||||
applyIfNotNull(request.getDetectEndCnt(), entity::setDetectEndCnt);
|
||||
applyIfNotNull(request.getStatus(), entity::setStatus);
|
||||
applyIfNotNull(request.getUpdateUid(), entity::setUpdatedUid);
|
||||
|
||||
entity.setUpdatedDttm(ZonedDateTime.now());
|
||||
}
|
||||
|
||||
private void applyModelUpdate(MapSheetLearnEntity entity, SaveInferenceAiDto request) {
|
||||
switch (request.getType()) {
|
||||
case "M1" -> applyModelFields(
|
||||
request,
|
||||
entity::setM1ModelBatchId,
|
||||
entity::setM1ModelStartDttm,
|
||||
entity::setM1ModelEndDttm,
|
||||
entity::setM1PendingJobs,
|
||||
entity::setM1RunningJobs,
|
||||
entity::setM1CompletedJobs,
|
||||
entity::setM1FailedJobs
|
||||
);
|
||||
case "M2" -> applyModelFields(
|
||||
request,
|
||||
entity::setM2ModelBatchId,
|
||||
entity::setM2ModelStartDttm,
|
||||
entity::setM2ModelEndDttm,
|
||||
entity::setM2PendingJobs,
|
||||
entity::setM2RunningJobs,
|
||||
entity::setM2CompletedJobs,
|
||||
entity::setM2FailedJobs
|
||||
);
|
||||
case "M3" -> applyModelFields(
|
||||
request,
|
||||
entity::setM3ModelBatchId,
|
||||
entity::setM3ModelStartDttm,
|
||||
entity::setM3ModelEndDttm,
|
||||
entity::setM3PendingJobs,
|
||||
entity::setM3RunningJobs,
|
||||
entity::setM3CompletedJobs,
|
||||
entity::setM3FailedJobs
|
||||
);
|
||||
default -> throw new IllegalArgumentException("Unknown type: " + request.getType());
|
||||
}
|
||||
}
|
||||
|
||||
private void applyModelFields(
|
||||
SaveInferenceAiDto request,
|
||||
Consumer<Long> setBatchId,
|
||||
Consumer<ZonedDateTime> setStart,
|
||||
Consumer<ZonedDateTime> setEnd,
|
||||
Consumer<Integer> setPending,
|
||||
Consumer<Integer> setRunning,
|
||||
Consumer<Integer> setCompleted,
|
||||
Consumer<Integer> setFailed
|
||||
) {
|
||||
applyIfNotNull(request.getBatchId(), setBatchId);
|
||||
applyIfNotNull(request.getModelStartDttm(), setStart);
|
||||
applyIfNotNull(request.getModelEndDttm(), setEnd);
|
||||
applyIfNotNull(request.getPendingJobs(), setPending);
|
||||
applyIfNotNull(request.getRunningJobs(), setRunning);
|
||||
applyIfNotNull(request.getCompletedJobs(), setCompleted);
|
||||
applyIfNotNull(request.getFailedJobs(), setFailed);
|
||||
}
|
||||
|
||||
private <T> void applyIfNotNull(T value, Consumer<T> setter) {
|
||||
if (value != null) {
|
||||
setter.accept(value);
|
||||
}
|
||||
}
|
||||
|
||||
public List<InferenceServerStatusDto> getInferenceServerStatusList() {
|
||||
return mapSheetLearnRepository.getInferenceServerStatusList();
|
||||
}
|
||||
|
||||
public InferenceBatchSheet getInferenceResultByStatus(String status) {
|
||||
MapSheetLearnEntity entity =
|
||||
mapSheetLearnRepository.getInferenceResultByStatus(status).orElse(null);
|
||||
mapSheetLearnRepository.getInferenceResultByStatus(status).orElse(null);
|
||||
|
||||
if (entity == null) {
|
||||
return null;
|
||||
@@ -345,7 +350,14 @@ public class InferenceResultCoreService {
|
||||
return inferenceBatchSheet;
|
||||
}
|
||||
|
||||
public InferenceProgressDto getInferenceAiResultById(Long id, String type, UUID modelUuid) {
|
||||
/**
|
||||
* 추론 실행 api 파라미터 조회
|
||||
*
|
||||
* @param id
|
||||
* @param modelUuid
|
||||
* @return
|
||||
*/
|
||||
public InferenceProgressDto getInferenceAiResultById(Long id, UUID modelUuid) {
|
||||
return mapSheetLearnRepository.getInferenceAiResultById(id, modelUuid);
|
||||
}
|
||||
|
||||
@@ -364,7 +376,7 @@ public class InferenceResultCoreService {
|
||||
|
||||
/**
|
||||
* @param compareYear 비교년도
|
||||
* @param targetYear 기준년도
|
||||
* @param targetYear 기준년도
|
||||
* @return
|
||||
*/
|
||||
public Integer getLearnStage(Integer compareYear, Integer targetYear) {
|
||||
|
||||
@@ -34,7 +34,6 @@ import com.querydsl.core.types.dsl.CaseBuilder;
|
||||
import com.querydsl.core.types.dsl.Expressions;
|
||||
import com.querydsl.core.types.dsl.NumberExpression;
|
||||
import com.querydsl.core.types.dsl.StringExpression;
|
||||
import com.querydsl.jpa.JPAExpressions;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
|
||||
Reference in New Issue
Block a user