summaryrefslogtreecommitdiff
path: root/db/schema
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-09-09 10:40:11 +0000
committerjoonhoekim <26rote@gmail.com>2025-09-09 10:40:11 +0000
commitcaa01b321311de3983fb8bcf65bb20a6c047cf57 (patch)
treea01fb9078aaa044f57d8cdf59a06bf18a6e3e7df /db/schema
parent86b1fd1cc801f45642f84d24c0b5c84368454ff0 (diff)
(김준회) 자재그룹코드 및 자재그룹명에 대해 별도 테이블 생성, 동기화 로직 작성(일회성 사용이며 수신시점에는 자동저장하므로 추후 사용 불필요), 자재그룹 선택기를 변경사항에 맞춰 업데이트, 자재그룹명은 MAKTX 로 김학의 프로 답변에 따라 변경
Diffstat (limited to 'db/schema')
-rw-r--r--db/schema/MDG/mdg.ts9
-rw-r--r--db/schema/items.ts25
2 files changed, 15 insertions, 19 deletions
diff --git a/db/schema/MDG/mdg.ts b/db/schema/MDG/mdg.ts
index 60f94793..7dd2db88 100644
--- a/db/schema/MDG/mdg.ts
+++ b/db/schema/MDG/mdg.ts
@@ -1037,6 +1037,15 @@ export const MATERIAL_MASTER_PART_MATL_UNIT = mdgSchema.table('MATERIAL_MASTER_P
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
+// [별도 테이블] 자재그룹코드 마스터 - MATKL, MAKTX 중복 최소화
+export const MATERIAL_GROUP_MASTER = mdgSchema.table('MATERIAL_GROUP_MASTER', {
+ MATKL: varchar('MATKL', { length: 1000 }).primaryKey(), // Material Group Code (자재그룹코드) - 기본 키
+ MAKTX: varchar('MAKTX', { length: 1000 }), // Material Group Description (자재그룹명) - 영어(SPRAS='E') 기준
+
+ createdAt: timestamp('created_at').defaultNow().notNull(),
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
+});
+
// [root]
export const MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE = mdgSchema.table('MATERIAL_MASTER_PART_RETURN_CMCTB_MAT_BSE', {
id: integer('id').primaryKey().generatedByDefaultAsIdentity(),
diff --git a/db/schema/items.ts b/db/schema/items.ts
index ef19a276..e87f256e 100644
--- a/db/schema/items.ts
+++ b/db/schema/items.ts
@@ -1,6 +1,5 @@
import { pgTable, varchar, text, timestamp, serial, integer, unique, pgView } from "drizzle-orm/pg-core"
-import { sql, eq } from "drizzle-orm"
-import { MATERIAL_MASTER_PART_MATL, MATERIAL_MASTER_PART_MATL_CHARASGN } from "./MDG/mdg"
+import { MATERIAL_GROUP_MASTER } from "./MDG/mdg"
// 자재 아이템 정보 테이블 (items) - 기존 CMCTB_MAT_CLAS 테이블 매핑 (SOAP 연결 시 컬럼이 추가/삭제될 수 있음)
export const items = pgTable("items", {
@@ -89,27 +88,15 @@ export type ItemOffshoreHull = typeof itemOffshoreHull.$inferSelect;
//각 테이블별 컬럼 변경(itemid -> itemCode)
-// 자재그룹 검색용 뷰 - MATKL(자재그룹코드)별 자재그룹 설명 조회
+// 자재그룹 검색용 뷰 - 새로운 MATERIAL_GROUP_MASTER 테이블 기반
export const materialSearchView = pgView("material_search_view").as((qb) => {
return qb
.select({
- materialGroupCode: sql<string>`${MATERIAL_MASTER_PART_MATL.MATKL}`.as("material_group_code"),
- materialGroupDesc: sql<string>`${MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB}`.as("material_group_desc"),
- displayText: sql<string>`COALESCE(${MATERIAL_MASTER_PART_MATL.MATKL}, '') || ' - ' || COALESCE(${MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB}, '')`.as("display_text")
+ materialGroupCode: MATERIAL_GROUP_MASTER.MATKL,
+ materialGroupDesc: MATERIAL_GROUP_MASTER.MAKTX
})
- .from(MATERIAL_MASTER_PART_MATL)
- .innerJoin(
- MATERIAL_MASTER_PART_MATL_CHARASGN,
- eq(MATERIAL_MASTER_PART_MATL.MATNR, MATERIAL_MASTER_PART_MATL_CHARASGN.MATNR)
- )
- .where(sql`
- ${MATERIAL_MASTER_PART_MATL.MATKL} IS NOT NULL
- AND ${MATERIAL_MASTER_PART_MATL.MATKL} != ''
- AND ${MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB} IS NOT NULL
- AND ${MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB} != ''
- `)
- .groupBy(MATERIAL_MASTER_PART_MATL.MATKL, MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB)
- .orderBy(MATERIAL_MASTER_PART_MATL.MATKL, MATERIAL_MASTER_PART_MATL_CHARASGN.ATWTB);
+ .from(MATERIAL_GROUP_MASTER)
+ .orderBy(MATERIAL_GROUP_MASTER.MATKL);
});
export type MaterialSearchView = typeof materialSearchView.$inferSelect;