학습데이터 업로드, unzip 로직 진행중
This commit is contained in:
@@ -6,13 +6,16 @@ import com.kamco.cd.training.common.enums.LearnDataType;
|
||||
import com.kamco.cd.training.common.exception.NotFoundException;
|
||||
import com.kamco.cd.training.common.service.BaseCoreService;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.DatasetMngRegDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.Basic;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.DatasetClass;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.DatasetObjRegDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.SearchReq;
|
||||
import com.kamco.cd.training.postgres.entity.DatasetEntity;
|
||||
import com.kamco.cd.training.postgres.entity.DatasetObjEntity;
|
||||
import com.kamco.cd.training.postgres.repository.dataset.DatasetObjRepository;
|
||||
import com.kamco.cd.training.postgres.repository.dataset.DatasetRepository;
|
||||
import jakarta.transaction.Transactional;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
@@ -208,4 +211,22 @@ public class DatasetCoreService
|
||||
public List<DatasetClass> findDatasetObjClassByUuid(UUID uuid, String type) {
|
||||
return datasetObjRepository.findDatasetObjClassByUuid(uuid, type);
|
||||
}
|
||||
|
||||
public Long getDatasetMaxStage(int compareYyyy, int targetYyyy) {
|
||||
return datasetRepository.getDatasetMaxStage(compareYyyy, targetYyyy);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Long insertDatasetMngData(DatasetMngRegDto mngRegDto) {
|
||||
return datasetRepository.insertDatasetMngData(mngRegDto);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void insertDatasetObj(DatasetObjRegDto objRegDto) {
|
||||
datasetObjRepository.insertDatasetObj(objRegDto);
|
||||
}
|
||||
|
||||
public String getFilePathByUUIDPathType(UUID uuid, String pathType) {
|
||||
return datasetObjRepository.getFilePathByUUIDPathType(uuid, pathType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.kamco.cd.training.postgres.core;
|
||||
|
||||
import com.kamco.cd.training.postgres.repository.upload.UploadSessionRepository;
|
||||
import com.kamco.cd.training.upload.dto.UploadDto;
|
||||
import java.util.UUID;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -39,8 +40,8 @@ public class UploadSessionCoreService {
|
||||
uploadSessionRepository.insertUploadSession(addReq);
|
||||
}
|
||||
|
||||
public UploadDto.uploadDto findByDatasetUid(Long datasetId, String uploadDivi) {
|
||||
return uploadSessionRepository.findByDatasetUid(datasetId, uploadDivi);
|
||||
public UploadDto.uploadDto findByDatasetUid(String uploadDivi, UUID uuid) {
|
||||
return uploadSessionRepository.findByDatasetUid(uploadDivi, uuid);
|
||||
}
|
||||
|
||||
public UploadDto.uploadDto findByUuid(String uuid) {
|
||||
|
||||
@@ -16,6 +16,8 @@ import java.util.UUID;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.hibernate.annotations.ColumnDefault;
|
||||
import org.hibernate.annotations.JdbcTypeCode;
|
||||
import org.hibernate.type.SqlTypes;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@@ -93,6 +95,10 @@ public class DatasetObjEntity {
|
||||
@Column(precision = 5, scale = 2)
|
||||
private BigDecimal afClsPro;
|
||||
|
||||
@JdbcTypeCode(SqlTypes.JSON)
|
||||
@Column(name = "geo_jsonb", columnDefinition = "jsonb")
|
||||
private String geoJsonb;
|
||||
|
||||
public Basic toDto() {
|
||||
return new DatasetObjDto.Basic(
|
||||
this.objId,
|
||||
@@ -109,6 +115,7 @@ public class DatasetObjEntity {
|
||||
this.createdDttm,
|
||||
this.createdUid,
|
||||
this.deleted,
|
||||
this.uuid);
|
||||
this.uuid,
|
||||
this.geoJsonb);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.kamco.cd.training.postgres.repository.dataset;
|
||||
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.DatasetClass;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.DatasetObjRegDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.SearchReq;
|
||||
import com.kamco.cd.training.postgres.entity.DatasetObjEntity;
|
||||
import java.util.List;
|
||||
@@ -15,4 +16,8 @@ public interface DatasetObjRepositoryCustom {
|
||||
Page<DatasetObjEntity> searchDatasetObjectList(SearchReq searchReq);
|
||||
|
||||
List<DatasetClass> findDatasetObjClassByUuid(UUID uuid, String type);
|
||||
|
||||
void insertDatasetObj(DatasetObjRegDto objRegDto);
|
||||
|
||||
String getFilePathByUUIDPathType(UUID uuid, String pathType);
|
||||
}
|
||||
|
||||
@@ -3,16 +3,23 @@ package com.kamco.cd.training.postgres.repository.dataset;
|
||||
import static com.kamco.cd.training.postgres.entity.QDatasetEntity.datasetEntity;
|
||||
import static com.kamco.cd.training.postgres.entity.QDatasetObjEntity.datasetObjEntity;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.DatasetClass;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.DatasetObjRegDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetObjDto.SearchReq;
|
||||
import com.kamco.cd.training.postgres.entity.DatasetEntity;
|
||||
import com.kamco.cd.training.postgres.entity.DatasetObjEntity;
|
||||
import com.kamco.cd.training.postgres.entity.QDatasetEntity;
|
||||
import com.querydsl.core.BooleanBuilder;
|
||||
import com.querydsl.core.types.Expression;
|
||||
import com.querydsl.core.types.Projections;
|
||||
import com.querydsl.core.types.dsl.Expressions;
|
||||
import com.querydsl.core.types.dsl.StringPath;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import jakarta.persistence.PersistenceContext;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
@@ -31,6 +38,8 @@ public class DatasetObjRepositoryImpl implements DatasetObjRepositoryCustom {
|
||||
private final JPAQueryFactory queryFactory;
|
||||
private final QDatasetEntity dataset = datasetEntity;
|
||||
|
||||
@PersistenceContext EntityManager em;
|
||||
|
||||
@Override
|
||||
public Optional<DatasetObjEntity> findByUuid(UUID id) {
|
||||
return Optional.ofNullable(
|
||||
@@ -91,7 +100,12 @@ public class DatasetObjRepositoryImpl implements DatasetObjRepositoryCustom {
|
||||
queryFactory
|
||||
.select(datasetObjEntity.count())
|
||||
.from(datasetObjEntity)
|
||||
.where(datasetObjEntity.deleted.isFalse().and(builder))
|
||||
.where(
|
||||
datasetObjEntity
|
||||
.deleted
|
||||
.isFalse()
|
||||
.and(datasetObjEntity.datasetUid.eq(entity.getId()))
|
||||
.and(builder))
|
||||
.fetchOne())
|
||||
.orElse(0L);
|
||||
|
||||
@@ -118,4 +132,76 @@ public class DatasetObjRepositoryImpl implements DatasetObjRepositoryCustom {
|
||||
.groupBy(classCd)
|
||||
.fetch();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertDatasetObj(DatasetObjRegDto objRegDto) {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String json;
|
||||
try {
|
||||
json = objectMapper.writeValueAsString(objRegDto.getGeojson());
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
// queryFactory
|
||||
// .insert(datasetObjEntity)
|
||||
// .columns(
|
||||
// datasetObjEntity.datasetUid,
|
||||
// datasetObjEntity.targetYyyy,
|
||||
// datasetObjEntity.targetClassCd,
|
||||
// datasetObjEntity.compareYyyy,
|
||||
// datasetObjEntity.compareClassCd,
|
||||
// datasetObjEntity.targetPath,
|
||||
// datasetObjEntity.comparePath,
|
||||
// datasetObjEntity.labelPath,
|
||||
// datasetObjEntity.geoJsonb)
|
||||
// .values(
|
||||
// objRegDto.getDatasetUid(),
|
||||
// objRegDto.getTargetYyyy(),
|
||||
// objRegDto.getTargetClassCd(),
|
||||
// objRegDto.getCompareYyyy(),
|
||||
// objRegDto.getCompareClassCd(),
|
||||
// objRegDto.getTargetPath(),
|
||||
// objRegDto.getComparePath(),
|
||||
// objRegDto.getLabelPath(),
|
||||
// Expressions.stringTemplate("cast({0} as jsonb)", json))
|
||||
// .execute();
|
||||
|
||||
em.createNativeQuery(
|
||||
"""
|
||||
insert into tb_dataset_obj
|
||||
(dataset_uid, target_yyyy, target_class_cd,
|
||||
compare_yyyy, compare_class_cd,
|
||||
target_path, compare_path, label_path, geo_jsonb, map_sheet_num)
|
||||
values
|
||||
(?, ?, ?, ?, ?, ?, ?, ?, cast(? as jsonb), ?)
|
||||
""")
|
||||
.setParameter(1, objRegDto.getDatasetUid())
|
||||
.setParameter(2, objRegDto.getTargetYyyy())
|
||||
.setParameter(3, objRegDto.getTargetClassCd())
|
||||
.setParameter(4, objRegDto.getCompareYyyy())
|
||||
.setParameter(5, objRegDto.getCompareClassCd())
|
||||
.setParameter(6, objRegDto.getTargetPath())
|
||||
.setParameter(7, objRegDto.getComparePath())
|
||||
.setParameter(8, objRegDto.getLabelPath())
|
||||
.setParameter(9, json)
|
||||
.setParameter(10, objRegDto.getMapSheetNum())
|
||||
.executeUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFilePathByUUIDPathType(UUID uuid, String pathType) {
|
||||
Expression<String> pathExpr =
|
||||
switch (pathType) {
|
||||
case "compare" -> datasetObjEntity.comparePath;
|
||||
case "target" -> datasetObjEntity.targetPath;
|
||||
case "label" -> datasetObjEntity.labelPath;
|
||||
default -> Expressions.constant("");
|
||||
};
|
||||
|
||||
return queryFactory
|
||||
.select(pathExpr)
|
||||
.from(datasetObjEntity)
|
||||
.where(datasetObjEntity.uuid.eq(uuid))
|
||||
.fetchOne();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.kamco.cd.training.postgres.repository.dataset;
|
||||
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.DatasetMngRegDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.DatasetReq;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.SelectDataSet;
|
||||
import com.kamco.cd.training.postgres.entity.DatasetEntity;
|
||||
@@ -17,4 +18,8 @@ public interface DatasetRepositoryCustom {
|
||||
List<SelectDataSet> getDatasetSelectG1List(DatasetReq req);
|
||||
|
||||
List<SelectDataSet> getDatasetSelectG2G3List(DatasetReq req);
|
||||
|
||||
Long getDatasetMaxStage(int compareYyyy, int targetYyyy);
|
||||
|
||||
Long insertDatasetMngData(DatasetMngRegDto mngRegDto);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.kamco.cd.training.postgres.repository.dataset;
|
||||
import static com.kamco.cd.training.postgres.entity.QDatasetObjEntity.datasetObjEntity;
|
||||
|
||||
import com.kamco.cd.training.common.enums.ModelType;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.DatasetMngRegDto;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.DatasetReq;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.SearchReq;
|
||||
import com.kamco.cd.training.dataset.dto.DatasetDto.SelectDataSet;
|
||||
@@ -196,4 +197,48 @@ public class DatasetRepositoryImpl implements DatasetRepositoryCustom {
|
||||
.orderBy(dataset.createdDttm.desc())
|
||||
.fetch();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getDatasetMaxStage(int compareYyyy, int targetYyyy) {
|
||||
return queryFactory
|
||||
.select(dataset.roundNo.max().coalesce(0L))
|
||||
.from(dataset)
|
||||
.where(dataset.compareYyyy.eq(compareYyyy), dataset.targetYyyy.eq(targetYyyy))
|
||||
.fetchOne();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long insertDatasetMngData(DatasetMngRegDto mngRegDto) {
|
||||
queryFactory
|
||||
.insert(dataset)
|
||||
.columns(
|
||||
dataset.uid,
|
||||
dataset.dataType,
|
||||
dataset.compareYyyy,
|
||||
dataset.targetYyyy,
|
||||
dataset.roundNo,
|
||||
dataset.totalSize,
|
||||
dataset.title,
|
||||
dataset.memo,
|
||||
dataset.datasetPath)
|
||||
.values(
|
||||
mngRegDto.getUid(),
|
||||
mngRegDto.getDataType(),
|
||||
mngRegDto.getCompareYyyy(),
|
||||
mngRegDto.getTargetYyyy(),
|
||||
mngRegDto.getRoundNo(),
|
||||
mngRegDto.getTotalSize(),
|
||||
mngRegDto.getTitle(),
|
||||
mngRegDto.getMemo(),
|
||||
mngRegDto.getDatasetPath())
|
||||
.execute();
|
||||
|
||||
Long datasetUid =
|
||||
queryFactory
|
||||
.select(dataset.id)
|
||||
.from(dataset)
|
||||
.where(dataset.uid.eq(mngRegDto.getUid()))
|
||||
.fetchOne();
|
||||
return datasetUid;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
package com.kamco.cd.training.postgres.repository.upload;
|
||||
|
||||
import com.kamco.cd.training.upload.dto.UploadDto;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface UploadSessionRepositoryCustom {
|
||||
|
||||
void insertUploadSession(UploadDto.UploadAddReq addReq);
|
||||
|
||||
UploadDto.uploadDto findByDatasetUid(Long datasetId, String uploadDivi);
|
||||
UploadDto.uploadDto findByDatasetUid(String uploadDivi, UUID uuid);
|
||||
|
||||
UploadDto.uploadDto findByUuid(String uuid);
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ public class UploadSessionRepositoryImpl extends QuerydslRepositorySupport
|
||||
}
|
||||
|
||||
@Override
|
||||
public UploadDto.uploadDto findByDatasetUid(Long datasetId, String uploadDivi) {
|
||||
public UploadDto.uploadDto findByDatasetUid(String uploadDivi, UUID uuid) {
|
||||
|
||||
UploadDto.uploadDto foundContent =
|
||||
queryFactory
|
||||
@@ -83,9 +83,9 @@ public class UploadSessionRepositoryImpl extends QuerydslRepositorySupport
|
||||
.from(uploadSessionEntity)
|
||||
.where(
|
||||
uploadSessionEntity
|
||||
.datasetId
|
||||
.eq(datasetId)
|
||||
.and(uploadSessionEntity.uploadDivi.eq(uploadDivi)))
|
||||
.uploadDivi
|
||||
.eq(uploadDivi)
|
||||
.and(uploadSessionEntity.uuid.eq(uuid)))
|
||||
.limit(1)
|
||||
.fetchOne();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user