-- 表:wms_shipment -- 用途:发货单。包裹交给承运商的记录。 -- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md -- 说明:状态变为 shipped 时扣减 picked_qty 并写 biz_type=ship 的流水,同时回写出库与订单的已发数量。获取面单、同步轨迹走队列,不在用户请求里等待承运商。 CREATE TABLE `wms_shipment` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键', `tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码', `shipment_no` VARCHAR(64) NOT NULL COMMENT '发货单号,租户内唯一', `outbound_no` VARCHAR(64) NOT NULL COMMENT '出库单号', `package_no` VARCHAR(64) NOT NULL COMMENT '包裹号', `warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码', `channel_code` VARCHAR(32) NOT NULL COMMENT '物流渠道编码', `carrier_code` VARCHAR(32) NOT NULL COMMENT '承运商编码', `tracking_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '运单号,取得面单前可空', `status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT 'pending 待获取面单,labeled 已有面单,shipped 已交出,exception 异常,delivered 已妥投,cancelled 已取消', `shipped_at` DATETIME(3) NULL COMMENT '交运时间', `created_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人 user_code', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_shipment_no` (`tenant_code`, `shipment_no`), UNIQUE KEY `uk_tenant_package` (`tenant_code`, `package_no`), KEY `idx_tenant_outbound` (`tenant_code`, `outbound_no`), KEY `idx_tenant_tracking` (`tenant_code`, `tracking_no`), KEY `idx_tenant_status` (`tenant_code`, `status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='发货单';