diff options
Diffstat (limited to 'lib/sedp')
| -rw-r--r-- | lib/sedp/sync-form.ts | 12 | ||||
| -rw-r--r-- | lib/sedp/sync-tag-types.ts | 3 |
2 files changed, 8 insertions, 7 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; diff --git a/lib/sedp/sync-tag-types.ts b/lib/sedp/sync-tag-types.ts index abed9021..ac259cbb 100644 --- a/lib/sedp/sync-tag-types.ts +++ b/lib/sedp/sync-tag-types.ts @@ -31,6 +31,7 @@ interface LinkCode { START: number; LENGTH: number; IS_SEQ: boolean; + REG_EXPS?: string | null; } interface Attribute { @@ -260,7 +261,7 @@ async function processAndSaveTagSubfields( tagTypeCode: tagType.TYPE_ID, attributesId: attributeId, attributesDescription: attribute.DESC || attributeId, - expression: attribute.REG_EXPS || null, + expression: linkCode.REG_EXPS || null, delimiter: linkCode.DL_VAL || null, sortOrder: linkCode.SEQ || 0, updatedAt: new Date() |
