거래처 에러수정
This commit is contained in:
@@ -2462,6 +2462,14 @@ export class TableManagementService {
|
||||
}>;
|
||||
screenEntityConfigs?: Record<string, any>; // 화면별 엔티티 설정
|
||||
dataFilter?: any; // 🆕 데이터 필터
|
||||
excludeFilter?: {
|
||||
enabled: boolean;
|
||||
referenceTable: string;
|
||||
referenceColumn: string;
|
||||
sourceColumn: string;
|
||||
filterColumn?: string;
|
||||
filterValue?: any;
|
||||
}; // 🆕 제외 필터 (다른 테이블에 이미 존재하는 데이터 제외)
|
||||
}
|
||||
): Promise<EntityJoinResponse> {
|
||||
const startTime = Date.now();
|
||||
@@ -2716,6 +2724,44 @@ export class TableManagementService {
|
||||
}
|
||||
}
|
||||
|
||||
// 🆕 제외 필터 적용 (다른 테이블에 이미 존재하는 데이터 제외)
|
||||
if (options.excludeFilter && options.excludeFilter.enabled) {
|
||||
const {
|
||||
referenceTable,
|
||||
referenceColumn,
|
||||
sourceColumn,
|
||||
filterColumn,
|
||||
filterValue,
|
||||
} = options.excludeFilter;
|
||||
|
||||
if (referenceTable && referenceColumn && sourceColumn) {
|
||||
// 서브쿼리로 이미 존재하는 데이터 제외
|
||||
let excludeSubquery = `main."${sourceColumn}" NOT IN (
|
||||
SELECT "${referenceColumn}" FROM "${referenceTable}"
|
||||
WHERE "${referenceColumn}" IS NOT NULL`;
|
||||
|
||||
// 추가 필터 조건이 있으면 적용 (예: 특정 거래처의 품목만 제외)
|
||||
if (filterColumn && filterValue !== undefined && filterValue !== null) {
|
||||
excludeSubquery += ` AND "${filterColumn}" = '${String(filterValue).replace(/'/g, "''")}'`;
|
||||
}
|
||||
|
||||
excludeSubquery += ")";
|
||||
|
||||
whereClause = whereClause
|
||||
? `${whereClause} AND ${excludeSubquery}`
|
||||
: excludeSubquery;
|
||||
|
||||
logger.info(`🚫 제외 필터 적용 (Entity 조인):`, {
|
||||
referenceTable,
|
||||
referenceColumn,
|
||||
sourceColumn,
|
||||
filterColumn,
|
||||
filterValue,
|
||||
excludeSubquery,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ORDER BY 절 구성
|
||||
const orderBy = options.sortBy
|
||||
? `main.${options.sortBy} ${options.sortOrder === "desc" ? "DESC" : "ASC"}`
|
||||
|
||||
Reference in New Issue
Block a user