Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into feature/v2-unified-renewal
This commit is contained in:
@@ -243,6 +243,28 @@ export async function syncScreenGroupsToMenu(
|
||||
[groupId, menuObjid]
|
||||
);
|
||||
|
||||
// 해당 그룹에 연결된 기본 화면으로 URL 항상 업데이트 (화면 재생성 시에도 반영)
|
||||
const defaultScreenQuery = `
|
||||
SELECT sd.screen_id, sd.screen_code, sd.screen_name
|
||||
FROM screen_group_screens sgs
|
||||
JOIN screen_definitions sd ON sgs.screen_id = sd.screen_id
|
||||
WHERE sgs.group_id = $1 AND sgs.company_code = $2
|
||||
ORDER BY
|
||||
CASE WHEN sgs.is_default = 'Y' THEN 0 ELSE 1 END,
|
||||
sgs.display_order ASC
|
||||
LIMIT 1
|
||||
`;
|
||||
const defaultScreenResult = await client.query(defaultScreenQuery, [groupId, companyCode]);
|
||||
if (defaultScreenResult.rows.length > 0) {
|
||||
const defaultScreen = defaultScreenResult.rows[0];
|
||||
const newMenuUrl = `/screens/${defaultScreen.screen_id}`;
|
||||
await client.query(
|
||||
`UPDATE menu_info SET menu_url = $1, screen_code = $2 WHERE objid = $3`,
|
||||
[newMenuUrl, defaultScreen.screen_code, menuObjid]
|
||||
);
|
||||
logger.info("메뉴 URL 업데이트", { groupName, screenId: defaultScreen.screen_id, menuUrl: newMenuUrl });
|
||||
}
|
||||
|
||||
groupToMenuMap.set(groupId, menuObjid);
|
||||
result.linked++;
|
||||
result.details.push({
|
||||
@@ -286,12 +308,34 @@ export async function syncScreenGroupsToMenu(
|
||||
nextSeq = parseInt(maxSeqResult.rows[0].next_seq) || 1;
|
||||
}
|
||||
|
||||
// 해당 그룹에 연결된 기본 화면 조회 (is_default = 'Y' 우선, 없으면 첫 번째 화면)
|
||||
let menuUrl: string | null = null;
|
||||
let screenCode: string | null = null;
|
||||
const defaultScreenQuery2 = `
|
||||
SELECT sd.screen_id, sd.screen_code, sd.screen_name
|
||||
FROM screen_group_screens sgs
|
||||
JOIN screen_definitions sd ON sgs.screen_id = sd.screen_id
|
||||
WHERE sgs.group_id = $1 AND sgs.company_code = $2
|
||||
ORDER BY
|
||||
CASE WHEN sgs.is_default = 'Y' THEN 0 ELSE 1 END,
|
||||
sgs.display_order ASC
|
||||
LIMIT 1
|
||||
`;
|
||||
const defaultScreenResult2 = await client.query(defaultScreenQuery2, [groupId, companyCode]);
|
||||
if (defaultScreenResult2.rows.length > 0) {
|
||||
const defaultScreen = defaultScreenResult2.rows[0];
|
||||
screenCode = defaultScreen.screen_code;
|
||||
menuUrl = `/screens/${defaultScreen.screen_id}`;
|
||||
logger.info("기본 화면 URL 설정", { groupName, screenId: defaultScreen.screen_id, menuUrl });
|
||||
}
|
||||
|
||||
// menu_info에 삽입
|
||||
const insertMenuQuery = `
|
||||
INSERT INTO menu_info (
|
||||
objid, parent_obj_id, menu_name_kor, menu_name_eng,
|
||||
seq, menu_type, company_code, writer, regdate, status, screen_group_id, menu_desc
|
||||
) VALUES ($1, $2, $3, $4, $5, 1, $6, $7, NOW(), 'active', $8, $9)
|
||||
seq, menu_type, company_code, writer, regdate, status, screen_group_id, menu_desc,
|
||||
menu_url, screen_code
|
||||
) VALUES ($1, $2, $3, $4, $5, 1, $6, $7, NOW(), 'active', $8, $9, $10, $11)
|
||||
RETURNING objid
|
||||
`;
|
||||
await client.query(insertMenuQuery, [
|
||||
@@ -304,6 +348,8 @@ export async function syncScreenGroupsToMenu(
|
||||
userId,
|
||||
groupId,
|
||||
group.description || null,
|
||||
menuUrl,
|
||||
screenCode,
|
||||
]);
|
||||
|
||||
// screen_groups에 menu_objid 업데이트
|
||||
@@ -336,7 +382,13 @@ export async function syncScreenGroupsToMenu(
|
||||
|
||||
} catch (error: any) {
|
||||
await client.query('ROLLBACK');
|
||||
logger.error("화면관리 → 메뉴 동기화 실패", { companyCode, error: error.message });
|
||||
logger.error("화면관리 → 메뉴 동기화 실패", {
|
||||
companyCode,
|
||||
error: error.message,
|
||||
stack: error.stack,
|
||||
code: error.code,
|
||||
detail: error.detail,
|
||||
});
|
||||
result.success = false;
|
||||
result.errors.push(error.message);
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user