lixing пре 3 година
родитељ
комит
177a7a9770

+ 5 - 5
src/main/java/com/persagy/controller/HelloWorld.java

@@ -154,12 +154,12 @@ public class HelloWorld {
 	}
 	public static void main(String[] args) {
 //		String expression = "EnergyData>Pclose*5%&&CS-ChillersCOP<=1.0";
-		String expression = "EnergyData>Pclose*0.05&&CS-ChillersCOP<=1.";
+		String expression = "EnergyData>Pclose*0.05&&CsWTFch<0.01";
 		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);
+		paramMap.put("CsWTFch", -0.00762122);
+		paramMap.put("EnergyData", 6.125);
+		paramMap.put("Pclose", 5.0);
+		System.out.println(checkExpression(expression, paramMap));
 	}
 }
 

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

@@ -84,6 +84,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
         // 校验采集值
         boolean validateIotMsgResult = validateIotMsg(msg);
         if (!validateIotMsgResult) {
+            log.error("采集值校验未通过");
             return;
         }
 
@@ -135,6 +136,8 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
             // 如果有对应的报警定义
             if (alarmInfoCache.hasKey(meterId, funcIdArray[i])) {
                 currentDataCache.putCurrentData(meterId, funcIdArray[i], Double.parseDouble(values[i]));
+            } else {
+                log.info("未获取到对应的报警定义, meterId:{}, funcId:{}", meterId, funcIdArray[i]);
             }
         }
 
@@ -142,6 +145,8 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
         for (String funcId : funcIdArray) {
             if (alarmInfoCache.hasKey(meterId, funcId)) {
                 handleSingleIotData(dataTime, meterId, funcId);
+            } else {
+                log.info("未获取到对应的报警定义, meterId:{}, funcId:{}", meterId, funcId);
             }
         }
     }
@@ -189,8 +194,21 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
                 }
 
                 // 执行报警条件公式,得到触发和恢复结果
-                Boolean triggerResult = (Boolean) triggerExp.execute(paramMap);
-                Boolean endResult = (Boolean) endExp.execute(paramMap);
+
+                Boolean triggerResult = null;
+                Boolean endResult = null;
+                try {
+                    triggerResult = (Boolean) triggerExp.execute(paramMap);
+                    endResult = (Boolean) endExp.execute(paramMap);
+                } catch (Exception e) {
+                    log.error("报警条件解析异常");
+                    log.error("触发条件:");
+                    log.error(triggerExp.toString());
+                    log.error("恢复条件:");
+                    log.error(endExp.toString());
+                    log.error("参数:");
+                    log.error(paramMap.toString());
+                }
                 log.info("triggerResult:[{}],endResult:[{}]", triggerResult, endResult);
                 if (triggerResult && endResult) {
                     log.error("报警触发条件和报警恢复条件同时满足,请检查,报警定义详情【{}】", alarmDefine.toString());