Browse Source

完善屏蔽内容

menglu 3 years ago
parent
commit
85617a5000

+ 129 - 43
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDRepositoryUtil.java

@@ -1,6 +1,7 @@
 package com.persagy.ibms.data.sdk.util;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -120,7 +121,7 @@ public class RWDRepositoryUtil {
 		// 根据信息点是否显示过滤设备类型
 		if (Constant.info_point_version.equals("new")) {
 			try {
-				processFilter(Repository, sceneObject);
+				filter_by_info_point_new(Repository, sceneObject);
 			} catch (Exception e) {
 				log.error(e.getMessage(), e);
 			}
@@ -159,7 +160,7 @@ public class RWDRepositoryUtil {
 	}
 
 	// 根据信息点是否显示过滤设备类型
-	private static void processFilter(RepositoryImpl Repository, SceneObject sceneObject) throws Exception {
+	private static void filter_by_info_point_new(RepositoryImpl Repository, SceneObject sceneObject) throws Exception {
 		Map<String, String> SceneName2Code = new ConcurrentHashMap<String, String>();
 		for (SceneDataObject SceneDataObject : Repository.ZKTSceneArray.set) {
 			String id = (String) SceneDataObject.get("id").value_prim.value;
@@ -176,6 +177,14 @@ public class RWDRepositoryUtil {
 				}
 			}
 		}
+		Map<String, Map<String, String>> SceneClassName = new ConcurrentHashMap<String, Map<String, String>>();
+		for (SceneDataObject SceneDataObject : Repository.ZKTClassArray.set) {
+			String ibmsSceneCode = (String) SceneDataObject.get("ibmsSceneCode").value_prim.value;
+			String ibmsClassCode = (String) SceneDataObject.get("ibmsClassCode").value_prim.value;
+			String name = (String) SceneDataObject.get("名称").value_prim.value;
+			SceneClassName.putIfAbsent(ibmsSceneCode, new ConcurrentHashMap<String, String>());
+			SceneClassName.get(ibmsSceneCode).put(name, ibmsClassCode);
+		}
 		Map<String, Map<String, Boolean>> SceneClassVisible = new ConcurrentHashMap<String, Map<String, Boolean>>();
 		for (SceneDataObject SceneDataObject : Repository.InfoPointListArray.set) {
 			String ibmsSceneCode = (String) SceneDataObject.get("ibmsSceneCode").value_prim.value;
@@ -188,7 +197,13 @@ public class RWDRepositoryUtil {
 			}
 		}
 
-		String[] parentPathArray = { "基础对象'设备", "基础对象'品质", "基础对象'安全", "基础对象'逻辑编组" };
+		String[] parentPathArray = { "基础对象类型'设备", "基础对象'设备", "基础对象'品质", "基础对象'运营", "基础对象'安全", "基础对象'系统", "基础对象'逻辑编组" };
+		// String[] parentPathArray = { "基础对象类型'设备" };
+		// String[] parentPathArray = { "基础对象'系统" };
+		List<SceneProperty> equipTypeList = new ArrayList<SceneProperty>();
+		List<String> SceneCodeList = new ArrayList<String>();
+		List<String> SceneNameList = new ArrayList<String>();
+		List<String> PathList = new ArrayList<String>();
 		for (String parentPath : parentPathArray) {
 			List<Object> tmpList = PathUtil.getByPath(sceneObject, parentPath);
 			for (Object tmp : tmpList) {
@@ -207,57 +222,128 @@ public class RWDRepositoryUtil {
 					String SceneCode = SceneName2Code.get(SceneName);
 
 					SceneProperty equipType = null;
+					SceneProperty equipType_gl = null;
+					SceneProperty gailan = null;
 					for (SceneProperty spInner2 : soScene.propertyList) {
 						if (spInner2.propertyName.equals("设备类型")) {
 							equipType = spInner2;
-							break;
+						} else if (spInner2.propertyName.equals("系统概览")) {
+							if (spInner2.propertyValueType.equals("static") && spInner2.propertyValueSchema.equals("JSONArray")) {
+								gailan = spInner2;
+							} else {
+								for (SceneProperty spInner2_att : spInner2.query_attached) {
+									if (spInner2_att.propertyName.equals("设备类型")) {
+										equipType_gl = spInner2_att;
+										break;
+									}
+								}
+							}
 						}
 					}
-					if (equipType == null) {
-						continue;
+					if (equipType != null) {
+						equipTypeList.add(equipType);
+						SceneCodeList.add(SceneCode);
+						SceneNameList.add(SceneName);
+						PathList.add(parentPath + "'" + "名称=" + SceneName + "'" + "设备类型");
 					}
-					for (SceneObject soEquipType : equipType.static_array) {
-						SceneProperty spList = null;
-						for (SceneProperty spInner2 : soEquipType.propertyList) {
-							if (spInner2.propertyName.equals("清单")) {
-								spList = spInner2;
-								break;
-							}
-						}
-						if (spList == null) {
-							continue;
-						}
-						JSONObject query_sql = JSON.parseObject(spList.query_sql);
-						JSONObject Target = query_sql.getJSONObject("Target");
+					if (equipType_gl != null) {
+						equipTypeList.add(equipType_gl);
+						SceneCodeList.add(SceneCode);
+						SceneNameList.add(SceneName);
+						PathList.add(parentPath + "'" + "名称=" + SceneName + "'系统概览'" + "设备类型");
+					}
+					if (gailan != null) {
+						equipTypeList.add(gailan);
+						SceneCodeList.add(SceneCode);
+						SceneNameList.add(SceneName);
+						PathList.add(parentPath + "'" + "名称=" + SceneName + "'系统概览");
+					}
+				}
+			}
+		}
+		for (int i = 0; i < equipTypeList.size(); i++) {
+			SceneProperty equipType = equipTypeList.get(i);
+			String SceneCode = SceneCodeList.get(i);
+			String SceneName = SceneNameList.get(i);
+			String Path = PathList.get(i);
+			for (SceneObject soEquipType : equipType.static_array) {
+				SceneProperty spName = null;
+				SceneProperty spList = null;
+				for (SceneProperty spInner2 : soEquipType.propertyList) {
+					if (spInner2.propertyName.equals("清单")) {
+						spList = spInner2;
+					} else if (spInner2.propertyName.equals("名称")) {
+						spName = spInner2;
+					}
+				}
+				if (spList == null) {
+					continue;
+				}
+				String ibmsSceneCode = null;
+				String ibmsClassCode = null;
+				if (spList != null && spList.propertyValueType.equals("query")) {
+					JSONObject query_sql = JSON.parseObject(spList.query_sql);
+					JSONObject Target = query_sql.getJSONObject("Target");
+					String Source = Target.getString("Source");
+					if (Source.equals("zkt-object")) {
+						ibmsSceneCode = Target.getString("ibmsSceneCode");
+						ibmsClassCode = Target.getString("ibmsClassCode");
+					} else if (Source.equals("ibms-group")) {
 						JSONObject Criteria = query_sql.getJSONObject("Criteria");
-						String ibmsSceneCode = Target.getString("ibmsSceneCode");
-						String ibmsClassCode = Target.getString("ibmsClassCode");
-						if (ibmsSceneCode == null || ibmsClassCode == null) {
-							ibmsSceneCode = Criteria.getString("ibmsSceneCode");
-							ibmsClassCode = Criteria.getString("ibmsClassCode");
-						}
-						if (ibmsSceneCode == null || ibmsClassCode == null) {
-							continue;
-						}
-						if (!ibmsSceneCode.equals(SceneCode)) {
-							String name = null;
-							for (SceneProperty spInner2 : soEquipType.propertyList) {
-								if (spInner2.propertyName.equals("名称")) {
-									name = spInner2.static_value;
-									break;
-								}
+						ibmsSceneCode = Criteria.getString("ibmsSceneCode");
+						ibmsClassCode = Criteria.getString("ibmsClassCode");
+					} else if (Source.equals("ref")) {
+						String ref = Target.getString("ref");
+						String[] splits = ref.split("'");
+						if (splits.length >= 6) {
+							String type1 = splits[2];
+							String type2 = splits[4];
+							if (type1.startsWith("名称=") && type2.startsWith("名称=")) {
+								ibmsSceneCode = SceneName2Code.get(type1.substring("名称=".length()));
+								ibmsClassCode = SceneClassName.get(ibmsSceneCode).get(type2.substring("名称=".length()));
 							}
-							log.error(SceneName + " " + SceneCode + " has " + name + " " + ibmsSceneCode + " " + ibmsClassCode);
-						}
-
-						if (!SceneClassVisible.containsKey(ibmsSceneCode) || !SceneClassVisible.get(ibmsSceneCode).containsKey(ibmsClassCode)) {
-							continue;
 						}
-						boolean isVisible = SceneClassVisible.get(ibmsSceneCode).get(ibmsClassCode);
-						if (!isVisible) {
-							soEquipType.allow_pass = "0";
+					}
+				} else {
+					ibmsSceneCode = SceneCode;
+					ibmsClassCode = SceneClassName.get(ibmsSceneCode).get(spName.static_value);
+				}
+				if (ibmsSceneCode == null || ibmsClassCode == null) {
+					continue;
+				}
+				if (!ibmsSceneCode.equals(SceneCode)) {
+					String name = null;
+					for (SceneProperty spInner2 : soEquipType.propertyList) {
+						if (spInner2.propertyName.equals("名称")) {
+							name = spInner2.static_value;
+							break;
 						}
 					}
+					log.error(SceneName + " " + SceneCode + " has " + name + " " + ibmsSceneCode + " " + ibmsClassCode);
+				}
+
+				if (!SceneClassVisible.containsKey(ibmsSceneCode) || !SceneClassVisible.get(ibmsSceneCode).containsKey(ibmsClassCode)) {
+					continue;
+				}
+				boolean isVisible = SceneClassVisible.get(ibmsSceneCode).get(ibmsClassCode);
+				if (!isVisible) {
+					log.warn("info-point-new delete " + Path + "'名称=" + spName.static_value);
+					soEquipType.allow_pass = "0";
+				}
+			}
+			boolean deleteSO = true;
+			if (deleteSO) {
+				List<SceneObject> static_array = new ArrayList<SceneObject>();
+				boolean has_delete = false;
+				for (SceneObject soEquipType : equipType.static_array) {
+					if (soEquipType.allow_pass.equals("0")) {
+						has_delete = true;
+					} else {
+						static_array.add(soEquipType);
+					}
+				}
+				if (has_delete) {
+					equipType.static_array = static_array.toArray(new SceneObject[0]);
 				}
 			}
 		}

BIN
ibms-data-sdk/src/main/resources/info-point-new.xlsx