Browse Source

报警推送根据pushType处理,去掉objectId和objectName,其他name保留,增加floorId

menglu 3 years ago
parent
commit
2bb13bb770

+ 10 - 10
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/DaemonThread.java

@@ -122,6 +122,16 @@ public class DaemonThread extends Thread {
 		}
 
 		try {
+			Constant.debug = false;// 调试模式设为true
+			RepositoryImpl Repository = RepositoryContainer.instance;
+			Repository.use_thread = !Constant.debug;
+			Repository.RepositoryBase = RepositoryContainer.RepositoryBase;
+			RWDRepositoryUtil.DoRepository(Repository, true);
+			log.warn("compute finish");
+			RepositoryContainer.RepositoryBase.compute_finish = true;
+			// 查询可变集合
+			// RecursiveUtil.print_variable_set("", Repository.objectData);
+
 			if (Constant.iot_websocket_url != null) {
 				log.warn("iot-websocket");
 				IOTWebSocketClient.client = new IOTWebSocketClient(new URI(Constant.iot_websocket_url + "?projectId="
@@ -147,16 +157,6 @@ public class DaemonThread extends Thread {
 				Thread.sleep(1000L);
 			}
 
-			Constant.debug = false;// 调试模式设为true
-			RepositoryImpl Repository = RepositoryContainer.instance;
-			Repository.use_thread = !Constant.debug;
-			Repository.RepositoryBase = RepositoryContainer.RepositoryBase;
-			RWDRepositoryUtil.DoRepository(Repository, true);
-			log.warn("compute finish");
-			RepositoryContainer.RepositoryBase.compute_finish = true;
-			// 查询可变集合
-			// RecursiveUtil.print_variable_set("", Repository.objectData);
-
 			while (!stop) {
 				try {
 					Thread.sleep(1000 * 60 * 5);

+ 68 - 7
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDAlarmUtil.java

@@ -24,20 +24,32 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class RWDAlarmUtil {
 	public static JSONArray history_alarm_path = new JSONArray();
+	static Map<Integer, String> stateMap = new HashMap<Integer, String>();
 	static Map<Integer, String> statusMap = new HashMap<Integer, String>();
 	static Map<Integer, String> treatStateMap = new HashMap<Integer, String>();
+	static Map<Integer, String> treatModeMap = new HashMap<Integer, String>();
+	static Map<Integer, String> natureMap = new HashMap<Integer, String>();
 	static Map<String, String> levelMap = new HashMap<String, String>();
 	static Map<String, String> categoryMap = new HashMap<String, String>();
 
 	static {
 		history_alarm_path.add("基础对象");
 		history_alarm_path.add("历史报警");
+		stateMap.put(1, "未恢复");
+		stateMap.put(2, "已恢复");
+		stateMap.put(3, "已过期");
 		statusMap.put(1, "未恢复");
 		statusMap.put(2, "已恢复");
 		statusMap.put(3, "已过期");
 		treatStateMap.put(1, "未处理");
 		treatStateMap.put(2, "处理中");
 		treatStateMap.put(3, "已处理");
+		treatModeMap.put(1, "忽略");
+		treatModeMap.put(2, "转工单");
+		treatModeMap.put(3, "关闭报警");
+		natureMap.put(1, "误报");
+		natureMap.put(2, "真实故障");
+		natureMap.put(3, "设备测试");
 		levelMap.put("1", "严重");
 		levelMap.put("2", "较重");
 		levelMap.put("3", "一般");
@@ -189,27 +201,63 @@ public class RWDAlarmUtil {
 			alarm.put("triggerMainInfo", infos[0]);
 		}
 
-		if (alarm.containsKey("objId")) {
-			alarm.put("objectId", alarm.get("objId"));
-		}
-		if (alarm.containsKey("objName")) {
-			alarm.put("objectName", alarm.get("objName"));
+		if (!alarm.containsKey("floorId")) {
+			String objId = (String) alarm.get("objId");
+			SceneDataObject sdo = RepositoryContainer.instance.id2sdv.get(objId);
+			{
+				SceneDataValue floor = sdo.get("所在楼层-id");
+				if (floor != null && floor.value_prim != null && floor.value_prim.value != null && floor.value_prim.value instanceof String) {
+					String floorString = (String) floor.value_prim.value;
+					alarm.put("floorId", floorString);
+				}
+			}
+			{
+				SceneDataValue floor = sdo.get("所属楼层-id");
+				if (floor != null && floor.value_prim != null && floor.value_prim.value != null && floor.value_prim.value instanceof String) {
+					String floorString = (String) floor.value_prim.value;
+					alarm.put("floorId", floorString);
+				}
+			}
 		}
+		// if (alarm.containsKey("objId")) {
+		// alarm.put("objectId", alarm.get("objId"));
+		// }
+		// if (alarm.containsKey("objName")) {
+		// alarm.put("objectName", alarm.get("objName"));
+		// }
+		// if (alarm.containsKey("state")) {
+		// alarm.put("status", alarm.get("state"));
+		// }
+		// if (alarm.containsKey("status")) {
+		// alarm.put("status_name", statusMap.get(alarm.get("status")));
+		// alarm.put("statusName", statusMap.get(alarm.get("status")));
+		// }
 		if (alarm.containsKey("state")) {
-			alarm.put("status", alarm.get("state"));
-			alarm.put("status_name", statusMap.get(alarm.get("status")));
+			alarm.put("state_name", stateMap.get(alarm.get("state")));
+			alarm.put("stateName", stateMap.get(alarm.get("state")));
 		}
 		if (alarm.containsKey("treatState")) {
 			alarm.put("treatState_name", treatStateMap.get(alarm.get("treatState")));
+			alarm.put("treatStateName", treatStateMap.get(alarm.get("treatState")));
+		}
+		if (alarm.containsKey("treatMode")) {
+			alarm.put("treatMode_name", treatModeMap.get(alarm.get("treatMode")));
+			alarm.put("treatModeName", treatModeMap.get(alarm.get("treatMode")));
+		}
+		if (alarm.containsKey("nature")) {
+			alarm.put("nature_name", natureMap.get(alarm.get("nature")));
+			alarm.put("natureName", natureMap.get(alarm.get("nature")));
 		}
 		if (alarm.containsKey("level")) {
 			alarm.put("level_name", levelMap.get(alarm.get("level")));
+			alarm.put("levelName", levelMap.get(alarm.get("level")));
 		}
 		if (alarm.containsKey("objType")) {
 			alarm.put("category", alarm.get("objType"));
 		}
 		if (alarm.containsKey("category")) {
 			alarm.put("category_name", categoryMap.get(alarm.get("category")));
+			alarm.put("categoryName", categoryMap.get(alarm.get("category")));
 		}
 
 		if (alarm.containsKey("triggerTime")) {
@@ -376,6 +424,19 @@ public class RWDAlarmUtil {
 		}
 	}
 
+	public static synchronized void ProcessOrderDesc(String id, String orderStateDesc) {
+		for (SceneDataObject sdo : RepositoryContainer.RepositoryBase.alarmArray.set) {
+			String idInner = (String) sdo.get("id").value_prim.value;
+			if (idInner.equals(id)) {
+				SceneDataValue orderStateDescInner = sdo.get("orderStateDesc");
+				if (orderStateDescInner != null) {
+					orderStateDescInner.value_prim.value = orderStateDesc;
+				}
+				break;
+			}
+		}
+	}
+
 	public static synchronized int refresh() throws Exception {
 		RepositoryContainer.RepositoryBase.alarmArray.set.clear();
 		String[] objIds = RepositoryContainer.RepositoryBase.id2alarmList.keySet().toArray(new String[0]);

+ 13 - 6
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/websocket/AlarmWebSocketClient.java

@@ -56,13 +56,20 @@ public class AlarmWebSocketClient extends WebSocketClient {
 			String message = arg0;
 			log.debug("AlarmWebSocketClient: " + message);
 			JSONObject alarm = (JSONObject) JSON.parse(message);
-			try {
-				RWDAlarmUtil.modify_alarm(alarm);
-			} catch (Exception e) {
-				log.error(e.getMessage(), e);
-				log.error(LogUtil.GetExceptionStackTrace(e));
+			int pushType = (Integer) alarm.get("pushType");
+			if (pushType == 3) {
+				String alarmId = (String) alarm.get("alarmId");
+				String orderStateDesc = (String) alarm.get("orderStateDesc");
+				RWDAlarmUtil.ProcessOrderDesc(alarmId, orderStateDesc);
+			} else {
+				try {
+					RWDAlarmUtil.modify_alarm(alarm);
+				} catch (Exception e) {
+					log.error(e.getMessage(), e);
+					log.error(LogUtil.GetExceptionStackTrace(e));
+				}
+				RWDAlarmUtil.ProcessAlarm(alarm);
 			}
-			RWDAlarmUtil.ProcessAlarm(alarm);
 		} catch (Exception e) {
 			log.error(e.getMessage(), e);
 		}