diff options
Diffstat (limited to 'lib/forms')
| -rw-r--r-- | lib/forms/services.ts | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/lib/forms/services.ts b/lib/forms/services.ts index e2aa27ec..34bad300 100644 --- a/lib/forms/services.ts +++ b/lib/forms/services.ts @@ -474,6 +474,48 @@ export async function findContractItemId(contractId: number, formCode: string): } } +export async function getPackageCodeById(contractItemId: number): Promise<string | null> { + try { + + // 1. forms 테이블에서 formCode에 해당하는 모든 레코드 조회 + const contractItemsResult = await db + .select({ + itemId: contractItems.itemId + }) + .from(contractItems) + .where(eq(contractItems.id, contractItemId)) + .limit(1) + ; + + if (contractItemsResult.length === 0) { + console.warn(`[contractItemId]에 해당하는 item을 찾을 수 없습니다.`); + return null; + } + + const itemId = contractItemsResult[0].itemId + + const packageCodeResult = await db + .select({ + packageCode: items.packageCode + }) + .from(items) + .where(eq(items.id, itemId)) + .limit(1); + + if (packageCodeResult.length === 0) { + console.warn(`${itemId}와 일치하는 패키지 코드를 찾을 수 없습니다.`); + return null; + } + + const packageCode = packageCodeResult[0].packageCode; + + return packageCode; + } catch (error) { + console.error(`패키지 코드 조회 중 오류 발생:`, error); + return null; + } +} + export async function syncMissingTags( contractItemId: number, @@ -1044,6 +1086,7 @@ interface SEDPAttribute { VALUE: any; UOM: string; UOM_ID?: string; + CLS_ID?:string; } interface SEDPDataItem { @@ -1219,7 +1262,7 @@ async function transformDataToSEDPFormat( TAG_DESC: row.TAG_DESC || "", ATTRIBUTES: [], // SCOPE: objectCode, - SCOPE: formCode, + SCOPE: packageCode, TOOLID: "eVCP", // Changed from VDCS ITM_NO: row.TAG_NO || "", OP_DELETE: false, @@ -1351,6 +1394,21 @@ export async function getProjectCodeById(projectId: number): Promise<string> { return projectRecord[0].code; } +export async function getProjectById(projectId: number): Promise<{ code: string; type: string; }> { + const projectRecord = await db + .select({ code: projects.code , type:projects.type}) + .from(projects) + .where(eq(projects.id, projectId)) + .limit(1); + + if (!projectRecord || projectRecord.length === 0) { + throw new Error(`Project not found with ID: ${projectId}`); + } + + return projectRecord[0]; +} + + /** * Send data to SEDP */ @@ -1543,7 +1601,7 @@ export async function deleteFormDataByTags({ }> { try { // 입력 검증 - if (!formCode || !contractItemId || !Array.isArray(tagIdxs) || TAG_IDX.length === 0) { + if (!formCode || !contractItemId || !Array.isArray(tagIdxs) || tagIdxs.length === 0) { return { error: "Missing required parameters: formCode, contractItemId, tagIdxs", } |
