2026-06-29 940c8481d2fdcf51341db4ccd6fd6fcc2d43debb
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
-- =============================================
-- 统一物料主数据模块 (MDM) 建表 SQL
-- 创建日期: 2026-06-29
-- 说明: 整合 MES/ERP/WMS 的物料数据,实现跨模块数据打通
-- 注意: 不开启多租户模式
-- =============================================
 
-- ---------------------------------------------
-- 1. 物料主数据表 (md_item)
-- 核心表,所有模块共用唯一产品编码
-- ---------------------------------------------
DROP TABLE IF EXISTS `md_item`;
CREATE TABLE `md_item` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '物料ID(全局唯一)',
  `code` varchar(64) NOT NULL COMMENT '物料编码(全局唯一)',
  `name` varchar(255) NOT NULL COMMENT '物料名称',
  `bar_code` varchar(64) DEFAULT NULL COMMENT '物料条码',
  `specification` varchar(500) DEFAULT NULL COMMENT '规格型号',
 
  -- 分类与单位
  `category_id` bigint NOT NULL COMMENT '物料分类编号',
  `unit_measure_id` bigint NOT NULL COMMENT '主计量单位编号',
  `brand_id` bigint DEFAULT NULL COMMENT '品牌编号',
 
  -- 物料类型
  `item_type` tinyint NOT NULL DEFAULT 1 COMMENT '物料类型(1:原料, 2:半成品, 3:成品, 4:辅料)',
 
  -- 状态
  `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0:启用, 1:禁用)',
 
  -- 价格信息
  `purchase_price` decimal(24,6) DEFAULT NULL COMMENT '采购价',
  `sales_price` decimal(24,6) DEFAULT NULL COMMENT '销售价',
  `cost_price` decimal(24,6) DEFAULT NULL COMMENT '成本价',
  `min_price` decimal(24,6) DEFAULT NULL COMMENT '最低价',
 
  -- 库存管理
  `safety_stock` decimal(24,6) DEFAULT NULL COMMENT '安全库存',
  `min_stock` decimal(24,6) DEFAULT NULL COMMENT '最低库存量',
  `max_stock` decimal(24,6) DEFAULT NULL COMMENT '最高库存量',
  `min_order_qty` decimal(24,6) DEFAULT NULL COMMENT '最小订货量',
  `lead_time` int DEFAULT NULL COMMENT '采购提前期(天)',
 
  -- 批次与序列号管理
  `is_batch_managed` bit(1) DEFAULT b'0' COMMENT '是否批次管理',
  `is_serial_managed` bit(1) DEFAULT b'0' COMMENT '是否序列号管理',
  `barcode_rule_id` bigint DEFAULT NULL COMMENT '条码规则ID',
 
  -- 质量管理
  `expiry_day` int DEFAULT NULL COMMENT '保质期天数',
  `high_value` bit(1) DEFAULT b'0' COMMENT '是否高值物料',
 
  -- 物理属性
  `weight` decimal(24,6) DEFAULT NULL COMMENT '重量(kg)',
 
  -- 备注
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
 
  -- 系统字段
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
 
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_code` (`code`),
  KEY `idx_category_id` (`category_id`),
  KEY `idx_unit_measure_id` (`unit_measure_id`),
  KEY `idx_brand_id` (`brand_id`),
  KEY `idx_item_type` (`item_type`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物料主数据表';
 
-- ---------------------------------------------
-- 2. 物料分类表 (md_item_category)
-- 统一分类,支持树形结构
-- ---------------------------------------------
DROP TABLE IF EXISTS `md_item_category`;
CREATE TABLE `md_item_category` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类编号',
  `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '父分类编号(根节点=0)',
  `code` varchar(64) NOT NULL COMMENT '分类编码',
  `name` varchar(255) NOT NULL COMMENT '分类名称',
  `item_type` tinyint DEFAULT NULL COMMENT '适用物料类型(1:原料, 2:半成品, 3:成品, 4:辅料, NULL:全部)',
  `sort` int NOT NULL DEFAULT 0 COMMENT '排序',
  `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0:启用, 1:禁用)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
 
  -- 系统字段
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
 
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_code` (`code`),
  KEY `idx_parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物料分类表';
 
