summaryrefslogtreecommitdiff
path: root/lib/forms/services.ts
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-08-13 11:05:09 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-08-13 11:05:09 +0000
commit33be47506f0aa62b969d82521580a29e95080268 (patch)
tree6b7e232f2d78ef8775944ea085a36b3ccbce7d95 /lib/forms/services.ts
parent2ac95090157c355ea1bd0b8eb1e1e5e2bd56faf4 (diff)
(대표님) 입찰, 법무검토, EDP 변경사항 대응, dolce 개선, form-data 개선, 정규업체 등록관리 추가
(최겸) pq 미사용 컴포넌트 및 페이지 제거, 파일 라우트에 pq 적용
Diffstat (limited to 'lib/forms/services.ts')
-rw-r--r--lib/forms/services.ts62
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",
}