summaryrefslogtreecommitdiff
path: root/lib/sedp/sync-form.ts
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-07-15 00:50:39 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-07-15 00:50:39 +0000
commit15c3ae6536c264db0508e4fc4aaa59c3e6d1af30 (patch)
tree8e2ad5e6a06999bfaaf00ab4ee30083a87050bad /lib/sedp/sync-form.ts
parentd5d27847a7eded9db59462fa744b76772bc9ce1d (diff)
(대표님) 기본계약 및 정기평가 작업사항, OCR 변경사항
Diffstat (limited to 'lib/sedp/sync-form.ts')
-rw-r--r--lib/sedp/sync-form.ts12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/sedp/sync-form.ts b/lib/sedp/sync-form.ts
index 0606f4a9..87de4645 100644
--- a/lib/sedp/sync-form.ts
+++ b/lib/sedp/sync-form.ts
@@ -891,12 +891,12 @@ async function getContractItemsByItemCodes(itemCodes: string[], projectId: numbe
for (const item of itemRecords) {
// itemCode가 null이 아닌 경우에만 처리
- if (item.itemCode) {
+ if (item.packageCode) {
const matchedContractItems = contractItemRecords.filter(ci => ci.itemId === item.id);
if (matchedContractItems.length > 0) {
// 일치하는 모든 contractItem을 배열로 저장
const contractItemIds = matchedContractItems.map(ci => ci.id);
- itemCodeToContractItemIds.set(item.itemCode, contractItemIds);
+ itemCodeToContractItemIds.set(item.packageCode, contractItemIds);
}
}
}
@@ -1062,17 +1062,17 @@ export async function saveFormMappingsAndMetas(
await tx.delete(formMetas).where(eq(formMetas.projectId, projectId));
if (contractItemIdsWithForms.size) await tx.delete(forms).where(inArray(forms.contractItemId, [...contractItemIdsWithForms]));
- const savedMappings = mappingsToSave.length ? await tx.insert(tagTypeClassFormMappings).values(mappingsToSave).returning({ id: tagTypeClassFormMappings.id, formCode: tagTypeClassFormMappings.formCode }) : [];
+ const savedMappings = mappingsToSave.length ? await tx.insert(tagTypeClassFormMappings).values(mappingsToSave).onConflictDoNothing().returning({ id: tagTypeClassFormMappings.id, formCode: tagTypeClassFormMappings.formCode }) : [];
totalSaved += mappingsToSave.length;
if (savedMappings.length) {
const rows: any[] = [];
savedMappings.forEach(m => (templateDataByFormCode.get(m.formCode) || []).forEach(t => rows.push({ formMappingId: m.id, tmplId: t.TMPL_ID, name: t.NAME, tmplType: t.TMPL_TYPE, sprLstSetup: t.SPR_LST_SETUP, grdLstSetup: t.GRD_LST_SETUP, sprItmLstSetup: t.SPR_ITM_LST_SETUP, description: `Template for form ${m.formCode}`, isActive: true, createdAt: new Date(), updatedAt: new Date() })));
- if (rows.length) { await tx.insert(templateItems).values(rows); totalSaved += rows.length; }
+ if (rows.length) { await tx.insert(templateItems).values(rows).onConflictDoNothing(); totalSaved += rows.length; }
}
- if (formMetasToSave.length) { await tx.insert(formMetas).values(formMetasToSave); totalSaved += formMetasToSave.length; }
- if (formsToSave.length) { await tx.insert(forms).values(formsToSave); totalSaved += formsToSave.length; }
+ if (formMetasToSave.length) { await tx.insert(formMetas).values(formMetasToSave).onConflictDoNothing(); totalSaved += formMetasToSave.length; }
+ if (formsToSave.length) { await tx.insert(forms).values(formsToSave).onConflictDoNothing(); totalSaved += formsToSave.length; }
});
return totalSaved;