-- ============================================================================= -- IT-7 叫乘记录三时间字段(可重放) -- 依据:叫乘任务要求「每条记录包含 叫乘时间 / 复叫时间 / 应离寓时间」, -- 到点分别触发:首轮呼叫、自动复叫、离寓报警。 -- 口径: -- 1) jcsj 已存在(叫乘时间,权威);本次只补 fjsj(复叫时间,计划)与 -- ylysj(应离寓时间); -- 2) fjsj 与既有 fjsj_s 分工:fjsj=计划复叫时间(到点判定), -- fjsj_s=实际复叫时刻(执行留痕,防重复触发); -- 3) ryzt / finish_jc / finish_ly / stoped 仍只有 apt.duty.state 一个写入口, -- 本脚本不写任何业务数据; -- 4) 幂等:补列走 apt_add_column_if_missing,索引先查 information_schema。 -- ============================================================================= SET NAMES utf8mb4; -- ----------------------------------------------------------------------------- -- 1. gy_jcxx 三时间字段补齐 -- ----------------------------------------------------------------------------- CALL apt_add_column_if_missing('gy_jcxx', 'fjsj', "fjsj DATETIME(3) NULL COMMENT '复叫时间(计划;到点自动复叫)'"); CALL apt_add_column_if_missing('gy_jcxx', 'ylysj', "ylysj DATETIME(3) NULL COMMENT '应离寓时间(到点未离寓转离寓报警)'"); -- ----------------------------------------------------------------------------- -- 2. 到点扫描索引(复叫到点 + 应离寓超时) -- ----------------------------------------------------------------------------- SET @apt_idx_fjsj = (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'gy_jcxx' AND INDEX_NAME = 'idx_jcxx_fjsj'); SET @apt_sql_fjsj = IF(@apt_idx_fjsj = 0, 'ALTER TABLE gy_jcxx ADD KEY idx_jcxx_fjsj (gyid, fjsj)', 'SELECT 1'); PREPARE apt_stmt_fjsj FROM @apt_sql_fjsj; EXECUTE apt_stmt_fjsj; DEALLOCATE PREPARE apt_stmt_fjsj; SET @apt_idx_ylysj = (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'gy_jcxx' AND INDEX_NAME = 'idx_jcxx_ylysj'); SET @apt_sql_ylysj = IF(@apt_idx_ylysj = 0, 'ALTER TABLE gy_jcxx ADD KEY idx_jcxx_ylysj (gyid, ylysj)', 'SELECT 1'); PREPARE apt_stmt_ylysj FROM @apt_sql_ylysj; EXECUTE apt_stmt_ylysj; DEALLOCATE PREPARE apt_stmt_ylysj; -- ----------------------------------------------------------------------------- -- 3. 校验 -- ----------------------------------------------------------------------------- SELECT '=== IT-7 gy_jcxx 三时间字段(应 3:jcsj / fjsj / ylysj)===' AS section; SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'gy_jcxx' AND COLUMN_NAME IN ('jcsj','fjsj','ylysj') ORDER BY COLUMN_NAME; SELECT '=== IT-7 到点扫描索引(应 2)===' AS section; SELECT TABLE_NAME, INDEX_NAME, GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) AS cols FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND INDEX_NAME IN ('idx_jcxx_fjsj','idx_jcxx_ylysj') GROUP BY TABLE_NAME, INDEX_NAME;