From dbc28ad9f10a7e4ae3d1c837f721b168343e961e Mon Sep 17 00:00:00 2001 From: fengxiang <fengxiang@blit.7drlb> Date: Wed, 25 Oct 2017 14:41:31 +0800 Subject: [PATCH] 修正 --- src/main/java/com/moral/monitor/listener/Listener.java | 277 +----------------------------------------------------- 1 files changed, 9 insertions(+), 268 deletions(-) diff --git a/src/main/java/com/moral/monitor/listener/Listener.java b/src/main/java/com/moral/monitor/listener/Listener.java index 70dcf96..b1ed5cb 100644 --- a/src/main/java/com/moral/monitor/listener/Listener.java +++ b/src/main/java/com/moral/monitor/listener/Listener.java @@ -1,287 +1,28 @@ package com.moral.monitor.listener; -import com.moral.monitor.dao.TaskDao; -import com.moral.monitor.entity.*; -import com.moral.monitor.listener.message.Tomq; -import net.sf.json.JSONObject; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import javax.annotation.Resource; -import java.io.UnsupportedEncodingException; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.moral.monitor.dao.TaskDao; /*���������������*/ +@Component public class Listener implements MessageListener { - @Resource + @Autowired RabbitTemplate rabbitTemplate; - @Resource - TaskDao taskDao; +// @Autowired +// Lo private Logger logger = LoggerFactory.getLogger(Listener.class); public void onMessage(Message message) { - logger.warn("���������������������������=" + Thread.currentThread().getName()); - - String receiveMsg = null; - try { - receiveMsg = new String(message.getBody(), "utf-8"); - } catch (UnsupportedEncodingException e) { - logger.warn(e.getMessage()); - } - - logger.warn(receiveMsg); - Map<String, String> receiveMsgMap = toMap(receiveMsg); - String mac = receiveMsgMap.remove("mac"); - String ver = receiveMsgMap.remove("ver"); - String rtime = receiveMsgMap.remove("time"); - String win = receiveMsgMap.remove("win"); - removeNotNumber(receiveMsgMap); - String date = getDate(); //logger���noticelog������ - Equipment equipment = taskDao.selectFromequipment(mac); - if (equipment==null) { - logger.warn("������" + mac + "������������������"); - return; - } - //������������������������4 - if (equipment.getState()==0) { - taskDao.updateequipmentstate(4, mac); - } - //eX���������������������������,��������������������������������� - Map<String, String> exsensorMap = exSensortoMap(ver); - taskDao.insertTologger(mac, receiveMsg, date); - //��������������������������������� - Map<String, String> bindsensor = macBindSensor(mac); - if (bindsensor.size()<=0) { - logger.warn("������" + mac + "���������������������������"); - return; - }else { - removeNotBind(receiveMsgMap,exsensorMap,bindsensor); - } - - - //��������������������������������������������� - List<State> states = taskDao.findstateBymac(mac); - updateOrinsertstate(receiveMsgMap, mac, exsensorMap); - if (states.size()==0){ - insertTohistory(receiveMsgMap, mac, exsensorMap); - } else { - insertTohistoryDistinct(receiveMsgMap,mac,exsensorMap,states); - } - - - //������������������ - List<Critical> criticals = taskDao.findcritical(); - LinkedHashMap<String, Critical> sensor_criticals = new LinkedHashMap<String, Critical>(); - for (Critical c:criticals){ - String sensor = c.getSensor(); - sensor_criticals.put(sensor,c); - } - - //��������������������������������������������������� - //������������������������ - List<Integer> level = new ArrayList<Integer>(); - Set<Map.Entry<String, String>> entries = receiveMsgMap.entrySet(); - Iterator<Map.Entry<String, String>> iterator = entries.iterator(); - while (iterator.hasNext()){ - Map.Entry<String, String> next = iterator.next(); - String mac_key = next.getKey(); - String mac_value = next.getValue(); - String sensor = exsensorMap.get(mac_key); - double value =Double.parseDouble(mac_value); - //��������������������� ��������������� - Critical critical = sensor_criticals.get(sensor); - - int sensor_level = 0; - if (value >= critical.getFirst()) { - level.add(1); - sensor_level =1; - } else if (value >= critical.getSecond()) { - level.add(2); - sensor_level = 2; - } else if (value >= critical.getThird()) { - level.add(3); - sensor_level = 3; - } - - if(sensor_level!=0){ - String alarmMsg = "{\"mac\":\"" + mac + "\",\"" +mac_key + "\":" + value + ",\"level\":" + sensor_level + "}"; - Tomq tomq = new Tomq(rabbitTemplate, alarmMsg); - tomq.run(); - } - - } - - //������������������ - if (!(level.size() > 0)) { - taskDao.updateequipmentstate(4, mac);//������������������������������������ - return; - } - - Integer maxlevel = Collections.max(level); - taskDao.updateequipmentstate(maxlevel, mac); + } - - - private String getDate() { - Date d = new Date(); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - return formatter.format(d); - } - - private void saveNotice(Equipment equipment, User u, AlarmSensor sensor, String alarm_content, String noticetype, int sensor_level, String date) { - taskDao.insertTonoticelog(u.getId(), u.getName(), noticetype, equipment.getMac(), equipment.getName(), alarm_content, sensor.getSensor(), equipment.getAddress(), sensor_level, date); - } - - public String digit(double num, int digit) { - BigDecimal y = new BigDecimal(num); - double b = y.setScale(digit, BigDecimal.ROUND_HALF_UP).doubleValue(); - double c = b - (int) b; - if (c == 0) { - return String.valueOf((int) b); - } else { - return String.valueOf(b); - } - } - - private void updateOrinsertstate(Map<String, String> receiveMsgMap, String mac, Map<String, String> exsensorMap) { - Set<Map.Entry<String, String>> entries = receiveMsgMap.entrySet(); - Iterator<Map.Entry<String, String>> iterator = entries.iterator(); - while (iterator.hasNext()) { - Map.Entry<String, String> next = iterator.next(); - String mac_key = next.getKey(); - String mac_value = next.getValue(); - String sensor = exsensorMap.get(mac_key); - List<State> states = taskDao.selectFromstate(mac, mac_key);//������������������������������������������ - if (states.size() == 0) { - taskDao.insertTostate(mac, sensor, mac_key, mac_value); - } else if (states.size() == 1) { - taskDao.updatestate(mac_value, mac, mac_key); - } else if (states.size() >= 2) { - taskDao.deleteFromstateBymacandmackey(mac, mac_key); - taskDao.insertTostate(mac, sensor, mac_key, mac_value); - } - - } - } - - - - private void insertTohistoryDistinct(Map<String, String> receiveMsgMap, String mac, Map<String, String> exsensorMap,List<State> states){ - LinkedHashMap<String, Double> state_kv = new LinkedHashMap<String, Double>(); - for(State s:states){ - state_kv.put(s.getMac_key(),s.getMac_value()); - } - Set<Map.Entry<String, String>> entries = receiveMsgMap.entrySet(); - Iterator<Map.Entry<String, String>> iterator = entries.iterator(); - while(iterator.hasNext()){ - Map.Entry<String, String> next = iterator.next(); - String mac_key = next.getKey(); - String mac_value = next.getValue(); - double value =Double.parseDouble(mac_value); - String sensor = exsensorMap.get(mac_key); - Double statevalue = state_kv.get(mac_key); - if(value!=statevalue){ - taskDao.insertTohistory(mac, sensor, mac_key,mac_value); - } - } - - - } - - - - private void insertTohistory(Map<String, String> receiveMsgMap, String mac, Map<String, String> exsensorMap) { - Set<Map.Entry<String, String>> entries = receiveMsgMap.entrySet(); - Iterator<Map.Entry<String, String>> iterator = entries.iterator(); - while (iterator.hasNext()) { - Map.Entry<String, String> next = iterator.next(); - String mac_key = next.getKey(); - String mac_value = next.getValue(); - String sensor = exsensorMap.get(mac_key); - taskDao.insertTohistory(mac, sensor, mac_key, mac_value); - - } - } - - private Map<String, String> macBindSensor(String mac) { - Map<String, String> bindsensor = new LinkedHashMap<String, String>(); - List<AlarmSensor> alarmSensors = taskDao.selectFrommacBymac(mac); - for (AlarmSensor sensor : alarmSensors) { - String sensorname = sensor.getSensor(); - if (StringUtils.isNotBlank(sensorname)) { - bindsensor.put(sensorname, sensorname);//value��������� - } - } - return bindsensor; - } - - private Map<String, String> exSensortoMap(String ver) { - List<Sensor> sensors = taskDao.selectFromsensorByver(ver); - Map<String, String> ex_sensorMap = new LinkedHashMap<String, String>(); - for (Sensor sensor : sensors) { - ex_sensorMap.put(sensor.getMac_key(), sensor.getSensor()); - } - return ex_sensorMap; - } - - - - - private void removeNotBind(Map<String, String> receiveMsgMap,Map<String, String> exsensorMap,Map<String, String> bindsensor){ - Set<Map.Entry<String, String>> entries = receiveMsgMap.entrySet(); - Iterator<Map.Entry<String, String>> iterator = entries.iterator(); - while (iterator.hasNext()) { - Map.Entry<String, String> next = iterator.next(); - String mac_key = next.getKey(); - String sensor = exsensorMap.get(mac_key); - if(!bindsensor.containsKey(sensor)){ - iterator.remove(); - } - } - } - - - private void removeNotNumber(Map<String, String> receiveMsgMap){ - Set<Map.Entry<String, String>> entries = receiveMsgMap.entrySet(); - Iterator<Map.Entry<String, String>> iterator = entries.iterator(); - while (iterator.hasNext()) { - Map.Entry<String, String> next = iterator.next(); - String mac_value = next.getValue(); - boolean str2Num = isStr2Num(mac_value); - if (!str2Num) { - iterator.remove(); - } - } - } - - - private boolean isStr2Num(String str) { - try { - Double.parseDouble(str); - return true; - } catch (NumberFormatException e) { - return false; - } - } - - - private Map<String, String> toMap(String receiveMsg) { - Map<String, String> receiveMsgMap = new LinkedHashMap<String, String>(); - JSONObject jsonObject = JSONObject.fromObject(receiveMsg); - Iterator it = jsonObject.keys(); - while (it.hasNext()) { - String key = it.next().toString(); - String value = jsonObject.get(key).toString(); - receiveMsgMap.put(key, value); - } - return receiveMsgMap; - } } \ No newline at end of file -- Gitblit v1.8.0