🗃️ 新增配载单司机 ID 列与运单配载单租户司机索引脚本
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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`;
|
||||
Reference in New Issue
Block a user