64 lines
3.2 KiB
SQL
64 lines
3.2 KiB
SQL
-- =============================================================================
|
||
-- 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;
|