엔티티타입 표시방식 변경
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user