随着“双碳”战略推进及企业精细化运营需求提升,传统人工抄表、分散统计的能耗管理方式已难以满足楼宇、园区、工厂等场景对实时监测、异常预警和节能决策的要求。本项目(能耗管理系统)立项旨在建设一套覆盖“采集—存储—分析—告警—运维”全链路的数字化能源管理平台,实现多能源类型统一接入、能耗可视化、定额管控与运维闭环,降低用能成本,支撑节能降碳目标。
系统采用前后端分离与微服务架构,前端基于 Vue2 + Element UI + ECharts 构建可视化界面,后端以 Spring Boot 为核心,对接 net-platform 网关、认证、系统、文件、定时任务等基础服务,EMS 业务独立部署为 ems-business 服务。核心功能模块包括:(1)数据采集与设备管理:支持 MQTT 实时采集及 IoT 平台对接,管理网关、电表、虚拟表、组合设备及空间拓扑;(2)能耗分析:提供概览、趋势、同比环比、分项、空间/车间/电表等多维分析,结合 TDengine 时序库与 MySQL 业务库实现秒级查询与报表导出;(3)报警与定额:规则配置、实时/历史报警,超定额自动预警;(4)运维管理:巡检计划与记录、值班、维修工单、例报等;(5)扩展场景:碳资产分析、能耗报告、管理体系、视频监控及充电桩运营(电站、订单、价格策略);(6)系统支撑:EMS 独立菜单权限、数据看板、平台字典与用户体系统一接入。
典型业务流程如下:管理员在平台完成用户授权后,运维人员配置空间拓扑并绑定设备;现场网关/电表通过 MQTT 或 IoT 平台上报数据,经消息队列异步处理后写入时序库与 Redis 缓存;系统按小时聚合生成统计指标,用户在能耗分析、定额监测、数据看板等页面查看;当触发报警规则时生成实时告警,可联动维修工单;巡检计划由定时任务自动生成任务,执行后形成记录闭环。用户功能路径为:登录认证 → 首页看板总览 → 按角色进入设备管理、能耗分析、报警处理或运维工单等子模块 → 导出报表或处理异常,形成“监测—分析—处置—复盘”的完整业务闭环。
1. 整体架构与设计思路
项目采用“平台 + 业务”分层微服务架构。基础能力(认证、用户、角色、字典、文件、定时任务)复用 net-platform,通过 Spring Cloud Gateway 统一入口,Nacos 做服务注册与配置中心,Redis 共享 Token 与会话。EMS 业务服务独立运行于 9400 端口,通过 OpenFeign 调用 IoT 核心服务获取物模型数据,通过内部接口接收 XXL-Job 调度。数据层采用 MySQL(业务台账、统计汇总、菜单权限)+ TDengine(高频时序数据)双库策略,Liquibase 管理 schema 版本。消息链路为 MQTT → RabbitMQ → 消费端(告警判定、缓存更新),解耦采集与业务处理。
各模块技术栈:前端 Vue2/Vuex/Axios;网关 Spring Cloud Gateway;业务 Spring Boot 2.7、MyBatis-Plus、Sa-Token、Undertow;中间件 Redis/Redisson、RabbitMQ、MQTT;时序 TDengine JDBC;集成 net-iot-core-api、EasyExcel、SpringDoc。Maven 多模块划分为 admin(启动与接口)、system(领域服务)、platform(平台适配)、framework(基础设施)、common(工具)、api(调度契约)、oss(对象存储)。
2. 负责模块与成果
本人独立完成系统全栈开发,涵盖需求分析、数据库设计、后端 50+ 接口、前端 170+ 页面、微服务改造及部署配置。主要成果:完成单体向微服务演进,实现平台认证与 EMS 菜单权限融合;打通 MQTT/IoT 双通道数据采集与 TDengine 存储;建设能耗分析、报警定额、运维巡检、充电桩等完整业务域;配套 Liquibase 迁移脚本与 Nacos 配置清单,支持一键部署。系统已在 dev 环境联调通过,具备多租户扩展与二次开发能力。
3. 难点与解决方案
难点一:微服务拆分后权限与菜单割裂。 平台管用户,EMS 管业务菜单,登录后易出现路由缺失。方案:自定义 PlatformAuthInterceptor 解析网关 JWT,合并 EMS 本地 sys_menu 权限;前端 getRouters 独立拉取 EMS 动态路由,请求层按 /ems 前缀区分平台与业务 API。
难点二:MQTT 突发流量冲击业务线程。 高峰期消息堆积导致告警延迟。方案:MQTT 回调仅投递 RabbitMQ,消费端手动 ACK + 规则引擎异步判定;Redis 缓存最新测点,看板读缓存,降低数据库压力。