Compare commits
No commits in common. "9040faa024f32251597e7b6e47a5c86406a44009" and "4f2068a8af65784f6e409a9089d6fcf5938146f9" have entirely different histories.
9040faa024
...
4f2068a8af
|
|
@ -117,64 +117,133 @@ class TableCategoryValueService {
|
||||||
|
|
||||||
if (companyCode === "*") {
|
if (companyCode === "*") {
|
||||||
// 최고 관리자: 모든 카테고리 값 조회
|
// 최고 관리자: 모든 카테고리 값 조회
|
||||||
// 메뉴 스코프 제거: 같은 테이블.컬럼 조합은 모든 메뉴에서 공유
|
if (menuObjid && siblingObjids.length > 0) {
|
||||||
query = `
|
// 메뉴 스코프 적용
|
||||||
SELECT
|
query = `
|
||||||
value_id AS "valueId",
|
SELECT
|
||||||
table_name AS "tableName",
|
value_id AS "valueId",
|
||||||
column_name AS "columnName",
|
table_name AS "tableName",
|
||||||
value_code AS "valueCode",
|
column_name AS "columnName",
|
||||||
value_label AS "valueLabel",
|
value_code AS "valueCode",
|
||||||
value_order AS "valueOrder",
|
value_label AS "valueLabel",
|
||||||
parent_value_id AS "parentValueId",
|
value_order AS "valueOrder",
|
||||||
depth,
|
parent_value_id AS "parentValueId",
|
||||||
description,
|
depth,
|
||||||
color,
|
description,
|
||||||
icon,
|
color,
|
||||||
is_active AS "isActive",
|
icon,
|
||||||
is_default AS "isDefault",
|
is_active AS "isActive",
|
||||||
company_code AS "companyCode",
|
is_default AS "isDefault",
|
||||||
menu_objid AS "menuObjid",
|
company_code AS "companyCode",
|
||||||
created_at AS "createdAt",
|
menu_objid AS "menuObjid",
|
||||||
updated_at AS "updatedAt",
|
created_at AS "createdAt",
|
||||||
created_by AS "createdBy",
|
updated_at AS "updatedAt",
|
||||||
updated_by AS "updatedBy"
|
created_by AS "createdBy",
|
||||||
FROM table_column_category_values
|
updated_by AS "updatedBy"
|
||||||
WHERE table_name = $1
|
FROM table_column_category_values
|
||||||
AND column_name = $2
|
WHERE table_name = $1
|
||||||
`;
|
AND column_name = $2
|
||||||
params = [tableName, columnName];
|
AND menu_objid = ANY($3)
|
||||||
|
`;
|
||||||
|
params = [tableName, columnName, siblingObjids];
|
||||||
|
} else {
|
||||||
|
// 테이블 스코프 (하위 호환성)
|
||||||
|
query = `
|
||||||
|
SELECT
|
||||||
|
value_id AS "valueId",
|
||||||
|
table_name AS "tableName",
|
||||||
|
column_name AS "columnName",
|
||||||
|
value_code AS "valueCode",
|
||||||
|
value_label AS "valueLabel",
|
||||||
|
value_order AS "valueOrder",
|
||||||
|
parent_value_id AS "parentValueId",
|
||||||
|
depth,
|
||||||
|
description,
|
||||||
|
color,
|
||||||
|
icon,
|
||||||
|
is_active AS "isActive",
|
||||||
|
is_default AS "isDefault",
|
||||||
|
company_code AS "companyCode",
|
||||||
|
menu_objid AS "menuObjid",
|
||||||
|
created_at AS "createdAt",
|
||||||
|
updated_at AS "updatedAt",
|
||||||
|
created_by AS "createdBy",
|
||||||
|
updated_by AS "updatedBy"
|
||||||
|
FROM table_column_category_values
|
||||||
|
WHERE table_name = $1
|
||||||
|
AND column_name = $2
|
||||||
|
`;
|
||||||
|
params = [tableName, columnName];
|
||||||
|
}
|
||||||
logger.info("최고 관리자 카테고리 값 조회");
|
logger.info("최고 관리자 카테고리 값 조회");
|
||||||
} else {
|
} else {
|
||||||
// 일반 회사: 자신의 카테고리 값만 조회
|
// 일반 회사: 자신의 카테고리 값만 조회
|
||||||
// 메뉴 스코프 제거: 같은 테이블.컬럼 조합은 모든 메뉴에서 공유
|
if (menuObjid && siblingObjids.length > 0) {
|
||||||
query = `
|
// 메뉴 스코프 적용 + created_menu_objid 필터링
|
||||||
SELECT
|
// 현재 메뉴 스코프(형제 메뉴)에서 생성된 값만 표시
|
||||||
value_id AS "valueId",
|
query = `
|
||||||
table_name AS "tableName",
|
SELECT
|
||||||
column_name AS "columnName",
|
value_id AS "valueId",
|
||||||
value_code AS "valueCode",
|
table_name AS "tableName",
|
||||||
value_label AS "valueLabel",
|
column_name AS "columnName",
|
||||||
value_order AS "valueOrder",
|
value_code AS "valueCode",
|
||||||
parent_value_id AS "parentValueId",
|
value_label AS "valueLabel",
|
||||||
depth,
|
value_order AS "valueOrder",
|
||||||
description,
|
parent_value_id AS "parentValueId",
|
||||||
color,
|
depth,
|
||||||
icon,
|
description,
|
||||||
is_active AS "isActive",
|
color,
|
||||||
is_default AS "isDefault",
|
icon,
|
||||||
company_code AS "companyCode",
|
is_active AS "isActive",
|
||||||
menu_objid AS "menuObjid",
|
is_default AS "isDefault",
|
||||||
created_at AS "createdAt",
|
company_code AS "companyCode",
|
||||||
updated_at AS "updatedAt",
|
menu_objid AS "menuObjid",
|
||||||
created_by AS "createdBy",
|
created_menu_objid AS "createdMenuObjid",
|
||||||
updated_by AS "updatedBy"
|
created_at AS "createdAt",
|
||||||
FROM table_column_category_values
|
updated_at AS "updatedAt",
|
||||||
WHERE table_name = $1
|
created_by AS "createdBy",
|
||||||
AND column_name = $2
|
updated_by AS "updatedBy"
|
||||||
AND company_code = $3
|
FROM table_column_category_values
|
||||||
`;
|
WHERE table_name = $1
|
||||||
params = [tableName, columnName, companyCode];
|
AND column_name = $2
|
||||||
|
AND menu_objid = ANY($3)
|
||||||
|
AND company_code = $4
|
||||||
|
AND (
|
||||||
|
created_menu_objid = ANY($3) -- 형제 메뉴에서 생성된 값만
|
||||||
|
OR created_menu_objid IS NULL -- 레거시 데이터 (모든 메뉴에서 보임)
|
||||||
|
)
|
||||||
|
`;
|
||||||
|
params = [tableName, columnName, siblingObjids, companyCode];
|
||||||
|
} else {
|
||||||
|
// 테이블 스코프 (하위 호환성)
|
||||||
|
query = `
|
||||||
|
SELECT
|
||||||
|
value_id AS "valueId",
|
||||||
|
table_name AS "tableName",
|
||||||
|
column_name AS "columnName",
|
||||||
|
value_code AS "valueCode",
|
||||||
|
value_label AS "valueLabel",
|
||||||
|
value_order AS "valueOrder",
|
||||||
|
parent_value_id AS "parentValueId",
|
||||||
|
depth,
|
||||||
|
description,
|
||||||
|
color,
|
||||||
|
icon,
|
||||||
|
is_active AS "isActive",
|
||||||
|
is_default AS "isDefault",
|
||||||
|
company_code AS "companyCode",
|
||||||
|
menu_objid AS "menuObjid",
|
||||||
|
created_at AS "createdAt",
|
||||||
|
updated_at AS "updatedAt",
|
||||||
|
created_by AS "createdBy",
|
||||||
|
updated_by AS "updatedBy"
|
||||||
|
FROM table_column_category_values
|
||||||
|
WHERE table_name = $1
|
||||||
|
AND column_name = $2
|
||||||
|
AND company_code = $3
|
||||||
|
`;
|
||||||
|
params = [tableName, columnName, companyCode];
|
||||||
|
}
|
||||||
logger.info("회사별 카테고리 값 조회", { companyCode });
|
logger.info("회사별 카테고리 값 조회", { companyCode });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -268,8 +337,8 @@ class TableCategoryValueService {
|
||||||
INSERT INTO table_column_category_values (
|
INSERT INTO table_column_category_values (
|
||||||
table_name, column_name, value_code, value_label, value_order,
|
table_name, column_name, value_code, value_label, value_order,
|
||||||
parent_value_id, depth, description, color, icon,
|
parent_value_id, depth, description, color, icon,
|
||||||
is_active, is_default, company_code, menu_objid, created_by
|
is_active, is_default, company_code, menu_objid, created_menu_objid, created_by
|
||||||
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15)
|
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16)
|
||||||
RETURNING
|
RETURNING
|
||||||
value_id AS "valueId",
|
value_id AS "valueId",
|
||||||
table_name AS "tableName",
|
table_name AS "tableName",
|
||||||
|
|
@ -286,6 +355,7 @@ class TableCategoryValueService {
|
||||||
is_default AS "isDefault",
|
is_default AS "isDefault",
|
||||||
company_code AS "companyCode",
|
company_code AS "companyCode",
|
||||||
menu_objid AS "menuObjid",
|
menu_objid AS "menuObjid",
|
||||||
|
created_menu_objid AS "createdMenuObjid",
|
||||||
created_at AS "createdAt",
|
created_at AS "createdAt",
|
||||||
created_by AS "createdBy"
|
created_by AS "createdBy"
|
||||||
`;
|
`;
|
||||||
|
|
@ -305,6 +375,7 @@ class TableCategoryValueService {
|
||||||
value.isDefault || false,
|
value.isDefault || false,
|
||||||
companyCode,
|
companyCode,
|
||||||
menuObjid, // ← 메뉴 OBJID 저장
|
menuObjid, // ← 메뉴 OBJID 저장
|
||||||
|
menuObjid, // ← 🆕 생성 메뉴 OBJID 저장 (같은 값)
|
||||||
userId,
|
userId,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue