채번 복사 오류 수정
This commit is contained in:
parent
09f477172c
commit
961e7e9a14
|
|
@ -756,9 +756,10 @@ export class MenuCopyService {
|
||||||
[menuScopedRuleIds]
|
[menuScopedRuleIds]
|
||||||
);
|
);
|
||||||
// 채번 규칙 삭제
|
// 채번 규칙 삭제
|
||||||
await client.query(`DELETE FROM numbering_rules WHERE rule_id = ANY($1)`, [
|
await client.query(
|
||||||
menuScopedRuleIds,
|
`DELETE FROM numbering_rules WHERE rule_id = ANY($1)`,
|
||||||
]);
|
[menuScopedRuleIds]
|
||||||
|
);
|
||||||
logger.info(
|
logger.info(
|
||||||
` ✅ 메뉴 전용 채번 규칙 삭제: ${menuScopedRuleIds.length}개`
|
` ✅ 메뉴 전용 채번 규칙 삭제: ${menuScopedRuleIds.length}개`
|
||||||
);
|
);
|
||||||
|
|
@ -2370,12 +2371,10 @@ export class MenuCopyService {
|
||||||
return { copiedCount, ruleIdMap };
|
return { copiedCount, ruleIdMap };
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 대상 회사에 이미 존재하는 채번 규칙 한 번에 조회
|
// 2. 대상 회사에 이미 존재하는 모든 채번 규칙 조회 (원본 ID + 새로 생성될 ID 모두 체크 필요)
|
||||||
const ruleIds = allRulesResult.rows.map((r) => r.rule_id);
|
|
||||||
const existingRulesResult = await client.query(
|
const existingRulesResult = await client.query(
|
||||||
`SELECT rule_id FROM numbering_rules
|
`SELECT rule_id FROM numbering_rules WHERE company_code = $1`,
|
||||||
WHERE rule_id = ANY($1) AND company_code = $2`,
|
[targetCompanyCode]
|
||||||
[ruleIds, targetCompanyCode]
|
|
||||||
);
|
);
|
||||||
const existingRuleIds = new Set(
|
const existingRuleIds = new Set(
|
||||||
existingRulesResult.rows.map((r) => r.rule_id)
|
existingRulesResult.rows.map((r) => r.rule_id)
|
||||||
|
|
@ -2389,28 +2388,49 @@ export class MenuCopyService {
|
||||||
const rulesToUpdate: Array<{ ruleId: string; newMenuObjid: number }> = [];
|
const rulesToUpdate: Array<{ ruleId: string; newMenuObjid: number }> = [];
|
||||||
|
|
||||||
for (const rule of allRulesResult.rows) {
|
for (const rule of allRulesResult.rows) {
|
||||||
|
// 새 rule_id 계산: 회사코드 접두사 제거 후 대상 회사코드 추가
|
||||||
|
// 예: COMPANY_10_rule-123 -> rule-123 -> COMPANY_16_rule-123
|
||||||
|
// 예: rule-123 -> rule-123 -> COMPANY_16_rule-123
|
||||||
|
// 예: WACE_품목코드 -> 품목코드 -> COMPANY_16_품목코드
|
||||||
|
let baseName = rule.rule_id;
|
||||||
|
|
||||||
|
// 회사코드 접두사 패턴들을 순서대로 제거 시도
|
||||||
|
// 1. COMPANY_숫자_ 패턴 (예: COMPANY_10_)
|
||||||
|
// 2. 일반 접두사_ 패턴 (예: WACE_)
|
||||||
|
if (baseName.match(/^COMPANY_\d+_/)) {
|
||||||
|
baseName = baseName.replace(/^COMPANY_\d+_/, "");
|
||||||
|
} else if (baseName.includes("_")) {
|
||||||
|
baseName = baseName.replace(/^[^_]+_/, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
const newRuleId = `${targetCompanyCode}_${baseName}`;
|
||||||
|
|
||||||
if (existingRuleIds.has(rule.rule_id)) {
|
if (existingRuleIds.has(rule.rule_id)) {
|
||||||
// 기존 규칙은 동일한 ID로 매핑
|
// 원본 ID가 이미 존재 (동일한 ID로 매핑)
|
||||||
ruleIdMap.set(rule.rule_id, rule.rule_id);
|
ruleIdMap.set(rule.rule_id, rule.rule_id);
|
||||||
|
|
||||||
// 새 메뉴 ID로 연결 업데이트 필요
|
|
||||||
const newMenuObjid = menuIdMap.get(rule.menu_objid);
|
const newMenuObjid = menuIdMap.get(rule.menu_objid);
|
||||||
if (newMenuObjid) {
|
if (newMenuObjid) {
|
||||||
rulesToUpdate.push({ ruleId: rule.rule_id, newMenuObjid });
|
rulesToUpdate.push({ ruleId: rule.rule_id, newMenuObjid });
|
||||||
}
|
}
|
||||||
|
logger.info(` ♻️ 채번규칙 이미 존재 (원본 ID): ${rule.rule_id}`);
|
||||||
|
} else if (existingRuleIds.has(newRuleId)) {
|
||||||
|
// 새로 생성될 ID가 이미 존재 (기존 규칙으로 매핑)
|
||||||
|
ruleIdMap.set(rule.rule_id, newRuleId);
|
||||||
|
|
||||||
|
const newMenuObjid = menuIdMap.get(rule.menu_objid);
|
||||||
|
if (newMenuObjid) {
|
||||||
|
rulesToUpdate.push({ ruleId: newRuleId, newMenuObjid });
|
||||||
|
}
|
||||||
logger.info(
|
logger.info(
|
||||||
` ♻️ 채번규칙 이미 존재 (메뉴 연결 갱신): ${rule.rule_id}`
|
` ♻️ 채번규칙 이미 존재 (대상 ID): ${rule.rule_id} -> ${newRuleId}`
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// 새 rule_id 생성
|
// 새로 복사 필요
|
||||||
const originalSuffix = rule.rule_id.includes("_")
|
|
||||||
? rule.rule_id.replace(/^[^_]*_/, "")
|
|
||||||
: rule.rule_id;
|
|
||||||
const newRuleId = `${targetCompanyCode}_${originalSuffix}`;
|
|
||||||
|
|
||||||
ruleIdMap.set(rule.rule_id, newRuleId);
|
ruleIdMap.set(rule.rule_id, newRuleId);
|
||||||
originalToNewRuleMap.push({ original: rule.rule_id, new: newRuleId });
|
originalToNewRuleMap.push({ original: rule.rule_id, new: newRuleId });
|
||||||
rulesToCopy.push({ ...rule, newRuleId });
|
rulesToCopy.push({ ...rule, newRuleId });
|
||||||
|
logger.info(` 📋 채번규칙 복사 예정: ${rule.rule_id} -> ${newRuleId}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue