Compare commits
No commits in common. "a69b135b6550e4e89d9cdbab928f8b36db4d5ce9" and "5b6b4be73c6c35194e2ffeae5b4748d4d62a1cb4" have entirely different histories.
a69b135b65
...
5b6b4be73c
|
|
@ -124,10 +124,7 @@ export async function syncScreenGroupsToMenu(
|
||||||
// 모든 메뉴의 objid 집합 (삭제 확인용)
|
// 모든 메뉴의 objid 집합 (삭제 확인용)
|
||||||
const existingMenuObjids = new Set(existingMenusResult.rows.map((m: any) => Number(m.objid)));
|
const existingMenuObjids = new Set(existingMenusResult.rows.map((m: any) => Number(m.objid)));
|
||||||
|
|
||||||
// 3. objid 충돌 방지: 순차 카운터 사용
|
// 3. 사용자 메뉴의 루트 찾기 (parent_obj_id = 0인 사용자 메뉴)
|
||||||
let nextObjid = Date.now();
|
|
||||||
|
|
||||||
// 4. 사용자 메뉴의 루트 찾기 (parent_obj_id = 0인 사용자 메뉴)
|
|
||||||
// 없으면 생성
|
// 없으면 생성
|
||||||
let userMenuRootObjid: number | null = null;
|
let userMenuRootObjid: number | null = null;
|
||||||
const rootMenuQuery = `
|
const rootMenuQuery = `
|
||||||
|
|
@ -141,18 +138,19 @@ export async function syncScreenGroupsToMenu(
|
||||||
if (rootMenuResult.rows.length > 0) {
|
if (rootMenuResult.rows.length > 0) {
|
||||||
userMenuRootObjid = Number(rootMenuResult.rows[0].objid);
|
userMenuRootObjid = Number(rootMenuResult.rows[0].objid);
|
||||||
} else {
|
} else {
|
||||||
const rootObjid = nextObjid++;
|
// 루트 메뉴가 없으면 생성
|
||||||
|
const newObjid = Date.now();
|
||||||
const createRootQuery = `
|
const createRootQuery = `
|
||||||
INSERT INTO menu_info (objid, parent_obj_id, menu_name_kor, menu_name_eng, seq, menu_type, company_code, writer, regdate, status)
|
INSERT INTO menu_info (objid, parent_obj_id, menu_name_kor, menu_name_eng, seq, menu_type, company_code, writer, regdate, status)
|
||||||
VALUES ($1, 0, '사용자', 'User', 1, 1, $2, $3, NOW(), 'active')
|
VALUES ($1, 0, '사용자', 'User', 1, 1, $2, $3, NOW(), 'active')
|
||||||
RETURNING objid
|
RETURNING objid
|
||||||
`;
|
`;
|
||||||
const createRootResult = await client.query(createRootQuery, [rootObjid, companyCode, userId]);
|
const createRootResult = await client.query(createRootQuery, [newObjid, companyCode, userId]);
|
||||||
userMenuRootObjid = Number(createRootResult.rows[0].objid);
|
userMenuRootObjid = Number(createRootResult.rows[0].objid);
|
||||||
logger.info("사용자 메뉴 루트 생성", { companyCode, objid: userMenuRootObjid });
|
logger.info("사용자 메뉴 루트 생성", { companyCode, objid: userMenuRootObjid });
|
||||||
}
|
}
|
||||||
|
|
||||||
// 5. screen_groups ID → menu_objid 매핑 (순차 처리를 위해)
|
// 4. screen_groups ID → menu_objid 매핑 (순차 처리를 위해)
|
||||||
const groupToMenuMap: Map<number, number> = new Map();
|
const groupToMenuMap: Map<number, number> = new Map();
|
||||||
|
|
||||||
// screen_groups의 부모 이름 조회를 위한 매핑
|
// screen_groups의 부모 이름 조회를 위한 매핑
|
||||||
|
|
@ -282,7 +280,7 @@ export async function syncScreenGroupsToMenu(
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// 새 메뉴 생성
|
// 새 메뉴 생성
|
||||||
const newObjid = nextObjid++;
|
const newObjid = Date.now() + groupId; // 고유 ID 보장
|
||||||
|
|
||||||
// 부모 메뉴 objid 결정
|
// 부모 메뉴 objid 결정
|
||||||
// 우선순위: groupToMenuMap > parent_menu_objid (존재 확인 필수)
|
// 우선순위: groupToMenuMap > parent_menu_objid (존재 확인 필수)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue