-- ===================================================== -- MDM 主数据模块 - 数据库表结构 -- 执行顺序:先执行此脚本创建表,再执行数据迁移脚本 -- ===================================================== -- ===================================================== -- 01. 物料分类表 -- ===================================================== DROP TABLE IF EXISTS `mdm_item_category`; CREATE TABLE `mdm_item_category` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类编号', `parent_id` bigint NOT NULL DEFAULT 0 COMMENT '父分类编号(根节点=0)', `code` varchar(50) DEFAULT NULL COMMENT '分类编码', `name` varchar(100) NOT NULL COMMENT '分类名称', `item_type` tinyint DEFAULT NULL COMMENT '适用物料类型(1:物料 2:产品 3:半成品 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`), KEY `idx_parent_id` (`parent_id`), KEY `idx_code` (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MDM 物料分类表'; -- ===================================================== -- 02. 计量单位表 -- ===================================================== DROP TABLE IF EXISTS `mdm_unit_measure`; CREATE TABLE `mdm_unit_measure` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '单位编号', `code` varchar(50) NOT NULL COMMENT '单位编码', `name` varchar(50) NOT NULL COMMENT '单位名称', `primary_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否主单位', `primary_id` bigint DEFAULT NULL COMMENT '主单位编号', `change_rate` decimal(24,6) DEFAULT 1.000000 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`, `deleted`), KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MDM 计量单位表'; -- ===================================================== -- 03. 品牌表 -- ===================================================== DROP TABLE IF EXISTS `mdm_brand`; CREATE TABLE `mdm_brand` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '品牌编号', `code` varchar(50) NOT NULL COMMENT '品牌编码', `name` varchar(100) 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`, `deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MDM 品牌表'; -- ===================================================== -- 04. 物料主数据表 -- ===================================================== DROP TABLE IF EXISTS `mdm_item`; CREATE TABLE `mdm_item` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '物料编号', `code` varchar(50) NOT NULL COMMENT '物料编码', `name` varchar(200) NOT NULL COMMENT '物料名称', `bar_code` varchar(100) DEFAULT NULL COMMENT '物料条码', `specification` varchar(200) DEFAULT NULL COMMENT '规格型号', `category_id` bigint DEFAULT NULL COMMENT '物料分类编号', `unit_measure_id` bigint DEFAULT NULL COMMENT '计量单位编号', `unit_measure_id2` bigint DEFAULT NULL COMMENT '辅单位1编号', `unit_measure_rate1` decimal(24,6) DEFAULT NULL COMMENT '辅单位1换算比率', `unit_measure_id3` bigint DEFAULT NULL COMMENT '辅单位2编号', `unit_measure_rate2` decimal(24,6) DEFAULT NULL COMMENT '辅单位2换算比率', `warehouse_id` bigint DEFAULT NULL COMMENT '默认仓库编号', `warehouse_code` varchar(50) DEFAULT NULL COMMENT '默认仓库编码', `item_type` tinyint NOT NULL DEFAULT 1 COMMENT '物料类型(1:物料 2:产品 3:半成品)', `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0正常 1停用)', `purchase_price` decimal(24,2) DEFAULT NULL COMMENT '采购价', `sales_price` decimal(24,2) DEFAULT NULL COMMENT '销售价', `cost_price` decimal(24,2) DEFAULT NULL COMMENT '成本价', `min_price` decimal(24,2) 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) NOT NULL DEFAULT b'0' COMMENT '是否批次管理', `is_serial_managed` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否序列号管理', `barcode_rule_id` bigint DEFAULT NULL COMMENT '条码规则ID', `expiry_day` int DEFAULT NULL COMMENT '保质期天数', `high_value` bit(1) NOT NULL 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`, `deleted`), KEY `idx_name` (`name`), KEY `idx_category_id` (`category_id`), KEY `idx_item_type` (`item_type`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MDM 物料主数据表'; -- ===================================================== -- 05. 物料SKU表 -- ===================================================== DROP TABLE IF EXISTS `mdm_item_sku`; CREATE TABLE `mdm_item_sku` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'SKU编号', `item_id` bigint NOT NULL COMMENT '物料编号', `code` varchar(50) NOT NULL COMMENT 'SKU编码', `name` varchar(200) NOT NULL COMMENT 'SKU名称', `bar_code` varchar(100) DEFAULT NULL COMMENT 'SKU条码', `length` decimal(24,6) DEFAULT NULL COMMENT '长度(cm)', `width` decimal(24,6) DEFAULT NULL COMMENT '宽度(cm)', `height` decimal(24,6) DEFAULT NULL COMMENT '高度(cm)', `gross_weight` decimal(24,6) DEFAULT NULL COMMENT '毛重(kg)', `net_weight` decimal(24,6) DEFAULT NULL COMMENT '净重(kg)', `cost_price` decimal(24,2) DEFAULT NULL COMMENT '成本价', `sale_price` decimal(24,2) 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`, `deleted`), KEY `idx_item_id` (`item_id`), KEY `idx_bar_code` (`bar_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MDM 物料SKU表'; -- ===================================================== -- 06. 物料批次属性配置表 -- ===================================================== DROP TABLE IF EXISTS `mdm_item_batch_config`; CREATE TABLE `mdm_item_batch_config` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '配置编号', `item_id` bigint NOT NULL COMMENT '物料编号', `produce_date_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用生产日期', `expire_date_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用失效日期', `receipt_date_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用入库日期', `vendor_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用供应商', `client_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用客户', `sales_order_code_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用销售订单号', `purchase_order_code_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用采购订单号', `work_order_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用生产工单', `task_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用生产任务', `workstation_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用工位', `tool_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用工装夹具', `mold_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用模具', `lot_number_flag` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否启用批次号', `quality_status_flag` bit(1) NOT NULL 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`, `deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MDM 物料批次属性配置表'; -- ===================================================== -- 07. 仓库表 -- ===================================================== DROP TABLE IF EXISTS `mdm_warehouse`; CREATE TABLE `mdm_warehouse` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '仓库编号', `code` varchar(50) NOT NULL COMMENT '仓库编码', `name` varchar(100) NOT NULL COMMENT '仓库名称', `type` tinyint DEFAULT NULL COMMENT '仓库类型', `address` varchar(500) DEFAULT NULL COMMENT '仓库地址', `principal` varchar(64) 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`, `deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='MDM 仓库表';