Browse Source

增加模式日历

menglu 3 years ago
parent
commit
6f4044490d

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

@@ -13,6 +13,7 @@ import com.persagy.ibms.core.util.KeywordUtil;
 import com.persagy.ibms.data.sdk.util.Constant;
 import com.persagy.ibms.data.sdk.util.DeamonUtil;
 import com.persagy.ibms.data.sdk.util.RWDDownloadUtil;
+import com.persagy.ibms.data.sdk.util.RWDLoadUtil;
 import com.persagy.ibms.data.sdk.util.RWDRepositoryUtil;
 import com.persagy.ibms.data.sdk.util.RepositoryContainer;
 import com.persagy.ibms.data.sdk.util.RepositoryImpl;
@@ -154,6 +155,8 @@ public class DaemonThread extends Thread {
 			Repository.use_thread = !Constant.debug;
 			Repository.RepositoryBase = RepositoryContainer.RepositoryBase;
 			RWDRepositoryUtil.DoRepository(Repository, true);
+			log.warn("LoadCalendar");
+			RWDLoadUtil.LoadCalendar(Repository);
 			log.warn("compute finish");
 			RepositoryContainer.RepositoryBase.compute_finish = true;
 			// 查询可变集合

+ 3 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/RefreshThread.java

@@ -11,6 +11,7 @@ import org.springframework.stereotype.Component;
 import com.persagy.ibms.data.sdk.util.Constant;
 import com.persagy.ibms.data.sdk.util.FileUtil;
 import com.persagy.ibms.data.sdk.util.RWDDownloadUtil;
+import com.persagy.ibms.data.sdk.util.RWDLoadUtil;
 import com.persagy.ibms.data.sdk.util.RWDRepositoryUtil;
 import com.persagy.ibms.data.sdk.util.RepositoryContainer;
 import com.persagy.ibms.data.sdk.util.RepositoryImpl;
@@ -97,6 +98,8 @@ public class RefreshThread extends Thread {
 					Repository.use_thread = !Constant.debug;
 					Repository.RepositoryBase = RepositoryContainer.RepositoryBase;
 					RWDRepositoryUtil.DoRepository(Repository, changed_physical_world || changed_zkt_physical_world);
+					log.warn("LoadCalendar");
+					RWDLoadUtil.LoadCalendar(Repository);
 					RepositoryContainer.instance = Repository;
 					log.warn("recompute finish");
 				}

+ 6 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/Constant.java

@@ -23,6 +23,7 @@ public class Constant {
 	public static String sdk_version;
 	public static String rwd_url;
 	public static String zkt_monitor_url;
+	public static String zkt_control_url;
 	public static String physical_world;
 	public static boolean physical_world_refresh_enable;
 	public static String zkt_physical_world;
@@ -101,6 +102,11 @@ public class Constant {
 						element = (Element) iter.next();
 						zkt_monitor_url = element.attribute("url").getValue();
 					}
+					iter = document.selectNodes("/root/zkt_control").iterator();
+					if (iter.hasNext()) {
+						element = (Element) iter.next();
+						zkt_control_url = element.attribute("url").getValue();
+					}
 					iter = document.selectNodes("/root/physical_world").iterator();
 					if (iter.hasNext()) {
 						element = (Element) iter.next();

+ 12 - 5
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/DeamonUtil.java

@@ -20,8 +20,16 @@ import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
 public class DeamonUtil {
-	public static void Process(RepositoryBase Repository) throws Exception {
+	public static void Process(RepositoryImpl Repository) throws Exception {
 		log.warn("deamon start");
+		log.warn("refresh_calendar");
+		RWDLoadUtil.LoadCalendar(Repository);
+		log.warn("refresh_deamon");
+		Process_deamon(Repository);
+		log.warn("deamon finish");
+	}
+
+	public static void Process_deamon(RepositoryBase Repository) throws Exception {
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
 		Map<String, Boolean> pointMap = new HashMap<String, Boolean>();
 		for (SceneDataValue sdv : Repository.deamon_sdv2pointList.keySet()) {
@@ -53,12 +61,12 @@ public class DeamonUtil {
 			pointObject.put("time_to", sdf.format(time_to));
 			points.add(pointObject);
 			if (points.size() >= 10) {
-				Process(Repository, points);
+				LoadDataList_deamon(Repository, points);
 				points.clear();
 			}
 		}
 		if (points.size() > 0) {
-			Process(Repository, points);
+			LoadDataList_deamon(Repository, points);
 			points.clear();
 		}
 
@@ -104,10 +112,9 @@ public class DeamonUtil {
 				sdv.value_array.setRowChange(true);
 			}
 		}
-		log.warn("deamon finish");
 	}
 
-	public static void Process(RepositoryBase Repository, JSONArray points) throws Exception {
+	public static void LoadDataList_deamon(RepositoryBase Repository, JSONArray points) throws Exception {
 		JSONObject postJSON = new JSONObject();
 		postJSON.put("building", RepositoryContainer.RepositoryBase.projectId.substring(2));
 		postJSON.put("points", points);

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

@@ -3,11 +3,14 @@ package com.persagy.ibms.data.sdk.util;
 import java.io.File;
 import java.io.FileFilter;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.ibms.core.data.SceneDataObject;
@@ -810,4 +813,94 @@ public class RWDLoadUtil {
 			Repository.alarmConfigTrigger = alarmConfigTrigger;
 		}
 	}
+
+	public static void LoadCalendar(RepositoryImpl Repository) throws Exception {
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(new Date());
+		int year = calendar.get(Calendar.YEAR);
+		String projectId = RepositoryContainer.RepositoryBase.projectId;
+		Map<String, String> modelMap = new HashMap<String, String>();
+		{
+			JSONObject param = new JSONObject();
+			param.put("userId", "0");
+			param.put("appId", "0");
+			param.put("projectId", projectId);
+			String post_result = HttpClientUtil.post(Constant.zkt_control_url + "tab/model/query", param.toJSONString());
+			JSONObject resultJSON = JSON.parseObject(post_result);
+			JSONArray Content = (JSONArray) resultJSON.get("Content");
+			JSONArray array = new JSONArray();
+			for (int i = 0; i < Content.size(); i++) {
+				JSONObject ContentItem = (JSONObject) Content.get(i);
+				int tabId = ContentItem.getInteger("tabId");
+				String tabName = ContentItem.getString("tabName");
+				JSONArray modelList = (JSONArray) ContentItem.get("modelList");
+				for (int ii = 0; ii < modelList.size(); ii++) {
+					JSONObject arrayItem = modelList.getJSONObject(ii);
+					arrayItem.put("tabId", tabId);
+					arrayItem.put("tabName", tabName);
+					array.add(arrayItem);
+					String modelId = arrayItem.getString("modelId");
+					String modelName = arrayItem.getString("modelName");
+					modelMap.put(modelId, modelName);
+				}
+			}
+			Repository.IBMSCalendarModel.setRowChange(true);
+			Repository.IBMSCalendarModel.set = RWDUtil.array2SDOList(array);
+		}
+		{
+			JSONObject param = new JSONObject();
+			param.put("userId", "0");
+			param.put("appId", "0");
+			param.put("projectId", projectId);
+			param.put("year", "" + year);
+			String post_result = HttpClientUtil.post(Constant.zkt_control_url + "calendar/binding/query", param.toJSONString());
+			JSONObject resultJSON = JSON.parseObject(post_result);
+			JSONObject Item = (JSONObject) resultJSON.get("Item");
+			JSONArray array = new JSONArray();
+			for (Object value : Item.values()) {
+				JSONArray dayArray = (JSONArray) value;
+				for (int i = 0; i < dayArray.size(); i++) {
+					JSONObject dayItem = dayArray.getJSONObject(i);
+					String date = dayItem.getString("date");
+					JSONArray controlModel = dayItem.getJSONArray("controlModel");
+					for (int ii = 0; ii < controlModel.size(); ii++) {
+						JSONObject controlItem = controlModel.getJSONObject(ii);
+						controlItem.put("date", date);
+						String modelId = controlItem.getString("modelId");
+						controlItem.put("modelName", modelMap.get(modelId));
+						array.add(controlItem);
+					}
+				}
+			}
+			Repository.IBMSCalendarBinding.setRowChange(true);
+			Repository.IBMSCalendarBinding.set = RWDUtil.array2SDOList(array);
+		}
+
+		String validPath = Constant.getLatestPath(Constant.zkt_alarm_config, true);
+		{
+			JSONArray alarmConfigArray = FastJsonReaderUtil.Instance()
+					.ReadJSONArray(new File(validPath + Constant.getSeperator() + "zkt_alarm_config.json"));
+			{
+				SceneDataSet SceneDataSet = new SceneDataSet(false);
+				SceneDataSet.set = RWDUtil.array2SDOList(alarmConfigArray);
+				Repository.alarmConfigArray = SceneDataSet;
+			}
+			JSONArray alarmConfigTriggerArray = new JSONArray();
+			for (int i = 0; i < alarmConfigArray.size(); i++) {
+				JSONObject alarmConfigItem = (JSONObject) alarmConfigArray.get(i);
+				String objId = (String) alarmConfigItem.get("objId");
+				JSONObject condition = (JSONObject) alarmConfigItem.get("condition");
+				JSONObject configs = (JSONObject) condition.get("configs");
+				JSONArray trigger = (JSONArray) configs.get("trigger");
+				if (trigger != null) {
+					JSONObject item = (JSONObject) trigger.get(0);
+					item.put("objId", objId);
+					alarmConfigTriggerArray.add(item);
+				}
+			}
+			SceneDataSet alarmConfigTrigger = new SceneDataSet(false);
+			alarmConfigTrigger.set = RWDUtil.array2SDOList(alarmConfigTriggerArray);
+			Repository.alarmConfigTrigger = alarmConfigTrigger;
+		}
+	}
 }

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

@@ -41,12 +41,13 @@ public class RWDRepositoryUtil {
 			log.warn("LoadAlarm");
 			if (Constant.alarm_enable) {
 				RWDLoadUtil.LoadAlarm(Repository, false);
-			}
-			else {
+			} else {
 				RWDLoadUtil.LoadAlarm(Repository, true);
 			}
-		}
-		else {
+		} else {
+			Repository.alarmConfigArray = RepositoryContainer.instance.alarmConfigArray;
+			Repository.alarmConfigTrigger = RepositoryContainer.instance.alarmConfigTrigger;
+			
 			Repository.objTypeMap = RepositoryContainer.instance.objTypeMap;
 			Repository.classCode2NameMap = RepositoryContainer.instance.classCode2NameMap;
 			Repository.code2objTypeMap = RepositoryContainer.instance.code2objTypeMap;
@@ -66,10 +67,8 @@ public class RWDRepositoryUtil {
 			Repository.classArrayZKT = RepositoryContainer.instance.classArrayZKT;
 			Repository.objectArrayDicZKT = RepositoryContainer.instance.objectArrayDicZKT;
 
+			Repository.IBMSGroupArray = RepositoryContainer.instance.IBMSGroupArray;
 			Repository.IBMSArrayDic = RepositoryContainer.instance.IBMSArrayDic;
-
-			Repository.alarmConfigArray = RepositoryContainer.instance.alarmConfigArray;
-			Repository.alarmConfigTrigger = RepositoryContainer.instance.alarmConfigTrigger;
 		}
 
 		log.warn("LoadConfig");

+ 10 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RepositoryImpl.java

@@ -44,14 +44,18 @@ public class RepositoryImpl extends RepositoryBase {
 	// 对象id到SceneDataValue
 	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 SceneDataSet IBMSGroupArray = new SceneDataSet(false);
 	public Map<String, Map<String, SceneDataSet>> IBMSArrayDic = new HashMap<String, Map<String, SceneDataSet>>();
 
+	// 日历模式:周期性刷新,不需要拷贝
+	public SceneDataSet IBMSCalendarModel = new SceneDataSet(false);
+	public SceneDataSet IBMSCalendarBinding = new SceneDataSet(false);
+
 	public ConcurrentHashMap<SceneDataValue, String> sdv2point() {
 		return RepositoryBase.sdv2point;
 	}
@@ -127,6 +131,10 @@ public class RepositoryImpl extends RepositoryBase {
 			} else {
 				result = this.alarmConfigArray;
 			}
+		} else if (Source.equals("ibms-model")) {
+			result = this.IBMSCalendarModel;
+		} else if (Source.equals("ibms-calendar")) {
+			result = this.IBMSCalendarBinding;
 		}
 		return result;
 	}

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

@@ -11,6 +11,7 @@
 	<ibms_physical_world path="D-ibms_physical_world" enable="true" refresh_enable="false" />
 	<!-- zkt-monitor的服务地址 -->
 	<zkt_monitor url="http://192.168.100.33:9909/zkt-monitor/" />
+	<zkt_control url="http://192.168.100.33:9909/zkt-control/" />
 	<config path="D-config" refresh_enable="true" />
 	<!-- iot的websocket地址 -->
 	<!-- <iot_websocket url="ws://192.168.0.30:8868/websocket" /> -->