瀏覽代碼

边缘端报警服务优化

zhangqiankun 3 年之前
父節點
當前提交
849af71eec

+ 1 - 1
pom.xml

@@ -98,7 +98,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
-            <version>1.2.71</version>
+            <version>1.2.78</version>
             <scope>compile</scope>
         </dependency>
         <!--hutool工具类-->

+ 8 - 0
src/main/java/com/persagy/constant/CommonConst.java

@@ -40,6 +40,9 @@ public class CommonConst {
 
     /** iot中所使用的项目ID,切记不带Pj */
     public static String building;
+    
+    /** 报警服务的服务地址 */
+    public static String alarmServerUrl;
 
     /** 报警服务地址 */
     public static String alarmHost;
@@ -87,6 +90,11 @@ public class CommonConst {
         CommonConst.building = value;
     }
     
+    @Value("${remote.ibms-alarm.server-url}")
+    public void setAlarmServerUrl(String value) {
+        CommonConst.alarmServerUrl = value;
+    }
+    
     @Value("${remote.ibms-alarm.host}")
     public void setAlarmHost(String value) {
         CommonConst.alarmHost = value;

+ 9 - 1
src/main/java/com/persagy/constant/ExtraCommonConstant.java

@@ -22,10 +22,18 @@ public class ExtraCommonConstant {
 
 	public static final Object sync = new Object();
 	
+	public static final String RESULT = "Result";
+	public static final String CONTENT = "Content";
+	
 	public static final String SUCCESS = "success";
 	public static final String CRITERIA = "criteria";
+	public static final String USER_ID = "userId";
+	public static final String GROUP_CODE = "groupCode";
+	public static final String PROJECT_ID = "projectId";
     public static final String IBMS_SCENE_CODE = "ibmsSceneCode";
     public static final String IBMS_CLASS_CODE = "ibmsClassCode";
+	public static final String IBMS_ALARM_ALL_SCENE_CODE = "/alarm-config/queryAllIbmsScene";
+	public static final String IBMS_ALARM_ALL_ALARM_DEFINE = "/alarm-config/queryAlarmDefine";
 	public static final String RWD_INSTANCE_OBJECT_QUERY = "/rwd/instance/object/query?projectId={}&groupCode={}";
 	
 	public static String getObjectQueryUrl() {
@@ -140,7 +148,7 @@ public class ExtraCommonConstant {
 	        criteria.put(IBMS_SCENE_CODE, ibmsSceneCode);
 	        criteria.put(IBMS_CLASS_CODE, ibmsClassCode);
 	        params.put(CRITERIA, criteria);
-			String post = HttpUtil.post(getObjectQueryUrl(), params.toJSONString(), 10 * 1000);
+			String post = HttpUtil.post(getObjectQueryUrl(), params.toJSONString(), 600 * 1000);
 			if (StrUtil.isBlank(post)) {
 				return null;
 			}

+ 89 - 0
src/main/java/com/persagy/init/InitAlarmDefine.java

@@ -0,0 +1,89 @@
+package com.persagy.init;
+
+import java.util.List;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.persagy.constant.CommonConst;
+import com.persagy.constant.ExtraCommonConstant;
+import com.persagy.entity.AlarmDefine;
+import com.persagy.utils.AlarmDefineUtil;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpUtil;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 报警定义初始化
+ * 
+ * @version 1.0.0
+ * @company persagy 
+ * @author zhangqiankun
+ * @date 2022年4月2日 上午11:21:41
+ */
+@Slf4j
+@Order(-20)
+@Component
+public class InitAlarmDefine implements CommandLineRunner {
+	
+	@Override
+	public void run(String... args) throws Exception {
+		JSONObject params = new JSONObject();
+		params.put(ExtraCommonConstant.USER_ID, CommonConst.systemId);
+		params.put(ExtraCommonConstant.GROUP_CODE, CommonConst.groupCode);
+		params.put(ExtraCommonConstant.PROJECT_ID, CommonConst.projectId);
+		String ibmsClassCodeStr = HttpUtil.post(CommonConst.alarmServerUrl + ExtraCommonConstant.IBMS_ALARM_ALL_SCENE_CODE, params.toJSONString(), 180 * 1000);
+		if (StrUtil.isBlank(ibmsClassCodeStr)) {
+			log.warn("不存在产品模块配置,无报警规则要更新");
+			return;
+		}
+		JSONObject ibmsClassCodeObject = JSONObject.parseObject(ibmsClassCodeStr);
+		if (!ExtraCommonConstant.SUCCESS.equals(ibmsClassCodeObject.getString(ExtraCommonConstant.RESULT))) {
+			log.warn("远程报警服务异常,无报警规则要更新");
+			return;
+		}
+		JSONArray ibmsClassCodes = ibmsClassCodeObject.getJSONArray(ExtraCommonConstant.CONTENT);
+		if (ibmsClassCodes == null || ibmsClassCodes.size() == 0) {
+			log.warn("不存在产品模块配置,无报警规则要更新");
+			return;
+		}
+		// 根据产品模块获取对应的报警规则
+		String alarmDefineUrl = CommonConst.alarmServerUrl + ExtraCommonConstant.IBMS_ALARM_ALL_ALARM_DEFINE;
+		for (int i = 0; i < ibmsClassCodes.size(); i++) {
+			JSONObject jsonObject = ibmsClassCodes.getJSONObject(i);
+			JSONObject alarmDefineParam = new JSONObject();
+			alarmDefineParam.put(ExtraCommonConstant.USER_ID, CommonConst.systemId);
+			alarmDefineParam.put(ExtraCommonConstant.GROUP_CODE, CommonConst.groupCode);
+			alarmDefineParam.put(ExtraCommonConstant.PROJECT_ID, CommonConst.projectId);
+			alarmDefineParam.put(ExtraCommonConstant.IBMS_SCENE_CODE, jsonObject.getString(ExtraCommonConstant.IBMS_SCENE_CODE));
+			alarmDefineParam.put(ExtraCommonConstant.IBMS_CLASS_CODE, jsonObject.getString(ExtraCommonConstant.IBMS_CLASS_CODE));
+			String alarmDefineStr = HttpUtil.post(alarmDefineUrl, alarmDefineParam.toJSONString(), 180 * 1000);
+			if (StrUtil.isBlank(alarmDefineStr)) {
+				log.warn("此产品模块下无报警规则配置");
+				continue;
+			}
+			JSONObject alarmDefineObject = JSONObject.parseObject(alarmDefineStr);
+			if (!ExtraCommonConstant.SUCCESS.equals(alarmDefineObject.getString(ExtraCommonConstant.RESULT))) {
+				log.warn("远程报警服务异常,无报警规则要更新");
+				continue;
+			}
+			
+			String alarmDefines = alarmDefineObject.getString(ExtraCommonConstant.CONTENT);
+			if (StrUtil.isBlank(alarmDefines)) {
+				log.warn("无报警规则要更新");
+				continue;
+			}
+			List<AlarmDefine> alarmDefineList = JSONArray.parseArray(alarmDefines, AlarmDefine.class);
+            if (CollectionUtil.isNotEmpty(alarmDefineList)) {
+				AlarmDefineUtil.listSomeAlarmDefine(alarmDefineList);
+            }
+		}
+		
+	}
+	
+}

+ 2 - 3
src/main/java/com/persagy/netty/client/CenterClientHandler.java

@@ -1,6 +1,5 @@
 package com.persagy.netty.client;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
@@ -55,12 +54,12 @@ public class CenterClientHandler extends SimpleChannelInboundHandler<NettyMessag
         iniAlarmResult(ctx);
         
 		// 获取全部报警定义
-        NettyMessage nettyMessage = new NettyMessage(4);
+        /*NettyMessage nettyMessage = new NettyMessage(4);
         JSONObject content = new JSONObject();
         content.put("groupCode", CommonConst.groupCode);
         content.put("projectId", CommonConst.projectId);
         nettyMessage.setContent(Arrays.asList(content));
-        nettyClient.sendMessage(nettyMessage);
+        nettyClient.sendMessage(nettyMessage);*/
     }
 
     private void iniAlarmResult(ChannelHandlerContext ctx) {

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

@@ -9,12 +9,13 @@ config:
 # 报警服务
 remote: 
   ibms-alarm:
+    server-url: http://192.168.100.102:30051
     # 推送消息时,是否会开启压缩,true-压缩 false-不压缩
     compress: false
     # 需要更改
-    host: 192.168.0.27
-    # 需要更改
-    port: 8836
+    host: 192.168.100.102
+    # 需要更改,netty端口
+    port: 30050
 
   # IOT程序
   iot: