package com.zehong.quartz.task; import com.zehong.common.core.redis.RedisCache; import com.zehong.system.domain.TDeviceAlarmInfo; import com.zehong.system.service.ITDeviceAlarmInfoService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Date; import java.util.Iterator; import java.util.Map; /** * @author geng * 订阅事件job */ @Component("subscriptEventTask") public class SubscriptEventTask { private Logger logger = LoggerFactory.getLogger(SubscriptEventTask.class); @Autowired private RedisCache redisCache; @Autowired private ITDeviceAlarmInfoService tDeviceAlarmInfoService; /** * 自动消警 */ public void automaticAlarmElimination(){ try { logger.info("--------------- 自动消警开始 -------------"); //获取缓存信息 Map<String,TDeviceAlarmInfo> tDeviceAlarmInfoCache = redisCache.getCacheObject("dangrousSubsciription"); Iterator<Map.Entry<String, TDeviceAlarmInfo>> it = tDeviceAlarmInfoCache.entrySet().iterator(); boolean hasEndAlarm = false; while(it.hasNext()){ TDeviceAlarmInfo alarmInfo = it.next().getValue(); Date day=new Date(); long timeSpace = (day.getTime() - alarmInfo.getAlarmBeginTime().getTime()) /(60 * 1000) ; if(timeSpace > 5){ TDeviceAlarmInfo alarm = tDeviceAlarmInfoService.selectTDeviceAlarmInfoById(alarmInfo.getAlarmId()); if("0".equals(alarm.getAlarmStatus())){ //更新报警结束时间 alarmInfo.setAlarmEndTime(new Date()); alarmInfo.setAlarmStatus("1"); tDeviceAlarmInfoService.updateTDeviceAlarmInfo(alarmInfo); } //清除缓存 it.remove(); hasEndAlarm = true; } } if(hasEndAlarm){ redisCache.setCacheObject("dangrousSubsciription",tDeviceAlarmInfoCache); } }catch (Exception e){ logger.error("自动消警开始失败:" + e); } } }