From 5357df1cc299d0f0815cb1fd5113340a194bde60 Mon Sep 17 00:00:00 2001 From: wuzilong <704541015@qq.com> Date: Fri, 9 Oct 2026 12:33:00 +0800 Subject: [PATCH] feat(pl): add pl_plan.copy_seq_no for copy-to-group sequence Persist a tenant-scoped fixed serial for driver-plan clipboard text; include migration backfill by create_time. Co-authored-by: Cursor --- backend/app/models/pl_models.py | 1 + .../migrate_pl_plan_copy_seq_no_20261009.sql | 34 +++++++++++++++++++ docs/sql/shanxia2.0.sql | 2 ++ 3 files changed, 37 insertions(+) create mode 100644 docs/sql/migrate_pl_plan_copy_seq_no_20261009.sql diff --git a/backend/app/models/pl_models.py b/backend/app/models/pl_models.py index a2e272c64..6bf0ed88b 100644 --- a/backend/app/models/pl_models.py +++ b/backend/app/models/pl_models.py @@ -274,6 +274,7 @@ class PlPlan(Base): # 编号信息 plan_no = Column(String(32), nullable=False, unique=True, comment="计划订单编号 POYYYYMMDD###") + copy_seq_no = Column(Integer, nullable=True, comment="复制发群序号(租户内固定流水)") create_date = Column(Date, nullable=False, comment="创建日期") plan_date = Column(Date, nullable=True, comment="计划日期") diff --git a/docs/sql/migrate_pl_plan_copy_seq_no_20261009.sql b/docs/sql/migrate_pl_plan_copy_seq_no_20261009.sql new file mode 100644 index 000000000..84079a3a5 --- /dev/null +++ b/docs/sql/migrate_pl_plan_copy_seq_no_20261009.sql @@ -0,0 +1,34 @@ +-- 运输计划复制发群固定序号(租户内流水) +-- MySQL 5.7 +-- 2026-10-09 +-- 若列已存在,跳过 ALTER(重复执行会报 Duplicate column)。 + +ALTER TABLE `pl_plan` + ADD COLUMN `copy_seq_no` int(11) DEFAULT NULL COMMENT '复制发群序号(租户内固定流水,首次复制时分配)' AFTER `plan_no`, + ADD KEY `idx_pl_plan_tenant_copy_seq` (`tenant_no`, `copy_seq_no`); + +-- 历史回填:按租户 create_time ASC, id ASC,含软删;已有值不覆盖 +-- MySQL 5.7 用户变量按租户编号(会话内执行) +SET @prev_tenant := NULL; +SET @rn := 0; + +UPDATE `pl_plan` p +INNER JOIN ( + SELECT + t.id, + t.seq_no + FROM ( + SELECT + id, + tenant_no, + @rn := IF(@prev_tenant = tenant_no, @rn + 1, 1) AS seq_no, + @prev_tenant := tenant_no AS _tenant + FROM ( + SELECT id, tenant_no, create_time + FROM `pl_plan` + ORDER BY tenant_no ASC, create_time ASC, id ASC + ) ordered + ) t +) ranked ON ranked.id = p.id +SET p.`copy_seq_no` = ranked.seq_no +WHERE p.`copy_seq_no` IS NULL; diff --git a/docs/sql/shanxia2.0.sql b/docs/sql/shanxia2.0.sql index a68c4d77f..e3d6fc425 100644 --- a/docs/sql/shanxia2.0.sql +++ b/docs/sql/shanxia2.0.sql @@ -25732,6 +25732,7 @@ DROP TABLE IF EXISTS `pl_plan`; CREATE TABLE `pl_plan` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `plan_no` varchar(32) NOT NULL COMMENT '计划订单编号 SXDDHYYYYMMDD######', + `copy_seq_no` int(11) DEFAULT NULL COMMENT '复制发群序号(租户内固定流水,首次复制时分配)', `create_date` date NOT NULL COMMENT '创建日期', `plan_date` date DEFAULT NULL COMMENT '计划日期', `belongs_company` varchar(20) NOT NULL COMMENT '归属公司 shanxia-安庆山峡 yundong-安徽云栋', @@ -25807,6 +25808,7 @@ CREATE TABLE `pl_plan` ( PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `uk_plan_no` (`plan_no`) USING BTREE, KEY `idx_tenant` (`tenant_no`) USING BTREE, + KEY `idx_pl_plan_tenant_copy_seq` (`tenant_no`, `copy_seq_no`) USING BTREE, KEY `idx_plan_type` (`plan_type`) USING BTREE, KEY `idx_follow_status` (`follow_status`) USING BTREE, KEY `idx_plan_date` (`plan_date`) USING BTREE,