spotless
This commit is contained in:
@@ -32,42 +32,42 @@ public class ModelMngApiController {
|
|||||||
@Operation(summary = "모델관리 목록")
|
@Operation(summary = "모델관리 목록")
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public ApiResponseDto<Page<ModelMngDto.ModelList>> findModelMgmtList(
|
public ApiResponseDto<Page<ModelMngDto.ModelList>> findModelMgmtList(
|
||||||
@RequestParam(required = false) LocalDate startDate,
|
@RequestParam(required = false) LocalDate startDate,
|
||||||
@RequestParam(required = false) LocalDate endDate,
|
@RequestParam(required = false) LocalDate endDate,
|
||||||
@RequestParam(required = false, defaultValue = "createCompleteDttm") String sortColumn,
|
@RequestParam(required = false, defaultValue = "createCompleteDttm") String sortColumn,
|
||||||
@RequestParam(required = false) String modelType,
|
@RequestParam(required = false) String modelType,
|
||||||
@RequestParam(required = false) String searchVal,
|
@RequestParam(required = false) String searchVal,
|
||||||
@RequestParam(defaultValue = "0") int page,
|
@RequestParam(defaultValue = "0") int page,
|
||||||
@RequestParam(defaultValue = "20") int size) {
|
@RequestParam(defaultValue = "20") int size) {
|
||||||
ModelMngDto.searchReq searchReq = new ModelMngDto.searchReq(page, size, sortColumn + ",desc");
|
ModelMngDto.searchReq searchReq = new ModelMngDto.searchReq(page, size, sortColumn + ",desc");
|
||||||
|
|
||||||
Page<ModelMngDto.ModelList> result =
|
Page<ModelMngDto.ModelList> result =
|
||||||
modelMngService.findModelMgmtList(searchReq, startDate, endDate, modelType, searchVal);
|
modelMngService.findModelMgmtList(searchReq, startDate, endDate, modelType, searchVal);
|
||||||
|
|
||||||
return ApiResponseDto.ok(result);
|
return ApiResponseDto.ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "삭제", description = "모델을 삭제 합니다.")
|
@Operation(summary = "삭제", description = "모델을 삭제 합니다.")
|
||||||
@ApiResponses(
|
@ApiResponses(
|
||||||
value = {
|
value = {
|
||||||
@ApiResponse(
|
@ApiResponse(
|
||||||
responseCode = "204",
|
responseCode = "204",
|
||||||
description = "모델 삭제 성공",
|
description = "모델 삭제 성공",
|
||||||
content =
|
content =
|
||||||
@Content(
|
@Content(
|
||||||
mediaType = "application/json",
|
mediaType = "application/json",
|
||||||
schema = @Schema(implementation = Long.class))),
|
schema = @Schema(implementation = Long.class))),
|
||||||
@ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content),
|
@ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content),
|
||||||
@ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content),
|
@ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content),
|
||||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||||
})
|
})
|
||||||
@DeleteMapping("/{modelVer}")
|
@DeleteMapping("/{modelVer}")
|
||||||
public ApiResponseDto<ApiResponseDto.ResponseObj> removeModel(
|
public ApiResponseDto<ApiResponseDto.ResponseObj> removeModel(
|
||||||
@io.swagger.v3.oas.annotations.parameters.RequestBody(
|
@io.swagger.v3.oas.annotations.parameters.RequestBody(
|
||||||
description = "모델 삭제 요청 정보",
|
description = "모델 삭제 요청 정보",
|
||||||
required = true)
|
required = true)
|
||||||
@PathVariable
|
@PathVariable
|
||||||
String modelVer) {
|
String modelVer) {
|
||||||
return ApiResponseDto.okObject(modelMngService.removeModel(modelVer));
|
return ApiResponseDto.okObject(modelMngService.removeModel(modelVer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,17 +45,13 @@ public class ModelMngDto {
|
|||||||
private Long modelUid;
|
private Long modelUid;
|
||||||
private String modelVer;
|
private String modelVer;
|
||||||
|
|
||||||
@JsonFormatDttm
|
@JsonFormatDttm private ZonedDateTime createCompleteDttm;
|
||||||
private ZonedDateTime createCompleteDttm;
|
@JsonFormatDttm private ZonedDateTime recentUseDttm;
|
||||||
@JsonFormatDttm
|
|
||||||
private ZonedDateTime recentUseDttm;
|
|
||||||
private Boolean deleted;
|
private Boolean deleted;
|
||||||
@JsonFormatDttm
|
@JsonFormatDttm private ZonedDateTime createdDttm;
|
||||||
private ZonedDateTime createdDttm;
|
|
||||||
private Long createdUid;
|
private Long createdUid;
|
||||||
|
|
||||||
@JsonFormatDttm
|
@JsonFormatDttm private ZonedDateTime updatedDttm;
|
||||||
private ZonedDateTime updatedDttm;
|
|
||||||
private Long updatedUid;
|
private Long updatedUid;
|
||||||
|
|
||||||
private String modelType;
|
private String modelType;
|
||||||
@@ -64,20 +60,19 @@ public class ModelMngDto {
|
|||||||
private String memo;
|
private String memo;
|
||||||
|
|
||||||
public Basic(
|
public Basic(
|
||||||
Long modelUid,
|
Long modelUid,
|
||||||
String modelVer,
|
String modelVer,
|
||||||
ZonedDateTime createCompleteDttm,
|
ZonedDateTime createCompleteDttm,
|
||||||
ZonedDateTime recentUseDttm,
|
ZonedDateTime recentUseDttm,
|
||||||
Boolean deleted,
|
Boolean deleted,
|
||||||
ZonedDateTime createdDttm,
|
ZonedDateTime createdDttm,
|
||||||
Long createdUid,
|
Long createdUid,
|
||||||
ZonedDateTime updatedDttm,
|
ZonedDateTime updatedDttm,
|
||||||
Long updatedUid,
|
Long updatedUid,
|
||||||
String modelType,
|
String modelType,
|
||||||
String filePath,
|
String filePath,
|
||||||
String fileName,
|
String fileName,
|
||||||
String memo
|
String memo) {
|
||||||
) {
|
|
||||||
this.modelUid = modelUid;
|
this.modelUid = modelUid;
|
||||||
this.modelVer = modelVer;
|
this.modelVer = modelVer;
|
||||||
this.createCompleteDttm = createCompleteDttm;
|
this.createCompleteDttm = createCompleteDttm;
|
||||||
@@ -146,7 +141,7 @@ public class ModelMngDto {
|
|||||||
String[] sortParams = sort.split(",");
|
String[] sortParams = sort.split(",");
|
||||||
String property = sortParams[0];
|
String property = sortParams[0];
|
||||||
Sort.Direction direction =
|
Sort.Direction direction =
|
||||||
sortParams.length > 1 ? Sort.Direction.fromString(sortParams[1]) : Sort.Direction.ASC;
|
sortParams.length > 1 ? Sort.Direction.fromString(sortParams[1]) : Sort.Direction.ASC;
|
||||||
return PageRequest.of(page, size, Sort.by(direction, property));
|
return PageRequest.of(page, size, Sort.by(direction, property));
|
||||||
}
|
}
|
||||||
return PageRequest.of(page, size);
|
return PageRequest.of(page, size);
|
||||||
|
|||||||
@@ -15,17 +15,16 @@ public class ModelMngService {
|
|||||||
private final ModelMngCoreService modelMngCoreService;
|
private final ModelMngCoreService modelMngCoreService;
|
||||||
|
|
||||||
public Page<ModelMngDto.ModelList> findModelMgmtList(
|
public Page<ModelMngDto.ModelList> findModelMgmtList(
|
||||||
ModelMngDto.searchReq searchReq,
|
ModelMngDto.searchReq searchReq,
|
||||||
LocalDate startDate,
|
LocalDate startDate,
|
||||||
LocalDate endDate,
|
LocalDate endDate,
|
||||||
String modelType,
|
String modelType,
|
||||||
String searchVal) {
|
String searchVal) {
|
||||||
return modelMngCoreService.findModelMgmtList(
|
return modelMngCoreService.findModelMgmtList(
|
||||||
searchReq, startDate, endDate, modelType, searchVal);
|
searchReq, startDate, endDate, modelType, searchVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApiResponseDto.ResponseObj removeModel(String modelVer) {
|
public ApiResponseDto.ResponseObj removeModel(String modelVer) {
|
||||||
return modelMngCoreService.removeModel(modelVer);
|
return modelMngCoreService.removeModel(modelVer);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,12 +9,11 @@ import org.springframework.data.domain.Page;
|
|||||||
public interface ModelMngRepositoryCustom {
|
public interface ModelMngRepositoryCustom {
|
||||||
|
|
||||||
Page<ModelMngDto.ModelList> findModelMgmtList(
|
Page<ModelMngDto.ModelList> findModelMgmtList(
|
||||||
ModelMngDto.searchReq searchReq,
|
ModelMngDto.searchReq searchReq,
|
||||||
LocalDate startDate,
|
LocalDate startDate,
|
||||||
LocalDate endDate,
|
LocalDate endDate,
|
||||||
String modelType,
|
String modelType,
|
||||||
String searchVal);
|
String searchVal);
|
||||||
|
|
||||||
Optional<ModelMngEntity> findByModelUid(String modelVer);
|
Optional<ModelMngEntity> findByModelUid(String modelVer);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import org.springframework.data.domain.Sort;
|
|||||||
import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;
|
import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;
|
||||||
|
|
||||||
public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
|
public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
|
||||||
implements ModelMngRepositoryCustom {
|
implements ModelMngRepositoryCustom {
|
||||||
|
|
||||||
private final JPAQueryFactory queryFactory;
|
private final JPAQueryFactory queryFactory;
|
||||||
private final StringExpression NULL_STRING = Expressions.stringTemplate("cast(null as text)");
|
private final StringExpression NULL_STRING = Expressions.stringTemplate("cast(null as text)");
|
||||||
@@ -41,19 +41,19 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<ModelMngDto.ModelList> findModelMgmtList(
|
public Page<ModelMngDto.ModelList> findModelMgmtList(
|
||||||
ModelMngDto.searchReq searchReq,
|
ModelMngDto.searchReq searchReq,
|
||||||
LocalDate startDate,
|
LocalDate startDate,
|
||||||
LocalDate endDate,
|
LocalDate endDate,
|
||||||
String modelType,
|
String modelType,
|
||||||
String searchVal) {
|
String searchVal) {
|
||||||
Pageable pageable = searchReq.toPageable();
|
Pageable pageable = searchReq.toPageable();
|
||||||
Sort sort = pageable.getSort();
|
Sort sort = pageable.getSort();
|
||||||
String property = "createCompleteDttm"; // 기본으로 생성완료일 기준
|
String property = "createCompleteDttm"; // 기본으로 생성완료일 기준
|
||||||
|
|
||||||
Map<String, Expression<?>> sortColumnMap =
|
Map<String, Expression<?>> sortColumnMap =
|
||||||
Map.of(
|
Map.of(
|
||||||
"createCompleteDttm", modelMngEntity.createCompleteDttm,
|
"createCompleteDttm", modelMngEntity.createCompleteDttm,
|
||||||
"recentUseDttm", modelMngEntity.recentUseDttm);
|
"recentUseDttm", modelMngEntity.recentUseDttm);
|
||||||
|
|
||||||
if (sort.isSorted()) {
|
if (sort.isSorted()) {
|
||||||
Sort.Order order = sort.iterator().next();
|
Sort.Order order = sort.iterator().next();
|
||||||
@@ -63,46 +63,46 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
Expression<?> sortColumn = sortColumnMap.get(property);
|
Expression<?> sortColumn = sortColumnMap.get(property);
|
||||||
|
|
||||||
List<ModelMngDto.ModelList> foundContent =
|
List<ModelMngDto.ModelList> foundContent =
|
||||||
queryFactory
|
queryFactory
|
||||||
.select(
|
.select(
|
||||||
Projections.constructor(
|
Projections.constructor(
|
||||||
ModelMngDto.ModelList.class,
|
ModelMngDto.ModelList.class,
|
||||||
Expressions.numberTemplate(
|
Expressions.numberTemplate(
|
||||||
Integer.class, "row_number() over(order by {0} desc)", sortColumn),
|
Integer.class, "row_number() over(order by {0} desc)", sortColumn),
|
||||||
modelMngEntity.modelVer,
|
modelMngEntity.modelVer,
|
||||||
modelMngEntity.fileName,
|
modelMngEntity.fileName,
|
||||||
modelMngEntity.modelType,
|
modelMngEntity.modelType,
|
||||||
Expressions.stringTemplate(
|
Expressions.stringTemplate(
|
||||||
"to_char({0}, 'YYYY-MM-DD')", modelMngEntity.createCompleteDttm),
|
"to_char({0}, 'YYYY-MM-DD')", modelMngEntity.createCompleteDttm),
|
||||||
roundNumericToPercent(modelResultMetricEntity.f1Score),
|
roundNumericToPercent(modelResultMetricEntity.f1Score),
|
||||||
roundNumericToPercent(modelResultMetricEntity.precision),
|
roundNumericToPercent(modelResultMetricEntity.precision),
|
||||||
roundNumericToPercent(modelResultMetricEntity.recall),
|
roundNumericToPercent(modelResultMetricEntity.recall),
|
||||||
roundNumericToPercent(modelResultMetricEntity.loss),
|
roundNumericToPercent(modelResultMetricEntity.loss),
|
||||||
roundNumericToPercent(modelResultMetricEntity.iou),
|
roundNumericToPercent(modelResultMetricEntity.iou),
|
||||||
modelMngEntity.memo,
|
modelMngEntity.memo,
|
||||||
modelMngEntity.deleted))
|
modelMngEntity.deleted))
|
||||||
.from(modelMngEntity)
|
.from(modelMngEntity)
|
||||||
.innerJoin(modelResultMetricEntity)
|
.innerJoin(modelResultMetricEntity)
|
||||||
.on(modelMngEntity.modelUid.eq(modelResultMetricEntity.modelUid))
|
.on(modelMngEntity.modelUid.eq(modelResultMetricEntity.modelUid))
|
||||||
.where(
|
.where(
|
||||||
eventEndedAtBetween(startDate, endDate, property),
|
eventEndedAtBetween(startDate, endDate, property),
|
||||||
searchModelVersion(modelType, searchVal),
|
searchModelVersion(modelType, searchVal),
|
||||||
modelMngEntity.deleted.isFalse().or(modelMngEntity.deleted.isNull()))
|
modelMngEntity.deleted.isFalse().or(modelMngEntity.deleted.isNull()))
|
||||||
.offset(pageable.getOffset())
|
.offset(pageable.getOffset())
|
||||||
.limit(pageable.getPageSize())
|
.limit(pageable.getPageSize())
|
||||||
.orderBy(
|
.orderBy(
|
||||||
QuerydslOrderUtil.getOrderSpecifiers(
|
QuerydslOrderUtil.getOrderSpecifiers(
|
||||||
pageable, ModelMngEntity.class, "modelMngEntity"))
|
pageable, ModelMngEntity.class, "modelMngEntity"))
|
||||||
.fetch();
|
.fetch();
|
||||||
|
|
||||||
Long countQuery =
|
Long countQuery =
|
||||||
queryFactory
|
queryFactory
|
||||||
.select(modelMngEntity.modelUid.count())
|
.select(modelMngEntity.modelUid.count())
|
||||||
.from(modelMngEntity)
|
.from(modelMngEntity)
|
||||||
.where(
|
.where(
|
||||||
eventEndedAtBetween(startDate, endDate, property),
|
eventEndedAtBetween(startDate, endDate, property),
|
||||||
searchModelVersion(modelType, searchVal))
|
searchModelVersion(modelType, searchVal))
|
||||||
.fetchOne();
|
.fetchOne();
|
||||||
|
|
||||||
return new PageImpl<>(foundContent, pageable, countQuery);
|
return new PageImpl<>(foundContent, pageable, countQuery);
|
||||||
}
|
}
|
||||||
@@ -110,14 +110,14 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
@Override
|
@Override
|
||||||
public Optional<ModelMngEntity> findByModelUid(String modelVer) {
|
public Optional<ModelMngEntity> findByModelUid(String modelVer) {
|
||||||
return Optional.ofNullable(
|
return Optional.ofNullable(
|
||||||
queryFactory
|
queryFactory
|
||||||
.selectFrom(modelMngEntity)
|
.selectFrom(modelMngEntity)
|
||||||
.where(modelMngEntity.modelVer.eq(modelVer))
|
.where(modelMngEntity.modelVer.eq(modelVer))
|
||||||
.fetchOne());
|
.fetchOne());
|
||||||
}
|
}
|
||||||
|
|
||||||
private BooleanExpression eventEndedAtBetween(
|
private BooleanExpression eventEndedAtBetween(
|
||||||
LocalDate startDate, LocalDate endDate, String sortColumn) {
|
LocalDate startDate, LocalDate endDate, String sortColumn) {
|
||||||
if (Objects.isNull(startDate) || Objects.isNull(endDate)) {
|
if (Objects.isNull(startDate) || Objects.isNull(endDate)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -127,14 +127,14 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport
|
|||||||
|
|
||||||
if (sortColumn.equals("createCompleteDttm")) {
|
if (sortColumn.equals("createCompleteDttm")) {
|
||||||
return modelMngEntity
|
return modelMngEntity
|
||||||
.createCompleteDttm
|
.createCompleteDttm
|
||||||
.goe(startDateTime.atZone(zone))
|
.goe(startDateTime.atZone(zone))
|
||||||
.and(modelMngEntity.createCompleteDttm.lt(endDateTime.atZone(zone)));
|
.and(modelMngEntity.createCompleteDttm.lt(endDateTime.atZone(zone)));
|
||||||
} else {
|
} else {
|
||||||
return modelMngEntity
|
return modelMngEntity
|
||||||
.recentUseDttm
|
.recentUseDttm
|
||||||
.goe(startDateTime.atZone(zone))
|
.goe(startDateTime.atZone(zone))
|
||||||
.and(modelMngEntity.recentUseDttm.lt(endDateTime.atZone(zone)));
|
.and(modelMngEntity.recentUseDttm.lt(endDateTime.atZone(zone)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user