엔티티타입 표시방식 변경

This commit is contained in:
kjs
2025-09-23 17:43:24 +09:00
parent 28109eb63b
commit a757034d86
2 changed files with 232 additions and 43 deletions

View File

@@ -59,9 +59,14 @@ export class EntityJoinService {
let separator = " - ";
if (screenConfig && screenConfig.displayColumns) {
// 화면에서 설정된 표시 컬럼들 사용
// 화면에서 설정된 표시 컬럼들 사용 (기본 테이블 + 조인 테이블 조합 지원)
displayColumns = screenConfig.displayColumns;
separator = screenConfig.separator || " - ";
console.log(`🎯 화면별 엔티티 설정 적용: ${column.column_name}`, {
displayColumns,
separator,
screenConfig,
});
} else if (column.display_column) {
// 기존 설정된 단일 표시 컬럼 사용
displayColumns = [column.display_column];
@@ -163,12 +168,51 @@ export class EntityJoinService {
if (displayColumns.length === 1) {
// 단일 컬럼인 경우
return `COALESCE(${alias}.${displayColumns[0]}, '') AS ${config.aliasColumn}`;
const col = displayColumns[0];
const isJoinTableColumn = [
"dept_name",
"dept_code",
"master_user_id",
"location_name",
"parent_dept_code",
"master_sabun",
"location",
"data_type",
].includes(col);
if (isJoinTableColumn) {
return `COALESCE(${alias}.${col}, '') AS ${config.aliasColumn}`;
} else {
return `COALESCE(main.${col}, '') AS ${config.aliasColumn}`;
}
} else {
// 여러 컬럼인 경우 CONCAT으로 연결
// 기본 테이블과 조인 테이블의 컬럼을 구분해서 처리
const concatParts = displayColumns
.map((col) => `COALESCE(${alias}.${col}, '')`)
.map((col) => {
// 조인 테이블의 컬럼인지 확인 (조인 테이블에 존재하는 컬럼만 조인 별칭 사용)
// 현재는 dept_info 테이블의 컬럼들을 확인
const isJoinTableColumn = [
"dept_name",
"dept_code",
"master_user_id",
"location_name",
"parent_dept_code",
"master_sabun",
"location",
"data_type",
].includes(col);
if (isJoinTableColumn) {
// 조인 테이블 컬럼은 조인 별칭 사용
return `COALESCE(${alias}.${col}, '')`;
} else {
// 기본 테이블 컬럼은 main 별칭 사용
return `COALESCE(main.${col}, '')`;
}
})
.join(`, '${separator}', `);
return `CONCAT(${concatParts}) AS ${config.aliasColumn}`;
}
})
@@ -237,6 +281,15 @@ export class EntityJoinService {
try {
const strategies = await Promise.all(
joinConfigs.map(async (config) => {
// 여러 컬럼을 조합하는 경우 캐시 전략 사용 불가
if (config.displayColumns && config.displayColumns.length > 1) {
console.log(
`🎯 여러 컬럼 조합으로 인해 조인 전략 사용: ${config.sourceColumn}`,
config.displayColumns
);
return "join";
}
// 참조 테이블의 캐시 가능성 확인
const cachedData = await referenceCacheService.getCachedReference(
config.referenceTable,