diff options
Diffstat (limited to 'lib/forms/services.ts')
| -rw-r--r-- | lib/forms/services.ts | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/lib/forms/services.ts b/lib/forms/services.ts index 021bb767..0558e83f 100644 --- a/lib/forms/services.ts +++ b/lib/forms/services.ts @@ -27,6 +27,7 @@ import { getErrorMessage } from "../handle-error"; import { DataTableColumnJSON } from "@/components/form-data/form-data-table-columns"; import { contractItems, contracts, items, projects } from "@/db/schema"; import { getSEDPToken } from "../sedp/sedp-token"; +import { decryptWithServerAction } from "@/components/drm/drmUtils"; export type FormInfo = InferSelectModel<typeof forms>; @@ -47,9 +48,9 @@ export async function getFormsByContractItemId( try { // return unstable_cache( // async () => { - console.log( - `[Forms Service] Fetching forms for contractItemId: ${contractItemId}, mode: ${mode}` - ); + // console.log( + // `[Forms Service] Fetching forms for contractItemId: ${contractItemId}, mode: ${mode}` + // ); try { // 쿼리 생성 @@ -227,10 +228,9 @@ async function getEditableFieldsByTag( * 그리고 이 로직 전체를 unstable_cache로 감싸 캐싱. */ export async function getFormData(formCode: string, contractItemId: number) { - const cacheKey = `form-data-${formCode}-${contractItemId}`; - console.log(cacheKey, "getFormData") try { + // 기존 로직으로 projectId, columns, data 가져오기 const contractItemResult = await db .select({ @@ -285,6 +285,8 @@ export async function getFormData(formCode: string, contractItemId: number) { const excludeKeys = ['BF_TAG_NO', 'TAG_TYPE_ID', 'PIC_NO']; columns = columns.filter(col => !excludeKeys.includes(col.key)); + + columns.forEach((col) => { if (!col.displayLabel) { if (col.uom) { @@ -295,25 +297,24 @@ export async function getFormData(formCode: string, contractItemId: number) { } }); - // status 컬럼 추가 columns.push({ - key: "status", - label: "status", - displayLabel: "Status", - type: "STRING" - }); + key:"status", + label:"status", + displayLabel:"Status", + type:"STRING" + }) let data: Array<Record<string, any>> = []; if (entry) { if (Array.isArray(entry.data)) { data = entry.data; - data.sort((a, b) => { + data.sort((a,b) => { const statusA = a.status || ''; const statusB = b.status || ''; - return statusB.localeCompare(statusA); - }); - + return statusB.localeCompare(statusA) + }) + } else { console.warn("formEntries data was not an array. Using empty array."); } @@ -382,7 +383,7 @@ export async function getFormData(formCode: string, contractItemId: number) { const entry = entryRows[0] ?? null; let columns = meta.columns as DataTableColumnJSON[]; - const excludeKeys = ['BF_TAG_NO', 'TAG_TYPE_ID', 'PIC_NO']; + const excludeKeys = [ 'BF_TAG_NO', 'TAG_TYPE_ID', 'PIC_NO']; columns = columns.filter(col => !excludeKeys.includes(col.key)); columns.forEach((col) => { @@ -693,7 +694,7 @@ export async function updateFormDataInDB( ...oldItem, ...newData, TAG_NO: oldItem.TAG_NO, // TAG_NO 변경 불가 시 유지 - status: "Imported from EXCEL" // Excel에서 가져온 데이터임을 표시 + status: "Updated" // Excel에서 가져온 데이터임을 표시 }; const updatedArray = [...dataArray]; @@ -894,7 +895,8 @@ export async function uploadReportTemp( const savePath = path.join(baseDir, uniqueName); - const arrayBuffer = await file.arrayBuffer(); + // const arrayBuffer = await file.arrayBuffer(); + const arrayBuffer = await decryptWithServerAction(file); const buffer = Buffer.from(arrayBuffer); await fs.mkdir(baseDir, { recursive: true }); |