-- ---------------------------------------------
-- 3. 计量单位表 (md_unit_measure)
-- 统一计量单位
-- ---------------------------------------------
DROP TABLE IF EXISTS `md_unit_measure`;
CREATE TABLE `md_unit_measure` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '单位编号',
  `code` varchar(64) NOT NULL COMMENT '单位编码',
  `name` varchar(64) NOT NULL COMMENT '单位名称',
  `primary_flag` bit(1) DEFAULT b'0' COMMENT '是否主单位',
  `primary_id` bigint DEFAULT NULL COMMENT '主单位编号',
  `change_rate` decimal(24,6) DEFAULT NULL COMMENT '与主单位换算比例',
  `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0:启用, 1:禁用)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
 
  -- 系统字段
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
 
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='计量单位表';
 
-- ---------------------------------------------
-- 4. 品牌表 (md_brand)
-- 统一品牌数据
-- ---------------------------------------------
DROP TABLE IF EXISTS `md_brand`;
CREATE TABLE `md_brand` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '品牌编号',
  `code` varchar(64) NOT NULL COMMENT '品牌编码',
  `name` varchar(255) NOT NULL COMMENT '品牌名称',
  `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0:启用, 1:禁用)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
 
  -- 系统字段
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
 
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='品牌表';
 
-- ---------------------------------------------
-- 5. 物料批次属性配置表 (md_item_batch_config)
-- 来自 MES 的批次管理配置
-- ---------------------------------------------
DROP TABLE IF EXISTS `md_item_batch_config`;
CREATE TABLE `md_item_batch_config` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `item_id` bigint NOT NULL COMMENT '物料编号',
 
  -- 批次属性开关
  `produce_date_flag` bit(1) DEFAULT b'0' COMMENT '生产日期',
  `expire_date_flag` bit(1) DEFAULT b'0' COMMENT '有效期',
  `receipt_date_flag` bit(1) DEFAULT b'0' COMMENT '入库日期',
  `vendor_flag` bit(1) DEFAULT b'0' COMMENT '供应商',
  `client_flag` bit(1) DEFAULT b'0' COMMENT '客户',
  `sales_order_code_flag` bit(1) DEFAULT b'0' COMMENT '销售订单编号',
  `purchase_order_code_flag` bit(1) DEFAULT b'0' COMMENT '采购订单编号',
  `work_order_flag` bit(1) DEFAULT b'0' COMMENT '生产工单',
  `task_flag` bit(1) DEFAULT b'0' COMMENT '生产任务',
  `workstation_flag` bit(1) DEFAULT b'0' COMMENT '工作站',
  `tool_flag` bit(1) DEFAULT b'0' COMMENT '工具',
  `mold_flag` bit(1) DEFAULT b'0' COMMENT '模具',
  `lot_number_flag` bit(1) DEFAULT b'0' COMMENT '生产批号',
  `quality_status_flag` bit(1) DEFAULT b'0' COMMENT '质量状态',
 
  -- 系统字段
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
 
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_item_id` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物料批次属性配置表';
 
-- ---------------------------------------------
-- 6. 仓库主数据表 (md_warehouse)
-- 统一仓库数据,WMS 为主数据源
-- ---------------------------------------------
DROP TABLE IF EXISTS `md_warehouse`;
CREATE TABLE `md_warehouse` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '仓库ID',
  `code` varchar(64) NOT NULL COMMENT '仓库编码',
  `name` varchar(255) NOT NULL COMMENT '仓库名称',
  `address` varchar(500) DEFAULT NULL COMMENT '仓库地址',
  `area` decimal(24,6) DEFAULT NULL COMMENT '面积(平方米)',
  `type` tinyint DEFAULT NULL COMMENT '仓库类型(1:原料仓, 2:成品仓, 3:半成品仓, 4:线边仓)',
  `charge_user_id` bigint DEFAULT NULL COMMENT '负责人用户ID',
  `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0:启用, 1:禁用)',
  `frozen` bit(1) DEFAULT b'0' COMMENT '是否冻结',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
 
  -- 系统字段
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
 
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='仓库主数据表';
 
