-- 交易订单管理(主表 + 采购明细子表) SET NAMES utf8mb4; CREATE TABLE IF NOT EXISTS `biz_trade_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `order_no` varchar(11) NOT NULL COMMENT '订单编号YYYYMMDD+3位序号', `supplier_id` bigint(20) NOT NULL COMMENT '供应商ID', `distributor_id` bigint(20) NOT NULL COMMENT '承销商ID', `total_heads` int(11) NOT NULL COMMENT '交易总头数', `total_amount` decimal(12,2) NOT NULL COMMENT '交易总金额元', `order_status` char(1) NOT NULL DEFAULT '0' COMMENT '0待支付 1已完成', `pay_voucher_url` varchar(512) DEFAULT NULL COMMENT '支付凭证URL', `pay_voucher_path` varchar(512) DEFAULT NULL COMMENT '支付凭证路径', `finish_time` datetime DEFAULT NULL COMMENT '订单完成时间', `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '0存在 2删除', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '订单创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_no` (`order_no`), KEY `idx_supplier` (`supplier_id`), KEY `idx_distributor` (`distributor_id`), KEY `idx_order_status` (`order_status`), KEY `idx_create_time` (`create_time`), KEY `idx_del_flag` (`del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易订单'; CREATE TABLE IF NOT EXISTS `biz_trade_order_line` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `order_id` bigint(20) NOT NULL COMMENT '交易订单主表ID', `supplier_id` bigint(20) NOT NULL COMMENT '供应商ID冗余', `ear_tag` varchar(32) NOT NULL COMMENT '耳标号', `weight` decimal(12,2) NOT NULL COMMENT '重量kg', `amount` decimal(12,2) NOT NULL COMMENT '金额元', `grade_code` char(1) DEFAULT NULL COMMENT '品质等级编码,保存时按biz_grade_weight_config匹配', `grade_name` varchar(32) DEFAULT NULL COMMENT '品质等级名称快照,与grade_code同时写入', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_ear` (`order_id`,`ear_tag`), KEY `idx_order_id` (`order_id`), KEY `idx_supplier` (`supplier_id`), KEY `idx_ear_tag` (`ear_tag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易订单采购明细'; -- 已建表时按需执行(新环境无需执行) -- ALTER TABLE `biz_trade_order_line` -- ADD COLUMN `grade_code` char(1) DEFAULT NULL COMMENT '品质等级编码,保存时按biz_grade_weight_config匹配' AFTER `amount`, -- ADD COLUMN `grade_name` varchar(32) DEFAULT NULL COMMENT '品质等级名称快照,与grade_code同时写入' AFTER `grade_code`; -- 已建表时按需执行:历史明细按重量回填等级(需已执行 sql/biz_grade_weight_config.sql) -- UPDATE biz_trade_order_line l -- INNER JOIN biz_grade_weight_config g ON l.weight >= g.min_weight AND l.weight <= g.max_weight -- SET l.grade_code = g.grade_code, l.grade_name = g.grade_name -- WHERE l.grade_code IS NULL; -- 已建表时按需执行(新环境无需执行) -- ALTER TABLE `biz_trade_order_line` -- ADD COLUMN `supplier_id` bigint(20) NOT NULL COMMENT '供应商ID冗余' AFTER `order_id`, -- ADD KEY `idx_supplier` (`supplier_id`); -- UPDATE biz_trade_order_line l -- INNER JOIN biz_trade_order o ON o.id = l.order_id SET l.supplier_id = o.supplier_id;