浏览代码

细化加载内容

menglu 3 年之前
父节点
当前提交
eb02849d44

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

@@ -51,6 +51,7 @@ public class RefreshThread extends Thread {
 
 		Date last_refresh_config = null;
 		Date last_refresh_physical_world = null;
+		Date last_refresh_zkt_physical_world = null;
 		while (!stop) {
 			try {
 				Thread.sleep(1000L);
@@ -74,12 +75,19 @@ public class RefreshThread extends Thread {
 					}
 					last_refresh_physical_world = currTime;
 				}
-				if (changed_config || changed_physical_world) {
+				boolean changed_zkt_physical_world = false;
+				if (last_refresh_zkt_physical_world == null || currTime.getTime() - last_refresh_zkt_physical_world.getTime() > 1000L * 60 * 60) {
+					if (Constant.zkt_physical_world_download_enable) {
+						changed_zkt_physical_world = RWDDownloadUtil.Process_zkt_physical_world();
+					}
+					last_refresh_zkt_physical_world = currTime;
+				}
+				if (changed_config || changed_physical_world || changed_zkt_physical_world) {
 					log.warn("recompute begin");
 					RepositoryImpl Repository = new RepositoryImpl();
 					Repository.use_thread = !Constant.debug;
 					Repository.RepositoryBase = RepositoryContainer.RepositoryBase;
-					RWDRepositoryUtil.DoRepository(Repository, changed_physical_world);
+					RWDRepositoryUtil.DoRepository(Repository, changed_physical_world || changed_zkt_physical_world);
 					RepositoryContainer.instance = Repository;
 					log.warn("recompute finish");
 				}

+ 18 - 6
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDRepositoryUtil.java

@@ -23,29 +23,41 @@ public class RWDRepositoryUtil {
 		if (load_physical_world) {
 			log.warn("LoadPhysicalWorld");
 			RWDLoadUtil.LoadPhysicalWorld(Repository);
-			log.warn("LoadZKTPhysicalWorld");
-			RWDLoadUtil.LoadZKTPhysicalWorld(Repository);
 			log.warn("LoadReference");
 			RWDLoadUtil.LoadReference(Repository);
+			
+			log.warn("LoadZKTPhysicalWorld");
+			RWDLoadUtil.LoadZKTPhysicalWorld(Repository);
+			
+			log.warn("LoadIBMSPhysicalWorld");
+			RWDLoadUtil.LoadIBMSPhysicalWorld(Repository);
+			
 			log.warn("LoadAlarm");
 			if (Constant.alarm_enable) {
 				RWDLoadUtil.LoadAlarm(Repository, false);
 			} else {
 				RWDLoadUtil.LoadAlarm(Repository, true);
 			}
-			log.warn("LoadIBMSPhysicalWorld");
-			RWDLoadUtil.LoadIBMSPhysicalWorld(Repository);
 		} else {
 			Repository.objTypeMap = RepositoryContainer.instance.objTypeMap;
+			Repository.classCode2NameMap = RepositoryContainer.instance.classCode2NameMap;
 			Repository.code2objTypeMap = RepositoryContainer.instance.code2objTypeMap;
+			Repository.classArray = RepositoryContainer.instance.classArray;
 			Repository.infoArrayDic = RepositoryContainer.instance.infoArrayDic;
 			Repository.objectArrayDic = RepositoryContainer.instance.objectArrayDic;
-			Repository.objectArrayDicZKT = RepositoryContainer.instance.objectArrayDicZKT;
 			Repository.objectArrayAll = RepositoryContainer.instance.objectArrayAll;
+			Repository.info2point = RepositoryContainer.instance.info2point;
 			Repository.objType2id2Value = RepositoryContainer.instance.objType2id2Value;
 			Repository.relationArrayDic = RepositoryContainer.instance.relationArrayDic;
+			Repository.graphCodeDic = RepositoryContainer.instance.graphCodeDic;
+			Repository.relCodeDic = RepositoryContainer.instance.relCodeDic;
+			Repository.relationAll = RepositoryContainer.instance.relationAll;
 			Repository.id2object = RepositoryContainer.instance.id2object;
 			Repository.id2sdv = RepositoryContainer.instance.id2sdv;
+
+			Repository.classArrayZKT = RepositoryContainer.instance.classArrayZKT;
+			Repository.objectArrayDicZKT = RepositoryContainer.instance.objectArrayDicZKT;
+
 			Repository.IBMSArrayDic = RepositoryContainer.instance.IBMSArrayDic;
 		}
 
@@ -78,7 +90,7 @@ public class RWDRepositoryUtil {
 		log.warn("computeAll");
 		ComputeUtil.computeAll(Repository, spListList);
 		try {
-//			DeamonUtil.Process(Repository);
+			DeamonUtil.Process(Repository);
 		} catch (Exception e) {
 			log.error(e.getMessage(), e);
 		}

+ 6 - 5
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RepositoryImpl.java

@@ -19,15 +19,11 @@ public class RepositoryImpl extends RepositoryBase {
 	public Map<String, String> classCode2NameMap = new HashMap<String, String>();
 	// classCode到objType
 	public Map<String, String> code2objTypeMap = new HashMap<String, String>();
-
 	// 对象类型下属信息点
 	public SceneDataSet classArray = new SceneDataSet(false);
 	public Map<String, SceneDataSet> infoArrayDic = new HashMap<String, SceneDataSet>();
 	// 对象类型到对象实例清单
 	public Map<String, SceneDataSet> objectArrayDic = new HashMap<String, SceneDataSet>();
-	// 对象类型到对象实例清单
-	public SceneDataSet classArrayZKT = new SceneDataSet(false);
-	public Map<String, Map<String, SceneDataSet>> objectArrayDicZKT = new HashMap<String, Map<String, SceneDataSet>>();
 	// 所有对象实例清单
 	public SceneDataSet objectArrayAll = new SceneDataSet(false);
 	public ConcurrentHashMap<String, ConcurrentHashMap<String, String>> info2point = new ConcurrentHashMap<String, ConcurrentHashMap<String, String>>();
@@ -41,7 +37,12 @@ public class RepositoryImpl extends RepositoryBase {
 	// 对象id到JSONObject
 	public Map<String, JSONObject> id2object = new HashMap<String, JSONObject>();
 	// 对象id到SceneDataValue
-	public Map<String, SceneDataObject> id2sdv = new HashMap<String, SceneDataObject>();
+	public Map<String, SceneDataObject> id2sdv = new HashMap<String, SceneDataObject>();	
+
+	// 对象类型到对象实例清单
+	public SceneDataSet classArrayZKT = new SceneDataSet(false);
+	public Map<String, Map<String, SceneDataSet>> objectArrayDicZKT = new HashMap<String, Map<String, SceneDataSet>>();
+	
 	// 图类型到边类型到变实例清单
 	public Map<String, Map<String, SceneDataSet>> IBMSArrayDic = new HashMap<String, Map<String, SceneDataSet>>();