Преглед на файлове

报警配置采用跟其他一个套路

menglu преди 3 години
родител
ревизия
62da05b36c

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

@@ -97,6 +97,21 @@ public class DaemonThread extends Thread {
 					log.error(e.getMessage(), e);
 				}
 			}
+			if (Constant.zkt_alarm_config_enable) {
+				try {
+					String validPath = Constant.getLatestPath(Constant.zkt_alarm_config, true);
+					if (validPath == null) {
+						while (true) {
+							boolean changed_physical_world = RWDDownloadUtil.Process_zkt_alarm_config();
+							if (changed_physical_world) {
+								break;
+							}
+						}
+					}
+				} catch (Exception e) {
+					log.error(e.getMessage(), e);
+				}
+			}
 			try {
 				String validPath = Constant.getLatestPath(Constant.config, false);
 				if (validPath == null) {
@@ -106,15 +121,6 @@ public class DaemonThread extends Thread {
 			} catch (Exception e) {
 				log.error(e.getMessage(), e);
 			}
-			try {
-				String validPath = Constant.getLatestPath(Constant.zkt_alarm_config, false);
-				if (validPath == null) {
-					String tmpPath = Constant.zkt_alarm_config + Constant.getSeperator() + "zkt_alarm_config.json";
-					RWDDownloadUtil.LoadZKTAlarmConfig(tmpPath);
-				}
-			} catch (Exception e) {
-				log.error(e.getMessage(), e);
-			}
 		}
 
 		try {

+ 4 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/Constant.java

@@ -41,8 +41,9 @@ public class Constant {
 	public static String alarm_rest;
 	public static boolean alarm_rest_get;
 
-	//To Do lirong  增加报警配置
+	// To Do lirong 增加报警配置
 	public static String zkt_alarm_config;
+	public static boolean zkt_alarm_config_enable;
 	public static boolean zkt_alarm_config_refresh_enable;
 
 	public static Map<String, Boolean> objType_hasRelation = new HashMap<String, Boolean>();
@@ -127,11 +128,12 @@ public class Constant {
 						config_refresh_enable = Boolean.parseBoolean(element.attribute("refresh_enable").getValue());
 					}
 
-					//To Do lirong
+					// To Do lirong
 					iter = document.selectNodes("/root/zkt_alarm_config").iterator();
 					if (iter.hasNext()) {
 						element = (Element) iter.next();
 						zkt_alarm_config = element.attribute("path").getValue();
+						zkt_alarm_config_enable = Boolean.parseBoolean(element.attribute("enable").getValue());
 						zkt_alarm_config_refresh_enable = Boolean.parseBoolean(element.attribute("refresh_enable").getValue());
 					}
 

+ 46 - 13
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDDownloadUtil.java

@@ -466,6 +466,10 @@ public class RWDDownloadUtil {
 
 	public static void LoadZKTAlarmConfig(String path) throws Exception {
 		FileUtil.deleteRecursive(new File(path));
+		File root = new File(path);
+		if (!root.exists()) {
+			root.mkdir();
+		}
 		JSONArray alarmConfigArray = null;
 		List<String> groupCodeList = new ArrayList<String>();
 		groupCodeList.add(RepositoryContainer.RepositoryBase.groupCode);
@@ -491,27 +495,56 @@ public class RWDDownloadUtil {
 			}
 		}
 		if (alarmConfigArray != null) {
-			FileUtil.Save(path, FastJsonUtil.toFormatString(alarmConfigArray));
+			FileUtil.Save(path + Constant.getSeperator() + "zkt_alarm_config.json", FastJsonUtil.toFormatString(alarmConfigArray));
 		}
 	}
 
 	public static boolean Process_zkt_alarm_config() throws Exception {
-		String validPath = Constant.zkt_alarm_config;
-		File valid = new File(validPath);
-
-		String tmpPath = Constant.zkt_alarm_config + Constant.getSeperator() + "tmp" + ".json";
-		LoadZKTAlarmConfig(tmpPath);
-		File tmp = new File(tmpPath);
-
-		boolean compare_valid = FileUtil.compareRecursive(valid, tmp);
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+		String validPath = Constant.getLatestPath(Constant.zkt_alarm_config, true);
+		// 存储临时文件
+		File dir1;
+		{
+			String tmpPath = Constant.zkt_alarm_config + Constant.getSeperator() + "tmp1";
+			dir1 = new File(tmpPath);
+			RWDDownloadUtil.LoadZKTAlarmConfig(tmpPath);
+		}
+		File dir2;
+		{
+			String tmpPath = Constant.zkt_alarm_config + Constant.getSeperator() + "tmp2";
+			dir2 = new File(tmpPath);
+			RWDDownloadUtil.LoadZKTAlarmConfig(tmpPath);
+		}
+		// 检查一致性
+		boolean compare = FileUtil.compareRecursive(dir1, dir2);
+		log.debug("Compare tmp1" + (compare ? "==" : "!=") + "tmp2");
 		boolean result;
-		if (!compare_valid) {
-			tmp.renameTo(new File(Constant.zkt_alarm_config + Constant.getSeperator() + "zkt_alarm_config.json"));
-			result = true;
+		if (compare) {
+			File valid = null;
+			if (validPath != null) {
+				valid = new File(validPath);
+			}
+			if (valid != null && valid.exists()) {
+				boolean compare_valid = FileUtil.compareRecursive(valid, dir2);
+				log.debug("Compare valid" + (compare_valid ? "==" : "!=") + "tmp2");
+				if (compare_valid) {
+					result = false;
+				} else {
+					// 移动tmp2
+					Date currTime = new Date();
+					dir2.renameTo(new File(Constant.zkt_alarm_config + Constant.getSeperator() + sdf.format(currTime)));
+					result = true;
+				}
+			} else {
+				// 移动tmp2
+				Date currTime = new Date();
+				dir2.renameTo(new File(Constant.zkt_alarm_config + Constant.getSeperator() + sdf.format(currTime)));
+				result = true;
+			}
 		} else {
 			result = false;
 		}
-		Clear(Constant.zkt_alarm_config, false);
+		Clear(Constant.zkt_alarm_config, true);
 		return result;
 	}
 }

+ 1 - 1
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDLoadUtil.java

@@ -783,7 +783,7 @@ public class RWDLoadUtil {
 	}
 
 	public static void LoadZKTAlarmConfig(RepositoryImpl Repository) throws Exception {
-		String validPath = Constant.zkt_alarm_config;
+		String validPath = Constant.getLatestPath(Constant.zkt_alarm_config, true);
 		{
 			JSONArray alarmConfigArray = FastJsonReaderUtil.Instance()
 					.ReadJSONArray(new File(validPath + Constant.getSeperator() + "zkt_alarm_config.json"));

+ 2 - 2
ibms-data-sdk/src/main/resources/config.xml

@@ -20,9 +20,9 @@
 	<!-- iot-project的服务地址 -->
 	<!-- <iot_project url="http://192.168.0.30:8862/" /> -->
 	<iot_project url="http://192.168.100.33:9909/iot-project/" />
-	<zkt_alarm_config path="D-zkt_alarm_config" refresh_enable="true" />
+	<zkt_alarm_config path="D-zkt_alarm_config" enable="true" refresh_enable="true" />
 	<!-- 报警的websocket地址和服务地址 -->
-	<alarm enable="true" websocket="ws://192.168.100.33:9909/webSocketServer" rest="http://192.168.100.33:9909/zkt-alarm/" rest_get="true" />
+	<alarm enable="true" websocket="ws://192.168.100.33:9909/webSocketServer" rest="http://192.168.100.33:9909/zkt-alarm/" rest_get="false" />
 
 	<ConfigRelation graphCode="ArchSubset" relCode="Bd2Fl" objFrom="building" objTo="floor" nameInTo="所属建筑" multiplicityTo="1" />
 	<ConfigRelation graphCode="ArchSubset" relCode="Bd2Sp" objFrom="building" objTo="space" nameInTo="所属建筑" multiplicityTo="1" />