Files
aiot-platform-cloud/sql/mysql/aiot_ops_traffic_statistics.sql
lzh 46024fd043 refactor(iot): 重构客流计数器为增量累加模式,支持 people_out
- 删除旧 TrafficCounterBaseRedisDAO(基准值模式),新增 TrafficCounterRedisDAO
  支持阈值计数器(达标后重置)和当日累积统计(用于报表)
- TrafficThresholdRuleProcessor 改为增量原子累加,消除基准值校准逻辑
- CleanRuleProcessorManager 路由增加 people_out 支持
- TrafficCounterBaseResetJob 改为每日清除阈值计数器,持久化职责移交 Ops 模块
- 使用 SCAN 替代 KEYS 避免阻塞 Redis

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 15:34:03 +08:00

29 lines
1.7 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Ops 模块:客流统计小时汇总表
-- 用于业务报表统计,数据来源于 IoT 设备的客流计数器
-- 每小时由 Ops 的 TrafficStatisticsPersistJob 从 Redis 持久化到 MySQL
CREATE TABLE IF NOT EXISTS `ops_traffic_statistics` (
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
`device_id` BIGINT NOT NULL COMMENT '设备ID数据来源',
`area_id` BIGINT NOT NULL COMMENT '区域ID主查询维度',
`stat_hour` DATETIME NOT NULL COMMENT '统计小时(精确到小时,如 2026-02-03 10:00:00',
`people_in` INT NOT NULL DEFAULT 0 COMMENT '进入人数',
`people_out` INT NOT NULL DEFAULT 0 COMMENT '离开人数',
`tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID',
`creator` VARCHAR(64) DEFAULT '' COMMENT '创建者',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` VARCHAR(64) DEFAULT '' COMMENT '更新者',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
-- 唯一约束:同一设备、同一小时、同一租户,只有一条记录
UNIQUE KEY `uk_device_hour_tenant` (`device_id`, `stat_hour`, `tenant_id`, `deleted`),
-- 区域+小时索引:用于按区域统计客流
INDEX `idx_area_hour` (`area_id`, `stat_hour`),
-- 设备+小时索引:用于按设备查询历史
INDEX `idx_device_hour` (`device_id`, `stat_hour`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客流统计小时汇总表Ops业务统计';