实现车辆无任务运行超公里数告警功能,当监控到车辆在无绑定任务状态下运行超过配置的公里数(默认10公里)时,自动产生告警并通过小程序发送通知给相关负责人。
存储每次告警的详细信息:
- 基本信息:车辆ID、车牌号、告警时间、累计公里数
- 告警详情:告警类型、原因描述、开始/结束时间
- 处理信息:处理状态、处理人、处理时间、处理备注
- 通知信息:通知状态、通知时间、通知用户列表
- 部门信息:归属部门ID、部门名称
支持全局、部门、车辆三级配置:
- 配置层级:GLOBAL(全局)/DEPT(部门)/VEHICLE(车辆)
- 告警参数:公里数阈值、每日告警次数、告警间隔
- 通知配置:通知用户ID列表、通知角色列表
- 启用状态:可灵活开启或关闭某个配置
@Component("vehicleAbnormalAlertTask")
public class VehicleAbnormalAlertTask {
// 每5分钟执行一次
public void monitorVehicleAbnormalRunning()
}
监控流程:
1. 检查功能开关是否启用
2. 加载配置参数(阈值、频率限制等)
3. 查询所有活跃车辆
4. 逐车检查:
- 是否有正在执行的任务
- 计算监控窗口内的运行里程
- 判断是否超过阈值
- 检查告警频率限制
5. 创建告警记录
6. 发送通知
提供告警的增删改查、处理等核心业务逻辑:
- checkAndCreateAlert(): 检查并创建告警
- handleAlert(): 处理单个告警
- batchHandleAlert(): 批量处理告警
提供RESTful API接口:
- GET /system/vehicleAlert/list: 查询告警列表
- GET /system/vehicleAlert/{id}: 查询告警详情
- PUT /system/vehicleAlert/handle/{id}: 处理告警
- GET /system/vehicleAlert/unhandledCount: 获取未处理告警数
- POST /system/vehicleAlert/export: 导出告警数据
| 配置键 | 说明 | 默认值 |
|---|---|---|
| vehicle.alert.enabled | 告警功能总开关 | true |
| 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列表 | (空) |
vehicleAbnormalAlertTask.monitorVehicleAbnormalRunning()0 */5 * * * ?(每5分钟执行一次)source sql/vehicle_abnormal_alert.sql;
该脚本会自动创建:
- 告警记录表
- 告警配置表
- 系统配置参数
- 定时任务
- 菜单权限
在系统配置中设置 vehicle.alert.notify.users,填入接收告警的用户ID列表(逗号分隔)
在"系统监控 > 定时任务"中找到"车辆异常运行监控任务",点击"恢复"按钮启用
如需使用企业微信通知,确保以下配置正确:
- qy_wechat.enable = true
- qy_wechat.corp_id = 企业ID
- qy_wechat.corp_secret = 应用Secret
- qy_wechat.agent_id = 应用ID
tb_vehicle_gps_segment_mileage表sys_task和sys_task_vehicle表未处理(0) -> 已处理(1)
\-> 已忽略(2)
tb_vehicle_gps_segment_mileage表有数据如有问题,请联系技术支持团队或查看相关文档:
- 系统日志:/logs/sys-*.log
- 定时任务日志:/monitor/job/log
- GPS里程计算说明:/doc/GPS分段里程计算.md
ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleAbnormalAlert.java - 告警实体类ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleAlertConfig.java - 配置实体类ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleAbnormalAlertMapper.java - 数据访问接口ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleAbnormalAlertService.java - 业务接口ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleAbnormalAlertServiceImpl.java - 业务实现ruoyi-system/src/main/resources/mapper/system/VehicleAbnormalAlertMapper.xml - MyBatis映射文件ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleAbnormalAlertController.java - 控制器ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/VehicleAbnormalAlertTask.java - 定时任务sql/vehicle_abnormal_alert.sql - 建表及初始化脚本