From defda07c0bb4b0bd444ca8dc4fd3f89322bda0ce Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 3 Oct 2025 04:48:47 +0000 Subject: (대표님) edp, tbe, dolce 등 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/forms/stat.ts | 50 ++++++-------------------------------------------- 1 file changed, 6 insertions(+), 44 deletions(-) (limited to 'lib/forms') diff --git a/lib/forms/stat.ts b/lib/forms/stat.ts index 054f2462..f13bab61 100644 --- a/lib/forms/stat.ts +++ b/lib/forms/stat.ts @@ -218,39 +218,13 @@ export async function getVendorFormStatus(projectId?: number): Promise { +export async function getFormStatusByVendor(projectId: number, contractItemId: number, formCode: string): Promise { try { const session = await getServerSession(authOptions) if (!session?.user?.id) { throw new Error("인증이 필요합니다.") } - const vendorStatusList: FormStatusByVendor[] = [] - const vendorId = Number(session.user.companyId) - - const vendorContracts = await db - .select({ - id: contracts.id, - projectId: contracts.projectId - }) - .from(contracts) - .where( - and( - eq(contracts.vendorId, vendorId), - eq(contracts.projectId, projectId) - ) - ) - - const contractIds = vendorContracts.map(v => v.id) - - const contractItemsList = await db - .select({ - id: contractItems.id - }) - .from(contractItems) - .where(inArray(contractItems.contractId, contractIds)) - - const contractItemIds = contractItemsList.map(v => v.id) let vendorFormCount = 0 let vendorTagCount = 0 @@ -277,7 +251,7 @@ export async function getFormStatusByVendor(projectId: number, formCode: string) .from(forms) .where( and( - inArray(forms.contractItemId, contractItemIds), + eq(forms.contractItemId, contractItemId), eq(forms.formCode, formCode) ) ) @@ -294,28 +268,16 @@ export async function getFormStatusByVendor(projectId: number, formCode: string) .from(formEntries) .where( and( - inArray(formEntries.contractItemId, contractItemIds), + eq(formEntries.contractItemId, contractItemId), eq(formEntries.formCode, formCode) ) ) // 6. TAG별 편집 가능 필드 조회 - const editableFieldsByTag = new Map() - - for (const contractItemId of contractItemIds) { - const tagFields = await getEditableFieldsByTag(contractItemId, projectId) - - tagFields.forEach((fields, tagNo) => { - if (!editableFieldsByTag.has(tagNo)) { - editableFieldsByTag.set(tagNo, fields) - } else { - const existingFields = editableFieldsByTag.get(tagNo) || [] - const mergedFields = [...new Set([...existingFields, ...fields])] - editableFieldsByTag.set(tagNo, mergedFields) - } - }) - } + const editableFieldsByTag = await getEditableFieldsByTag(contractItemId, projectId) + const vendorStatusList: VendorFormStatus[] = [] + for (const entry of entriesList) { const metaResult = await db .select({ -- cgit v1.2.3