변화탐지 clazz API : enum -> 공통코드로 변경

This commit is contained in:
2025-12-11 10:31:31 +09:00
parent 83bfdc2728
commit 979aab24f4
3 changed files with 75 additions and 24 deletions

View File

@@ -1,11 +1,15 @@
package com.kamco.cd.kamcoback.common.utils;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.kamco.cd.kamcoback.code.dto.CommonCodeDto;
import com.kamco.cd.kamcoback.code.dto.CommonCodeDto.Basic;
import com.kamco.cd.kamcoback.code.service.CommonCodeService;
import com.kamco.cd.kamcoback.config.api.ApiResponseDto;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
@@ -19,6 +23,8 @@ public class CommonCodeUtil {
private final CommonCodeService commonCodeService;
@Autowired private ObjectMapper objectMapper;
public CommonCodeUtil(CommonCodeService commonCodeService) {
this.commonCodeService = commonCodeService;
}
@@ -30,7 +36,21 @@ public class CommonCodeUtil {
*/
public List<Basic> getAllCommonCodes() {
try {
return commonCodeService.getFindAll();
// 캐시에 들어간 이후 꺼낼 때, DTO를 인식하지 못하여 LinkedHashMap으로 리턴됨.
// LinkedHashMap인 경우 변환처리, 아닌 경우는 그대로 리턴함.
List<?> allCodes = commonCodeService.getFindAll();
return allCodes.stream()
.map(
item -> {
if (item instanceof LinkedHashMap<?, ?> map) {
return objectMapper.convertValue(map, CommonCodeDto.Basic.class);
} else if (item instanceof CommonCodeDto.Basic dto) {
return dto;
} else {
throw new IllegalStateException("Unsupported cache type: " + item.getClass());
}
})
.toList();
} catch (Exception e) {
log.error("공통코드 전체 조회 중 오류 발생", e);
return List.of();
@@ -111,8 +131,24 @@ public class CommonCodeUtil {
}
try {
List<Basic> allCodes = commonCodeService.getFindAll();
return allCodes.stream()
// 캐시에 들어간 이후 꺼낼 때, DTO를 인식하지 못하여 LinkedHashMap으로 리턴됨.
// LinkedHashMap인 경우 변환처리, 아닌 경우는 그대로 리턴함.
List<?> allCodes = commonCodeService.getFindAll();
List<Basic> convertList =
allCodes.stream()
.map(
item -> {
if (item instanceof LinkedHashMap<?, ?> map) {
return objectMapper.convertValue(map, CommonCodeDto.Basic.class);
} else if (item instanceof CommonCodeDto.Basic dto) {
return dto;
} else {
throw new IllegalStateException("Unsupported cache type: " + item.getClass());
}
})
.toList();
return convertList.stream()
.filter(code -> parentCode.equals(code.getCode()))
.findFirst()
.map(Basic::getChildren)
@@ -126,12 +162,12 @@ public class CommonCodeUtil {
/**
* 코드 사용 가능 여부 확인
*
* @param parentId 상위 코드 ID
* @param parentId 상위 코드 ID -> 1depth 는 null 허용 (파라미터 미필수로 변경)
* @param code 확인할 코드값
* @return 사용 가능 여부 (true: 사용 가능, false: 중복 또는 오류)
*/
public boolean isCodeAvailable(Long parentId, String code) {
if (parentId == null || parentId <= 0 || code == null || code.isEmpty()) {
if (parentId <= 0 || code == null || code.isEmpty()) {
log.warn("유효하지 않은 입력: parentId={}, code={}", parentId, code);
return false;
}