-- =============================================
|
-- 统一物料主数据模块 (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
|
-- =============================================
|