165 lines
10 KiB
SQL
165 lines
10 KiB
SQL
-- 运输计划 · 一车多卸重构 — 装货/送货段表
|
||
-- 设计文档: 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='运输计划-送货段产品明细';
|