监控车辆无任务运行超过配置公里数(默认10公里)时自动产生告警,并通过小程序/企业微信通知相关负责人。
cd /path/to/RuoYi-Vue-master
mysql -u用户名 -p密码 数据库名 < sql/vehicle_abnormal_alert.sql
脚本内容包括:
- ✅ 创建告警记录表 (tb_vehicle_abnormal_alert)
- ✅ 创建告警配置表 (tb_vehicle_alert_config)
- ✅ 插入系统配置参数 (6个配置项)
- ✅ 创建定时任务 (vehicle Abnormal Alert Task)
- ✅ 创建菜单权限 (车辆异常告警管理)
在"系统管理 > 参数设置"中配置以下参数:
| 参数名称 | 参数键名 | 配置值示例 | 说明 |
|---|---|---|---|
| 车辆异常告警通知用户 | vehicle.alert.notify.users | 1,2,3 | 接收通知的用户ID,逗号分隔 |
💡 提示:如果不配置,将尝试根据车辆归属部门查找负责人
如需使用企业微信通知功能,在"系统管理 > 参数设置"中确保以下配置:
| 参数键名 | 说明 | 示例值 |
|---|---|---|
| qy_wechat.enable | 企业微信启用开关 | true |
| qy_wechat.corp_id | 企业ID | ww123456789 |
| qy_wechat.corp_secret | 应用Secret | xxxxx |
| qy_wechat.agent_id | 应用ID | 1000002 |
| 配置键 | 默认值 | 说明 |
|---|---|---|
| vehicle.alert.enabled | true | 功能总开关,false则停用 |
| vehicle.alert.mileage.threshold | 10 | 告警阈值(公里) |
| 配置键 | 默认值 | 说明 |
|---|---|---|
| vehicle.alert.daily.limit | 5 | 每车每天最多告警次数 |
| vehicle.alert.interval.minutes | 5 | 两次告警最小间隔(分钟) |
| vehicle.alert.time.window | 10 | 监控时间窗口(分钟) |
| vehicle.alert.notify.users | (空) | 通知用户ID列表 |
0 */5 * * * ? (每5分钟执行一次)vehicleAbnormalAlertTask.monitorVehicleAbnormalRunning()每5分钟执行一次
↓
查询所有车辆
↓
逐车检查(并行处理)
├─ 检查是否有正在执行的任务
├─ 计算最近10分钟运行里程
├─ 判断是否超过阈值
├─ 检查告警频率限制
└─ 创建告警并发送通知
system:vehicleAlert:query - 查询告警system:vehicleAlert:detail - 告警详情system:vehicleAlert:handle - 处理告警system:vehicleAlert:export - 导出数据system:vehicleAlert:config - 配置管理排查步骤:
1. 检查定时任务是否启用
2. 查看定时任务执行日志:系统监控 > 调度日志
3. 确认 vehicle.alert.enabled = true
4. 确认GPS分段里程表有数据
5. 检查车辆是否真的无任务运行
排查步骤:
1. 检查企业微信配置是否正确
2. 确认 qy_wechat.enable = true
3. 查看后台日志:搜索"发送告警通知"
4. 确认用户已绑定企业微信ID
解决方案:
1. 调高公里数阈值:vehicle.alert.mileage.threshold = 20
2. 减少每日告警次数:vehicle.alert.daily.limit = 3
3. 增加告警间隔:vehicle.alert.interval.minutes = 10
检查项:
1. 确认GPS分段里程计算任务正常运行
2. 查看 tb_vehicle_gps_segment_mileage 表数据
3. 调整监控时间窗口:vehicle.alert.time.window = 15
调整配置便于触发
sql UPDATE sys_config SET config_value = '1' WHERE config_key = 'vehicle.alert.mileage.threshold';
手动触发定时任务
sql UPDATE sys_config SET config_value = '10' WHERE config_key = 'vehicle.alert.mileage.threshold'; -- 告警记录表索引
CREATE INDEX idx_vehicle_id ON tb_vehicle_abnormal_alert(vehicle_id);
CREATE INDEX idx_alert_date ON tb_vehicle_abnormal_alert(alert_date);
CREATE INDEX idx_vehicle_date ON tb_vehicle_abnormal_alert(vehicle_id, alert_date);
CREATE INDEX idx_status ON tb_vehicle_abnormal_alert(status);
在生产环境,建议设置日志级别为 INFO:yaml logging: level: com.ruoyi.quartz.task.VehicleAbnormalAlertTask: INFO
logs/sys-info.logsys_job_log# 监控任务执行日志
grep "车辆异常运行监控" logs/sys-info.log
# 告警生成日志
grep "产生异常告警" logs/sys-info.log
# 通知发送日志
grep "发送告警通知" logs/sys-info.log
-- 查看今日告警统计
SELECT status, COUNT(*) as count
FROM tb_vehicle_abnormal_alert
WHERE DATE(alert_date) = CURDATE()
GROUP BY status;
-- 查看告警频繁的车辆
SELECT vehicle_no, COUNT(*) as alert_count
FROM tb_vehicle_abnormal_alert
WHERE DATE(alert_date) = CURDATE()
GROUP BY vehicle_no
ORDER BY alert_count DESC
LIMIT 10;
-- 查看定时任务执行情况
SELECT job_name, status, job_message, create_time
FROM sys_job_log
WHERE job_name = '车辆异常运行监控任务'
ORDER BY create_time DESC
LIMIT 10;
如遇到问题:
1. 查看本文档的"常见问题"部分
2. 检查系统日志和定时任务日志
3. 查询数据库表确认数据状态
4. 联系技术支持团队
| 文件类型 | 文件路径 | 说明 |
|---|---|---|
| SQL脚本 | sql/vehicle_abnormal_alert.sql | 数据库初始化脚本 |
| 实体类 | ruoyi-system/.../domain/VehicleAbnormalAlert.java | 告警实体 |
| Mapper | ruoyi-system/.../mapper/VehicleAbnormalAlertMapper.java | 数据访问 |
| Service | ruoyi-system/.../service/impl/VehicleAbnormalAlertServiceImpl.java | 业务逻辑 |
| Controller | ruoyi-admin/.../controller/system/VehicleAbnormalAlertController.java | 接口控制器 |
| 定时任务 | ruoyi-quartz/.../task/VehicleAbnormalAlertTask.java | 监控任务 |
| 配置文档 | doc/车辆异常运行监控告警功能说明.md | 完整文档 |
| 部署指南 | 本文档 | 快速部署 |
部署完成后,请确认:
- [ ] 数据库表创建成功
- [ ] 菜单显示正常
- [ ] 定时任务已启用
- [ ] 配置参数已设置
- [ ] 测试告警生成成功
- [ ] 通知发送正常
版本: V1.0.0
更新日期: 2026-01-12