工业级运维app手机api
沈斌
2017-10-29 c3e285c9b9e162006da2446e3bed116e4546e8af
src/main/java/com/moral/monitor/listener/TaskListener.java
@@ -3,6 +3,9 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.moral.monitor.dao.JobDao;
import com.moral.monitor.dao.TaskDao;
import com.moral.monitor.entity.History;
import com.moral.monitor.entity.Sensor;
import com.moral.monitor.util.RedisUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -13,13 +16,13 @@
import org.springframework.amqp.rabbit.connection.Connection;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
public class TaskListener implements MessageListener {
@@ -27,10 +30,10 @@
    RabbitTemplate rabbitTemplate;
    @Resource
    CachingConnectionFactory rabbitConnectionFactory;
    JobDao jobDao;
    @Resource
    JobDao jobDao;
    TaskDao taskDao;
    @Resource
    RedisTemplate<String, String> redisTemplate;
@@ -49,6 +52,11 @@
        Map<String, String> msgData = JSON.parseObject(message, new TypeReference<Map<String, String>>() {});
        String mac = msgData.get("mac");
        String ver = msgData.get("ver");
        if(StringUtils.isEmpty(ver) || StringUtils.isEmpty(mac)) {
            return;
        }
        Map<String, Float> adjustMap;
        if(RedisUtil.hasKey(redisTemplate, mac)) {
@@ -69,11 +77,37 @@
            }
        }
        System.out.println(message);
        System.out.println(JSON.toJSONString(msgData));
//        System.out.println(message);
//        System.out.println(JSON.toJSONString(msgData));
        rabbitTemplate.convertAndSend("monitors_data_2", "", JSON.toJSONString(msgData).getBytes());
        rabbitTemplate.convertAndSend("monitors_data2", "", JSON.toJSONString(msgData).getBytes());
//        rabbitTemplate.send("monitors_data_3", "", new Message(JSON.toJSONString(msgData).getBytes(), new MessageProperties()));
        int state = (new Random()).nextInt(4) % 5; //TODO
//        rabbitTemplate.convertAndSend("monitors_alarm", "", "{\"mac\": \"" + mac + "\", \"state\": " + state + "}");
        //更新设备状态
        jobDao.updateStateByMac(mac, state);
        //保存原始数据
        taskDao.insertTologger(mac, message, getDate());
        //保存历史记录
        List<History> histories = new ArrayList<History>();
        List<Sensor> sensorList = taskDao.selectFromsensorByver(ver);
        for (Sensor sensor : sensorList) {
            String key = sensor.getMac_key();
            if(msgData.containsKey(key)) {
                //taskDao.insertTohistory(mac, sensor.getSensor(), key, msgData.get(key));
                History history = new History();
                history.setMac(mac);
                history.setMac_key(key);
                history.setSensor(sensor.getSensor());
                history.setMac_value(Double.valueOf(msgData.get(key)));
                histories.add(history);
            }
        }
        jobDao.batchInsertHistory(histories);
    }
    private Map<String, Float> getAdjustData(String mac) {
@@ -91,4 +125,10 @@
        }
        return dataMap;
    }
    private String getDate() {
        Date d = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return formatter.format(d);
    }
}