Bladeren bron

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 <cursoragent@cursor.com>
wuzilong 3 weken geleden
bovenliggende
commit
5357df1cc2
3 gewijzigde bestanden met toevoegingen van 37 en 0 verwijderingen
  1. 1 0
      backend/app/models/pl_models.py
  2. 34 0
      docs/sql/migrate_pl_plan_copy_seq_no_20261009.sql
  3. 2 0
      docs/sql/shanxia2.0.sql

+ 1 - 0
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="计划日期")
 

+ 34 - 0
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;

+ 2 - 0
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,