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