|
|
1 неделю назад | |
|---|---|---|
| .. | ||
| migration | 1 неделю назад | |
| postgresql | 1 неделю назад | |
| seed | 1 неделю назад | |
| tdengine | 1 неделю назад | |
| README.md | 1 неделю назад | |
| chemical_dosing_ddl.sql | 1 неделю назад | |
| dma_ddl.sql | 1 неделю назад | |
| gis_ddl.sql | 1 неделю назад | |
| quality_ledger_ddl.sql | 1 неделю назад | |
本目录包含智慧水务管理系统的完整数据库设计,包括 PostgreSQL + TDengine + Flyway 版本管理。
db/
├── README.md # 本文档
├── flyway.conf # Flyway 配置文件
├── migration/ # Flyway 迁移脚本目录
│ └── V1.1__Add_Indexes_And_Triggers.sql # 性能优化迁移
├── postgresql/ # PostgreSQL 数据库脚本
│ └── V1__init.sql # 完整的 PostgreSQL DDL 脚本
├── tdengine/ # TDengine 时序数据库脚本
│ └── init.sql # TDengine 建表脚本
└── seed/ # 初始化数据脚本
└── V1__seed.sql # 初始化数据脚本
用户权限体系 (sys_*)
sys_dept: 部门管理(水利局/水务公司/运维单位)sys_user: 用户管理sys_role: 角色管理(admin/leader/manager/operator/tech)sys_menu: 菜单管理sys_user_role: 用户-角色关联sys_role_menu: 角色-菜单关联sys_operation_log: 操作日志物联网设备管理 (iot_*)
iot_device_model: 设备模型定义iot_device: 设备实例管理iot_telemetry_cache: 设备遥测数据缓存iot_device_heartbeat: 设备心跳记录iot_firmware: 设备固件管理iot_firmware_upgrade: 设备固件升级记录营业收费 (rev_*)
rev_customer: 用水户管理rev_meter: 水表档案rev_reading_schedule: 抄表计划rev_reading: 抄表记录rev_water_rate: 水费标准rev_bill: 水费账单rev_payment: 收费记录巡检系统 (patrol_*)
patrol_route: 巡检路线patrol_task: 巡检任务patrol_record: 巡检记录patrol_standard: 巡检标准报警管理 (alert_*)
alert_rule: 报警规则alert_event: 报警事件alert_handle_record: 报警处理记录alert_notify_scheme: 通知方案系统管理
sys_config: 系统参数配置sys_dict: 数据字典flyway_schema_history: Flyway 迁移历史GEOMETRY(Point, 4326) 存储设备遥测数据超级表
iot_flow_data: 水表流量数据iot_pressure_data: 压力传感器数据iot_water_quality_data: 水质监测数据iot_level_data: 液位传感器数据iot_valve_data: 阀门状态数据iot_status_data: 设备状态数据片区和设备类型子表
统计和质量数据表
iot_device_stats: 设备运行统计iot_data_quality_stats: 数据质量统计water_supply_stats: 供水运行统计V1__init.sql: 初始化数据库结构V1.1__Add_Indexes_And_Triggers.sql: 性能优化和索引创建V1__seed.sql: 初始化数据flyway.conf: Flyway 配置PostgreSQL
TDengine
# 1. 启动数据库服务
systemctl start postgresql
systemctl start taosd
# 2. 安装 PostGIS 扩展
psql -U postgres -d water_mgt -c "CREATE EXTENSION IF NOT EXISTS postgis;"
# 3. 运行 Flyway 迁移
flyway -configFile=flyway.conf migrate
# 4. 插入初始化数据
psql -U postgres -d water_mgt -f db/seed/V1__seed.sql
# 5. 运行 TDengine 初始化脚本
taos -s "db/tdengine/init.sql"
-- 检查表数量
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public';
-- 检查数据量
SELECT '用户数' AS table_name, COUNT(*) AS count FROM sys_user UNION ALL
SELECT '设备数', COUNT(*) FROM iot_device UNION ALL
SELECT '客户数', COUNT(*) FROM rev_customer UNION ALL
SELECT '水表数', COUNT(*) FROM rev_meter;
PostgreSQL 查询示例
-- 查询在线设备
SELECT device_sn, device_name, status FROM iot_device WHERE status = 'online';
-- 查询区域用水统计
SELECT area, SUM(consumption) as total_usage
FROM rev_reading r
JOIN rev_meter m ON r.meter_id = m.id
JOIN rev_customer c ON m.customer_id = c.id
GROUP BY area;
TDengine 查询示例
-- 查询水表流量数据
SELECT ts, device_sn, metric_value
FROM jingmang_flow_data
WHERE ts > NOW() - INTERVAL '1 day'
ORDER BY ts DESC;
-- 计算小时平均流量
SELECT COUNT(*) / 60.0 as avg_flow
FROM jingmang_flow_data
WHERE ts > NOW() - INTERVAL '1 hour';
水费计算
SELECT * FROM calculate_water_fee(1, '2026-06');
设备状态监控
SELECT * FROM get_device_latest_metrics('JM20260001');
报警历史查询
SELECT * FROM get_alert_history('精芒片区', 7);