package com.moral.monitor.listener.quartz; import java.util.Date; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.core.RedisTemplate; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.moral.monitor.dao.JobDao; import com.moral.monitor.entity.Equipment; import com.moral.monitor.util.RedisUtil; public class StopStateCheck { @Resource JobDao jobDao; @Resource RedisTemplate redisTemplate; private int waits = 30000; public void check() { List equipmentList = jobDao.getAllEquipment(); for (int i = 0; i < equipmentList.size(); i++) { Equipment equipment = equipmentList.get(i); String mac = equipment.getMac(); String static_equ_json = RedisUtil.get(redisTemplate, "static_equ_" + mac); //设备资料为null,说明未收到该设备的数据,直接离线 if(StringUtils.isEmpty(static_equ_json)) { //这里为空,直接离线 jobDao.updateStateByMac(mac, 4); continue; } Map seJSON = JSON.parseObject(static_equ_json,new TypeReference>() {}); if(!seJSON.isEmpty()) { String orgId = seJSON.get("orgId"); String areaCode = seJSON.get("areaCode"); String monitorpointId = seJSON.get("monitorpointId"); String key = "state_" + orgId + "_" + areaCode + "_" + monitorpointId + "_" + mac; String state_json = RedisUtil.get(redisTemplate, key); //设备实时state为null,说明未收到该设备的数据,直接离线 if(StringUtils.isEmpty(state_json)) { //这里为空,直接离线 jobDao.updateStateByMac(mac, 4); continue; } Map stateJSON = JSON.parseObject(state_json,new TypeReference>() {}); if(!stateJSON.isEmpty()) { Long time = Long.parseLong(stateJSON.get("time")); if(time + waits < new Date().getTime()) { jobDao.updateStateByMac(mac, 4); } } else { jobDao.updateStateByMac(mac, 4); } } else { jobDao.updateStateByMac(mac, 4); } } // List equipmentList = jobDao.getAllEquipment(); // for (int i = 0; i < equipmentList.size(); i++) { // Equipment equipment = equipmentList.get(i); // String mac = equipment.getMac(); // Logger logger = jobDao.getLoggerByMac(mac); // if(logger != null) { // Date time = logger.getTime(); // Calendar calendar = Calendar.getInstance(); // calendar.setTime(time); // calendar.add(Calendar.MINUTE, 10); // Date date = new Date(); // if(calendar.getTime().getTime() < date.getTime()) { // jobDao.updateStateByMac(mac, 4); // } // } else { // jobDao.updateStateByMac(mac, 4); // } // } } }