| | |
| | | protected MongoTemplate mongoTemplate;
|
| | |
|
| | | private Logger logger = LoggerFactory.getLogger(TaskListener.class);
|
| | |
|
| | | @Resource
|
| | | RedisService redisService;
|
| | |
|
| | | private String levelKey = "alarm_level_config";
|
| | |
|
| | | @Override
|
| | | public void onMessage(Message msg) {
|
| | | try {
|
| | |
| | | logger.warn(e.getMessage());
|
| | | }
|
| | |
|
| | | Map<String, String> msgData = JSON.parseObject(message, new TypeReference<Map<String, String>>() {});
|
| | | String mac = msgData.get("mac");
|
| | | String ver = msgData.get("ver");
|
| | | Map<String, Object> msgData = JSON.parseObject(message, new TypeReference<Map<String, Object>>() {});
|
| | | String mac = msgData.get("mac").toString();
|
| | | String ver = msgData.get("ver").toString();
|
| | |
|
| | | if(StringUtils.isEmpty(ver) || StringUtils.isEmpty(mac)) {
|
| | | return;
|
| | |
| | | String key = entry.getKey();
|
| | | if(msgData.containsKey(key)) {
|
| | | Float value = entry.getValue();
|
| | | Float dataValue = Float.valueOf(msgData.get(key)) ;
|
| | | msgData.put(key, String.valueOf(dataValue + value));
|
| | | Float dataValue = Float.valueOf(msgData.get(key).toString()) ;
|
| | | msgData.put(key, dataValue + value);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | History history = new History();
|
| | | history.setMac(mac);
|
| | | history.setMac_key(key);
|
| | | history.setTime(new Date(Long.parseLong(msgData.get("time"))));
|
| | | history.setTime(new Date(Long.parseLong(msgData.get("time").toString())));
|
| | | history.setSensor(sensor.getSensor());
|
| | | history.setMac_value(Double.valueOf(msgData.get(key)));
|
| | | history.setMac_value(Double.valueOf(msgData.get(key).toString()));
|
| | | histories.add(history);
|
| | | }
|
| | | }
|
| | |
| | | //mongoTemplate.insert(JSON.toJSONString(histories), "data");
|
| | | mongoTemplate.insert(new_message, "data");
|
| | | } catch (Exception e) {
|
| | | //打印错误
|
| | | logger.error(e.getMessage());
|
| | | //打印错误
|
| | | logger.error(e.getMessage());
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | //三级警报值阀值
|
| | | private static Map<String,Double[]> alarmLevles =new HashMap<String, Double[]>();
|
| | | /*
|
| | | * 设置三级警报阀值,把map数据结构转换成数组结构
|
| | | */
|
| | | @Value(value= "system/alarmLevels.json")
|
| | | public void setAlarmLevles(String path) throws IOException {
|
| | | org.springframework.core.io.Resource resource = new ClassPathResource(path);
|
| | | InputStreamReader reader=new InputStreamReader(resource.getInputStream());
|
| | | JSONReader jsonReader = new JSONReader(reader);
|
| | | //三级警报值阀值
|
| | | Map<String,Map<String,Double>> alarmLevleMap= jsonReader.readObject(new TypeReference<Map<String,Map<String,Double>>>(){});
|
| | | //将map转换成数组
|
| | | for(String key:alarmLevleMap.keySet()) {
|
| | | Map<String,Double> levels = alarmLevleMap.get(key);
|
| | | double level1 = levels.get("level1");
|
| | | double level2 = levels.get("level2");
|
| | | double level3 = levels.get("level3");
|
| | | //当三个值都为零时,不加入阀值
|
| | | if(levels.get("enable")!=null&&levels.get("enable")==1) {
|
| | | //三级警报数组
|
| | | Double arr[] = {0.0,level1,level2,level3};
|
| | | alarmLevles.put(key, arr);
|
| | | }
|
| | | }
|
| | | // //三级警报值阀值
|
| | | // private static Map<String,Double[]> alarmLevles =new HashMap<String, Double[]>();
|
| | | // /*
|
| | | // * 设置三级警报阀值,把map数据结构转换成数组结构
|
| | | // */
|
| | | // @Value(value= "system/alarmLevels.json")
|
| | | // public void setAlarmLevles(String path) throws IOException {
|
| | | // org.springframework.core.io.Resource resource = new ClassPathResource(path);
|
| | | // InputStreamReader reader=new InputStreamReader(resource.getInputStream());
|
| | | // JSONReader jsonReader = new JSONReader(reader);
|
| | | // //三级警报值阀值
|
| | | // Map<String,Map<String,Double>> alarmLevleMap= jsonReader.readObject(new TypeReference<Map<String,Map<String,Double>>>(){});
|
| | | // //将map转换成数组
|
| | | // for(String key:alarmLevleMap.keySet()) {
|
| | | // Map<String,Double> levels = alarmLevleMap.get(key);
|
| | | // double level1 = levels.get("level1");
|
| | | // double level2 = levels.get("level2");
|
| | | // double level3 = levels.get("level3");
|
| | | // //当三个值都为零时,不加入阀值
|
| | | // if(levels.get("enable")!=null&&levels.get("enable")==1) {
|
| | | // //三级警报数组
|
| | | // Double arr[] = {0.0,level1,level2,level3};
|
| | | // alarmLevles.put(key, arr);
|
| | | // }
|
| | | // }
|
| | | // }
|
| | |
|
| | | private Map<String,Double[]> getAlarmLevels() throws IOException {
|
| | |
|
| | | Map<String,Map<String,Double>> alarmLevleMap = null;
|
| | | Map<String,Double[]> alarmLevles = new HashMap<String, Double[]>();
|
| | | if(RedisUtil.hasKey(redisTemplate, levelKey)) {
|
| | | String levelConfigStr = RedisUtil.get(redisTemplate, levelKey);
|
| | | alarmLevleMap = JSON.parseObject(levelConfigStr, new TypeReference<Map<String, Map<String,Double>>>() {});
|
| | | } else {
|
| | | org.springframework.core.io.Resource resource = new ClassPathResource("system/alarmLevels.json");
|
| | | InputStreamReader reader = new InputStreamReader(resource.getInputStream());
|
| | | JSONReader jsonReader = new JSONReader(reader);
|
| | | //三级警报值阀值
|
| | | alarmLevleMap= jsonReader.readObject(new TypeReference<Map<String,Map<String,Double>>>(){});
|
| | | }
|
| | |
|
| | | //将map转换成数组
|
| | | for(String key:alarmLevleMap.keySet()) {
|
| | | Map<String,Double> levels = alarmLevleMap.get(key);
|
| | | double level1 = levels.get("level1");
|
| | | double level2 = levels.get("level2");
|
| | | double level3 = levels.get("level3");
|
| | | //当三个值都为零时,不加入阀值
|
| | | if(levels.get("enable")!=null&&levels.get("enable")==1) {
|
| | | //三级警报数组
|
| | | Double arr[] = {0.0,level1,level2,level3};
|
| | | alarmLevles.put(key, arr);
|
| | | }
|
| | | }
|
| | | return alarmLevles;
|
| | | }
|
| | |
|
| | | //根据三级警报阀值,确定设备状态
|
| | | private int detEquState(Map<String,String> data) {
|
| | | private int detEquState(Map<String,Object> data) throws IOException {
|
| | |
|
| | | Map<String,Double[]> alarmLevles = getAlarmLevels();
|
| | |
|
| | | int state = 0;
|
| | | Map<String, Object> equMap = new HashMap<String, Object>();
|
| | | String mac = data.get("mac");
|
| | | data.remove("mac");//不需要存储mac地址
|
| | | String mac = data.get("mac").toString();
|
| | | equMap.putAll(data);
|
| | | if(data!=null) {
|
| | | for(String key:alarmLevles.keySet()) {
|
| | | String value = data.get(key);
|
| | | String value = data.get(key).toString();
|
| | | if(!StringUtils.isEmpty(value)) {
|
| | | double val = Double.parseDouble(value);
|
| | | //获取三级警报阀值
|