summaryrefslogtreecommitdiff
path: root/lib/vendor-document-list/enhanced-document-service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendor-document-list/enhanced-document-service.ts')
-rw-r--r--lib/vendor-document-list/enhanced-document-service.ts68
1 files changed, 40 insertions, 28 deletions
diff --git a/lib/vendor-document-list/enhanced-document-service.ts b/lib/vendor-document-list/enhanced-document-service.ts
index 43eea6eb..e5cce1b1 100644
--- a/lib/vendor-document-list/enhanced-document-service.ts
+++ b/lib/vendor-document-list/enhanced-document-service.ts
@@ -1139,38 +1139,50 @@ export async function getDocumentDetails(documentId: number) {
const companyId = session?.user?.companyId;
- if (!companyId) {
- return { stats: {}, totalDocuments: 0, primaryDrawingKind: null }
- }
+ if (!companyId) {
+ return { stats: {}, totalDocuments: 0, primaryDrawingKind: null, b4Stats: { gttDeliverableCount: 0, shiInputCount: 0 } }
+ }
- // DrawingKind별 통계 조회
- const documents = await db
- .select({
- drawingKind: simplifiedDocumentsView.drawingKind,
- })
- .from(simplifiedDocumentsView)
- .where(eq(simplifiedDocumentsView.vendorId, Number(companyId)))
-
- // 통계 계산
- const stats = documents.reduce((acc, doc) => {
- if (doc.drawingKind) {
- acc[doc.drawingKind] = (acc[doc.drawingKind] || 0) + 1
- }
- return acc
- }, {} as Record<string, number>)
-
- // 가장 많은 DrawingKind 찾기
- const primaryDrawingKind = Object.entries(stats)
- .sort(([,a], [,b]) => b - a)[0]?.[0] as 'B3' | 'B4' | 'B5' | undefined
-
- return {
- stats,
- totalDocuments: documents.length,
- primaryDrawingKind: primaryDrawingKind || null
+ // DrawingKind별 통계 조회 (B4의 경우 drawingMoveGbn도 함께 조회)
+ const documents = await db
+ .select({
+ drawingKind: simplifiedDocumentsView.drawingKind,
+ drawingMoveGbn: simplifiedDocumentsView.drawingMoveGbn,
+ })
+ .from(simplifiedDocumentsView)
+ .where(eq(simplifiedDocumentsView.vendorId, Number(companyId)))
+
+ // 통계 계산
+ const stats = documents.reduce((acc, doc) => {
+ if (doc.drawingKind) {
+ acc[doc.drawingKind] = (acc[doc.drawingKind] || 0) + 1
}
+ return acc
+ }, {} as Record<string, number>)
+
+ // B4 세부 통계 계산 (GTT Deliverable vs SHI Input)
+ const b4Stats = {
+ gttDeliverableCount: documents.filter(doc =>
+ doc.drawingKind === 'B4' && doc.drawingMoveGbn === '도면입수'
+ ).length,
+ shiInputCount: documents.filter(doc =>
+ doc.drawingKind === 'B4' && doc.drawingMoveGbn === '도면제출'
+ ).length,
+ }
+
+ // 가장 많은 DrawingKind 찾기
+ const primaryDrawingKind = Object.entries(stats)
+ .sort(([,a], [,b]) => b - a)[0]?.[0] as 'B3' | 'B4' | 'B5' | undefined
+
+ return {
+ stats,
+ totalDocuments: documents.length,
+ primaryDrawingKind: primaryDrawingKind || null,
+ b4Stats, // B4 세부 통계 추가
+ }
} catch (err) {
console.error("Error fetching user vendor document stats:", err)
- return { stats: {}, totalDocuments: 0, primaryDrawingKind: null }
+ return { stats: {}, totalDocuments: 0, primaryDrawingKind: null, b4Stats: { gttDeliverableCount: 0, shiInputCount: 0 } }
}
}