diff --git a/backend-spring/src/main/java/com/erp/service/CommonService.java b/backend-spring/src/main/java/com/erp/service/CommonService.java index 5a31ce3c..9e28c1d1 100644 --- a/backend-spring/src/main/java/com/erp/service/CommonService.java +++ b/backend-spring/src/main/java/com/erp/service/CommonService.java @@ -5,8 +5,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service @Slf4j @@ -59,6 +61,35 @@ public class CommonService extends BaseService { return result; } + /** + * Map의 snake_case 키를 camelCase로 변환 + * DB 결과를 프론트에 내려줄 때 사용 + */ + public Map toCamelCaseKeys(Map row) { + if (row == null) return null; + Map result = new LinkedHashMap<>(); + for (Map.Entry entry : row.entrySet()) { + result.put(snakeToCamel(entry.getKey()), entry.getValue()); + } + return result; + } + + public List> toCamelCaseKeysList(List> list) { + if (list == null) return null; + return list.stream().map(this::toCamelCaseKeys).collect(Collectors.toList()); + } + + private String snakeToCamel(String name) { + if (name == null || !name.contains("_")) return name; + StringBuilder sb = new StringBuilder(); + boolean nextUpper = false; + for (char c : name.toCharArray()) { + if (c == '_') { nextUpper = true; } + else { sb.append(nextUpper ? Character.toUpperCase(c) : c); nextUpper = false; } + } + return sb.toString(); + } + /** * 공통 코드 목록 조회 */