SET NAMES utf8mb4; USE baiyue_firstleg; -- 存量环境可重复执行:首次打印前冻结整单箱号;Print 服务继续保持无状态。 CREATE TABLE IF NOT EXISTS fl_inbound_carton_label ( id BIGINT UNSIGNED NOT NULL COMMENT '实际箱唛头映射ID(雪花ID)', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '客户ID和数据隔离键', inbound_id BIGINT UNSIGNED NOT NULL COMMENT '入库单ID', order_id BIGINT UNSIGNED NOT NULL COMMENT '订单服务订单ID快照', inbound_detail_id BIGINT UNSIGNED NOT NULL COMMENT '订单货物明细ID,不建立跨库外键', cargo_item_no INT UNSIGNED NOT NULL COMMENT '订单货物明细序号快照', cargo_name VARCHAR(255) NULL COMMENT '货物名称快照', detail_package_count INT UNSIGNED NOT NULL COMMENT '该订单货物明细箱数快照', inbound_code VARCHAR(40) NOT NULL COMMENT '入仓码快照', box_code VARCHAR(80) NOT NULL COMMENT '固定二维码内容:入仓码#总箱数-箱下标', total_carton_count INT UNSIGNED NOT NULL COMMENT '首次分配时整单总箱数', carton_index INT UNSIGNED NOT NULL COMMENT '整单从1开始的稳定箱下标', label_version INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '内部兼容批次字段,固定为1且不进入箱码', batch_status VARCHAR(16) NOT NULL DEFAULT 'ACTIVE' COMMENT '批次状态:ACTIVE有效、VOID已作废', cargo_fingerprint CHAR(64) NULL COMMENT '影响标签字段的SHA-256指纹', voided_at DATETIME(3) NULL COMMENT '批次作废时间', box_specification VARCHAR(255) NOT NULL COMMENT '订单箱规或货物明细描述快照', length_cm DECIMAL(12,3) NULL COMMENT '下单箱规长度cm快照', width_cm DECIMAL(12,3) NULL COMMENT '下单箱规宽度cm快照', height_cm DECIMAL(12,3) NULL COMMENT '下单箱规高度cm快照', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '首次分配时间', PRIMARY KEY (id), UNIQUE KEY uk_carton_label_box_code (tenant_id, box_code), UNIQUE KEY uk_carton_label_index (tenant_id, inbound_id, label_version, carton_index), KEY idx_carton_label_active (tenant_id, inbound_id, batch_status, label_version), KEY idx_carton_label_detail (tenant_id, inbound_id, inbound_detail_id), CONSTRAINT fk_carton_label_inbound FOREIGN KEY (inbound_id) REFERENCES fl_inbound_order (id) ) ENGINE=InnoDB COMMENT='首次打印前冻结的实际箱号与订单货物明细映射';