| | |
| | | package com.moral.monitor.listener.quartz; |
| | | |
| | | import com.moral.monitor.dao.JobDao; |
| | | import com.moral.monitor.entity.Equipment; |
| | | import com.moral.monitor.entity.Logger; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Calendar; |
| | | 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<String, String> redisTemplate; |
| | | |
| | | private int waits = 30000; |
| | | |
| | | public void check() { |
| | | |
| | |
| | | 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()) { |
| | | String static_equ_json = RedisUtil.get(redisTemplate, "static_equ_" + mac); |
| | | //设备资料为null,说明未收到该设备的数据,直接离线 |
| | | if(StringUtils.isEmpty(static_equ_json)) { |
| | | //这里为空,直接离线 |
| | | jobDao.updateStateByMac(mac, 4); |
| | | continue; |
| | | } |
| | | Map<String,String> seJSON = JSON.parseObject(static_equ_json,new TypeReference<Map<String,String>>() {}); |
| | | 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<String,String> stateJSON = JSON.parseObject(state_json,new TypeReference<Map<String,String>>() {}); |
| | | 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 { |
| | | } |
| | | else { |
| | | jobDao.updateStateByMac(mac, 4); |
| | | } |
| | | } |
| | | |
| | | // List<Equipment> 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); |
| | | // } |
| | | // } |
| | | } |
| | | } |