From 45be44fb95325305373647231ef74e72d1501f8c Mon Sep 17 00:00:00 2001 From: 沈斌 <bluelazysb@hotmail.com> Date: Sat, 11 Nov 2017 08:08:22 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/main/java/com/moral/monitor/util/RedisUtil.java | 15 ++- src/main/resources/mapper/JobDao.xml | 16 ++- src/main/java/com/moral/monitor/service/impl/RedisServiceImpl.java | 115 +++++++++++++++++++++++ src/main/java/com/moral/monitor/dao/JobDao.java | 11 +- src/main/java/com/moral/monitor/listener/TaskListener.java | 61 ++++-------- src/main/java/com/moral/monitor/service/RedisService.java | 17 +++ src/main/resources/system/alarmLevels.json | 36 +++--- 7 files changed, 198 insertions(+), 73 deletions(-) diff --git a/src/main/java/com/moral/monitor/dao/JobDao.java b/src/main/java/com/moral/monitor/dao/JobDao.java index b227515..a92c6d4 100644 --- a/src/main/java/com/moral/monitor/dao/JobDao.java +++ b/src/main/java/com/moral/monitor/dao/JobDao.java @@ -1,17 +1,18 @@ package com.moral.monitor.dao; +import java.util.List; +import java.util.Map; + +import org.springframework.stereotype.Repository; + import com.moral.monitor.entity.Equipment; import com.moral.monitor.entity.History; import com.moral.monitor.entity.Logger; -import org.springframework.stereotype.Repository; - -import java.util.List; -import java.util.Map; @Repository public interface JobDao { - public List<Map<String, String>> findAdjustByMac(String mac); + public Map<String,Object> findEquWithAdjustsByMac(String mac); public void updateStateByMac(String mac, int state); diff --git a/src/main/java/com/moral/monitor/listener/TaskListener.java b/src/main/java/com/moral/monitor/listener/TaskListener.java index af8c890..93462e8 100644 --- a/src/main/java/com/moral/monitor/listener/TaskListener.java +++ b/src/main/java/com/moral/monitor/listener/TaskListener.java @@ -17,7 +17,6 @@ import org.slf4j.LoggerFactory; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageListener; -import org.springframework.amqp.core.MessageProperties; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; @@ -32,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 { @@ -52,7 +52,8 @@ protected MongoTemplate mongoTemplate; private Logger logger = LoggerFactory.getLogger(TaskListener.class); - + @Resource + RedisService redisService; @Override public void onMessage(Message msg) { @@ -70,17 +71,9 @@ 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()) { + //���������������������������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)) { @@ -90,7 +83,6 @@ } } } - // System.out.println(message); // System.out.println(JSON.toJSONString(msgData)); @@ -130,22 +122,6 @@ //mongoTemplate.insert(JSON.toJSONString(histories), "data"); mongoTemplate.insert(new_message, "data"); } - - 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[]>(); /* @@ -175,6 +151,7 @@ //��������������������������������������������� private int detEquState(Map<String,String> data) { int state = 0; + Map<String, Object> equMap = new HashMap<String, Object>(); if(data!=null) { for(String key:alarmLevles.keySet()) { String value = data.get(key); @@ -186,21 +163,25 @@ 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(data.get("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); } } diff --git a/src/main/java/com/moral/monitor/service/RedisService.java b/src/main/java/com/moral/monitor/service/RedisService.java new file mode 100644 index 0000000..de86d04 --- /dev/null +++ b/src/main/java/com/moral/monitor/service/RedisService.java @@ -0,0 +1,17 @@ +package com.moral.monitor.service; + +import java.util.Map; + +/** + * @author fengxiang + * @Time���2017���11���7��� ������2:42:19 + * @version 1.0 + */ +public interface RedisService { + public void setEquState(String mac,Map<String,Object> equWithStateMap); + public Map<String,Object> getEquState(String mac); + /* + * ������ mac������ ���������������map + */ + public Map<String,Float> getAdjustsByMac(String mac); +} diff --git a/src/main/java/com/moral/monitor/service/impl/RedisServiceImpl.java b/src/main/java/com/moral/monitor/service/impl/RedisServiceImpl.java new file mode 100644 index 0000000..fdb06af --- /dev/null +++ b/src/main/java/com/moral/monitor/service/impl/RedisServiceImpl.java @@ -0,0 +1,115 @@ +package com.moral.monitor.service.impl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import javax.annotation.Resource; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.moral.monitor.dao.JobDao; +import com.moral.monitor.service.RedisService; +import com.moral.monitor.util.RedisUtil; + +/** + * @author fengxiang + * @Time���2017���11���7��� ������10:16:33 + * @version 1.0 + */ +@Service +public class RedisServiceImpl implements RedisService{ + @Resource + JobDao jobDao; + @Resource + RedisTemplate<String, String> redis; + private static final String ADJUSTS = "adjusts"; + private static final String ORG_ID = "orgId"; + private static final String AREA_CODE = "areaCode"; + private static final String MONITORPOINT_ID= "monitorpoint"; + //������������������������������������ + private static String getStaticEquKey(String mac) { + return "static_equ_"+mac; + } + public void setStaticEqu(String mac,Map<String,Object> equMap) { + RedisUtil.set(redis, getStaticEquKey(mac),JSON.toJSONString(equMap)); + } + public Map<String,Object> getStaticEqu(String mac) { + String staticEqu_key = getStaticEquKey(mac); + String staticEquJson = RedisUtil.get(redis,staticEqu_key); + Map<String,Object> equMap = null; + if(StringUtils.isEmpty(staticEquJson)) { + equMap = jobDao.findEquWithAdjustsByMac(mac); + if(equMap!=null) { + //���������������adjust������������ + List<Map<String,Object>> adjustList = (List<Map<String, Object>>) equMap.get(ADJUSTS); + List<Object> adjustListWithData = new ArrayList<Object>(); + //list to map + for(Map<String,Object> adjust:adjustList) { + if(adjust.get("value")!=null) { + //������������������ + adjustListWithData.add(adjust); + } + } + equMap.put(ADJUSTS,adjustListWithData); + setStaticEqu(mac,equMap); + } + }else { + equMap = JSON.parseObject(staticEquJson,new TypeReference<Map<String,Object>>(){}); + } + return equMap; + } + /* + * ������ mac������ ���������������map + */ + public Map<String,Float> getAdjustsByMac(String mac){ + Map<String,Object> equMap = getStaticEqu(mac); + Map<String,Float> adjustMap = null; + if(equMap!=null) { + List<Map<String,Object>> adjustList = (List<Map<String, Object>>) equMap.get(ADJUSTS); + if(adjustList!=null) { + adjustMap = new HashMap<String, Float>(); + //list to map + for(Map<String,Object> adjust:adjustList) { + if(adjust.get("value")!=null) { + adjustMap.put(adjust.get("key").toString(), Float.valueOf(adjust.get("value").toString())); + } + } + } + } + return adjustMap; + } + //���������state_������ID_������ID_���������ID_mac + private String getEquStateKey(String mac) { + Map<String,Object> equMap = getStaticEqu(mac); + if(equMap!=null) { + String orgId = equMap.get(ORG_ID)==null?"$":equMap.get(ORG_ID).toString(); + String areaCode = equMap.get(AREA_CODE)==null?"$":equMap.get(AREA_CODE).toString(); + String mpointId = equMap.get(MONITORPOINT_ID)==null?"$":equMap.get(MONITORPOINT_ID).toString(); + return "state_"+orgId+"_"+areaCode+"_"+mpointId+"_"+mac; + } + else { + return "state_$_$_$_"+mac; + } + } + //������������������������������������������ ���������redis + public void setEquState(String mac,Map<String,Object> equWithStateMap) { + String key = getEquStateKey(mac); + String equWithStateJsonStr = JSON.toJSONString(equWithStateMap); + RedisUtil.set(redis,key,equWithStateJsonStr,10,TimeUnit.SECONDS); + } + //���redis��������������������������������������������� + public Map<String,Object> getEquState(String mac) { + String equ_key = getEquStateKey(mac); + String equWithStateJsonStr = RedisUtil.get(redis, equ_key); + Map<String,Object> equMap= JSON.parseObject(equWithStateJsonStr,new TypeReference<Map<String,Object>>() {}); + return equMap; + } + +} diff --git a/src/main/java/com/moral/monitor/util/RedisUtil.java b/src/main/java/com/moral/monitor/util/RedisUtil.java index d688933..c9abef8 100644 --- a/src/main/java/com/moral/monitor/util/RedisUtil.java +++ b/src/main/java/com/moral/monitor/util/RedisUtil.java @@ -1,21 +1,26 @@ package com.moral.monitor.util; +import java.util.Set; +import java.util.concurrent.TimeUnit; + import org.springframework.data.redis.core.RedisTemplate; public class RedisUtil { public static boolean hasKey(RedisTemplate<String, String> redis, String key) { - return redis.hasKey(key); } - public static void set(RedisTemplate<String, String> redis, String key, String value) { - redis.opsForValue().set(key, value); } - public static String get(RedisTemplate<String, String> redis, String key) { - return redis.opsForValue().get(key); } + public static void set(RedisTemplate<String, String> redis, String key, String value, + int timeout,TimeUnit unit) { + redis.opsForValue().set(key, value,timeout, unit); + } + public static Set<String> keys(RedisTemplate<String, String> redis,String pattern) { + return redis.keys(pattern); + } } diff --git a/src/main/resources/mapper/JobDao.xml b/src/main/resources/mapper/JobDao.xml index d4baa19..e132f52 100644 --- a/src/main/resources/mapper/JobDao.xml +++ b/src/main/resources/mapper/JobDao.xml @@ -6,16 +6,22 @@ <mapper namespace="com.moral.monitor.dao.JobDao"> <resultMap type="HashMap" id="adjustResultMap"> - <result column="mac_key" property="key" javaType="java.lang.String" /> - <result column="value" property="value" javaType="java.lang.Float" /> + <result column="owner_id" property="orgId" javaType="java.lang.String" /> + <result column="areacode" property="areaCode" javaType="java.lang.String" /> + <result column="monitorpoint" property="monitorpointId" javaType="java.lang.String" /> + <collection property="adjusts" column="id" javaType="java.util.List" ofType="java.util.Map"> + <result column="mac_key" property="key" javaType="java.lang.String"/> + <result column="value" property="value" javaType="java.lang.Float"/> + </collection> </resultMap> - <select id="findAdjustByMac" resultMap="adjustResultMap"> - select c.mac_key, d.`value` + <select id="findEquWithAdjustsByMac" resultMap="adjustResultMap"> + select a.id,a.owner_id,a.monitorpoint,e.areacode,c.mac_key,d.`value` from equipment a - inner join mac b on a.id = b.equipment_id + inner join mac b on a.id = b.equipment_id inner join sensor c on b.sensor = c.id left join sensoradjust d on b.id = d.sen_dev_id + left join monitorpoint e on e.id = a.monitorpoint where a.mac = #{0} </select> diff --git a/src/main/resources/system/alarmLevels.json b/src/main/resources/system/alarmLevels.json index cd81564..25bfccb 100644 --- a/src/main/resources/system/alarmLevels.json +++ b/src/main/resources/system/alarmLevels.json @@ -12,9 +12,9 @@ "enable":1 }, "e3":{ - "level1":5000, - "level2":8000, - "level3":20000 + "level1":20000, + "level2":30000, + "level3":40000 }, "e4":{ "level1":30, @@ -53,9 +53,9 @@ "enable":1 }, "e11":{ - "level1":0.05, - "level2":0.475, - "level3":1.6, + "level1":50, + "level2":475, + "level3":1600, "enable":1 }, "e12":{ @@ -69,20 +69,20 @@ "level3":120 }, "e14":{ - "level1":2, - "level2":4, - "level3":6 + "level1":100, + "level2":200, + "level3":300 }, "e15":{ - "level1":0.16, - "level2":0.3, - "level3":0.8, + "level1":160, + "level2":300, + "level3":800, "enable":1 }, "e16":{ - "level1":0.04, - "level2":0.18, - "level3":0.565, + "level1":40, + "level2":180, + "level3":565, "enable":1 }, "e17":{ @@ -96,8 +96,8 @@ "level3":8 }, "e19":{ - "level1":800, - "level2":1200, - "level3":1600 + "level1":3000, + "level2":4000, + "level3":5000 } } \ No newline at end of file -- Gitblit v1.8.0