12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package com.hfln.device.application.task;
- import com.hfln.device.domain.entity.AlarmPlan;
- import com.hfln.device.domain.entity.Device;
- import com.hfln.device.domain.service.AlarmPlanService;
- import com.hfln.device.domain.service.DeviceManagerService;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import java.util.Collection;
- import java.util.List;
- import java.util.Optional;
- /**
- * 告警计划检查定时任务
- * 定期检查所有设备的告警计划,触发滞留告警
- */
- @Component
- @Slf4j
- public class AlarmPlanCheckTask {
-
- @Autowired
- private DeviceManagerService deviceManagerService;
-
- @Autowired
- private AlarmPlanService alarmPlanService;
-
- /**
- * 定期检查告警计划
- * 每30秒执行一次
- */
- @Scheduled(fixedRate = 30000)
- public void checkAlarmPlans() {
- log.debug("开始检查告警计划...");
-
- try {
- // 获取所有设备
- Collection<Device> devices = deviceManagerService.getAllDevicesFromCache();
-
- // 检查每个设备的告警计划
- for (Device device : devices) {
- if (device.getOnline() != null && device.getOnline() == 1) {
- // 只检查在线设备
- String deviceId = device.getDevId();
- // todo 添加停留事件,告警事件保存 stay_time alarm_event
- // 检查设备的告警计划
- List<AlarmPlan> alarmedPlans = alarmPlanService.checkAlarmPlans(deviceId);
-
- if (!alarmedPlans.isEmpty()) {
- log.info("设备[{}]触发了{}个告警计划", deviceId, alarmedPlans.size());
- }
- }
- }
- } catch (Exception e) {
- log.error("检查告警计划异常: {}", e.getMessage(), e);
- }
- }
- }
|