File size: 4,203 Bytes
926b211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { ProjectData } from '@/types/project';
import type { Project } from '../../../drizzle/schema';

/**
 * Transform database Project to frontend ProjectData format
 */
export function transformProjectToData(project: Project, index: number): ProjectData {
  return {
    no: String(index + 1),
    identity: {
      customerName: project.customerName || '-',
      customerBase: project.customerBase || '-',
      projectName: project.projectName || '-',
      productName: project.productName || '-',
      factory: project.factoryLocation || '-',
      moldSets: project.moldCount || '-',
      partNumber: project.partNumber || '-',
      cavityNumber: project.cavityNumber || '-',
      moldNumber: project.moldId || '-',
      projectManager: project.pmName || '-',
      projectEngineer: project.peName || '-',
      moldProject: project.moldLead || '-',
      qe: project.pqeName || '-',
      riskLevel: project.riskLevel || '正常',
    },
    milestones: {
      projectStart: project.kickoffDate || '-',
      t1: project.t1Date || '-',
      glTime: project.glDate || '-',
      vmp: project.vmpDate || '-',
      mp: project.mpDate || '-',
      currentStage: project.currentStage || '-',
      t1SizeQualified: project.t1DimensionOk || '-',
      trialCount: project.trialCount || '-',
      toolingFAI: project.toolingFai || '-',
      partFAI: project.partFai || '-',
      currentNode: project.currentNode || '-',
    },
    details: {
      detailSequence: String(index + 1),
      detailDate: project.updateDate || '-',
      detailProgress: project.progressDetails || '-',
    },
  };
}

/**
 * Transform frontend ProjectData to database Project format
 */
export function transformDataToProject(data: ProjectData): Record<string, string | undefined> {
  return {
    customerName: data.identity.customerName === '-' ? undefined : data.identity.customerName,
    customerBase: data.identity.customerBase === '-' ? undefined : data.identity.customerBase,
    projectName: data.identity.projectName === '-' ? undefined : data.identity.projectName,
    productName: data.identity.productName === '-' ? undefined : data.identity.productName,
    factoryLocation: data.identity.factory === '-' ? undefined : data.identity.factory,
    moldCount: data.identity.moldSets === '-' ? undefined : data.identity.moldSets,
    partNumber: data.identity.partNumber === '-' ? undefined : data.identity.partNumber,
    cavityNumber: data.identity.cavityNumber === '-' ? undefined : data.identity.cavityNumber,
    moldId: data.identity.moldNumber === '-' ? undefined : data.identity.moldNumber,
    pmName: data.identity.projectManager === '-' ? undefined : data.identity.projectManager,
    peName: data.identity.projectEngineer === '-' ? undefined : data.identity.projectEngineer,
    moldLead: data.identity.moldProject === '-' ? undefined : data.identity.moldProject,
    pqeName: data.identity.qe === '-' ? undefined : data.identity.qe,
    riskLevel: data.identity.riskLevel === '-' ? undefined : data.identity.riskLevel,
    kickoffDate: data.milestones.projectStart === '-' ? undefined : data.milestones.projectStart,
    t1Date: data.milestones.t1 === '-' ? undefined : data.milestones.t1,
    glDate: data.milestones.glTime === '-' ? undefined : data.milestones.glTime,
    vmpDate: data.milestones.vmp === '-' ? undefined : data.milestones.vmp,
    mpDate: data.milestones.mp === '-' ? undefined : data.milestones.mp,
    currentStage: data.milestones.currentStage === '-' ? undefined : data.milestones.currentStage,
    t1DimensionOk: data.milestones.t1SizeQualified === '-' ? undefined : data.milestones.t1SizeQualified,
    trialCount: data.milestones.trialCount === '-' ? undefined : data.milestones.trialCount,
    toolingFai: data.milestones.toolingFAI === '-' ? undefined : data.milestones.toolingFAI,
    partFai: data.milestones.partFAI === '-' ? undefined : data.milestones.partFAI,
    currentNode: data.milestones.currentNode === '-' ? undefined : data.milestones.currentNode,
    progressDetails: data.details.detailProgress === '-' ? undefined : data.details.detailProgress,
    updateDate: data.details.detailDate === '-' ? undefined : data.details.detailDate,
  };
}