-- 运输计划 · 一车多卸重构 — 装货/送货段表 -- 设计文档: docs/superpowers/specs/2026-08-26-pl-multi-stop-redesign-design.md -- 日期: 2026-08-26 SET NAMES utf8mb4; -- --------------------------------------------------------------------------- -- 1. pl_plan 新增运费备注 -- --------------------------------------------------------------------------- ALTER TABLE `pl_plan` ADD COLUMN `freight_remark` varchar(512) DEFAULT NULL COMMENT '运费备注' AFTER `freight_amount`; -- --------------------------------------------------------------------------- -- 2. pl_plan_contract 扩展 side 枚举 + 停靠段关联 -- --------------------------------------------------------------------------- ALTER TABLE `pl_plan_contract` ADD COLUMN `stop_id` varchar(64) DEFAULT NULL COMMENT '停靠段ID(装货段或送货段)' AFTER `side`, MODIFY COLUMN `side` varchar(20) NOT NULL COMMENT 'supplier-供方 demander-需方 load-装货 delivery-送货'; ALTER TABLE `pl_plan_contract` ADD KEY `idx_pl_plan_contract_stop` (`plan_id`, `stop_id`, `del_flag`) USING BTREE; -- --------------------------------------------------------------------------- -- 3. pl_transport_db_link 按段关联地磅 -- --------------------------------------------------------------------------- ALTER TABLE `pl_transport_db_link` ADD COLUMN `stop_type` varchar(20) DEFAULT NULL COMMENT '停靠段类型 load-装货 delivery-送货' AFTER `plan_product_id`, ADD COLUMN `stop_id` varchar(64) DEFAULT NULL COMMENT '停靠段ID' AFTER `stop_type`; ALTER TABLE `pl_transport_db_link` ADD KEY `idx_pl_tdb_link_stop` (`stop_type`, `stop_id`) USING BTREE; -- --------------------------------------------------------------------------- -- 4. 装货段(plan 1:1) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `pl_plan_load` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `plan_id` varchar(64) NOT NULL COMMENT '计划ID', `customer_id` varchar(64) DEFAULT NULL COMMENT '装货客户ID', `customer_name` varchar(200) DEFAULT NULL COMMENT '装货客户名称', `address` varchar(500) DEFAULT NULL COMMENT '装货地址', `lng` decimal(10,6) DEFAULT NULL COMMENT '经度', `lat` decimal(10,6) DEFAULT NULL COMMENT '纬度', `load_time` datetime DEFAULT NULL COMMENT '装货时间', `contact` varchar(200) DEFAULT NULL COMMENT '联系方式', `notes` varchar(500) DEFAULT NULL COMMENT '注意事项', `generate_dibang` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否生成地磅单 0-否 1-是', `dibang_direction` varchar(20) DEFAULT NULL COMMENT '地磅方向 outbound-出库 inbound-入库 none-无', `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `uk_pl_plan_load_plan` (`plan_id`) USING BTREE, KEY `idx_pl_plan_load_plan` (`plan_id`, `del_flag`) USING BTREE, KEY `idx_tenant` (`tenant_no`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-装货段'; -- --------------------------------------------------------------------------- -- 5. 装货段产品明细 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `pl_plan_load_product` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `load_id` varchar(64) NOT NULL COMMENT '装货段ID', `plan_id` varchar(64) NOT NULL COMMENT '计划ID', `plan_product_id` varchar(64) NOT NULL COMMENT '计划产品行ID', `product_id` varchar(64) NOT NULL COMMENT '产品ID', `product_no` varchar(50) NOT NULL COMMENT '产品编号', `product_name` varchar(200) NOT NULL COMMENT '产品名称', `model` varchar(100) DEFAULT NULL COMMENT '规格型号', `unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位', `package_spec` varchar(200) DEFAULT NULL COMMENT '包装规格', `delivery_method` varchar(50) DEFAULT NULL COMMENT '送货方式', `plan_qty` decimal(15,3) DEFAULT NULL COMMENT '本段计划数量', `inbound_qty` decimal(15,3) DEFAULT NULL COMMENT '入库数量(归档)', `inbound_price` decimal(15,4) DEFAULT NULL COMMENT '入库单价(归档)', `inbound_amount` decimal(15,2) DEFAULT NULL COMMENT '入库金额(归档)', `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', PRIMARY KEY (`id`) USING BTREE, KEY `idx_pl_plan_load_product_load` (`load_id`, `del_flag`) USING BTREE, KEY `idx_pl_plan_load_product_plan` (`plan_id`, `del_flag`) USING BTREE, KEY `idx_pl_plan_load_product_pp` (`plan_product_id`) USING BTREE, KEY `idx_tenant` (`tenant_no`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-装货段产品明细'; -- --------------------------------------------------------------------------- -- 6. 送货段(plan 1:N) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `pl_plan_delivery` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `plan_id` varchar(64) NOT NULL COMMENT '计划ID', `seq` int(11) NOT NULL DEFAULT '1' COMMENT '顺序号(打印、链接展示)', `customer_id` varchar(64) DEFAULT NULL COMMENT '送货客户ID', `customer_name` varchar(200) DEFAULT NULL COMMENT '送货客户名称', `address` varchar(500) DEFAULT NULL COMMENT '送货地址', `lng` decimal(10,6) DEFAULT NULL COMMENT '经度', `lat` decimal(10,6) DEFAULT NULL COMMENT '纬度', `delivery_time` datetime DEFAULT NULL COMMENT '送货时间', `contact` varchar(200) DEFAULT NULL COMMENT '联系方式', `notes` varchar(500) DEFAULT NULL COMMENT '注意事项', `generate_dibang` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否生成地磅单 0-否 1-是', `dibang_direction` varchar(20) DEFAULT NULL COMMENT '地磅方向 outbound-出库 inbound-入库 none-无', `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', PRIMARY KEY (`id`) USING BTREE, KEY `idx_pl_plan_delivery_plan` (`plan_id`, `del_flag`) USING BTREE, KEY `idx_pl_plan_delivery_seq` (`plan_id`, `seq`, `del_flag`) USING BTREE, KEY `idx_tenant` (`tenant_no`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-送货段'; -- --------------------------------------------------------------------------- -- 7. 送货段产品明细 -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `pl_plan_delivery_product` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `delivery_id` varchar(64) NOT NULL COMMENT '送货段ID', `plan_id` varchar(64) NOT NULL COMMENT '计划ID', `plan_product_id` varchar(64) NOT NULL COMMENT '计划产品行ID', `product_id` varchar(64) NOT NULL COMMENT '产品ID', `product_no` varchar(50) NOT NULL COMMENT '产品编号', `product_name` varchar(200) NOT NULL COMMENT '产品名称', `model` varchar(100) DEFAULT NULL COMMENT '规格型号', `unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位', `package_spec` varchar(200) DEFAULT NULL COMMENT '包装规格', `delivery_method` varchar(50) DEFAULT NULL COMMENT '送货方式', `plan_qty` decimal(15,3) DEFAULT NULL COMMENT '本段计划数量', `outbound_qty` decimal(15,3) DEFAULT NULL COMMENT '出库数量(归档)', `outbound_price` decimal(15,4) DEFAULT NULL COMMENT '出库单价(归档)', `outbound_amount` decimal(15,2) DEFAULT NULL COMMENT '出库金额(归档)', `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', PRIMARY KEY (`id`) USING BTREE, KEY `idx_pl_plan_delivery_product_delivery` (`delivery_id`, `del_flag`) USING BTREE, KEY `idx_pl_plan_delivery_product_plan` (`plan_id`, `del_flag`) USING BTREE, KEY `idx_pl_plan_delivery_product_pp` (`plan_product_id`) USING BTREE, KEY `idx_tenant` (`tenant_no`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-送货段产品明细';