엔티티 타입 다중 표시 컬럼 기능 구현

Frontend:
- EntityTypeConfig 인터페이스에 displayColumns 배열 추가
- EntityTypeConfigPanel에서 여러 표시 컬럼 선택 UI 구현
- 구분자 설정 기능 추가
- 하위 호환성을 위한 displayColumn 유지

Backend:
- EntityJoinConfig에 displayColumns 배열 지원
- 화면별 엔티티 설정을 전달받는 API 확장
- CONCAT을 사용한 다중 컬럼 표시 SQL 생성
- 기존 단일 컬럼과의 호환성 유지

이제 화면마다 다른 표시 컬럼 조합을 설정할 수 있음
예: 한 화면에서는 '이름'만, 다른 화면에서는 '이름 - 부서명' 표시
This commit is contained in:
kjs
2025-09-23 15:58:54 +09:00
parent 699efd25a2
commit 4aefb5be6a
6 changed files with 209 additions and 193 deletions

View File

@@ -26,6 +26,7 @@ export class EntityJoinController {
sortOrder = "asc",
enableEntityJoin = true,
additionalJoinColumns, // 추가 조인 컬럼 정보 (JSON 문자열)
screenEntityConfigs, // 화면별 엔티티 설정 (JSON 문자열)
userLang, // userLang은 별도로 분리하여 search에 포함되지 않도록 함
...otherParams
} = req.query;
@@ -65,6 +66,21 @@ export class EntityJoinController {
}
}
// 화면별 엔티티 설정 처리
let parsedScreenEntityConfigs: Record<string, any> = {};
if (screenEntityConfigs) {
try {
parsedScreenEntityConfigs =
typeof screenEntityConfigs === "string"
? JSON.parse(screenEntityConfigs)
: screenEntityConfigs;
logger.info("화면별 엔티티 설정 파싱 완료:", parsedScreenEntityConfigs);
} catch (error) {
logger.warn("화면별 엔티티 설정 파싱 오류:", error);
parsedScreenEntityConfigs = {};
}
}
const result = await tableManagementService.getTableDataWithEntityJoins(
tableName,
{
@@ -79,6 +95,7 @@ export class EntityJoinController {
enableEntityJoin:
enableEntityJoin === "true" || enableEntityJoin === true,
additionalJoinColumns: parsedAdditionalJoinColumns,
screenEntityConfigs: parsedScreenEntityConfigs,
}
);