工业级运维app手机api
沈斌
2017-11-20 44bfab8ff28cbeb54686f9398699615324ca879b
src/main/java/com/moral/monitor/listener/quartz/StopStateCheck.java
@@ -1,18 +1,31 @@
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() {
@@ -20,19 +33,61 @@
        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);
//            }
//        }
    }
}