-- ---------------------------------------------
-- 7. 库存表 (wms_stock)
-- WMS 作为唯一库存管理者
-- ---------------------------------------------
DROP TABLE IF EXISTS `wms_stock`;
CREATE TABLE `wms_stock` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '库存ID',
  `item_id` bigint NOT NULL COMMENT '物料ID(关联 md_item)',
  `warehouse_id` bigint NOT NULL COMMENT '仓库ID(关联 md_warehouse)',
  `location_id` bigint DEFAULT NULL COMMENT '库位ID',
  `batch_code` varchar(64) DEFAULT NULL COMMENT '批次号',
 
  -- 库存数量
  `quantity` decimal(24,6) NOT NULL DEFAULT 0 COMMENT '当前库存数量',
  `quantity_locked` decimal(24,6) NOT NULL DEFAULT 0 COMMENT '锁定数量',
  `quantity_available` decimal(24,6) NOT NULL DEFAULT 0 COMMENT '可用数量 = quantity - quantity_locked',
 
  `unit_measure_id` bigint NOT NULL COMMENT '计量单位ID',
 
  -- 系统字段
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
 
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_item_warehouse_batch` (`item_id`, `warehouse_id`, `batch_code`),
  KEY `idx_item_id` (`item_id`),
  KEY `idx_warehouse_id` (`warehouse_id`),
  KEY `idx_batch_code` (`batch_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='库存表';
 
-- ---------------------------------------------
-- 8. 库存事务流水表 (wms_stock_transaction)
-- 记录所有库存变动
-- ---------------------------------------------
DROP TABLE IF EXISTS `wms_stock_transaction`;
CREATE TABLE `wms_stock_transaction` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '流水ID',
  `item_id` bigint NOT NULL COMMENT '物料ID',
  `warehouse_id` bigint NOT NULL COMMENT '仓库ID',
  `location_id` bigint DEFAULT NULL COMMENT '库位ID',
  `batch_code` varchar(64) DEFAULT NULL COMMENT '批次号',
 
  -- 变动信息
  `quantity` decimal(24,6) NOT NULL COMMENT '变动数量(正数入库,负数出库)',
  `biz_type` tinyint NOT NULL COMMENT '业务类型(见枚举)',
  `biz_id` bigint DEFAULT NULL COMMENT '业务单据ID',
  `biz_no` varchar(64) DEFAULT NULL COMMENT '业务单据号',
 
  -- 关联库存记录
  `stock_id` bigint DEFAULT NULL COMMENT '关联库存记录ID',
 
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
 
  -- 系统字段
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
 
  PRIMARY KEY (`id`),
  KEY `idx_item_id` (`item_id`),
  KEY `idx_warehouse_id` (`warehouse_id`),
  KEY `idx_biz_type` (`biz_type`),
  KEY `idx_biz_id` (`biz_id`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='库存事务流水表';
 
-- ---------------------------------------------
-- 9. 物料迁移映射表 (md_item_migration_map)
-- 用于记录旧表数据到新表的映射关系
-- ---------------------------------------------
DROP TABLE IF EXISTS `md_item_migration_map`;
CREATE TABLE `md_item_migration_map` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '映射ID',
  `source_module` varchar(20) NOT NULL COMMENT '来源模块(ERP/MES/WMS)',
  `source_table` varchar(64) NOT NULL COMMENT '来源表名',
  `source_id` bigint NOT NULL COMMENT '原ID',
  `target_item_id` bigint NOT NULL COMMENT 'MDM物料ID',
 
  -- 系统字段
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_source` (`source_module`, `source_table`, `source_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物料迁移映射表';
 
-- ---------------------------------------------
-- 10. 库存变动业务类型枚举值
-- ---------------------------------------------
-- 业务类型说明:
-- 10: 采购入库 (ERP)
-- 11: 采购入库作废 (ERP)
-- 20: 销售出库 (ERP)
-- 21: 销售出库作废 (ERP)
-- 30: 生产入库 (MES)
-- 31: 生产入库作废 (MES)
-- 40: 生产领料 (MES)
-- 41: 生产领料作废 (MES)
-- 50: 生产退料 (MES)
-- 51: 生产退料作废 (MES)
-- 60: 采购退货出库 (ERP)
-- 61: 采购退货出库作废 (ERP)
-- 70: 销售退货入库 (ERP)
-- 71: 销售退货入库作废 (ERP)
-- 80: 调拨入库 (WMS)
-- 81: 调拨入库作废 (WMS)
-- 90: 调拨出库 (WMS)
-- 91: 调拨出库作废 (WMS)
-- 100: 盘盈入库 (WMS)
-- 101: 盘盈入库作废 (WMS)
-- 110: 盘亏出库 (WMS)
-- 111: 盘亏出库作废 (WMS)
 
-- =============================================
-- 完成建表 SQL
-- =============================================