From 625fbc5f042e0242497d9f6e2ea3eb8b4959ca1d Mon Sep 17 00:00:00 2001 From: weicw <594098497@qq.com> Date: Tue, 27 Oct 2026 20:30:13 +0800 Subject: [PATCH] =?UTF-8?q?:card=5Ffile=5Fbox:=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=85=8D=E8=BD=BD=E5=8D=95=E5=8F=B8=E6=9C=BA=20ID=20=E5=88=97?= =?UTF-8?q?=E4=B8=8E=E8=BF=90=E5=8D=95=E9=85=8D=E8=BD=BD=E5=8D=95=E7=A7=9F?= =?UTF-8?q?=E6=88=B7=E5=8F=B8=E6=9C=BA=E7=B4=A2=E5=BC=95=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blade_loading_manage_20260804.sql | 4 +- ...lade_loading_manage_driver_id_20261028.sql | 80 +++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 doc/sql/transport/blade_loading_manage_driver_id_20261028.sql diff --git a/doc/sql/transport/blade_loading_manage_20260804.sql b/doc/sql/transport/blade_loading_manage_20260804.sql index ffadac6b..4d10b9f4 100644 --- a/doc/sql/transport/blade_loading_manage_20260804.sql +++ b/doc/sql/transport/blade_loading_manage_20260804.sql @@ -21,6 +21,7 @@ CREATE TABLE IF NOT EXISTS `blade_loading_manage` ( `trailer_vehicle_no` varchar(100) DEFAULT NULL COMMENT '挂车车牌号', `driver_name` varchar(100) DEFAULT NULL COMMENT '司机', `driver_phone` varchar(50) DEFAULT NULL COMMENT '联系电话', + `driver_id` bigint(20) DEFAULT NULL COMMENT '司机ID', `escort_name` varchar(100) DEFAULT NULL COMMENT '押运人', `escort_phone` varchar(50) DEFAULT NULL COMMENT '押运人手机号', `carrier_type` varchar(50) DEFAULT NULL COMMENT '承运类型', @@ -50,7 +51,8 @@ CREATE TABLE IF NOT EXISTS `blade_loading_manage` ( UNIQUE KEY `uk_loading_manage_no` (`loading_no`) USING BTREE, KEY `idx_loading_manage_carrier_contract_id` (`carrier_contract_id`) USING BTREE, KEY `idx_loading_manage_dept` (`dept_id`) USING BTREE, - KEY `idx_loading_manage_create_time` (`create_time`) USING BTREE + KEY `idx_loading_manage_create_time` (`create_time`) USING BTREE, + KEY `idx_loading_manage_tenant_driver_id` (`tenant_id`, `driver_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配载管理'; INSERT IGNORE INTO `blade_menu` (`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `component`, `remark`, `is_deleted`) VALUES diff --git a/doc/sql/transport/blade_loading_manage_driver_id_20261028.sql b/doc/sql/transport/blade_loading_manage_driver_id_20261028.sql new file mode 100644 index 00000000..1e828a9c --- /dev/null +++ b/doc/sql/transport/blade_loading_manage_driver_id_20261028.sql @@ -0,0 +1,80 @@ +-- ============================================================ +-- blade_loading_manage_driver_id_20261028.sql +-- ============================================================ +-- 运单/配载单写入司机档案 ID,把「归属」与「手机号快照」解耦: +-- blade_loading_manage.driver_id 配载单当前司机的司机档案 ID(blade_transport_driver.id) +-- blade_waybill.driver_id 已有列(本脚本只补索引),派单/配载/导入时写入 +-- 归属判据:driver_id > 0 才算有主;0、-1 与 NULL 一律等同「无主」(承运商司机、未登录过小程序的司机)。 +-- 历史数据不回填:手机号二次放号后按号反查会张冠李戴,旧单统一按无主处理,等下一次派单/配载再写入。 +-- 本脚本只做结构升级,不改任何业务数据;以下结构变更可重复执行。 + +-- ------------------------------------------------------------ +-- 0. 存档 +-- ------------------------------------------------------------ +-- 本脚本无数据订正,无需备份表。 + +-- ------------------------------------------------------------ +-- 1. 结构变更 +-- ------------------------------------------------------------ +-- ① blade_loading_manage.driver_id +SET @ddl_sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE `blade_loading_manage` ADD COLUMN `driver_id` bigint(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''司机ID'' AFTER `driver_phone`', + 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_loading_manage' + AND COLUMN_NAME = 'driver_id' +); +PREPARE ddl_stmt FROM @ddl_sql; +EXECUTE ddl_stmt; +DEALLOCATE PREPARE ddl_stmt; + +-- ② blade_loading_manage 按租户 + 司机归属检索(司机端/归属巡检) +SET @ddl_sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE `blade_loading_manage` ADD KEY `idx_loading_manage_tenant_driver_id` (`tenant_id`, `driver_id`) USING BTREE', + 'SELECT 1') + FROM information_schema.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_loading_manage' + AND INDEX_NAME = 'idx_loading_manage_tenant_driver_id' +); +PREPARE ddl_stmt FROM @ddl_sql; +EXECUTE ddl_stmt; +DEALLOCATE PREPARE ddl_stmt; + +-- ③ blade_waybill 按租户 + 司机归属检索(列已存在,只补索引) +SET @ddl_sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE `blade_waybill` ADD KEY `idx_waybill_tenant_driver_id` (`tenant_id`, `driver_id`) USING BTREE', + 'SELECT 1') + FROM information_schema.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_waybill' + AND INDEX_NAME = 'idx_waybill_tenant_driver_id' +); +PREPARE ddl_stmt FROM @ddl_sql; +EXECUTE ddl_stmt; +DEALLOCATE PREPARE ddl_stmt; + +-- ------------------------------------------------------------ +-- 2. 校验 +-- ------------------------------------------------------------ +-- 列存在(期望 1 行) +-- SELECT COUNT(*) FROM information_schema.COLUMNS +-- WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'blade_loading_manage' AND COLUMN_NAME = 'driver_id'; +-- 索引存在(期望 2 行) +-- SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME FROM information_schema.STATISTICS +-- WHERE TABLE_SCHEMA = DATABASE() +-- AND INDEX_NAME IN ('idx_loading_manage_tenant_driver_id', 'idx_waybill_tenant_driver_id') +-- ORDER BY TABLE_NAME, SEQ_IN_INDEX; +-- 归属分布(历史单 driver_id 应为空) +-- SELECT COUNT(*) AS total, SUM(driver_id IS NOT NULL AND driver_id > 0) AS owned FROM blade_waybill; + +-- ------------------------------------------------------------ +-- 3. 回退 +-- ------------------------------------------------------------ +-- ALTER TABLE `blade_waybill` DROP INDEX `idx_waybill_tenant_driver_id`; +-- ALTER TABLE `blade_loading_manage` DROP INDEX `idx_loading_manage_tenant_driver_id`; +-- ALTER TABLE `blade_loading_manage` DROP COLUMN `driver_id`;