From 720e1bb74e060d2501b91e38deeaff8b0504e75a Mon Sep 17 00:00:00 2001
From: 沈斌 <bluelazysb@hotmail.com>
Date: Wed, 15 Nov 2017 14:58:51 +0800
Subject: [PATCH] test
---
src/main/java/com/moral/monitor/listener/TaskListener.java | 254 +++++++++++++++++++++++++++++---------------------
1 files changed, 146 insertions(+), 108 deletions(-)
diff --git a/src/main/java/com/moral/monitor/listener/TaskListener.java b/src/main/java/com/moral/monitor/listener/TaskListener.java
index bf27fe7..6c0f81a 100644
--- a/src/main/java/com/moral/monitor/listener/TaskListener.java
+++ b/src/main/java/com/moral/monitor/listener/TaskListener.java
@@ -20,6 +20,7 @@
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
+import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
@@ -30,6 +31,7 @@
import com.moral.monitor.dao.TaskDao;
import com.moral.monitor.entity.History;
import com.moral.monitor.entity.Sensor;
+import com.moral.monitor.service.RedisService;
import com.moral.monitor.util.RedisUtil;
public class TaskListener implements MessageListener {
@@ -46,125 +48,158 @@
@Resource
RedisTemplate<String, String> redisTemplate;
+ @Resource
+ 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 {
+ String message = null;
+ try {
+ message = new String(msg.getBody(), "utf-8");
+ } catch (UnsupportedEncodingException e) {
+ logger.warn(e.getMessage());
+ }
- String message = null;
- try {
- message = new String(msg.getBody(), "utf-8");
- } catch (UnsupportedEncodingException e) {
- logger.warn(e.getMessage());
- }
+ Map<String, Object> msgData = JSON.parseObject(message, new TypeReference<Map<String, Object>>() {});
+ String mac = msgData.get("mac").toString();
+ String ver = msgData.get("ver").toString();
- 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;
- String adjust_key = "adjust_" + mac;
- if(RedisUtil.hasKey(redisTemplate, adjust_key)) {
- adjustMap = JSON.parseObject(RedisUtil.get(redisTemplate, adjust_key), new TypeReference<Map<String, Float>>() {});
- } else {
- adjustMap = getAdjustData(mac);
- RedisUtil.set(redisTemplate, adjust_key, JSON.toJSONString(adjustMap));
- }
-
- if(!adjustMap.isEmpty()) {
- for (Map.Entry<String, Float> entry : adjustMap.entrySet()) {
- 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));
+ if(StringUtils.isEmpty(ver) || StringUtils.isEmpty(mac)) {
+ return;
+ }
+ //���������������������������map
+ Map<String, Float> adjustMap = redisService.getAdjustsByMac(mac);
+ if(adjustMap!=null&&!adjustMap.isEmpty()) {
+ for (Map.Entry<String, Float> entry : adjustMap.entrySet()) {
+ String key = entry.getKey();
+ if(msgData.containsKey(key)) {
+ Float value = entry.getValue();
+ Float dataValue = Float.valueOf(msgData.get(key).toString()) ;
+ msgData.put(key, dataValue + value);
+ }
}
}
- }
+// System.out.println(message);
+// System.out.println(JSON.toJSONString(msgData));
-// System.out.println(message);
-// System.out.println(JSON.toJSONString(msgData));
+ String new_message = JSON.toJSONString(msgData);
+ rabbitTemplate.convertAndSend("monitors_data2", "", new_message.getBytes());
+// rabbitTemplate.send("monitors_data2", "", new Message(JSON.toJSONString(msgData).getBytes(), new MessageProperties()));
- 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
+ int state = detEquState(msgData);
+// rabbitTemplate.convertAndSend("monitors_alarm", "", "{\"mac\": \"" + mac + "\", \"state\": " + state + "}");
-// int state = (new Random()).nextInt(4) % 5; //TODO
- int state = detEquState(msgData);
-// rabbitTemplate.convertAndSend("monitors_alarm", "", "{\"mac\": \"" + mac + "\", \"state\": " + state + "}");
+ //������������������
+ jobDao.updateStateByMac(mac, state);
- //������������������
- jobDao.updateStateByMac(mac, state);
+// //������������������
+// taskDao.insertTologger(mac, message, getDate());
+ mongoTemplate.insert(message, "logger");
- //������������������
- //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.setTime(new Date(Long.parseLong(msgData.get("time"))));
- history.setSensor(sensor.getSensor());
- history.setMac_value(Double.valueOf(msgData.get(key)));
- histories.add(history);
+ //������������������
+ 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.setTime(new Date(Long.parseLong(msgData.get("time").toString())));
+ history.setSensor(sensor.getSensor());
+ history.setMac_value(Double.valueOf(msgData.get(key).toString()));
+ histories.add(history);
+ }
}
- }
- jobDao.batchInsertHistory(histories);
- }
+ jobDao.batchInsertHistory(histories);
- private Map<String, Float> getAdjustData(String mac) {
- List<Map<String, String>> adjusts = jobDao.findAdjustByMac(mac);
- Map<String, Float> dataMap = new HashMap<String, Float>();
- for (int i = 0; i < adjusts.size(); i++) {
- Map adjust = adjusts.get(i);
- if(adjust.get("value") != null) {
- String key = String.valueOf(adjust.get("key"));
- String data = String.valueOf(adjust.get("value"));
- BigDecimal value = new BigDecimal(data);
- value.setScale(3, BigDecimal.ROUND_HALF_UP);
- dataMap.put(key, value.floatValue());
- }
- }
- return dataMap;
- }
- //���������������������
- private static Map<String,Double[]> alarmLevles =new HashMap<String, Double[]>();
- /*
- * ������������������������,���map���������������������������������
- */
- @Value(value="alarmLevles.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");
- //������������������
- Double arr[] = {0.0,level1,level2,level3};
- alarmLevles.put(key, arr);
+ //mongoTemplate.insert(JSON.toJSONString(histories), "data");
+ mongoTemplate.insert(new_message, "data");
+ } catch (Exception e) {
+ //������������
+ logger.error(e.getMessage());
}
}
+// //���������������������
+// 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").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);
//������������������������
@@ -173,21 +208,24 @@
if(val>=arr[index]) {
//���������������������������������������������������������������������������
state = (index>state)?index:state;
- break;
+ String e_key = "level"+Integer.toString(index);
+ Object e_States = equMap.get(e_key);
+ if(e_States!=null&&e_States instanceof List) {
+ ((List)e_States).add(key);
+ }else {
+ e_States = new ArrayList<String>();
+ equMap.put(e_key, e_States);
+ ((List)e_States).add(key);
+ }
+ equMap.put(e_key, e_States);
+ break;
}
- }
- //���������������������������������������������������������
- if(state == (arr.length-1)) {
- break;
}
}
}
}
+ equMap.put("state", state);//������������
+ redisService.setEquState(mac,equMap);
return state;
- }
- private String getDate() {
- Date d = new Date();
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- return formatter.format(d);
}
}
--
Gitblit v1.8.0