Browse Source

细化关系加载规则

menglu 3 years ago
parent
commit
3d1e636714

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

@@ -3,6 +3,7 @@ package com.persagy.ibms.data.sdk.util;
 public class ConfigRelation {
 	public String graphCode;
 	public String relCode;
+	public String relValue;
 	public String objFrom;
 	public String objTo;
 	public String nameInFrom;

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

@@ -128,6 +128,9 @@ public class Constant {
 						ConfigRelation ConfigRelation = new ConfigRelation();
 						ConfigRelation.graphCode = element.attribute("graphCode").getValue();
 						ConfigRelation.relCode = element.attribute("relCode").getValue();
+						if (element.attribute("relValue") != null) {
+							ConfigRelation.relValue = element.attribute("relValue").getValue();
+						}
 						ConfigRelation.objFrom = element.attribute("objFrom").getValue();
 						ConfigRelation.objTo = element.attribute("objTo").getValue();
 						ConfigRelation.nameInFrom = element.attribute("nameInFrom").getValue();

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

@@ -276,6 +276,13 @@ public class RWDLoadUtil {
 			Map<String, SceneDataValue> fromMap = Repository.objType2id2Value.get(ConfigRelation.objFrom);
 			Map<String, SceneDataValue> toMap = Repository.objType2id2Value.get(ConfigRelation.objTo);
 			for (SceneDataValue sdv : sdvList) {
+				if (ConfigRelation.relValue != null) {
+					String relValue = (String) sdv.value_object.get("relValue").value_primitive;
+					if (!relValue.equals(ConfigRelation.relValue)) {
+						continue;
+					}
+				}
+
 				String objFrom = (String) sdv.value_object.get("objFrom").value_primitive;
 				String objTo = (String) sdv.value_object.get("objTo").value_primitive;
 				SceneDataValue fromObject = fromMap.get(objFrom);
@@ -310,8 +317,18 @@ public class RWDLoadUtil {
 							} else if (sdvFromItem.value_array.size() == 1) {
 								sdvInner.value_primitive = ((SceneDataObject) sdvFromItem.value_array.get(0)).get("id").value_primitive;
 							} else {
-								throw new Exception(ConfigRelation.graphCode + "\t" + ConfigRelation.relCode + "\t"
-										+ FromObject.value_object.get("id") + " " + "有多个" + " " + ConfigRelation.nameInFrom);
+								for (SceneDataBase sdbInner : sdvFromItem.value_array) {
+									SceneDataObject sdoInner = (SceneDataObject) sdbInner;
+									if (sdvInner.value_primitive == null) {
+										sdvInner.value_primitive = sdoInner.get("id").value_primitive;
+									} else {
+										if (!sdvInner.value_primitive.equals(sdoInner.get("id").value_primitive)) {
+											throw new Exception(ConfigRelation.graphCode + "\t" + ConfigRelation.relCode + "\t"
+													+ FromObject.value_object.get("id") + " " + "有多个" + " " + ConfigRelation.nameInFrom + "\t"
+													+ sdvInner.value_primitive + "\t" + sdoInner.get("id").value_primitive);
+										}
+									}
+								}
 							}
 							FromObject.value_object.put(ConfigRelation.nameInFrom + "-id", sdvInner);
 						} else {
@@ -342,8 +359,18 @@ public class RWDLoadUtil {
 							} else if (sdvToItem.value_array.size() == 1) {
 								sdvInner.value_primitive = ((SceneDataObject) sdvToItem.value_array.get(0)).get("id").value_primitive;
 							} else {
-								log.error(ConfigRelation.graphCode + "\t" + ConfigRelation.relCode + "\t" + ToObject.value_object.get("id") + " "
-										+ "有多个" + " " + ConfigRelation.nameInTo);
+								for (SceneDataBase sdbInner : sdvToItem.value_array) {
+									SceneDataObject sdoInner = (SceneDataObject) sdbInner;
+									if (sdvInner.value_primitive == null) {
+										sdvInner.value_primitive = sdoInner.get("id").value_primitive;
+									} else {
+										if (!sdvInner.value_primitive.equals(sdoInner.get("id").value_primitive)) {
+											throw new Exception(ConfigRelation.graphCode + "\t" + ConfigRelation.relCode + "\t"
+													+ ToObject.value_object.get("id") + " " + "有多个" + " " + ConfigRelation.nameInTo + "\t"
+													+ sdvInner.value_primitive + "\t" + sdoInner.get("id").value_primitive);
+										}
+									}
+								}
 							}
 							ToObject.value_object.put(ConfigRelation.nameInTo + "-id", sdvInner);
 						} else {

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

@@ -24,7 +24,8 @@
 	<ConfigRelation graphCode="ArchSubset" relCode="Fl2Sp" objFrom="floor" objTo="space" nameInFrom="包含空间" multiplicityFrom="n" nameInTo="所属楼层" multiplicityTo="1" />
 	<ConfigRelation graphCode="MechInArch" relCode="Eq2Bd" objFrom="equipment" objTo="building" nameInFrom="所在建筑" multiplicityFrom="1" nameInTo="包含设备" multiplicityTo="n" />
 	<ConfigRelation graphCode="MechInArch" relCode="Eq2Fl" objFrom="equipment" objTo="floor" nameInFrom="所在楼层" multiplicityFrom="1" nameInTo="包含设备" multiplicityTo="n" />
-	<ConfigRelation graphCode="MechInArch" relCode="Eq2Sp" objFrom="equipment" objTo="space" nameInFrom="所在空间" multiplicityFrom="1" nameInTo="包含设备" multiplicityTo="n" />
+	<ConfigRelation graphCode="MechInArch" relCode="Eq2Sp" relValue="GeneralZone" objFrom="equipment" objTo="space" nameInFrom="所在物业空间" multiplicityFrom="n" nameInTo="包含设备" multiplicityTo="n" />
+	<ConfigRelation graphCode="MechInArch" relCode="Eq2Sp" relValue="EnvironmentZone" objFrom="equipment" objTo="space" nameInFrom="所在环境空间" multiplicityFrom="n" nameInTo="包含设备" multiplicityTo="n" />
 	<ConfigRelation graphCode="MechForArch" relCode="Eq2Sp" objFrom="equipment" objTo="space" nameInFrom="服务于空间" multiplicityFrom="n" nameInTo="被设备服务" multiplicityTo="n" />
 	<ConfigRelation graphCode="MechCtrl" relCode="EqCtrl" objFrom="equipment" objTo="equipment" nameInFrom="控制设备" multiplicityFrom="n" nameInTo="被设备控制" multiplicityTo="n" />
 	<ConfigRelation graphCode="ValveRelationship" relCode="Vv2Eq" objFrom="equipment" objTo="equipment" nameInFrom="限制设备" multiplicityFrom="n" nameInTo="被设备限制" multiplicityTo="n" />