Explorar o código

IOT和报警实现实时计算了

menglu %!s(int64=3) %!d(string=hai) anos
pai
achega
8dea5cd24e
Modificáronse 19 ficheiros con 159 adicións e 110 borrados
  1. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/AlarmDurationThread.java
  2. 3 3
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/DaemonThread.java
  3. 9 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/RefreshThread.java
  4. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/WebSocketCheckThread.java
  5. 3 0
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/DependencyUtil.java
  6. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/LightingUtil.java
  7. 4 4
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestApi.java
  8. 3 3
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestUtil.java
  9. 1 1
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/test/CheckTest.java
  10. 2 2
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/Constant.java
  11. 3 3
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ControlUtil.java
  12. 4 4
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/DeamonUtil.java
  13. 35 30
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDAlarmUtil.java
  14. 23 23
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDDownloadUtil.java
  15. 11 11
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDLoadUtil.java
  16. 3 0
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDRepositoryUtil.java
  17. 1 1
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RepositoryContainer.java
  18. 40 9
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RepositoryImpl.java
  19. 8 8
      ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/websocket/IOTWebSocketClient.java

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

@@ -31,8 +31,8 @@ public class AlarmDurationThread extends Thread {
 			}
 
 			Date currentTime = new Date();
-			for (String id : RepositoryContainer.RepositoryBase.id2alarmList.keySet()) {
-				SceneDataValue alarmList = RepositoryContainer.RepositoryBase.id2alarmList.get(id);
+			for (String id : RepositoryContainer.RepositoryProject.id2alarmList.keySet()) {
+				SceneDataValue alarmList = RepositoryContainer.RepositoryProject.id2alarmList.get(id);
 				for (int i = 0; i < alarmList.value_array.set.size(); i++) {
 					SceneDataObject sdoInner = (SceneDataObject) alarmList.value_array.set.get(i);
 					RWDAlarmUtil.chixushijian(sdf, currentTime, sdoInner);

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

@@ -143,7 +143,7 @@ public class DaemonThread extends Thread {
 				log.warn("ibms_physical_world: " + tmp_ibms_physical_world);
 			}
 			try {
-				RepositoryImpl Repository = new RepositoryImpl(RepositoryContainer.RepositoryBase, Constant.use_thread, Constant.enable_factor,
+				RepositoryImpl Repository = new RepositoryImpl(RepositoryContainer.RepositoryProject, Constant.use_thread, Constant.enable_factor,
 						Constant.compute_thread_count, Constant.compute_thread_sdv_interval);
 				RWDRepositoryUtil.DoRepository(Repository, true);
 				RepositoryContainer.instance = Repository;
@@ -160,7 +160,7 @@ public class DaemonThread extends Thread {
 				if (Constant.iot_websocket_url != null) {
 					log.warn("iot-websocket");
 					IOTWebSocketClient.client = new IOTWebSocketClient(new URI(Constant.iot_websocket_url + "?projectId="
-							+ RepositoryContainer.RepositoryBase.projectId.substring(2) + "&type=iot,text,pointset"));
+							+ RepositoryContainer.RepositoryProject.projectId.substring(2) + "&type=iot,text,pointset"));
 					IOTWebSocketClient.client.connect();
 					// while (!myClient.getReadyState().equals(READYSTATE.OPEN)) {
 					// Thread.sleep(1000L);
@@ -172,7 +172,7 @@ public class DaemonThread extends Thread {
 				if (Constant.alarm_enable) {
 					log.warn("alarm-websocket");
 					AlarmWebSocketClient.client = new AlarmWebSocketClient(
-							new URI(Constant.alarm_websocket_url + "/" + RepositoryContainer.RepositoryBase.projectId));
+							new URI(Constant.alarm_websocket_url + "/" + RepositoryContainer.RepositoryProject.projectId));
 					AlarmWebSocketClient.client.connect();
 					// while (!myClient.getReadyState().equals(READYSTATE.OPEN)) {
 					// Thread.sleep(1000L);

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

@@ -119,14 +119,21 @@ public class RefreshThread extends Thread {
 
 				try {
 					log.warn("recompute begin");
-					RepositoryImpl Repository = new RepositoryImpl(RepositoryContainer.RepositoryBase, Constant.use_thread, Constant.enable_factor,
+					RepositoryImpl Repository = new RepositoryImpl(RepositoryContainer.RepositoryProject, Constant.use_thread, Constant.enable_factor,
 							Constant.compute_thread_count, Constant.compute_thread_sdv_interval);
 					RWDRepositoryUtil.DoRepository(Repository, changed_physical_world || changed_zkt_physical_world || changed_ibms_physical_world);
 					RepositoryImpl RepositoryOld = RepositoryContainer.instance;
 					RepositoryContainer.instance = Repository;
+					// 停止老的计算线程
 					RepositoryOld.threadStop();
+					// 启动新的计算线程
 					Repository.threadStart();
-					Repository.recomputeIOT();
+					// 激发IOT重算
+					int[] recomputeIOT_counts = Repository.recomputeIOT();
+					log.warn("recomputeIOT item: " + recomputeIOT_counts[0] + " affect: " + recomputeIOT_counts[1]);
+					// 激发报警重算
+					int[] recomputeAlarm_count = Repository.recomputeAlarm();
+					log.warn("recomputeAlarm item: " + recomputeAlarm_count[0] + " affect: " + recomputeAlarm_count[1]);
 					log.warn("recompute finish");
 					DaemonThread.path_config = this.path_config;
 					DaemonThread.path_physical_world = this.path_physical_world;

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

@@ -52,7 +52,7 @@ public class WebSocketCheckThread extends Thread {
 				if (!IOTWebSocketClient.client.isOpen()) {
 					IOTWebSocketClient.client.close();
 					IOTWebSocketClient.client = new IOTWebSocketClient(new URI(Constant.iot_websocket_url + "?projectId="
-							+ RepositoryContainer.RepositoryBase.projectId.substring(2) + "&type=iot,text,pointset"));
+							+ RepositoryContainer.RepositoryProject.projectId.substring(2) + "&type=iot,text,pointset"));
 					IOTWebSocketClient.client.connect();
 				}
 			} catch (Exception e2) {
@@ -80,7 +80,7 @@ public class WebSocketCheckThread extends Thread {
 			try {
 				if (!AlarmWebSocketClient.client.isOpen()) {
 					AlarmWebSocketClient.client.close();
-					AlarmWebSocketClient.client = new AlarmWebSocketClient(new URI(Constant.alarm_websocket_url + "/" + RepositoryContainer.RepositoryBase.projectId));
+					AlarmWebSocketClient.client = new AlarmWebSocketClient(new URI(Constant.alarm_websocket_url + "/" + RepositoryContainer.RepositoryProject.projectId));
 					AlarmWebSocketClient.client.connect();
 				}
 			} catch (Exception e2) {

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

@@ -53,6 +53,9 @@ public class DependencyUtil {
 				SceneDataValue sdv = (SceneDataValue) valueObject;
 				result = Repository.dependency.get_after(Repository, sdv, new ArrayList<SceneDataValue>());
 			}
+		} else if (type.equals("alarmArray")) {
+			result = new JSONObject();
+			Repository.dependency.get_after_value_array(Repository.RepositoryProject.alarmArray, new ArrayList<SceneDataValue>(), result);
 		}
 		return result;
 	}

+ 2 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/LightingUtil.java

@@ -78,8 +78,8 @@ public class LightingUtil {
 			}
 
 			JSONObject postBody = new JSONObject();
-			postBody.put("projectId", RepositoryContainer.RepositoryBase.projectId);
-			postBody.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
+			postBody.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+			postBody.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
 			postBody.put("logicalGroupId", logicalGroupId);
 			postBody.put("modelId", modelId);
 

+ 4 - 4
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestApi.java

@@ -145,8 +145,8 @@ public class RestApi {
 	@PostMapping(path = { "/get_projectInfo", "/zkt-sdk/get_projectInfo" }, produces = "application/json;charset=UTF-8")
 	public String get_projectInfo() {
 		JSONObject result = new JSONObject();
-		result.put("projectId", RepositoryContainer.RepositoryBase.projectId);
-		result.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
+		result.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+		result.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
 		return JSONObject.toJSONString(result, SerializerFeature.WriteMapNullValue);
 	}
 
@@ -164,8 +164,8 @@ public class RestApi {
 	@PostMapping(path = { "/post", "/zkt-sdk/post" }, produces = "application/json;charset=UTF-8")
 	public String post(@RequestBody String param, HttpServletRequest request) {
 		String ip = RestUtil.getIp(request);
-		RepositoryContainer.RepositoryBase.ip2param2time.putIfAbsent(ip, new ConcurrentHashMap<String, Date>());
-		ConcurrentHashMap<String, Date> param2time = RepositoryContainer.RepositoryBase.ip2param2time.get(ip);
+		RepositoryContainer.RepositoryProject.ip2param2time.putIfAbsent(ip, new ConcurrentHashMap<String, Date>());
+		ConcurrentHashMap<String, Date> param2time = RepositoryContainer.RepositoryProject.ip2param2time.get(ip);
 		Date exist = param2time.putIfAbsent(param, new Date());
 		if (exist == null) {
 			try {

+ 3 - 3
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestUtil.java

@@ -613,7 +613,7 @@ public class RestUtil {
 
 	private static JSONArray fjd_query_inner(JSONArray points) throws Exception {
 		JSONObject postJSON = new JSONObject();
-		postJSON.put("building", RepositoryContainer.RepositoryBase.projectId.substring(2));
+		postJSON.put("building", RepositoryContainer.RepositoryProject.projectId.substring(2));
 		postJSON.put("points", points);
 		String post_url = Constant.iot_collect_url + "/fjd_query_batch_post";
 		String post_result = HttpClientUtil.post(post_url, postJSON.toJSONString());
@@ -634,7 +634,7 @@ public class RestUtil {
 		JSONArray points = new JSONArray();
 		points.add(pointObject);
 		JSONObject postJSON = new JSONObject();
-		postJSON.put("building", RepositoryContainer.RepositoryBase.projectId.substring(2));
+		postJSON.put("building", RepositoryContainer.RepositoryProject.projectId.substring(2));
 		postJSON.put("points", points);
 		String post_url = Constant.iot_collect_url + "/fjd_query_batch_post";
 		String post_result = HttpClientUtil.post(post_url, postJSON.toJSONString());
@@ -704,7 +704,7 @@ public class RestUtil {
 			// "label contain 'Sy440307000395af770eea9646b0b68e80748d596f19'"
 			postJSON.put("filters", paramObject.get("filters"));
 			Map<String, String> head = new ConcurrentHashMap<>();
-			head.put("projectId", RepositoryContainer.RepositoryBase.projectId);
+			head.put("projectId", RepositoryContainer.RepositoryProject.projectId);
 			// 3.发送请求
 			// http://39.102.40.239:28888/labsl/graph/pub/query
 			// String post_url ="http://39.102.40.239:28888"+ "/labsl/graph/pub/query";

+ 1 - 1
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/test/CheckTest.java

@@ -22,7 +22,7 @@ import lombok.extern.slf4j.Slf4j;
 public class CheckTest {
 
 	public static void test(String[] args) throws Exception {
-		RepositoryImpl Repository = new RepositoryImpl(RepositoryContainer.RepositoryBase, Constant.use_thread, Constant.enable_factor,
+		RepositoryImpl Repository = new RepositoryImpl(RepositoryContainer.RepositoryProject, Constant.use_thread, Constant.enable_factor,
 				Constant.compute_thread_count, Constant.compute_thread_sdv_interval);
 		RWDRepositoryUtil.DoRepository(Repository, true);
 		RepositoryContainer.instance = Repository;

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

@@ -99,12 +99,12 @@ public class Constant {
 				iter = document.selectNodes("/root/groupCode").iterator();
 				if (iter.hasNext()) {
 					element = (Element) iter.next();
-					RepositoryContainer.RepositoryBase.groupCode = element.getText();
+					RepositoryContainer.RepositoryProject.groupCode = element.getText();
 				}
 				iter = document.selectNodes("/root/projectId").iterator();
 				if (iter.hasNext()) {
 					element = (Element) iter.next();
-					RepositoryContainer.RepositoryBase.projectId = element.getText();
+					RepositoryContainer.RepositoryProject.projectId = element.getText();
 				}
 				iter = document.selectNodes("/root/sdk_version").iterator();
 				if (iter.hasNext()) {

+ 3 - 3
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ControlUtil.java

@@ -15,7 +15,7 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class ControlUtil {
 	public static void setControlValue(JSONArray path, JSONObject infoValueSet) {
-		JSONObject exist_value = RepositoryContainer.RepositoryBase.controlValueMap.putIfAbsent(path.toJSONString(), infoValueSet);
+		JSONObject exist_value = RepositoryContainer.RepositoryProject.controlValueMap.putIfAbsent(path.toJSONString(), infoValueSet);
 		if (exist_value != null) {
 			for (String info_code : infoValueSet.keySet()) {
 				exist_value.put(info_code, infoValueSet.get(info_code));
@@ -24,7 +24,7 @@ public class ControlUtil {
 	}
 
 	public static JSONObject getControlValue(JSONArray path) {
-		JSONObject result = RepositoryContainer.RepositoryBase.controlValueMap.get(path.toString());
+		JSONObject result = RepositoryContainer.RepositoryProject.controlValueMap.get(path.toString());
 		if (result == null) {
 			result = new JSONObject();
 		}
@@ -133,7 +133,7 @@ public class ControlUtil {
 
 	private static JSONArray post(JSONArray points) throws Exception {
 		JSONObject postJSON = new JSONObject();
-		postJSON.put("building", RepositoryContainer.RepositoryBase.projectId.substring(2));
+		postJSON.put("building", RepositoryContainer.RepositoryProject.projectId.substring(2));
 		postJSON.put("points", points);
 		String post_url = Constant.iot_project_url + "/sync_pointsetbatch_post";
 		log.debug(postJSON.toJSONString());

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

@@ -71,11 +71,11 @@ public class DeamonUtil {
 			if (pointList.size() == 0) {
 				continue;
 			} else if (pointList.size() == 1) {
-				dataList = RepositoryContainer.RepositoryBase.point2curve.get(pointList.get(0));
+				dataList = RepositoryContainer.RepositoryProject.point2curve.get(pointList.get(0));
 			} else {
 				List<List<SceneDataObject>> dataListList = new ArrayList<List<SceneDataObject>>();
 				for (String point : pointList) {
-					List<SceneDataObject> dataListInner = RepositoryContainer.RepositoryBase.point2curve.get(point);
+					List<SceneDataObject> dataListInner = RepositoryContainer.RepositoryProject.point2curve.get(point);
 					dataListList.add(dataListInner);
 				}
 				dataList = DataUtil.avg(dataListList);
@@ -108,7 +108,7 @@ public class DeamonUtil {
 
 	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("building", RepositoryContainer.RepositoryProject.projectId.substring(2));
 		postJSON.put("points", points);
 		String post_url = Constant.iot_collect_url + "/fjd_query_batch_post";
 		String post_result = HttpClientUtil.post(post_url, postJSON.toJSONString());
@@ -125,7 +125,7 @@ public class DeamonUtil {
 			JSONArray datas = (JSONArray) point.get("datas");
 			SceneDataValue sv = new SceneDataValue(null, null, null, null);
 			RWDUtil.array2SDV(datas, sv);
-			RepositoryContainer.RepositoryBase.point2curve.put(meter + "-" + funcid, sv.value_array.set);
+			RepositoryContainer.RepositoryProject.point2curve.put(meter + "-" + funcid, sv.value_array.set);
 		}
 	}
 }

+ 35 - 30
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDAlarmUtil.java

@@ -74,8 +74,8 @@ public class RWDAlarmUtil {
 						JSONObject postParamInner = new JSONObject();
 						postParamInner.put("appId", "0");
 						postParamInner.put("userId", "systemId");
-						postParamInner.put("projectId", RepositoryContainer.RepositoryBase.projectId);
-						postParamInner.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
+						postParamInner.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+						postParamInner.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
 						JSONArray ids = new JSONArray();
 						ids.add(alarmId);
 						postParamInner.put("ids", ids);
@@ -110,8 +110,8 @@ public class RWDAlarmUtil {
 			if (Constant.alarm_service_name.equalsIgnoreCase("ibms-alarm")) {
 				String get_url = Constant.alarm_url + "/alarm-record/page";
 				StringBuffer sb = new StringBuffer();
-				sb.append("?appId=" + "0" + "&userId=" + "systemId" + "&projectId=" + RepositoryContainer.RepositoryBase.projectId + "&groupCode="
-						+ RepositoryContainer.RepositoryBase.groupCode);
+				sb.append("?appId=" + "0" + "&userId=" + "systemId" + "&projectId=" + RepositoryContainer.RepositoryProject.projectId + "&groupCode="
+						+ RepositoryContainer.RepositoryProject.groupCode);
 				sb.append("&searchCount=" + "true");
 				if (params.containsKey("报警级别")) {
 					sb.append("&level=" + params.get("报警级别"));
@@ -154,8 +154,8 @@ public class RWDAlarmUtil {
 				JSONObject postParam = new JSONObject();
 				postParam.put("appId", "0");
 				postParam.put("userId", "systemId");
-				postParam.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
-				postParam.put("projectId", RepositoryContainer.RepositoryBase.projectId);
+				postParam.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
+				postParam.put("projectId", RepositoryContainer.RepositoryProject.projectId);
 				if (params.containsKey("报警级别")) {
 					postParam.put("level", params.get("报警级别"));
 				}
@@ -436,7 +436,7 @@ public class RWDAlarmUtil {
 	}
 
 	public static synchronized void ProcessAlarm_comment(String id, JSONObject dtoJSON) {
-		SceneDataSet alarmList = RepositoryContainer.RepositoryBase.alarmArray;
+		SceneDataSet alarmList = RepositoryContainer.RepositoryProject.alarmArray;
 		for (int i = 0; i < alarmList.set.size(); i++) {
 			SceneDataObject sdoInner = (SceneDataObject) alarmList.set.get(i);
 			String idInner = (String) sdoInner.get("id").value_prim.value;
@@ -456,15 +456,15 @@ public class RWDAlarmUtil {
 		String objId = (String) alarm.get("objId");
 		String treatState = alarm.get("treatState").toString();
 		{
-			SceneDataValue alarmList = RepositoryContainer.RepositoryBase.id2alarmList.get(objId);
-			SceneDataValue alarmCount = RepositoryContainer.RepositoryBase.id2alarmCount.get(objId);
+			SceneDataValue alarmList = RepositoryContainer.RepositoryProject.id2alarmList.get(objId);
+			SceneDataValue alarmCount = RepositoryContainer.RepositoryProject.id2alarmCount.get(objId);
 			if (alarmList == null) {
 				SceneDataValue sv_alarmList = new SceneDataValue(null, null, "报警列表", null);
 				sv_alarmList.finish = true;
 				sv_alarmList.value_array = new SceneDataSet(false);
 				sv_alarmList.value_array.set = new ArrayList<SceneDataObject>();
 				sv_alarmList.value_array.setRowChange(true);
-				RepositoryContainer.RepositoryBase.id2alarmList.putIfAbsent(objId, sv_alarmList);
+				RepositoryContainer.RepositoryProject.id2alarmList.putIfAbsent(objId, sv_alarmList);
 			}
 			if (alarmCount == null) {
 				SceneDataValue sv_alarmCount = new SceneDataValue(null, null, "报警数量", null);
@@ -472,10 +472,10 @@ public class RWDAlarmUtil {
 				sv_alarmCount.value_prim = new SceneDataPrimitive();
 				sv_alarmCount.value_prim.value = 0;
 				sv_alarmCount.value_prim.change = true;
-				RepositoryContainer.RepositoryBase.id2alarmCount.putIfAbsent(objId, sv_alarmCount);
+				RepositoryContainer.RepositoryProject.id2alarmCount.putIfAbsent(objId, sv_alarmCount);
 			}
-			alarmList = RepositoryContainer.RepositoryBase.id2alarmList.get(objId);
-			alarmCount = RepositoryContainer.RepositoryBase.id2alarmCount.get(objId);
+			alarmList = RepositoryContainer.RepositoryProject.id2alarmList.get(objId);
+			alarmCount = RepositoryContainer.RepositoryProject.id2alarmCount.get(objId);
 
 			// 从设备下删除
 			int existIndex = -1;
@@ -489,8 +489,8 @@ public class RWDAlarmUtil {
 			}
 			// 从报警列表下删除
 			List<Integer> existIndexList = new ArrayList<Integer>();
-			for (int index_alarm = 0; index_alarm < RepositoryContainer.RepositoryBase.alarmArray.set.size(); index_alarm++) {
-				SceneDataObject alarmItem = RepositoryContainer.RepositoryBase.alarmArray.set.get(index_alarm);
+			for (int index_alarm = 0; index_alarm < RepositoryContainer.RepositoryProject.alarmArray.set.size(); index_alarm++) {
+				SceneDataObject alarmItem = RepositoryContainer.RepositoryProject.alarmArray.set.get(index_alarm);
 				if (alarmItem.value_object.get("id").value_prim.value.equals(id)) {
 					existIndexList.add(0, index_alarm);
 				}
@@ -501,7 +501,7 @@ public class RWDAlarmUtil {
 					alarmList.value_array.set.remove(existIndex);
 				}
 				for (int removeIndex : existIndexList) {
-					RepositoryContainer.RepositoryBase.alarmArray.set.remove(removeIndex);
+					RepositoryContainer.RepositoryProject.alarmArray.set.remove(removeIndex);
 				}
 			} else {
 				// 只替换非空字段
@@ -521,7 +521,7 @@ public class RWDAlarmUtil {
 				}
 				if (existIndexList.size() > 0) {
 					for (int removeIndex : existIndexList) {
-						SceneDataObject sdoInner = RepositoryContainer.RepositoryBase.alarmArray.set.get(removeIndex);
+						SceneDataObject sdoInner = RepositoryContainer.RepositoryProject.alarmArray.set.get(removeIndex);
 						for (String key : sdoAlarm.keySet()) {
 							SceneDataValue sdvInner = sdoAlarm.get(key);
 							if (sdvInner == null || sdvInner.value_prim == null || sdvInner.value_prim.value == null) {
@@ -531,15 +531,20 @@ public class RWDAlarmUtil {
 						}
 					}
 				} else {
-					RepositoryContainer.RepositoryBase.alarmArray.set.add(sdoAlarm);
+					RepositoryContainer.RepositoryProject.alarmArray.set.add(sdoAlarm);
 				}
 			}
 			alarmCount.value_prim.value = alarmList.value_array.set.size();
+
+			RepositoryImpl Repository = RepositoryContainer.instance;
+			Repository.addWaitCompute(RepositoryContainer.RepositoryProject.alarmArray);
+			Repository.addWaitCompute(alarmList);
+			Repository.addWaitCompute(alarmCount);
 		}
 	}
 
 	public static synchronized void ProcessOrderDesc(String id, JSONObject alarm_order) {
-		for (SceneDataObject sdo : RepositoryContainer.RepositoryBase.alarmArray.set) {
+		for (SceneDataObject sdo : RepositoryContainer.RepositoryProject.alarmArray.set) {
 			String idInner = (String) sdo.get("id").value_prim.value;
 			if (idInner.equals(id)) {
 				for (String key : alarm_order.keySet()) {
@@ -564,17 +569,17 @@ public class RWDAlarmUtil {
 	}
 
 	public static synchronized int refresh() throws Exception {
-		RepositoryContainer.RepositoryBase.alarmArray.set.clear();
-		for (String objId : RepositoryContainer.RepositoryBase.id2alarmList.keySet()) {
-			RepositoryContainer.RepositoryBase.id2alarmList.get(objId).value_array.set.clear();
-			RepositoryContainer.RepositoryBase.id2alarmCount.get(objId).value_prim.value = 0;
+		RepositoryContainer.RepositoryProject.alarmArray.set.clear();
+		for (String objId : RepositoryContainer.RepositoryProject.id2alarmList.keySet()) {
+			RepositoryContainer.RepositoryProject.id2alarmList.get(objId).value_array.set.clear();
+			RepositoryContainer.RepositoryProject.id2alarmCount.get(objId).value_prim.value = 0;
 		}
 
 		JSONArray Content;
 		if (Constant.alarm_service_name.equalsIgnoreCase("ibms-alarm")) {
 			Content = new JSONArray();
 			String get_url = Constant.alarm_url + "/alarm-record/page" + "?appId=" + "0" + "&userId=" + "systemId" + "&projectId="
-					+ RepositoryContainer.RepositoryBase.projectId + "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode
+					+ RepositoryContainer.RepositoryProject.projectId + "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode
 					+ "&size=65535&current=1&dealType=0";
 			String getResultString = HttpClientUtil.get(get_url);
 			JSONObject getResult = JSON.parseObject(getResultString);
@@ -596,8 +601,8 @@ public class RWDAlarmUtil {
 				JSONObject postParamInner = new JSONObject();
 				postParamInner.put("appId", "0");
 				postParamInner.put("userId", "systemId");
-				postParamInner.put("projectId", RepositoryContainer.RepositoryBase.projectId);
-				postParamInner.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
+				postParamInner.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+				postParamInner.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
 				postParamInner.put("ids", ids);
 				String post_url = Constant.alarm_url + "/alarmToWorkOrder/queryOrderStateByAlarmIds";
 				String postResultString = HttpClientUtil.post(post_url, postParamInner.toJSONString());
@@ -616,8 +621,8 @@ public class RWDAlarmUtil {
 			String post_url = Constant.alarm_url + "/alarm/queryAlarmList";
 			JSONObject postParam = new JSONObject();
 			postParam.put("userId", "systemId");
-			postParam.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
-			postParam.put("projectId", RepositoryContainer.RepositoryBase.projectId);
+			postParam.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
+			postParam.put("projectId", RepositoryContainer.RepositoryProject.projectId);
 			JSONArray treatState = new JSONArray();
 			treatState.add(1);
 			treatState.add(2);
@@ -704,8 +709,8 @@ public class RWDAlarmUtil {
 			if (Constant.alarm_service_name.equalsIgnoreCase("ibms-alarm")) {
 				{
 					JSONObject handleJSON = new JSONObject();
-					handleJSON.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
-					handleJSON.put("projectId", RepositoryContainer.RepositoryBase.projectId);
+					handleJSON.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
+					handleJSON.put("projectId", RepositoryContainer.RepositoryProject.projectId);
 					handleJSON.put("appId", "systemId");
 					handleJSON.put("userId", paramJSON.get("userId"));
 					handleJSON.put("id", paramJSON.get("id"));

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

@@ -24,11 +24,11 @@ public class RWDDownloadUtil {
 		FileUtil.deleteRecursive(new File(path));
 		JSONArray classArray = null;
 		List<String> groupCodeList = new ArrayList<String>();
-		groupCodeList.add(RepositoryContainer.RepositoryBase.groupCode);
-		groupCodeList.add(RepositoryContainer.RepositoryBase.groupCode);
+		groupCodeList.add(RepositoryContainer.RepositoryProject.groupCode);
+		groupCodeList.add(RepositoryContainer.RepositoryProject.groupCode);
 		groupCodeList.add("0");
 		List<String> projectIdList = new ArrayList<String>();
-		projectIdList.add(RepositoryContainer.RepositoryBase.projectId);
+		projectIdList.add(RepositoryContainer.RepositoryProject.projectId);
 		projectIdList.add("0");
 		projectIdList.add("0");
 		for (int i = 0; i < groupCodeList.size(); i++) {
@@ -133,8 +133,8 @@ public class RWDDownloadUtil {
 			JSONObject param = new JSONObject();
 			JSONObject criteria = new JSONObject();
 			param.put("criteria", criteria);
-			String post_result = HttpClientUtil.post(Constant.rwd_url + "/rwd/def/class?projectId=" + RepositoryContainer.RepositoryBase.projectId
-					+ "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode, param.toJSONString());
+			String post_result = HttpClientUtil.post(Constant.rwd_url + "/rwd/def/class?projectId=" + RepositoryContainer.RepositoryProject.projectId
+					+ "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode, param.toJSONString());
 			JSONObject resultJSON = JSON.parseObject(post_result);
 			classArray = resultJSON.getJSONArray("data");
 			classArray = classArray == null ? new JSONArray() : classArray;
@@ -151,7 +151,7 @@ public class RWDDownloadUtil {
 				param.put("criteria", criteria);
 				log.debug("Download info " + code);
 				String post_result = HttpClientUtil.post(Constant.rwd_url + "/rwd/def/funcid?projectId="
-						+ RepositoryContainer.RepositoryBase.projectId + "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode,
+						+ RepositoryContainer.RepositoryProject.projectId + "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode,
 						param.toJSONString());
 				JSONObject resultJSON = JSON.parseObject(post_result);
 				infoArray = resultJSON.getJSONArray("data");
@@ -187,7 +187,7 @@ public class RWDDownloadUtil {
 				param.put("criteria", criteria);
 				log.debug("Download object " + code);
 				String post_result = HttpClientUtil.post(Constant.rwd_url + "/rwd/instance/object/query?projectId="
-						+ RepositoryContainer.RepositoryBase.projectId + "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode,
+						+ RepositoryContainer.RepositoryProject.projectId + "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode,
 						param.toJSONString());
 				JSONObject resultJSON = JSON.parseObject(post_result);
 				infoArray = resultJSON.getJSONArray("data");
@@ -219,7 +219,7 @@ public class RWDDownloadUtil {
 					param.put("criteria", criteria);
 					log.debug("Download relation " + graphCode + " " + relCode);
 					String post_result = HttpClientUtil.post(Constant.rwd_url + "/rwd/instance/relation/query?projectId="
-							+ RepositoryContainer.RepositoryBase.projectId + "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode,
+							+ RepositoryContainer.RepositoryProject.projectId + "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode,
 							param.toJSONString());
 					JSONObject resultJSON = JSON.parseObject(post_result);
 					infoArray = resultJSON.getJSONArray("data");
@@ -304,8 +304,8 @@ public class RWDDownloadUtil {
 			JSONObject criteria = new JSONObject();
 			criteria.put("ibms", true);
 			param.put("criteria", criteria);
-			String post_result = HttpClientUtil.post(Constant.rwd_url + "/rwd/def/class?projectId=" + RepositoryContainer.RepositoryBase.projectId
-					+ "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode, param.toJSONString());
+			String post_result = HttpClientUtil.post(Constant.rwd_url + "/rwd/def/class?projectId=" + RepositoryContainer.RepositoryProject.projectId
+					+ "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode, param.toJSONString());
 			JSONObject resultJSON = JSON.parseObject(post_result);
 			classArray = resultJSON.getJSONArray("data");
 			classArray = classArray == null ? new JSONArray() : classArray;
@@ -324,7 +324,7 @@ public class RWDDownloadUtil {
 				param.put("criteria", criteria);
 				log.debug("Download object " + ibmsSceneCode + "-" + ibmsClassCode);
 				String post_result = HttpClientUtil.post(Constant.rwd_url + "/rwd/instance/object/query?projectId="
-						+ RepositoryContainer.RepositoryBase.projectId + "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode,
+						+ RepositoryContainer.RepositoryProject.projectId + "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode,
 						param.toJSONString());
 				JSONObject resultJSON = JSON.parseObject(post_result);
 				infoArray = resultJSON.getJSONArray("data");
@@ -346,7 +346,7 @@ public class RWDDownloadUtil {
 				if (use_group) {
 					String post_result = HttpClientUtil
 							.get(Constant.alarm_url + "/alarm-record/selectItemGroupCode" + "?appId=" + "0" + "&userId=" + "systemId" + "&projectId="
-									+ RepositoryContainer.RepositoryBase.projectId + "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode);
+									+ RepositoryContainer.RepositoryProject.projectId + "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode);
 					JSONObject resultJSON = JSON.parseObject(post_result);
 					JSONArray Content = resultJSON.getJSONArray("Item");
 					for (int ii = 0; ii < Content.size(); ii++) {
@@ -361,8 +361,8 @@ public class RWDDownloadUtil {
 						String ibmsSceneCode = classItem.getString("ibmsSceneCode");
 						String ibmsClassCode = classItem.getString("ibmsClassCode");
 						String post_result = HttpClientUtil.get(Constant.alarm_url + "/alarm-config/itemList/" + ibmsSceneCode + "/" + ibmsClassCode
-								+ "?appId=" + "0" + "&userId=" + "systemId" + "&projectId=" + RepositoryContainer.RepositoryBase.projectId
-								+ "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode);
+								+ "?appId=" + "0" + "&userId=" + "systemId" + "&projectId=" + RepositoryContainer.RepositoryProject.projectId
+								+ "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode);
 						JSONObject resultJSON = JSON.parseObject(post_result);
 						JSONArray Content = resultJSON.getJSONArray("Content");
 						for (int ii = 0; ii < Content.size(); ii++) {
@@ -377,8 +377,8 @@ public class RWDDownloadUtil {
 				JSONObject criteria = new JSONObject();
 				criteria.put("appId", "0");
 				criteria.put("userId", "systemId");
-				criteria.put("projectId", RepositoryContainer.RepositoryBase.projectId);
-				criteria.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
+				criteria.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+				criteria.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
 				String post_result = HttpClientUtil.post(Constant.alarm_url + "/alarm/queryItem", criteria.toJSONString());
 				JSONObject resultJSON = JSON.parseObject(post_result);
 				JSONArray Content = resultJSON.getJSONArray("Content");
@@ -418,7 +418,7 @@ public class RWDDownloadUtil {
 						String itemId = itemAlarmType.getString("id");
 						String alarmDefineListString = HttpClientUtil
 								.get(Constant.alarm_url + "/alarm-config/configPage" + "?appId=" + "0" + "&userId=" + "systemId" + "&projectId="
-										+ RepositoryContainer.RepositoryBase.projectId + "&groupCode=" + RepositoryContainer.RepositoryBase.groupCode
+										+ RepositoryContainer.RepositoryProject.projectId + "&groupCode=" + RepositoryContainer.RepositoryProject.groupCode
 										+ "&ibmsSceneCode=" + ibmsSceneCode + "&ibmsClassCode=" + ibmsClassCode + "&itemId=" + itemId);
 						JSONObject alarmDefineListJSON = JSON.parseObject(alarmDefineListString);
 						JSONArray alarmDefineListContent = alarmDefineListJSON.getJSONArray("Content");
@@ -440,8 +440,8 @@ public class RWDDownloadUtil {
 				JSONObject param = new JSONObject();
 				param.put("userId", "systemId");
 				param.put("appId", "datautils");
-				param.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
-				param.put("projectId", RepositoryContainer.RepositoryBase.projectId);
+				param.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
+				param.put("projectId", RepositoryContainer.RepositoryProject.projectId);
 				String post_result = HttpClientUtil.post(Constant.alarm_url + "/alarm/queryConfig", param.toJSONString());
 				JSONObject resultJSON = JSON.parseObject(post_result);
 				alarmConfigArray = resultJSON.getJSONArray("Content");
@@ -516,8 +516,8 @@ public class RWDDownloadUtil {
 		{
 			JSONObject criteria = new JSONObject();
 			criteria.put("userId", "systemId");
-			criteria.put("projectId", RepositoryContainer.RepositoryBase.projectId);
-			criteria.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
+			criteria.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+			criteria.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
 			String post_result = HttpClientUtil.post(Constant.zkt_monitor_url + "/logicalGrouping/list", criteria.toJSONString());
 			JSONObject resultJSON = JSON.parseObject(post_result);
 			classArray = resultJSON.getJSONArray("Content");
@@ -552,8 +552,8 @@ public class RWDDownloadUtil {
 				for (String logicalGroupingId : idList) {
 					JSONObject criteria = new JSONObject();
 					criteria.put("userId", "systemId");
-					criteria.put("projectId", RepositoryContainer.RepositoryBase.projectId);
-					criteria.put("groupCode", RepositoryContainer.RepositoryBase.groupCode);
+					criteria.put("projectId", RepositoryContainer.RepositoryProject.projectId);
+					criteria.put("groupCode", RepositoryContainer.RepositoryProject.groupCode);
 					criteria.put("logicalGroupingId", logicalGroupingId);
 					String post_result = HttpClientUtil.post(Constant.zkt_monitor_url + "/logicalObject/listPage", criteria.toJSONString());
 					JSONObject resultJSON = JSON.parseObject(post_result);

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

@@ -285,12 +285,12 @@ public class RWDLoadUtil {
 									sdv.finish = true;
 									sdv.value_prim = new SceneDataPrimitive();
 									sdv.value_prim.change = true;
-									SceneDataValue exist_sdv = RepositoryContainer.RepositoryBase.point2sdv.putIfAbsent(point, sdv);
+									SceneDataValue exist_sdv = RepositoryContainer.RepositoryProject.point2sdv.putIfAbsent(point, sdv);
 									if (exist_sdv == null) {
-										RepositoryContainer.RepositoryBase.sdv2point.putIfAbsent(sdv, point);
+										RepositoryContainer.RepositoryProject.sdv2point.putIfAbsent(sdv, point);
 									}
 								}
-								SceneDataValue data = RepositoryContainer.RepositoryBase.point2sdv.get(point);
+								SceneDataValue data = RepositoryContainer.RepositoryProject.point2sdv.get(point);
 								infoValue.value_prim = data.value_prim;
 								{
 									SceneDataValue sdv = new SceneDataValue(null, null, null, null);
@@ -322,12 +322,12 @@ public class RWDLoadUtil {
 									sdv.finish = true;
 									sdv.value_prim = new SceneDataPrimitive();
 									sdv.value_prim.change = true;
-									SceneDataValue exist_sdv = RepositoryContainer.RepositoryBase.set2sdv.putIfAbsent(point, sdv);
+									SceneDataValue exist_sdv = RepositoryContainer.RepositoryProject.set2sdv.putIfAbsent(point, sdv);
 									if (exist_sdv == null) {
-										RepositoryContainer.RepositoryBase.sdv2set.putIfAbsent(sdv, point);
+										RepositoryContainer.RepositoryProject.sdv2set.putIfAbsent(sdv, point);
 									}
 								}
-								SceneDataValue data = RepositoryContainer.RepositoryBase.set2sdv.get(point);
+								SceneDataValue data = RepositoryContainer.RepositoryProject.set2sdv.get(point);
 								infoValue.value_prim = data.value_prim;
 								{
 									SceneDataValue sdv = new SceneDataValue(null, null, null, null);
@@ -530,9 +530,9 @@ public class RWDLoadUtil {
 					sv_alarmList.value_array = new SceneDataSet(false);
 					sv_alarmList.value_array.set = new ArrayList<SceneDataObject>();
 					sv_alarmList.value_array.setRowChange(true);
-					RepositoryContainer.RepositoryBase.id2alarmList.putIfAbsent(objId, sv_alarmList);
+					RepositoryContainer.RepositoryProject.id2alarmList.putIfAbsent(objId, sv_alarmList);
 				}
-				SceneDataValue alarmList = RepositoryContainer.RepositoryBase.id2alarmList.get(objId);
+				SceneDataValue alarmList = RepositoryContainer.RepositoryProject.id2alarmList.get(objId);
 				objectItem.put("报警列表", alarmList);
 				{
 					SceneDataValue sv_alarmCount = new SceneDataValue(null, null, "报警数量", null);
@@ -540,9 +540,9 @@ public class RWDLoadUtil {
 					sv_alarmCount.value_prim = new SceneDataPrimitive();
 					sv_alarmCount.value_prim.value = 0;
 					sv_alarmCount.value_prim.change = true;
-					RepositoryContainer.RepositoryBase.id2alarmCount.putIfAbsent(objId, sv_alarmCount);
+					RepositoryContainer.RepositoryProject.id2alarmCount.putIfAbsent(objId, sv_alarmCount);
 				}
-				SceneDataValue alarmCount = RepositoryContainer.RepositoryBase.id2alarmCount.get(objId);
+				SceneDataValue alarmCount = RepositoryContainer.RepositoryProject.id2alarmCount.get(objId);
 				objectItem.put("报警数量", alarmCount);
 				if (use_sample) {
 					if (BKDRHash.getHashCode(objId) % 3 == 0) {
@@ -982,7 +982,7 @@ public class RWDLoadUtil {
 		Calendar calendar = Calendar.getInstance();
 		calendar.setTime(currDate);
 		int year = calendar.get(Calendar.YEAR);
-		String projectId = RepositoryContainer.RepositoryBase.projectId;
+		String projectId = RepositoryContainer.RepositoryProject.projectId;
 		Map<String, String> modelMap = new ConcurrentHashMap<String, String>();
 		{
 			JSONObject param = new JSONObject();

+ 3 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDRepositoryUtil.java

@@ -79,9 +79,12 @@ public class RWDRepositoryUtil {
 			Repository.InfoPointRelationArray = RepositoryContainer.instance.InfoPointRelationArray;
 		}
 
+		//清理依赖
 		Repository.clear_children();
 		Repository.dependency.clear();
+		//构建zkt到rwd的依赖
 		Repository.refresh_children();
+		//构建IOT到对象信息点的依赖
 		Repository.refresh_dependency();
 
 		log.warn("LoadConfig");

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

@@ -1,6 +1,6 @@
 package com.persagy.ibms.data.sdk.util;
 
 public class RepositoryContainer {
-	public static RepositoryProject RepositoryBase = new RepositoryProject();
+	public static RepositoryProject RepositoryProject = new RepositoryProject();
 	public static RepositoryImpl instance;
 }

+ 40 - 9
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RepositoryImpl.java

@@ -241,31 +241,62 @@ public class RepositoryImpl extends RepositoryBase {
 		this.sdv2Children.clear();
 	}
 
-	public void recomputeIOT() {
+	public int[] recomputeIOT() {
+		int[] counts = new int[2];
+		int item_count = 0;
+		int affect_count = 0;
 		// 加入计算队列
 		if (this.enable_factor) {
-			for (String point : RepositoryContainer.RepositoryBase.point2sdv.keySet()) {
-				SceneDataValue sdv = RepositoryContainer.RepositoryBase.point2sdv.get(point);
+			for (String point : RepositoryContainer.RepositoryProject.point2sdv.keySet()) {
+				SceneDataValue sdv = RepositoryContainer.RepositoryProject.point2sdv.get(point);
 				if (sdv.value_prim.value != null) {
-					this.addWaitCompute(point);
+					item_count++;
+					affect_count += this.recompute_point(point);
 				}
 			}
-			for (String point : RepositoryContainer.RepositoryBase.set2sdv.keySet()) {
-				SceneDataValue sdv = RepositoryContainer.RepositoryBase.set2sdv.get(point);
+			for (String point : RepositoryContainer.RepositoryProject.set2sdv.keySet()) {
+				SceneDataValue sdv = RepositoryContainer.RepositoryProject.set2sdv.get(point);
 				if (sdv.value_prim.value != null) {
-					this.addWaitCompute(point);
+					item_count++;
+					affect_count += this.recompute_point(point);
 				}
 			}
 		}
+		counts[0] = item_count;
+		counts[1] = affect_count;
+		return counts;
 	}
 
-	public void addWaitCompute(String point) {
+	public int[] recomputeAlarm() {
+		int[] counts = new int[2];
+		int item_count = 0;
+		int affect_count = 0;
+		item_count++;
+		affect_count += this.addWaitCompute(this.RepositoryProject.alarmArray);
+		for (String objId : RepositoryContainer.RepositoryProject.id2alarmList.keySet()) {
+			SceneDataValue alarmList = RepositoryContainer.RepositoryProject.id2alarmList.get(objId);
+			item_count++;
+			affect_count += this.addWaitCompute(alarmList);
+		}
+		for (String objId : RepositoryContainer.RepositoryProject.id2alarmCount.keySet()) {
+			SceneDataValue alarmCount = RepositoryContainer.RepositoryProject.id2alarmCount.get(objId);
+			item_count++;
+			affect_count += this.addWaitCompute(alarmCount);
+		}
+		counts[0] = item_count;
+		counts[1] = affect_count;
+		return counts;
+	}
+
+	public int recompute_point(String point) {
+		int add_count = 0;
 		if (this.point2ObjectInfoList.containsKey(point)) {
 			List<ObjectInfo> ObjectInfoList = this.point2ObjectInfoList.get(point);
 			for (ObjectInfo ObjectInfo : ObjectInfoList) {
 				SceneDataValue sdv = ObjectInfo.obj.get(ObjectInfo.infoCode);
-				this.addWaitCompute(sdv);
+				add_count += this.addWaitCompute(sdv);
 			}
 		}
+		return add_count;
 	}
 }

+ 8 - 8
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/websocket/IOTWebSocketClient.java

@@ -81,11 +81,11 @@ public class IOTWebSocketClient extends WebSocketClient {
 						sdvInner.finish = true;
 						sdvInner.value_prim = new SceneDataPrimitive();
 						sdvInner.value_prim.change = true;
-						SceneDataValue exist_sdv = RepositoryContainer.RepositoryBase.point2sdv.putIfAbsent(point, sdvInner);
+						SceneDataValue exist_sdv = RepositoryContainer.RepositoryProject.point2sdv.putIfAbsent(point, sdvInner);
 						if (exist_sdv == null) {
-							RepositoryContainer.RepositoryBase.sdv2point.putIfAbsent(sdvInner, point);
+							RepositoryContainer.RepositoryProject.sdv2point.putIfAbsent(sdvInner, point);
 						}
-						SceneDataValue data = RepositoryContainer.RepositoryBase.point2sdv.get(point);
+						SceneDataValue data = RepositoryContainer.RepositoryProject.point2sdv.get(point);
 						if (type.equals("iot")) {
 							if (value.endsWith(".0")) {
 								value = value.substring(0, value.length() - ".0".length());
@@ -104,7 +104,7 @@ public class IOTWebSocketClient extends WebSocketClient {
 							data.value_prim.value = valueNew;
 							// 加入计算队列
 							if (!valueEqual && Repository.enable_factor) {
-								Repository.addWaitCompute(point);
+								Repository.recompute_point(point);
 							}
 						} else if (type.equals("text")) {
 							data.value_prim.value = value;
@@ -129,11 +129,11 @@ public class IOTWebSocketClient extends WebSocketClient {
 						sdvInner.finish = true;
 						sdvInner.value_prim = new SceneDataPrimitive();
 						sdvInner.value_prim.change = true;
-						SceneDataValue exist_sdv = RepositoryContainer.RepositoryBase.set2sdv.putIfAbsent(point, sdvInner);
+						SceneDataValue exist_sdv = RepositoryContainer.RepositoryProject.set2sdv.putIfAbsent(point, sdvInner);
 						if (exist_sdv == null) {
-							RepositoryContainer.RepositoryBase.sdv2set.putIfAbsent(sdvInner, point);
+							RepositoryContainer.RepositoryProject.sdv2set.putIfAbsent(sdvInner, point);
 						}
-						SceneDataValue data = RepositoryContainer.RepositoryBase.set2sdv.get(point);
+						SceneDataValue data = RepositoryContainer.RepositoryProject.set2sdv.get(point);
 						if (value.endsWith(".0")) {
 							value = value.substring(0, value.length() - ".0".length());
 						}
@@ -151,7 +151,7 @@ public class IOTWebSocketClient extends WebSocketClient {
 						data.value_prim.value = valueNew;
 						// 加入计算队列
 						if (!valueEqual && Repository.enable_factor) {
-							Repository.addWaitCompute(point);
+							Repository.recompute_point(point);
 						}
 					} catch (Exception e) {
 						log.error(e.getMessage(), e);