Merge remote-tracking branch 'origin/feat/dev_251201' into feat/dev_251201

# Conflicts:
#	src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java
This commit is contained in:
Moon
2025-12-23 13:05:24 +09:00
11 changed files with 133 additions and 69 deletions

View File

@@ -1,7 +1,10 @@
package com.kamco.cd.kamcoback.postgres.core;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
import com.kamco.cd.kamcoback.model.dto.ModelMngDto;
import com.kamco.cd.kamcoback.postgres.entity.ModelMngEntity;
import com.kamco.cd.kamcoback.postgres.repository.model.ModelMngRepository;
import jakarta.persistence.EntityNotFoundException;
import java.time.LocalDate;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
@@ -22,4 +25,15 @@ public class ModelMngCoreService {
return modelMngRepository.findModelMgmtList(
searchReq, startDate, endDate, modelType, searchVal);
}
public ApiResponseDto.ResponseObj removeModel(String modelVer) {
ModelMngEntity entity =
modelMngRepository
.findByModelUid(modelVer)
.orElseThrow(() -> new EntityNotFoundException("model을 찾을 수 없습니다. ver: " + modelVer));
// id 코드 deleted = true 업데이트
entity.deleted();
return new ApiResponseDto.ResponseObj(ApiResponseDto.ApiResponseCode.OK, "");
}
}

View File

