Explorar el Código

alarm config obj add configs param

lixing hace 4 años
padre
commit
657b53309a

+ 3 - 3
src/main/java/com/persagy/cache/AlarmInfoCache.java

@@ -179,7 +179,7 @@ public class AlarmInfoCache {
     /**
      * @param meterId: 表号
      * @param funcId:  功能号
-     * @description:根据表号功能号获取多条报警定义id
+     * @description:根据表号功能号获取多条报警定义
      * @exception:
      * @author: LuoGuangyi
      * @company: Persagy Technology Co.,Ltd
@@ -187,7 +187,7 @@ public class AlarmInfoCache {
      * @since: 2020/10/19 14:31
      * @version: V1.0
      */
-    public List<AlarmDefine> getAlarmDefinitionIdByMeterFuncId(String meterId, String funcId) {
+    public List<AlarmDefine> getAlarmDefinitionsByMeterFuncId(String meterId, String funcId) {
         return infoAlarmMap.get(getKey(meterId, funcId));
     }
 
@@ -205,7 +205,7 @@ public class AlarmInfoCache {
      * @version: V1.0
      */
     public void putAlarmDefinitionIdByMeterFuncId(String meterId, String funcId, AlarmDefine definition) {
-        List<AlarmDefine> definitionList = getAlarmDefinitionIdByMeterFuncId(meterId, funcId);
+        List<AlarmDefine> definitionList = getAlarmDefinitionsByMeterFuncId(meterId, funcId);
         if (CollectionUtils.isEmpty(definitionList)) {
             definitionList = new ArrayList<>();
         }

+ 16 - 0
src/main/java/com/persagy/controller/HelloWorld.java

@@ -2,6 +2,8 @@ package com.persagy.controller;
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.googlecode.aviator.AviatorEvaluator;
+import com.googlecode.aviator.Expression;
 import com.persagy.cache.AlarmInfoCache;
 import com.persagy.client.GroupNettyClient;
 import com.persagy.entity.NettyMessage;
@@ -145,5 +147,19 @@ public class HelloWorld {
 	}
 
 
+	private static boolean checkExpression(String expression, HashMap<String, Object> paramMap) {
+		Expression triggerExp = AviatorEvaluator.compile(expression, false);
+		// 执行报警条件公式,得到触发和恢复结果
+		return (Boolean) triggerExp.execute(paramMap);
+	}
+	public static void main(String[] args) {
+//		String expression = "EnergyData>Pclose*5%&&CS-ChillersCOP<=1.0";
+		String expression = "EnergyData>Pclose*0.05&&CS-ChillersCOP<=1.";
+		HashMap<String, Object> paramMap = new HashMap<>();
+		paramMap.put("CS-ChillersCOP", 100.0);
+		paramMap.put("EnergyData", 100.0);
+		paramMap.put("Pclose", 3.0);
+		checkExpression(expression, paramMap);
+	}
 }
 

+ 1 - 0
src/main/java/com/persagy/entity/AlarmDefine.java

@@ -91,6 +91,7 @@ public class AlarmDefine {
 
 
 
+
     @Override
     public String toString() {
         return JSONObject.toJSONString(this);

+ 1 - 0
src/main/java/com/persagy/entity/Condition.java

@@ -45,6 +45,7 @@ import java.util.List;
 @Data
 public class Condition {
     List<String> infoCode;
+    private String configs;
     List<JSONObject> infoCodes;
     private String trigger;
     private String end;

+ 1 - 1
src/main/java/com/persagy/service/impl/AlarmHandleServiceImpl.java

@@ -154,7 +154,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
      */
     private void handleSingleIotData(String dataTime, String meterId, String funcId) throws Exception {
         // 获取和采集值相关的报警定义
-        List<AlarmDefine> alarmDefines = alarmInfoCache.getAlarmDefinitionIdByMeterFuncId(meterId, funcId);
+        List<AlarmDefine> alarmDefines = alarmInfoCache.getAlarmDefinitionsByMeterFuncId(meterId, funcId);
         for (AlarmDefine alarmDefine : alarmDefines) {
             Condition condition = alarmDefine.getCondition();
             String defineId = AlarmInfoCache.getAlarmDefineId(alarmDefine);

+ 3 - 3
src/main/resources/application.yml

@@ -5,7 +5,7 @@ spring:
   application:
     name: alarm-engine
   datasource:
-    url: jdbc:mysql://192.168.100.210:33306/alarm_engine?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false
+    url: jdbc:mysql://192.168.100.210:33306/alarm_engine2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false
     driver-class-name: com.mysql.jdbc.Driver  # mysql8.0以前使用com.mysql.jdbc.Driver
     username: root
     password: 123456
@@ -40,13 +40,13 @@ group:
   code: HR   #标识哪个集团 比如万达使用WD, 华润使用HR
   alarm:
 #    host: 192.168.100.215     #netty IP
-    host: localhost     #netty IP
+    host: 192.168.16.148     #netty IP
     port: 9986          #netty 端口9986
 terminal:  #边缘端IOT采集程序地址
   alarm:  # 拼接后的地址为ws://host:port/suffix
     compress: false    #采用的是压缩方式还是不压缩方式  true-压缩 false-不压缩
 #    host: 192.168.100.215
-    host: localhost
+    host: 192.168.16.148
     port: 9925
     suffix: websocket/iot   #websocker后缀
 project: