From a1fc62b3ebde96e6987b05f0f099fff39a9be083 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Mon, 11 May 2026 14:15:45 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A9=94=EB=89=B4=20=EB=AA=A9=EB=A1=9D,=20?= =?UTF-8?q?=EC=98=81=EC=83=81=EA=B4=80=EB=A6=AC=20=EB=AA=A9=EB=A1=9D=20API?= =?UTF-8?q?=20=EC=98=81=EB=AC=B8=20=ED=97=A4=EB=8D=94=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?,=20=EC=B6=94=EB=A1=A0=20=EC=82=AD=EC=A0=9C=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kamcoback/common/enums/MngStateType.java | 13 ++++-- .../InferenceResultApiController.java | 18 +++++++++ .../service/InferenceResultService.java | 40 +++++++------------ .../mapsheet/dto/MapSheetMngDto.java | 5 +++ .../kamcoback/menu/MyMenuApiController.java | 6 +-- .../kamcoback/menu/service/MyMenuService.java | 4 +- .../core/InferenceResultCoreService.java | 4 ++ .../postgres/core/MenuCoreService.java | 6 ++- .../postgres/entity/MapSheetLearnEntity.java | 3 ++ .../InferenceResultRepositoryCustom.java | 7 ++++ .../InferenceResultRepositoryImpl.java | 9 +++++ .../MapSheetLearnRepositoryImpl.java | 3 ++ .../label/LabelWorkRepositoryImpl.java | 4 +- 13 files changed, 84 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/common/enums/MngStateType.java b/src/main/java/com/kamco/cd/kamcoback/common/enums/MngStateType.java index d1d98df1..0f05938b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/enums/MngStateType.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/enums/MngStateType.java @@ -9,12 +9,13 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum MngStateType implements EnumType { - NOTYET("동기화 시작"), - PROCESSING("데이터 체크"), - DONE("동기화 작업 종료"), - TAKINGERROR("오류 데이터 처리중"); + NOTYET("동기화 시작", "Sync Started"), + PROCESSING("데이터 체크", "Data Check"), + DONE("동기화 작업 종료", "Sync Completed"), + TAKINGERROR("오류 데이터 처리중", "Processing Error Data"); private final String desc; + private final String descEn; @Override public String getId() { @@ -25,4 +26,8 @@ public enum MngStateType implements EnumType { public String getText() { return desc; } + + public String getTextEn() { + return descEn; + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java b/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java index fc5b2d06..190384d0 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java @@ -448,4 +448,22 @@ public class InferenceResultApiController { UUID uuid) { return ApiResponseDto.ok(inferenceResultService.getInferenceRunMapId(uuid)); } + + @Operation(summary = "추론 삭제", description = "추론관리 > 추론목록 > 추론 상세 > 추론 삭제") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "201", + description = "종료 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = Page.class))), + @ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) + @DeleteMapping("/delete-inference/{uuid}") + public ApiResponseDto deleteInference(@PathVariable UUID uuid) { + return ApiResponseDto.ok(inferenceResultService.deleteInference(uuid)); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java index 5bb80056..2cc0394f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java @@ -7,24 +7,13 @@ import com.kamco.cd.kamcoback.common.geometry.GeoJsonFileWriter.Scene; import com.kamco.cd.kamcoback.common.inference.service.InferenceCommonService; import com.kamco.cd.kamcoback.common.inference.utils.GeoJsonValidator; import com.kamco.cd.kamcoback.common.utils.UserUtil; +import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.config.resttemplate.ExternalHttpClient; import com.kamco.cd.kamcoback.config.resttemplate.ExternalHttpClient.ExternalCallResult; import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto; -import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.AnalResultInfo; -import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.Dashboard; -import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.Detail; -import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.Geom; -import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.MapSheet; -import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.SearchGeoReq; +import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.*; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto; -import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.DetectOption; -import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceLearnDto; -import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceServerStatusDto; -import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceStatusDetailDto; -import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetScope; -import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.ResultList; -import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.SaveInferenceAiDto; -import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Status; +import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.*; import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto; import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto.pred_requests_areas; import com.kamco.cd.kamcoback.log.dto.AuditLogDto; @@ -44,16 +33,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.ZonedDateTime; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -70,7 +50,7 @@ import org.springframework.transaction.annotation.Transactional; @Service @Slf4j @RequiredArgsConstructor -@Transactional(readOnly = true) +@Transactional public class InferenceResultService { private final InferenceResultCoreService inferenceResultCoreService; @@ -1033,4 +1013,14 @@ public class InferenceResultService { } return ""; } + + public ApiResponseDto.ResponseObj deleteInference(UUID uuid) { + long result = inferenceResultCoreService.deleteInference(uuid); + if (result > 0) { + return new ApiResponseDto.ResponseObj(ApiResponseDto.ApiResponseCode.OK, "삭제되었습니다."); + } else { + return new ApiResponseDto.ResponseObj( + ApiResponseDto.ApiResponseCode.INTERNAL_SERVER_ERROR, "삭제 실패하였습니다. 관리자에게 문의해주세요."); + } + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java index 25ce7d9b..c6f6f374 100644 --- a/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/mapsheet/dto/MapSheetMngDto.java @@ -16,6 +16,7 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -217,7 +218,11 @@ public class MapSheetMngDto { enumId = "NOTYET"; } + String lang = LocaleContextHolder.getLocale().getLanguage(); MngStateType type = Enums.fromId(MngStateType.class, enumId); + if ("en".equalsIgnoreCase(lang)) { + return type.getTextEn(); + } return type.getText(); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/menu/MyMenuApiController.java b/src/main/java/com/kamco/cd/kamcoback/menu/MyMenuApiController.java index 5d366ae9..5a877f78 100644 --- a/src/main/java/com/kamco/cd/kamcoback/menu/MyMenuApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/menu/MyMenuApiController.java @@ -14,7 +14,6 @@ import java.util.List; import lombok.RequiredArgsConstructor; 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; @Tag(name = "메뉴 조회", description = "메뉴 조회 API") @@ -69,10 +68,9 @@ public class MyMenuApiController { @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @GetMapping - public ApiResponseDto> getFindAllByRole( - @RequestParam(required = false) String locale) { + public ApiResponseDto> getFindAllByRole() { UserUtil userUtil = new UserUtil(); String role = userUtil.getRole(); - return ApiResponseDto.ok(myMenuService.getFindByRole(role, locale)); + return ApiResponseDto.ok(myMenuService.getFindByRole(role)); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/menu/service/MyMenuService.java b/src/main/java/com/kamco/cd/kamcoback/menu/service/MyMenuService.java index ed74dd0a..9adad491 100644 --- a/src/main/java/com/kamco/cd/kamcoback/menu/service/MyMenuService.java +++ b/src/main/java/com/kamco/cd/kamcoback/menu/service/MyMenuService.java @@ -20,7 +20,7 @@ public class MyMenuService { * @param role * @return */ - public List getFindByRole(String role, String locale) { - return menuCoreService.getFindByRole(role, locale); + public List getFindByRole(String role) { + return menuCoreService.getFindByRole(role); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java index 554f20ea..0efec955 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java @@ -626,4 +626,8 @@ public class InferenceResultCoreService { public List getInferenceResultGroupList(List batchIds) { return inferenceResultsTestingRepository.getInferenceResultGroupList(batchIds); } + + public long deleteInference(UUID uuid) { + return inferenceResultRepository.deleteInference(uuid); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MenuCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MenuCoreService.java index 9f9f5824..bb4e3dbe 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/MenuCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/MenuCoreService.java @@ -7,6 +7,7 @@ import com.kamco.cd.kamcoback.postgres.repository.menu.MenuRepository; import java.util.Comparator; import java.util.List; import lombok.RequiredArgsConstructor; +import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; @Service @@ -25,9 +26,10 @@ public class MenuCoreService { * @param role * @return */ - public List getFindByRole(String role, String locale) { + public List getFindByRole(String role) { List entities = menuRepository.getFindByRole(role); - boolean english = locale != null && locale.equals("en"); + String lang = LocaleContextHolder.getLocale().getLanguage(); + boolean english = lang.equalsIgnoreCase("en"); return entities.stream() .map( parent -> { diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnEntity.java index 9b6f1bdd..ab532595 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnEntity.java @@ -229,6 +229,9 @@ public class MapSheetLearnEntity { @Column(name = "shp_error_message") private String shp_error_message; + @Column(name = "is_deleted") + private Boolean isDeleted; + public InferenceResultDto.ResultList toDto() { return new InferenceResultDto.ResultList( this.uuid, diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java index b559a630..fc853242 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryCustom.java @@ -62,4 +62,11 @@ public interface InferenceResultRepositoryCustom { * @return */ Optional getAnalInferenceDataByLearnId(Long id); + + /** + * 추론 삭제 + * + * @param uuid + */ + long deleteInference(UUID uuid); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java index bbe1a0a5..2869b01e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/InferenceResultRepositoryImpl.java @@ -346,4 +346,13 @@ public class InferenceResultRepositoryImpl implements InferenceResultRepositoryC .where(mapSheetAnalInferenceEntity.learnId.eq(id)) .fetchOne()); } + + @Override + public long deleteInference(UUID uuid) { + return queryFactory + .update(mapSheetLearnEntity) + .set(mapSheetLearnEntity.isDeleted, true) + .where(mapSheetLearnEntity.uuid.eq(uuid)) + .execute(); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java index 64dd5c72..b2c89daa 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java @@ -90,6 +90,9 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto builder.and(mapSheetLearnEntity.title.containsIgnoreCase(req.getTitle())); } + // 삭제여부 값 추가 + builder.and(mapSheetLearnEntity.isDeleted.eq(false).or(mapSheetLearnEntity.isDeleted.isNull())); + List content = queryFactory .select(mapSheetLearnEntity) diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java index d67acbe1..6e8a388f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelWorkRepositoryImpl.java @@ -161,7 +161,9 @@ public class LabelWorkRepositoryImpl implements LabelWorkRepositoryCustom { mapSheetLearnEntity.uuid)) .from(mapSheetAnalInferenceEntity) .leftJoin(mapSheetLearnEntity) - .on(mapSheetAnalInferenceEntity.learnId.eq(mapSheetLearnEntity.id)) + .on( + mapSheetAnalInferenceEntity.learnId.eq(mapSheetLearnEntity.id), + mapSheetLearnEntity.isDeleted.eq(false).or(mapSheetLearnEntity.isDeleted.isNull())) .where(baseWhereBuilder) .orderBy( stateOrder.asc(),