@@ -4,7 +4,6 @@ import com.kamco.cd.kamcoback.log.dto.ErrorLogDto;
import com.kamco.cd.kamcoback.log.dto.EventType;
import com.kamco.cd.kamcoback.postgres.CommonCreateEntity;
import jakarta.persistence.*;
import jakarta.validation.constraints.Size;
import java.time.ZonedDateTime;
import lombok.AccessLevel;
import lombok.Getter;
@@ -33,8 +32,7 @@ public class ErrorLogEntity extends CommonCreateEntity {
private String errorCode;
private String errorMessage;
@Size(max = 255)
@Column(name = "stack_trace")
@Column(name = "stack_trace", columnDefinition = "TEXT")
private String stackTrace;
private Long handlerUid;

View File

@@ -19,15 +19,6 @@ public class ModelMngEntity extends CommonDateEntity {
@Column(name = "model_ver")
private String modelVer;
@Column(name = "hyper_ver")
private String hyperVer;
@Column(name = "epoch_ver")
private String epochVer;
@Column(name = "docker_file_nm")
private String dockerFileNm;
@Column(name = "create_complete_dttm")
private ZonedDateTime createCompleteDttm;
@@ -42,4 +33,17 @@ public class ModelMngEntity extends CommonDateEntity {
@Column(name = "updated_uid")
private Long updatedUid;
@Column(name = "model_type")
private String modelType;
@Column(name = "file_path")
private String filePath;
@Column(name = "file_name")
private String fileName;
public void deleted() {
this.deleted = true;
}
}

View File

@@ -6,9 +6,7 @@ import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetMngEntity.mapSheet
import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetMngFileEntity.mapSheetMngFileEntity;
import static com.kamco.cd.kamcoback.postgres.entity.QMapSheetMngHstEntity.mapSheetMngHstEntity;
import static com.kamco.cd.kamcoback.postgres.entity.QYearEntity.yearEntity;
import static java.lang.String.CASE_INSENSITIVE_ORDER;
import com.kamco.cd.kamcoback.common.utils.FIleChecker.Folder;
import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngHstEntity;
import com.querydsl.core.BooleanBuilder;
@@ -22,9 +20,7 @@ import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.validation.Valid;
import java.time.LocalDate;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
@@ -178,29 +174,28 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport
public List<Integer> findMapSheetMngYyyyList() {
List<Integer> foundContent =
queryFactory
.select(yearEntity.yyyy)
.from(yearEntity)
.leftJoin(mapSheetMngEntity).on(mapSheetMngEntity.mngYyyy.eq(yearEntity.yyyy))
.where(yearEntity.status.eq("NOTYET"))
.orderBy(yearEntity.yyyy.asc())
.limit(10)
.fetch();
queryFactory
.select(yearEntity.yyyy)
.from(yearEntity)
.leftJoin(mapSheetMngEntity)
.on(mapSheetMngEntity.mngYyyy.eq(yearEntity.yyyy))
.where(yearEntity.status.eq("NOTYET"))
.orderBy(yearEntity.yyyy.asc())
.limit(10)
.fetch();
foundContent.sort(Comparator.reverseOrder());
return foundContent;
}
public void updateYearState(int yyyy, String status){
public void updateYearState(int yyyy, String status) {
long execCount =
queryFactory
.update(yearEntity)
.set(yearEntity.status, status)
.where(yearEntity.yyyy.eq(yyyy))
.execute();
queryFactory
.update(yearEntity)
.set(yearEntity.status, status)
.where(yearEntity.yyyy.eq(yyyy))
.execute();
}
public MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy) {

View File

@@ -1,7 +1,9 @@
package com.kamco.cd.kamcoback.postgres.repository.model;
import com.kamco.cd.kamcoback.model.dto.ModelMngDto;
import com.kamco.cd.kamcoback.postgres.entity.ModelMngEntity;
import java.time.LocalDate;
import java.util.Optional;
import org.springframework.data.domain.Page;
public interface ModelMngRepositoryCustom {
@@ -12,4 +14,6 @@ public interface ModelMngRepositoryCustom {
LocalDate endDate,
String modelType,
String searchVal);
Optional<ModelMngEntity> findByModelUid(String modelVer);
}

View File

@@ -9,10 +9,7 @@ import com.kamco.cd.kamcoback.postgres.entity.ModelMngEntity;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Expression;
import com.querydsl.core.types.Projections;
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.core.types.dsl.Expressions;
import com.querydsl.core.types.dsl.NumberPath;
import com.querydsl.core.types.dsl.StringExpression;
import com.querydsl.core.types.dsl.*;
import com.querydsl.jpa.impl.JPAQueryFactory;
import java.math.BigDecimal;
import java.time.LocalDate;
@@ -21,6 +18,7 @@ import java.time.ZoneId;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
@@ -68,16 +66,9 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
ModelMngDto.ModelList.class,
Expressions.numberTemplate(
Integer.class, "row_number() over(order by {0} desc)", sortColumn),
Expressions.stringTemplate(
"concat({0}, {1}, {2}, {3}, {4})",
modelMngEntity.modelVer,
".",
modelMngEntity.hyperVer,
".",
modelMngEntity.epochVer)
.as("modelVer"),
modelMngEntity.dockerFileNm,
modelMngEntity.modelVer.as("modelType"),
modelMngEntity.modelVer,
modelMngEntity.fileName,
modelMngEntity.modelType,
Expressions.stringTemplate(
"to_char({0}, 'YYYY-MM-DD')", modelMngEntity.createCompleteDttm),
Expressions.stringTemplate(
@@ -93,7 +84,8 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
.on(modelMngEntity.modelUid.eq(modelResultMetricEntity.modelUid))
.where(
eventEndedAtBetween(startDate, endDate, property),
searchModelVersion(modelType, searchVal))
searchModelVersion(modelType, searchVal),
modelMngEntity.deleted.isFalse().or(modelMngEntity.deleted.isNull()))
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.orderBy(
@@ -113,6 +105,15 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
return new PageImpl<>(foundContent, pageable, countQuery);
}
@Override
public Optional<ModelMngEntity> findByModelUid(String modelVer) {
return Optional.ofNullable(
queryFactory
.selectFrom(modelMngEntity)
.where(modelMngEntity.modelVer.eq(modelVer))
.fetchOne());
}
private BooleanExpression eventEndedAtBetween(
LocalDate startDate, LocalDate endDate, String sortColumn) {
if (Objects.isNull(startDate) || Objects.isNull(endDate)) {
@@ -139,11 +140,11 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
BooleanBuilder builder = new BooleanBuilder();
if (Objects.nonNull(modelType)) {
builder.and(modelMngEntity.modelVer.eq(modelType));
builder.and(modelMngEntity.modelType.eq(modelType));
}
if (Objects.nonNull(searchVal)) {
builder.and(modelMngEntity.dockerFileNm.likeIgnoreCase("%" + searchVal + "%"));
builder.and(modelMngEntity.modelVer.likeIgnoreCase("%" + searchVal + "%"));
}
return builder;