From 6e94480bb03ebacf9f61ec77c32673ff9de7f209 Mon Sep 17 00:00:00 2001 From: teddy Date: Mon, 22 Dec 2025 18:51:07 +0900 Subject: [PATCH 1/9] =?UTF-8?q?=EC=98=81=EC=83=81=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapsheet/MapSheetMngRepositoryImpl.java | 35 ++++++++----------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index c06debf0..dd22e418 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -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 findMapSheetMngYyyyList() { List 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) { From 052cdc6f882a43e300839c08be403a6028339bbb Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Tue, 23 Dec 2025 07:30:01 +0900 Subject: [PATCH 2/9] =?UTF-8?q?null=20pointer=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapsheet/service/MapSheetMngService.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java index 0fcf9706..18baa243 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java @@ -3,14 +3,15 @@ package com.kamco.cd.kamcoback.mapsheet.service; import com.kamco.cd.kamcoback.common.utils.FIleChecker; import com.kamco.cd.kamcoback.config.FileConfig; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; -import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.AddReq; -import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.DmlReturn; -import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.ErrorDataDto; -import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.ErrorSearchReq; -import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngDto; -import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.MngFilesDto; +import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.*; import com.kamco.cd.kamcoback.postgres.core.MapSheetMngCoreService; import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -18,11 +19,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.List; -import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; @Service @RequiredArgsConstructor @@ -167,10 +163,12 @@ public class MapSheetMngService { if (uploadPath.isEmpty()) { MngFilesDto filesDto = mapSheetMngCoreService.findYyyyToMapSheetFilePathRefer(errDto.getMngYyyy()); - String referPath = filesDto.getFilePath(); - uploadPath = Paths.get(referPath).getParent().toString() + "/" + errDto.getRefMapSheetNum(); - tfwTargetPath = Paths.get(uploadPath).resolve(tfwFile.getOriginalFilename()); - tifTargetPath = Paths.get(uploadPath).resolve(tifFile.getOriginalFilename()); + if (filesDto != null) { + String referPath = filesDto.getFilePath(); + uploadPath = Paths.get(referPath).getParent().toString() + "/" + errDto.getRefMapSheetNum(); + tfwTargetPath = Paths.get(uploadPath).resolve(tfwFile.getOriginalFilename()); + tifTargetPath = Paths.get(uploadPath).resolve(tifFile.getOriginalFilename()); + } } // 업로드 경로 확인(없으면 생성) From 5259d04312de494c192319339c2ddb9e816e5209 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Tue, 23 Dec 2025 07:30:58 +0900 Subject: [PATCH 3/9] spotless --- .../mapsheet/service/MapSheetMngService.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java index 18baa243..c78ee8aa 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/service/MapSheetMngService.java @@ -6,12 +6,6 @@ import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto; import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto.*; import com.kamco.cd.kamcoback.postgres.core.MapSheetMngCoreService; import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -19,6 +13,11 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; @Service @RequiredArgsConstructor From 95c01c693b6a597d6347b0924d7ea0ed5578c141 Mon Sep 17 00:00:00 2001 From: teddy Date: Tue, 23 Dec 2025 09:39:47 +0900 Subject: [PATCH 4/9] =?UTF-8?q?=EA=B8=80=EB=A1=9C=EB=B2=8C=20exception=20e?= =?UTF-8?q?rror.log=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/GlobalExceptionHandler.java | 36 ++++++++++++++----- .../cd/kamcoback/menu/MenuApiController.java | 4 +-- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java index a0cf0b7d..f52f7efe 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java @@ -50,6 +50,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handleDuplicateFileException( DuplicateFileException e, HttpServletRequest request) { log.warn("[DuplicateFileException] resource :{} ", e.getMessage()); + this.errorLog(request, e); ApiResponseCode code = ApiResponseCode.CONFLICT; ErrorLogEntity errorLog = saveErrorLogData( @@ -68,6 +69,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handleValidationException( ValidationException e, HttpServletRequest request) { log.warn("[ValidationException] resource :{} ", e.getMessage()); + this.errorLog(request, e); ApiResponseCode code = ApiResponseCode.UNPROCESSABLE_ENTITY; ErrorLogEntity errorLog = saveErrorLogData( @@ -86,6 +88,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handleIllegalArgumentException( IllegalArgumentException e, HttpServletRequest request) { log.warn("[IllegalArgumentException] resource :{} ", e.getMessage()); + this.errorLog(request, e); ApiResponseCode code = ApiResponseCode.BAD_REQUEST; ErrorLogEntity errorLog = saveErrorLogData( @@ -104,6 +107,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerEntityNotFoundException( EntityNotFoundException e, HttpServletRequest request) { log.warn("[EntityNotFoundException] resource :{} ", e.getMessage()); + this.errorLog(request, e); String codeName = "NOT_FOUND_DATA"; ErrorLogEntity errorLog = saveErrorLogData( @@ -125,6 +129,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handleUnreadable( HttpMessageNotReadableException e, HttpServletRequest request) { log.warn("[HttpMessageNotReadableException] resource :{} ", e.getMessage()); + this.errorLog(request, e); String codeName = "BAD_REQUEST"; ErrorLogEntity errorLog = saveErrorLogData( @@ -146,6 +151,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerNoSuchElementException( NoSuchElementException e, HttpServletRequest request) { log.warn("[NoSuchElementException] resource :{} ", e.getMessage()); + this.errorLog(request, e); String codeName = "NOT_FOUND_DATA"; ErrorLogEntity errorLog = saveErrorLogData( @@ -167,6 +173,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerDataIntegrityViolationException( DataIntegrityViolationException e, HttpServletRequest request) { log.warn("[DataIntegrityViolationException] resource :{} ", e.getMessage()); + this.errorLog(request, e); String codeName = "DATA_INTEGRITY_ERROR"; ErrorLogEntity errorLog = saveErrorLogData( @@ -188,6 +195,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerMethodArgumentNotValidException( MethodArgumentNotValidException e, HttpServletRequest request) { log.warn("[MethodArgumentNotValidException] resource :{} ", e.getMessage()); + this.errorLog(request, e); String codeName = "BAD_REQUEST"; ErrorLogEntity errorLog = saveErrorLogData( @@ -209,6 +217,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerAccessDeniedException( AccessDeniedException e, HttpServletRequest request) { log.warn("[AccessDeniedException] resource :{} ", e.getMessage()); + this.errorLog(request, e); String codeName = "FORBIDDEN"; ErrorLogEntity errorLog = saveErrorLogData( @@ -230,6 +239,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerHttpServerErrorException( HttpServerErrorException e, HttpServletRequest request) { log.warn("[HttpServerErrorException] resource :{} ", e.getMessage()); + this.errorLog(request, e); String codeName = "BAD_GATEWAY"; ErrorLogEntity errorLog = saveErrorLogData( @@ -251,7 +261,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerIllegalStateException( IllegalStateException e, HttpServletRequest request) { log.warn("[IllegalStateException] resource :{} ", e.getMessage()); - + this.errorLog(request, e); String codeName = "UNPROCESSABLE_ENTITY"; ErrorLogEntity errorLog = saveErrorLogData( @@ -273,7 +283,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerDuplicateMemberException( MemberException.DuplicateMemberException e, HttpServletRequest request) { log.warn("[DuplicateMemberException] resource :{} ", e.getMessage()); - + this.errorLog(request, e); String codeName = ""; switch (e.getField()) { @@ -305,7 +315,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerMemberNotFoundException( MemberException.MemberNotFoundException e, HttpServletRequest request) { log.warn("[MemberNotFoundException] resource :{} ", e.getMessage()); - + this.errorLog(request, e); String codeName = "NOT_FOUND_USER"; ErrorLogEntity errorLog = @@ -328,7 +338,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerDuplicateKeyException( DuplicateKeyException e, HttpServletRequest request) { log.warn("[DuplicateKeyException] resource :{} ", e.getMessage()); - + this.errorLog(request, e); String codeName = "DUPLICATE_DATA"; ErrorLogEntity errorLog = @@ -350,7 +360,7 @@ public class GlobalExceptionHandler { public ResponseEntity> handleBadCredentials( BadCredentialsException e, HttpServletRequest request) { log.warn("[BadCredentialsException] resource : {} ", e.getMessage()); - + this.errorLog(request, e); String codeName = "UNAUTHORIZED"; ErrorLogEntity errorLog = @@ -377,7 +387,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handlerRuntimeException( RuntimeException e, HttpServletRequest request) { log.warn("[RuntimeException] resource :{} ", e.getMessage()); - + this.errorLog(request, e); String codeName = "INTERNAL_SERVER_ERROR"; ErrorLogEntity errorLog = saveErrorLogData( @@ -397,8 +407,7 @@ public class GlobalExceptionHandler { @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ExceptionHandler(Exception.class) public ApiResponseDto handlerException(Exception e, HttpServletRequest request) { - log.error("[Exception] resource: {}, message: {}", request.getRequestURI(), e.getMessage()); - log.error("Exception stacktrace: ", e); + this.errorLog(request, e); String codeName = "INTERNAL_SERVER_ERROR"; ErrorLogEntity errorLog = @@ -524,4 +533,15 @@ public class GlobalExceptionHandler { return ApiResponseDto.createException( code, code.getText(), HttpStatus.PAYLOAD_TOO_LARGE, errorLog.getId()); } + + private void errorLog(HttpServletRequest request, Throwable e) { + String uri = request != null ? request.getRequestURI() : "N/A"; + + // 예외 타입명 (IllegalArgumentException, BadCredentialsException 등) + String exceptionName = e.getClass().getSimpleName(); + + log.error("[{}] uri={}, message={}", exceptionName, uri, e.getMessage()); + + log.error("[{}] stacktrace", exceptionName, e); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/menu/MenuApiController.java b/src/main/java/com/kamco/cd/kamcoback/menu/MenuApiController.java index e6df3b23..3d8f2710 100644 --- a/src/main/java/com/kamco/cd/kamcoback/menu/MenuApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/menu/MenuApiController.java @@ -15,7 +15,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import java.util.LinkedHashMap; import java.util.List; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -29,8 +28,7 @@ import org.springframework.web.bind.annotation.RestController; public class MenuApiController { private final MenuService menuService; - - @Autowired private ObjectMapper objectMapper; + private final ObjectMapper objectMapper; @Operation(summary = "목록 조회", description = "모든 메뉴 조회") @ApiResponses( From 363132d53ae572e84299dbf34a8e325755538866 Mon Sep 17 00:00:00 2001 From: teddy Date: Tue, 23 Dec 2025 09:43:00 +0900 Subject: [PATCH 5/9] =?UTF-8?q?=EA=B8=80=EB=A1=9C=EB=B2=8C=20exception=20e?= =?UTF-8?q?rror.log=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java index f52f7efe..9a229508 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java @@ -484,7 +484,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handleCustomApiException( CustomApiException e, HttpServletRequest request) { log.warn("[CustomApiException] resource : {}", e.getMessage()); - + this.errorLog(request, e); String codeName = e.getCodeName(); HttpStatus status = e.getStatus(); // String message = e.getMessage() == null ? ApiResponseCode.getMessage(codeName) : @@ -521,6 +521,7 @@ public class GlobalExceptionHandler { public ApiResponseDto handleMaxUploadSizeExceeded( MaxUploadSizeExceededException e, HttpServletRequest request) { log.warn("[MaxUploadSizeExceededException] resource :{} ", e.getMessage()); + this.errorLog(request, e); ApiResponseCode code = ApiResponseCode.PAYLOAD_TOO_LARGE; ErrorLogEntity errorLog = saveErrorLogData( From a7678dad25c6b2be20ed6ce64abe4233bd37e0f6 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Tue, 23 Dec 2025 09:47:43 +0900 Subject: [PATCH 6/9] =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EB=A1=9C=EA=B7=B8=20s?= =?UTF-8?q?tack=5Ftrace=20=EC=BB=AC=EB=9F=BC=20text=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kamcoback/config/GlobalExceptionHandler.java | 14 +++++++------- .../kamcoback/postgres/entity/ErrorLogEntity.java | 7 +++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java index f52f7efe..337cf7d4 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java @@ -13,11 +13,6 @@ import com.kamco.cd.kamcoback.postgres.entity.ErrorLogEntity; import com.kamco.cd.kamcoback.postgres.repository.log.ErrorLogRepository; import jakarta.persistence.EntityNotFoundException; import jakarta.servlet.http.HttpServletRequest; -import java.nio.file.AccessDeniedException; -import java.time.ZonedDateTime; -import java.util.Arrays; -import java.util.NoSuchElementException; -import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.dao.DataIntegrityViolationException; @@ -34,6 +29,12 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.multipart.MaxUploadSizeExceededException; +import java.nio.file.AccessDeniedException; +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.NoSuchElementException; +import java.util.stream.Collectors; + @Slf4j @Order(value = 1) @RestControllerAdvice @@ -463,8 +464,7 @@ public class GlobalExceptionHandler { String stackTraceStr = Arrays.stream(stackTrace) .map(StackTraceElement::toString) - .collect(Collectors.joining("\n")) - .substring(0, Math.min(stackTrace.length, 255)); + .collect(Collectors.joining("\n")); ErrorLogEntity errorLogEntity = new ErrorLogEntity( diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ErrorLogEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ErrorLogEntity.java index 629cb6c2..7c779a6b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ErrorLogEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ErrorLogEntity.java @@ -4,12 +4,12 @@ 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; import lombok.NoArgsConstructor; +import java.time.ZonedDateTime; + @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @@ -33,8 +33,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; From 05234d413bb5828ed2c0929e3271f6265d509865 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Tue, 23 Dec 2025 09:52:17 +0900 Subject: [PATCH 7/9] =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EB=A1=9C=EA=B7=B8=20s?= =?UTF-8?q?tack=5Ftrace=20=EC=BB=AC=EB=9F=BC=20text=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cd/kamcoback/config/GlobalExceptionHandler.java | 11 +++++------ .../cd/kamcoback/postgres/entity/ErrorLogEntity.java | 3 +-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java index 464f834f..161b1c11 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java @@ -13,6 +13,11 @@ import com.kamco.cd.kamcoback.postgres.entity.ErrorLogEntity; import com.kamco.cd.kamcoback.postgres.repository.log.ErrorLogRepository; import jakarta.persistence.EntityNotFoundException; import jakarta.servlet.http.HttpServletRequest; +import java.nio.file.AccessDeniedException; +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.NoSuchElementException; +import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.dao.DataIntegrityViolationException; @@ -29,12 +34,6 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.client.HttpServerErrorException; import org.springframework.web.multipart.MaxUploadSizeExceededException; -import java.nio.file.AccessDeniedException; -import java.time.ZonedDateTime; -import java.util.Arrays; -import java.util.NoSuchElementException; -import java.util.stream.Collectors; - @Slf4j @Order(value = 1) @RestControllerAdvice diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ErrorLogEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ErrorLogEntity.java index 7c779a6b..f5e2f30e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ErrorLogEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ErrorLogEntity.java @@ -4,12 +4,11 @@ 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 java.time.ZonedDateTime; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; -import java.time.ZonedDateTime; - @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) From 0875b25e8fe7c194113389878a533efb47c9e029 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Tue, 23 Dec 2025 12:41:21 +0900 Subject: [PATCH 8/9] =?UTF-8?q?=EB=AA=A8=EB=8D=B8=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D,=EC=82=AD=EC=A0=9C=20API=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ModelMngApiController.java | 36 +++++++++++-- .../cd/kamcoback/model/dto/ModelMngDto.java | 9 ++-- .../model/service/ModelMngService.java | 8 ++- .../postgres/core/ModelMngCoreService.java | 17 ++++++- .../postgres/entity/ModelMngEntity.java | 25 +++++---- .../model/ModelMngRepositoryCustom.java | 7 ++- .../model/ModelMngRepositoryImpl.java | 51 ++++++++++--------- 7 files changed, 106 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java b/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java index 7bab2cdf..c9b3e428 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java @@ -4,15 +4,17 @@ import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.model.dto.ModelMngDto; import com.kamco.cd.kamcoback.model.service.ModelMngService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.transaction.Transactional; -import java.time.LocalDate; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDate; @Tag(name = "모델 관리", description = "모델 관리 API") @RequiredArgsConstructor @@ -40,4 +42,28 @@ public class ModelMngApiController { return ApiResponseDto.ok(result); } + + @Operation(summary = "삭제", description = "모델을 삭제 합니다.") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "204", + description = "모델 삭제 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = Long.class))), + @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), + @ApiResponse(responseCode = "404", description = "코드를 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) + @DeleteMapping("/{modelVer}") + public ApiResponseDto removeModel( + @io.swagger.v3.oas.annotations.parameters.RequestBody( + description = "모델 삭제 요청 정보", + required = true) + @PathVariable + String modelVer) { + return ApiResponseDto.okObject(modelMngService.removeModel(modelVer)); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java b/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java index 618624c5..5d39a4a4 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java @@ -4,8 +4,6 @@ import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose; import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm; import io.swagger.v3.oas.annotations.media.Schema; -import java.math.BigDecimal; -import java.time.ZonedDateTime; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -14,6 +12,9 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import java.math.BigDecimal; +import java.time.ZonedDateTime; + public class ModelMngDto { @Schema(name = "ModelMgmtDto Basic", description = "모델관리 엔티티 기본 정보") @@ -69,10 +70,10 @@ public class ModelMngDto { public static class ModelList { private Integer rowNum; private String modelVer; - private String dockerFileNm; + private String fileName; private String modelType; private String createCompleteDttm; - private String recentUseDttm; // TODO: 추론관리 테이블 나오면 분석진행중일 때 사용중으로 리턴하기 + private String recentUseDttm; private BigDecimal f1Score; private BigDecimal precision; private BigDecimal recall; diff --git a/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java b/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java index 0df2be4c..8b46fa6f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java @@ -1,12 +1,14 @@ package com.kamco.cd.kamcoback.model.service; +import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.model.dto.ModelMngDto; import com.kamco.cd.kamcoback.postgres.core.ModelMngCoreService; -import java.time.LocalDate; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; +import java.time.LocalDate; + @Service @RequiredArgsConstructor public class ModelMngService { @@ -22,4 +24,8 @@ public class ModelMngService { return modelMngCoreService.findModelMgmtList( searchReq, startDate, endDate, modelType, searchVal); } + + public ApiResponseDto.ResponseObj removeModel(String modelVer) { + return modelMngCoreService.removeModel(modelVer); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java index 2797fc5b..1002a82b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java @@ -1,12 +1,16 @@ 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 java.time.LocalDate; +import jakarta.persistence.EntityNotFoundException; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; +import java.time.LocalDate; + @Service @RequiredArgsConstructor public class ModelMngCoreService { @@ -22,4 +26,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, ""); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ModelMngEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ModelMngEntity.java index 12eb79d8..c9d826e9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ModelMngEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ModelMngEntity.java @@ -2,10 +2,11 @@ package com.kamco.cd.kamcoback.postgres.entity; import com.kamco.cd.kamcoback.postgres.CommonDateEntity; import jakarta.persistence.*; -import java.time.ZonedDateTime; import lombok.Getter; import lombok.Setter; +import java.time.ZonedDateTime; + @Getter @Setter @Entity @@ -19,15 +20,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 +34,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; + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java index e2250336..69917c0f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java @@ -1,9 +1,12 @@ package com.kamco.cd.kamcoback.postgres.repository.model; import com.kamco.cd.kamcoback.model.dto.ModelMngDto; -import java.time.LocalDate; +import com.kamco.cd.kamcoback.postgres.entity.ModelMngEntity; import org.springframework.data.domain.Page; +import java.time.LocalDate; +import java.util.Optional; + public interface ModelMngRepositoryCustom { Page findModelMgmtList( @@ -12,4 +15,6 @@ public interface ModelMngRepositoryCustom { LocalDate endDate, String modelType, String searchVal); + + Optional findByModelUid(String modelVer); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java index d5e4563b..2e200e61 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java @@ -1,19 +1,19 @@ package com.kamco.cd.kamcoback.postgres.repository.model; -import static com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity.modelMngEntity; -import static com.kamco.cd.kamcoback.postgres.entity.QModelResultMetricEntity.modelResultMetricEntity; - import com.kamco.cd.kamcoback.model.dto.ModelMngDto; import com.kamco.cd.kamcoback.postgres.QuerydslOrderUtil; 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 org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport; + import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @@ -21,11 +21,10 @@ import java.time.ZoneId; import java.util.List; import java.util.Map; import java.util.Objects; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport; +import java.util.Optional; + +import static com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity.modelMngEntity; +import static com.kamco.cd.kamcoback.postgres.entity.QModelResultMetricEntity.modelResultMetricEntity; public class ModelMngRepositoryImpl extends QuerydslRepositorySupport implements ModelMngRepositoryCustom { @@ -68,16 +67,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 +85,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 +106,14 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport return new PageImpl<>(foundContent, pageable, countQuery); } + @Override + public Optional 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; From c76e41489b9cb3ee495a23321b5b97be9f8f189c Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Tue, 23 Dec 2025 12:42:30 +0900 Subject: [PATCH 9/9] =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ModelMngApiController.java | 3 +-- .../cd/kamcoback/model/dto/ModelMngDto.java | 5 ++-- .../model/service/ModelMngService.java | 3 +-- .../postgres/core/ModelMngCoreService.java | 3 +-- .../postgres/entity/ModelMngEntity.java | 3 +-- .../model/ModelMngRepositoryCustom.java | 3 +-- .../model/ModelMngRepositoryImpl.java | 26 +++++++++---------- 7 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java b/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java index c9b3e428..7989ce31 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java @@ -10,12 +10,11 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.transaction.Transactional; +import java.time.LocalDate; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.*; -import java.time.LocalDate; - @Tag(name = "모델 관리", description = "모델 관리 API") @RequiredArgsConstructor @RestController diff --git a/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java b/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java index 5d39a4a4..588e0018 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java @@ -4,6 +4,8 @@ import com.kamco.cd.kamcoback.common.utils.enums.CodeExpose; import com.kamco.cd.kamcoback.common.utils.enums.EnumType; import com.kamco.cd.kamcoback.common.utils.interfaces.JsonFormatDttm; import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; +import java.time.ZonedDateTime; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -12,9 +14,6 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; -import java.math.BigDecimal; -import java.time.ZonedDateTime; - public class ModelMngDto { @Schema(name = "ModelMgmtDto Basic", description = "모델관리 엔티티 기본 정보") diff --git a/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java b/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java index 8b46fa6f..02c7e518 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java @@ -3,12 +3,11 @@ package com.kamco.cd.kamcoback.model.service; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.model.dto.ModelMngDto; import com.kamco.cd.kamcoback.postgres.core.ModelMngCoreService; +import java.time.LocalDate; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; -import java.time.LocalDate; - @Service @RequiredArgsConstructor public class ModelMngService { diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java index 1002a82b..7acb4c21 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java @@ -5,12 +5,11 @@ 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; import org.springframework.stereotype.Service; -import java.time.LocalDate; - @Service @RequiredArgsConstructor public class ModelMngCoreService { diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ModelMngEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ModelMngEntity.java index c9d826e9..9e40a9d9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ModelMngEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/ModelMngEntity.java @@ -2,11 +2,10 @@ package com.kamco.cd.kamcoback.postgres.entity; import com.kamco.cd.kamcoback.postgres.CommonDateEntity; import jakarta.persistence.*; +import java.time.ZonedDateTime; import lombok.Getter; import lombok.Setter; -import java.time.ZonedDateTime; - @Getter @Setter @Entity diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java index 69917c0f..5d34fdee 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java @@ -2,10 +2,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 org.springframework.data.domain.Page; - import java.time.LocalDate; import java.util.Optional; +import org.springframework.data.domain.Page; public interface ModelMngRepositoryCustom { diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java index 2e200e61..c9056fe7 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java @@ -1,5 +1,8 @@ package com.kamco.cd.kamcoback.postgres.repository.model; +import static com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity.modelMngEntity; +import static com.kamco.cd.kamcoback.postgres.entity.QModelResultMetricEntity.modelResultMetricEntity; + import com.kamco.cd.kamcoback.model.dto.ModelMngDto; import com.kamco.cd.kamcoback.postgres.QuerydslOrderUtil; import com.kamco.cd.kamcoback.postgres.entity.ModelMngEntity; @@ -8,12 +11,6 @@ import com.querydsl.core.types.Expression; import com.querydsl.core.types.Projections; import com.querydsl.core.types.dsl.*; import com.querydsl.jpa.impl.JPAQueryFactory; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport; - import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @@ -22,9 +19,11 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; - -import static com.kamco.cd.kamcoback.postgres.entity.QModelMngEntity.modelMngEntity; -import static com.kamco.cd.kamcoback.postgres.entity.QModelResultMetricEntity.modelResultMetricEntity; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport; public class ModelMngRepositoryImpl extends QuerydslRepositorySupport implements ModelMngRepositoryCustom { @@ -108,10 +107,11 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport @Override public Optional findByModelUid(String modelVer) { - return Optional.ofNullable(queryFactory - .selectFrom(modelMngEntity) - .where(modelMngEntity.modelVer.eq(modelVer)) - .fetchOne()); + return Optional.ofNullable( + queryFactory + .selectFrom(modelMngEntity) + .where(modelMngEntity.modelVer.eq(modelVer)) + .fetchOne()); } private BooleanExpression eventEndedAtBetween(