130 lines
5.9 KiB
MySQL
130 lines
5.9 KiB
MySQL
|
|
-- ============================================================
|
|||
|
|
-- MOM系统 md_bom 表创建脚本
|
|||
|
|
-- 对应ERP系统: erp_md_bom
|
|||
|
|
-- 生成日期: 2026-01-26
|
|||
|
|
-- 兼容 MySQL 5.7+
|
|||
|
|
-- ============================================================
|
|||
|
|
|
|||
|
|
SET NAMES utf8mb4;
|
|||
|
|
|
|||
|
|
-- ============================================================
|
|||
|
|
-- 创建 md_bom 表 (BOM表头)
|
|||
|
|
-- ============================================================
|
|||
|
|
|
|||
|
|
DROP TABLE IF EXISTS `md_bom`;
|
|||
|
|
|
|||
|
|
CREATE TABLE `md_bom` (
|
|||
|
|
`bom_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'BOM ID (主键)',
|
|||
|
|
`tenant_id` varchar(20) NOT NULL COMMENT '租户ID',
|
|||
|
|
`bom_code` varchar(32) NOT NULL COMMENT 'BOM编码',
|
|||
|
|
`bom_name` varchar(100) DEFAULT NULL COMMENT 'BOM名称',
|
|||
|
|
`item_id` bigint(20) NOT NULL COMMENT '产品物料ID (外键关联md_item.item_id)',
|
|||
|
|
`item_code` varchar(32) NOT NULL COMMENT '产品物料编码 (冗余字段)',
|
|||
|
|
`item_name` varchar(100) NOT NULL COMMENT '产品物料名称 (冗余字段)',
|
|||
|
|
`item_spec` varchar(200) DEFAULT NULL COMMENT '产品物料规格 (冗余字段)',
|
|||
|
|
`unit_name` varchar(20) DEFAULT NULL COMMENT '计量单位',
|
|||
|
|
`base_qty` decimal(18,4) NOT NULL DEFAULT '1.0000' COMMENT '基本数量 (母件基数)',
|
|||
|
|
`version` varchar(20) DEFAULT NULL COMMENT '版本号',
|
|||
|
|
`version_desc` varchar(200) DEFAULT NULL COMMENT '版本说明',
|
|||
|
|
`status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT 'BOM状态 (DRAFT/APPROVED/OBSOLETE)',
|
|||
|
|
`enable_flag` char(1) NOT NULL DEFAULT 'Y' COMMENT '启用状态 (Y/N)',
|
|||
|
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
|||
|
|
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志 (0存在 1删除)',
|
|||
|
|
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
|
|||
|
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
|||
|
|
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
|
|||
|
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
|||
|
|
PRIMARY KEY (`bom_id`),
|
|||
|
|
UNIQUE KEY `uk_bom_code` (`bom_code`, `tenant_id`) COMMENT 'BOM编码唯一索引',
|
|||
|
|
KEY `idx_bom_item` (`item_id`) COMMENT '产品物料ID索引',
|
|||
|
|
KEY `idx_bom_tenant` (`tenant_id`) COMMENT '租户ID索引',
|
|||
|
|
KEY `idx_bom_status` (`status`) COMMENT '状态索引',
|
|||
|
|
KEY `idx_bom_code` (`bom_code`) COMMENT 'BOM编码索引'
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品BOM表头 (同步自ERP: erp_md_bom)';
|
|||
|
|
|
|||
|
|
-- ============================================================
|
|||
|
|
-- 表结构说明
|
|||
|
|
-- ============================================================
|
|||
|
|
--
|
|||
|
|
-- 1. 表名: md_bom
|
|||
|
|
-- 2. 说明: 存储产品BOM的表头信息,对应ERP系统的erp_md_bom表
|
|||
|
|
-- 3. 主键: bom_id (自增)
|
|||
|
|
-- 4. 唯一约束: bom_code + tenant_id (同一租户内BOM编码唯一)
|
|||
|
|
-- 5. 外键关联: item_id → md_item.item_id (产品物料)
|
|||
|
|
--
|
|||
|
|
-- 6. 与md_product_bom的关系:
|
|||
|
|
-- - md_bom (1) ←→ (N) md_product_bom
|
|||
|
|
-- - 一个BOM表头可以有多条明细记录
|
|||
|
|
-- - 通过md_product_bom.bom_id外键关联md_bom.bom_id
|
|||
|
|
--
|
|||
|
|
-- 7. 与md_item的关系:
|
|||
|
|
-- - md_bom.item_id → md_item.item_id (外键)
|
|||
|
|
-- - md_item.default_bom_id → md_bom.bom_id (冗余字段,用于快速查询默认BOM)
|
|||
|
|
-- - 一个产品可以有多个BOM版本,但只有一个默认BOM
|
|||
|
|
--
|
|||
|
|
-- ============================================================
|
|||
|
|
-- 字段映射说明 (ERP → MOM)
|
|||
|
|
-- ============================================================
|
|||
|
|
--
|
|||
|
|
-- erp_md_bom.bom_id → md_bom.bom_id
|
|||
|
|
-- erp_md_bom.tenant_id → md_bom.tenant_id
|
|||
|
|
-- erp_md_bom.bom_code → md_bom.bom_code
|
|||
|
|
-- erp_md_bom.bom_name → md_bom.bom_name
|
|||
|
|
-- erp_md_bom.item_id → md_bom.item_id
|
|||
|
|
-- erp_md_bom.item_code → md_bom.item_code
|
|||
|
|
-- erp_md_bom.item_name → md_bom.item_name
|
|||
|
|
-- erp_md_bom.unit_name → md_bom.unit_name
|
|||
|
|
-- erp_md_bom.base_qty → md_bom.base_qty
|
|||
|
|
-- erp_md_bom.version → md_bom.version
|
|||
|
|
-- erp_md_bom.version_desc → md_bom.version_desc
|
|||
|
|
-- erp_md_bom.status → md_bom.status
|
|||
|
|
-- erp_md_bom.enable_flag → md_bom.enable_flag
|
|||
|
|
-- erp_md_bom.remark → md_bom.remark
|
|||
|
|
-- erp_md_bom.del_flag → md_bom.del_flag
|
|||
|
|
--
|
|||
|
|
-- ============================================================
|
|||
|
|
-- 索引说明
|
|||
|
|
-- ============================================================
|
|||
|
|
--
|
|||
|
|
-- 1. PRIMARY KEY (bom_id): 主键索引
|
|||
|
|
-- 2. UNIQUE KEY uk_bom_code (bom_code, tenant_id): BOM编码唯一索引
|
|||
|
|
-- 3. KEY idx_bom_item (item_id): 产品物料ID索引,用于关联查询
|
|||
|
|
-- 4. KEY idx_bom_tenant (tenant_id): 租户ID索引,用于多租户隔离
|
|||
|
|
-- 5. KEY idx_bom_status (status): 状态索引,用于状态筛选
|
|||
|
|
-- 6. KEY idx_bom_code (bom_code): BOM编码索引,用于编码查询
|
|||
|
|
--
|
|||
|
|
-- ============================================================
|
|||
|
|
-- 数据同步规则
|
|||
|
|
-- ============================================================
|
|||
|
|
--
|
|||
|
|
-- 1. 同步方向: ERP → MOM
|
|||
|
|
-- 2. 同步频率: 实时/准实时
|
|||
|
|
-- 3. 同步顺序:
|
|||
|
|
-- a. 先同步 erp_md_bom → md_bom (表头)
|
|||
|
|
-- b. 再同步 erp_md_bom_line → md_product_bom (明细)
|
|||
|
|
-- 4. 关联方式: 通过 bom_code 或 bom_id 关联
|
|||
|
|
-- 5. 事务处理: 表头和明细必须在同一事务中同步
|
|||
|
|
-- 6. 删除规则: 删除BOM时,先删除所有明细记录,再删除表头记录
|
|||
|
|
--
|
|||
|
|
-- ============================================================
|
|||
|
|
-- 使用示例
|
|||
|
|
-- ============================================================
|
|||
|
|
--
|
|||
|
|
-- -- 查询产品的所有BOM版本
|
|||
|
|
-- SELECT * FROM md_bom
|
|||
|
|
-- WHERE item_id = 123 AND del_flag = '0'
|
|||
|
|
-- ORDER BY version DESC;
|
|||
|
|
--
|
|||
|
|
-- -- 查询产品的默认BOM(通过md_item表)
|
|||
|
|
-- SELECT b.* FROM md_bom b
|
|||
|
|
-- INNER JOIN md_item i ON b.bom_id = i.default_bom_id
|
|||
|
|
-- WHERE i.item_id = 123 AND b.del_flag = '0';
|
|||
|
|
--
|
|||
|
|
-- -- 查询BOM及其所有明细
|
|||
|
|
-- SELECT b.*, pb.* FROM md_bom b
|
|||
|
|
-- LEFT JOIN md_product_bom pb ON b.bom_id = pb.bom_id
|
|||
|
|
-- WHERE b.bom_id = 456 AND b.del_flag = '0' AND pb.del_flag = '0'
|
|||
|
|
-- ORDER BY pb.line_no;
|
|||
|
|
--
|
|||
|
|
-- ============================================================
|