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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
import { pgTable, varchar, text, timestamp, char, decimal, serial, uniqueIndex } from "drizzle-orm/pg-core"
export const projects = pgTable("projects", {
id: serial("id").primaryKey(),
// 기존 정보
code: varchar("code", { length: 50 }).notNull(), // PROJ_NO 으로, PSPID와 동일 (나준규 프로 확인)
name: text("name").notNull(), // PROJ_DSC
type: varchar("type", { length: 20 }).default("ship").notNull(), // TYPE 기반으로 산출하며, null 값인 경우 ship으로 처리
// MDG 를 위한 컬럼 확장 - PROJECT_MASTER_CMCTB_PROJ_MAST의 모든 컬럼
AS_GRNT_PRD: varchar("AS_GRNT_PRD", { length: 1000 }), // A/S 보증기간
BIZCLS: varchar("BIZCLS", { length: 1000 }), // 사업부
BIZLOC_CD: varchar("BIZLOC_CD", { length: 1000 }), // 사업장코드
BIZ_DMN: varchar("BIZ_DMN", { length: 1000 }), // 사업영역
BP_DL_DT: varchar("BP_DL_DT", { length: 1000 }), // 선표인도일자
CHN_PROJ_TP: varchar("CHN_PROJ_TP", { length: 1000 }), // (중국)프로젝트타입
CLS_1: varchar("CLS_1", { length: 1000 }), // 선급1
CLS_2: varchar("CLS_2", { length: 1000 }), // 선급2
CNRT_CNTN_YN: varchar("CNRT_CNTN_YN", { length: 1000 }), // 계약존속여부
CNRT_DL_DT: varchar("CNRT_DL_DT", { length: 1000 }), // 계약인도일자
CNRT_DT: varchar("CNRT_DT", { length: 1000 }), // 계약일자
CNRT_RESV_YN: varchar("CNRT_RESV_YN", { length: 1000 }), // 계약유보여부
CO_CD: varchar("CO_CD", { length: 1000 }), // 회사코드
CSTM_PO_NO: varchar("CSTM_PO_NO", { length: 1000 }), // 고객발주번호
DEL_YN: varchar("DEL_YN", { length: 1000 }), // 삭제 여부
DIGT_PDT_GRP: varchar("DIGT_PDT_GRP", { length: 1000 }), // 전기전자 제품군
DIST_PATH: varchar("DIST_PATH", { length: 1000 }), // 유통경로
DL_BF_PROJ_NM: varchar("DL_BF_PROJ_NM", { length: 1000 }), // 인도전선명
DL_CSTM_CD: varchar("DL_CSTM_CD", { length: 1000 }), // 인도고객 ID
DOCK_CD: varchar("DOCK_CD", { length: 1000 }), // 도크
DSN_CHRGR: varchar("DSN_CHRGR", { length: 1000 }), // 설계담당자
FIN_GRNT_FN_DT: varchar("FIN_GRNT_FN_DT", { length: 1000 }), // 최종수요자 보증종료일
GENT_CNT: varchar("GENT_CNT", { length: 1000 }), // 세대수/시리즈
GOV: varchar("GOV", { length: 1000 }), // 관청명
GRNT_STDT: varchar("GRNT_STDT", { length: 1000 }), // Project Warranty Start Date
IF_STAT: varchar("IF_STAT", { length: 1000 }), // 인터페이스 진행단계
IMO_NO: varchar("IMO_NO", { length: 1000 }), // IMO 번호
INQY_NO: varchar("INQY_NO", { length: 1000 }), // 안건번호
INQY_SEQ: varchar("INQY_SEQ", { length: 1000 }), // 안건순번
IO_GB: varchar("IO_GB", { length: 1000 }), // 사내외 구분
MNG_ACOT_DMN: varchar("MNG_ACOT_DMN", { length: 1000 }), // 관리회계영역
MN_ENGN_TP_CD: varchar("MN_ENGN_TP_CD", { length: 1000 }), // Main engine type code
MSHIP_NO: varchar("MSHIP_NO", { length: 1000 }), // 기준호선
NEW_MC_YN: varchar("NEW_MC_YN", { length: 1000 }), // MC YN
NTTP: varchar("NTTP", { length: 1000 }), // 국적
ORDR_GRNT_FN_DT: varchar("ORDR_GRNT_FN_DT", { length: 1000 }), // 주문주 보증종료일
ORDR_GRNT_PRD: varchar("ORDR_GRNT_PRD", { length: 1000 }), // 주문주 보증기간
OWN_1: varchar("OWN_1", { length: 1000 }), // 선주1
OWN_AB: varchar("OWN_AB", { length: 1000 }), // 선주약어
OWN_NM: varchar("OWN_NM", { length: 1000 }), // 선주명
PDT_LVL_4: varchar("PDT_LVL_4", { length: 1000 }), // 제품 Level 4
PLNT_CD: varchar("PLNT_CD", { length: 1000 }), // 플랜트 코드
PRCTR: varchar("PRCTR", { length: 1000 }), // 손익센터
PRGS_STAT: varchar("PRGS_STAT", { length: 1000 }), // 진행상태
PROJ_CRTE_REQ_DT: varchar("PROJ_CRTE_REQ_DT", { length: 1000 }), // 프로젝트 생성요청일
PROJ_CRTE_REQ_EMPNO: varchar("PROJ_CRTE_REQ_EMPNO", { length: 1000 }), // 프로젝트 생성요청자
PROJ_DL_PLN_DT: varchar("PROJ_DL_PLN_DT", { length: 1000 }), // 모프로젝트 인도계획일
PROJ_DL_RT_DT: varchar("PROJ_DL_RT_DT", { length: 1000 }), // 모프로젝트 인도실적일
PROJ_DTL_TP: varchar("PROJ_DTL_TP", { length: 1000 }), // 프로젝트 세부타입
PROJ_ETC_TP: varchar("PROJ_ETC_TP", { length: 1000 }), // 프로젝트 기타타입
PROJ_GB: varchar("PROJ_GB", { length: 1000 }), // 프로젝트구분
PROJ_PRGS_YN: varchar("PROJ_PRGS_YN", { length: 1000 }), // 공사진행여부
PROJ_PROF: varchar("PROJ_PROF", { length: 1000 }), // 프로젝트 프로파일
PROJ_SCP: varchar("PROJ_SCP", { length: 1000 }), // 프로젝트범위
PROJ_WBS_TP: varchar("PROJ_WBS_TP", { length: 1000 }), // 프로젝트 WBS타입
PRO_PROJ_NO: varchar("PRO_PROJ_NO", { length: 1000 }), // 프로포절 프로젝트
QM_CLS: varchar("QM_CLS", { length: 1000 }), // 품질사업부
REF_NO: varchar("REF_NO", { length: 1000 }), // 시리즈번호
RLTD_PROJ: varchar("RLTD_PROJ", { length: 1000 }), // 연관프로젝트
RL_DL_DT: varchar("RL_DL_DT", { length: 1000 }), // 실인도일자
SALE_GRP: varchar("SALE_GRP", { length: 1000 }), // 영업그룹
SALE_ORG_CD: varchar("SALE_ORG_CD", { length: 1000 }), // 영업조직
SA_DT: varchar("SA_DT", { length: 1000 }), // Sail Away Date
SERS_NO: varchar("SERS_NO", { length: 1000 }), // 시리즈첫공사번호
SERS_YN: varchar("SERS_YN", { length: 1000 }), // 시리즈여부
SHTYPE: varchar("SHTYPE", { length: 1000 }), // 선형
SHTYPE_CD: varchar("SHTYPE_CD", { length: 1000 }), // 선형코드
SHTYPE_GRP: varchar("SHTYPE_GRP", { length: 1000 }), // 선형군
SHTYPE_UOM: varchar("SHTYPE_UOM", { length: 1000 }), // 선형단위
SKND: varchar("SKND", { length: 1000 }), // 선종
SRC_SYS_ID: varchar("SRC_SYS_ID", { length: 1000 }), // Source System
STDT: varchar("STDT", { length: 1000 }), // 시작일자
SYS_ACOT_CLSD_DT: varchar("SYS_ACOT_CLSD_DT", { length: 1000 }), // 시스템회계마감일자
TOT_CNRT_CNT: varchar("TOT_CNRT_CNT", { length: 1000 }), // 전체 계약 대수
TYPE: varchar("TYPE", { length: 1000 }), // 프로젝트 Top/Hull (원본 TYPE 컬럼)
WP_PROJ_TP: varchar("WP_PROJ_TP", { length: 1000 }), // (풍력)프로젝트타입
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at").defaultNow().notNull(),
})
export type Project = typeof projects.$inferSelect
export const biddingProjects = pgTable("bidding_projects", {
id: serial("id").primaryKey(),
pspid: char('pspid', { length: 24 }).notNull().unique(), // 견적프로젝트번호
projNm: varchar('proj_nm', { length: 90 }), // 견적프로젝트명
sector: char('sector', { length: 1 }), // 부문(S / M)
projMsrm: decimal('proj_msrm', { precision: 3, scale: 0 }), // 척수
kunnr: char('kunnr', { length: 10 }), // 선주코드
kunnrNm: varchar('kunnr_nm', { length: 30 }), // 선주명
cls1: char('cls_1', { length: 10 }), // 선급코드
cls1Nm: varchar('cls1_nm', { length: 30 }), // 선급명
ptype: char('ptype', { length: 3 }), // 선종코드
ptypeNm: varchar('ptype_nm', { length: 40 }), // 선종명
pmodelCd: char('pmodel_cd', { length: 10 }), // 선형코드
pmodelNm: varchar('pmodel_nm', { length: 40 }), // 선형명
pmodelSz: varchar('pmodel_sz', { length: 20 }), // 선형크기
pmodelUom: char('pmodel_uom', { length: 5 }), // 선형단위
txt04: char('txt04', { length: 4 }), // 견적상태코드
txt30: varchar('txt30', { length: 30 }), // 견적상태명
estmPm: varchar('estm_pm', { length: 30 }), // 견적대표PM 성명
// 조선, 해양 헐, 해양 탑 구분 컬럼
// 조선 및 해양 헐은 ECC에서 SOAP으로 가져오며, 해양 탑은 NONSAP에서 ESTM_PROJ_NO 테이블에서 가져온다.
// 조선/해양 헐을 구분할 수 있는 방법은 ECC에서 sector가 S(SHIP)인지 M(MARINE)인지 구분하면 된다.
pjtType: varchar('pjt_type', { enum: ['SHIP','TOP', 'HULL'] }),
createdAt: timestamp("created_at").defaultNow().notNull(),
updatedAt: timestamp("updated_at").defaultNow().notNull(),
});
export const projectSeries = pgTable('project_series', {
pspid: char('pspid', { length: 24 }).notNull().references(() => biddingProjects.pspid), // 견적프로젝트번호
sersNo: char('sers_no', { length: 3 }).notNull(), // 시리즈번호
scDt: char('sc_dt', {length: 8}), // Steel Cutting Date
klDt: char('kl_dt', {length: 8}), // Keel Laying Date
lcDt: char('lc_dt', {length: 8}), // Launching Date
dlDt: char('dl_dt', {length: 8}), // Delivery Date
dockNo: char('dock_no', { length: 3 }), // 도크코드
dockNm: varchar('dock_nm', { length: 40 }), // 도크명
projNo: char('proj_no', { length: 24 }), // SN공사번호(계약후)
post1: varchar('post1', { length: 40 }), // SN공사명(계약후)
}, (table) => {
return {
pk: uniqueIndex("project_sersNo_unique").on(
table.pspid,
table.sersNo
)
}
});
export type BiddingProjects = typeof biddingProjects.$inferSelect
export type ProjectSeries = typeof projectSeries.$inferSelect
// 새로 데이터 수신 시 구분을 위해 사용
export type NewBiddingProject = typeof biddingProjects.$inferInsert
export type NewProjectSeries = typeof projectSeries.$inferInsert
|