Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

zhangweixin 4 rokov pred
rodič
commit
0fb8fcb08e
17 zmenil súbory, kde vykonal 1591 pridanie a 27 odobranie
  1. 5 1
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/graphtype/rel/RelZoneSpace.kt
  2. 6 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/RSp2Sp.kt
  3. 0 1
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RBd2Fl.kt
  4. 84 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RBd2Sh.kt
  5. 90 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RBd2Sp.kt
  6. 84 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RFl2Bd.kt
  7. 6 1
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/RFl2Fl.kt
  8. 84 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RFl2Sh.kt
  9. 90 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RFl2Sp.kt
  10. 84 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSh2Bd.kt
  11. 78 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSh2Fl.kt
  12. 84 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSh2Sh.kt
  13. 90 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSh2Sp.kt
  14. 90 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSp2Bd.kt
  15. 90 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSp2Fl.kt
  16. 90 0
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSp2Sh.kt
  17. 536 24
      datacenter/src/main/kotlin/com/persagy/server/services/relation_calc/ManualRelationAddService.kt

+ 5 - 1
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/graphtype/rel/RelZoneSpace.kt

@@ -27,6 +27,7 @@
 package com.persagy.server.datacenter.models.entities.graphtype.rel
 
 import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
 import javax.persistence.Table
 
 /**
@@ -38,5 +39,8 @@ import javax.persistence.Table
 @Table(name = "zone_space_base")
 open class RelZoneSpace: SpaceBaseZone() {
 
-
+    /** 对象类型 */
+    @Schema(description = "对象类型")
+    @Column(name = "object_type")
+    var classCode: String? = null
 }

+ 6 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/RSp2Sp.kt

@@ -65,8 +65,14 @@ class RSp2Sp : RBaseInfo(){
     @Column(name = "type")
     var type: String? = null
 
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
     /** 空间类型 */
     @Schema(description = "空间类型 " )
+    @Id
     @Column(name = "zone_type")
     var zoneType: String? = null
 

+ 0 - 1
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RBd2Fl.kt

@@ -67,7 +67,6 @@ class RBd2Fl : RBaseInfo() {
 
     /** 图类型 */
     @Schema(description = "图类型 " )
-    @Id
     @Column(name = "graph_code")
     var graphCode: String? = null
 

+ 84 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RBd2Sh.kt

@@ -0,0 +1,84 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "设备与设备的关系")
+@Table(name = "relationship.r_bd2sh")
+class RBd2Sh : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 90 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RBd2Sp.kt

@@ -0,0 +1,90 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "设备与设备的关系")
+@Table(name = "relationship.r_bd2sp")
+class RBd2Sp : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "zone_type")
+    var zoneType: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 84 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RFl2Bd.kt

@@ -0,0 +1,84 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "设备与设备的关系")
+@Table(name = "relationship.r_fl2bd")
+class RFl2Bd : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 6 - 1
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/RFl2Fl.kt

@@ -24,7 +24,7 @@
  * *********************************************************************************************************************
  */
 
-package com.persagy.server.datacenter.models.entities.rel
+package com.persagy.server.datacenter.models.entities.rel.archforarch
 
 import com.persagy.server.datacenter.models.entities.base.RBaseInfo
 import io.swagger.v3.oas.annotations.media.Schema
@@ -65,6 +65,11 @@ class RFl2Fl : RBaseInfo(){
     @Column(name = "type")
     var type: String? = null
 
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
     /** 计算标记 1 为手动 2为自动 */
     @Schema(description = "计算标记 1 为手动 2为自动 ")
     @Column(name = "sign")

+ 84 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RFl2Sh.kt

@@ -0,0 +1,84 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "楼层与竖井的关系")
+@Table(name = "relationship.r_fl2sh")
+class RFl2Sh : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 90 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RFl2Sp.kt

@@ -0,0 +1,90 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "楼层与空间的关系")
+@Table(name = "relationship.r_fl2sp")
+class RFl2Sp : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "zone_type")
+    var zoneType: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 84 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSh2Bd.kt

@@ -0,0 +1,84 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "竖井与建筑的关系")
+@Table(name = "relationship.r_sh2bd")
+class RSh2Bd : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 78 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSh2Fl.kt

@@ -0,0 +1,78 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2020.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ * 楼层和楼层的关系
+ *
+ * @author 张维新
+ */
+@Schema(description = "竖井和楼层的关系")
+@Table(name = "relationship.r_sh2fl")
+class RSh2Fl : RBaseInfo(){
+
+    /** 设备Id */
+    @Schema(description = "设备Id")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** 设备ID */
+    @Schema(description = "设备ID")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+}

+ 84 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSh2Sh.kt

@@ -0,0 +1,84 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "竖井与竖井的关系")
+@Table(name = "relationship.r_sh2sh")
+class RSh2Sh : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 90 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSh2Sp.kt

@@ -0,0 +1,90 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "竖井与空间的关系")
+@Table(name = "relationship.r_sh2sp")
+class RSh2Sp : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "zone_type")
+    var zoneType: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 90 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSp2Bd.kt

@@ -0,0 +1,90 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "空间与建筑的关系")
+@Table(name = "relationship.r_sp2bd")
+class RSp2Bd : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "zone_type")
+    var zoneType: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 90 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSp2Fl.kt

@@ -0,0 +1,90 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "空间与楼层的关系")
+@Table(name = "relationship.r_sp2fl")
+class RSp2Fl : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "zone_type")
+    var zoneType: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 90 - 0
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/rel/archforarch/RSp2Sh.kt

@@ -0,0 +1,90 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2009-2021.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+package com.persagy.server.datacenter.models.entities.rel.archforarch
+
+import com.persagy.server.datacenter.models.entities.base.RBaseInfo
+import io.swagger.v3.oas.annotations.media.Schema
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2021/3/4 15:29
+ */
+@Schema(description = "空间与竖井的关系")
+@Table(name = "relationship.r_sp2sh")
+class RSp2Sh : RBaseInfo() {
+
+    /** id1 */
+    @Schema(description = "id1")
+    @Id
+    @Column(name = "id1")
+    var id1: String? = null
+
+    /** id2 */
+    @Schema(description = "id2")
+    @Id
+    @Column(name = "id2")
+    var id2: String? = null
+
+    /** 项目Id */
+    @Schema(description = "项目Id")
+    @Id
+    @Column(name = "project_id")
+    var projectId: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "type")
+    var type: String? = null
+
+    /** 类型 */
+    @Schema(description = "类型 " )
+    @Id
+    @Column(name = "zone_type")
+    var zoneType: String? = null
+
+    /** 图类型 */
+    @Schema(description = "图类型 " )
+    @Column(name = "graph_code")
+    var graphCode: String? = null
+
+
+    /** 计算标记 1 为手动 2为自动 */
+    @Schema(description = "计算标记 1 为手动 2为自动 ")
+    @Column(name = "sign")
+    var sign: Int? = null
+
+    /** 是否有方向性 */
+    @Schema(description = "是否有方向性")
+    @Column(name = "has_direction")
+    var hasDirection: Boolean? = null
+
+}

+ 536 - 24
datacenter/src/main/kotlin/com/persagy/server/services/relation_calc/ManualRelationAddService.kt

@@ -34,7 +34,9 @@ import com.persagy.server.datacenter.models.entities.graphtype.RelationTypeProje
 import com.persagy.server.datacenter.models.entities.graphtype.block.RelationAddRequest
 import com.persagy.server.datacenter.models.entities.graphtype.rel.*
 import com.persagy.server.datacenter.models.entities.rel.*
-import com.persagy.server.datacenter.models.entities.rel.archforarch.RBd2Bd
+import com.persagy.server.datacenter.models.entities.rel.archforarch.*
+import com.persagy.server.datacenter.models.entities.rel.archforarch.RSh2Bd
+import com.persagy.server.datacenter.models.entities.rel.archforarch.RSh2Sp
 import com.persagy.server.datacenter.models.response.ManualRelationCalcSCreateResponse
 import com.persagy.server.jms.RabbitMqService
 import com.persagy.server.services.objects.*
@@ -67,8 +69,36 @@ class ManualRelationAddService {
     }
 
     /** 区域服务-建筑和建筑 */
-    private val rRBd2BdService = SObjectService(SMybatisDao(RBd2Bd::class.java))
-
+    private val rBd2BdService = SObjectService(SMybatisDao(RBd2Bd::class.java))
+    /** 建筑和楼层 */
+    private val rBd2FlService = SObjectService(SMybatisDao(RBd2Fl::class.java))
+    /** 建筑和竖井 */
+    private val rBd2ShService = SObjectService(SMybatisDao(RBd2Sh::class.java))
+    /** 建筑和空间 */
+    private val rBd2SpService = SObjectService(SMybatisDao(RBd2Sp::class.java))
+    /** 区域服务-楼层和建筑 */
+    private val rFl2BdService = SObjectService(SMybatisDao(RFl2Bd::class.java))
+    /** 楼层和楼层 */
+    private val rFl2FlService = SObjectService(SMybatisDao(RFl2Fl::class.java))
+    /** 楼层和竖井 */
+    private val rFl2ShService = SObjectService(SMybatisDao(RFl2Sh::class.java))
+    /** 楼层和空间 */
+    private val rFl2SpService = SObjectService(SMybatisDao(RFl2Sp::class.java))
+    /** 区域服务-竖井和建筑 */
+    private val rSh2BdService = SObjectService(SMybatisDao(RSh2Bd::class.java))
+    /** 竖井和楼层 */
+    private val rSh2FlService = SObjectService(SMybatisDao(RSh2Fl::class.java))
+    /** 竖井和竖井 */
+    private val rSh2ShService = SObjectService(SMybatisDao(RSh2Sh::class.java))
+    /** 竖井和空间 */
+    private val rSh2SpService = SObjectService(SMybatisDao(RSh2Sp::class.java))
+
+    /** 区域服务-空间和建筑 */
+    private val rSp2BdService = SObjectService(SMybatisDao(RSp2Bd::class.java))
+    /** 空间和楼层 */
+    private val rSp2FlService = SObjectService(SMybatisDao(RSp2Fl::class.java))
+    /** 空间和竖井 */
+    private val rSp2ShService = SObjectService(SMybatisDao(RSp2Sh::class.java))
 
 
     /** 资产服务 */
@@ -127,7 +157,7 @@ class ManualRelationAddService {
      */
     fun addRel(relationAddRequest: RelationAddRequest): ManualRelationCalcSCreateResponse {
         /** 项目id */
-        val projectId = SPageContext.getHeader("ProjectId")
+        val projectId = SPageContext.getHeader("projectId")
 
         val sCreateResponse = ManualRelationCalcSCreateResponse()
 
@@ -1925,9 +1955,10 @@ class ManualRelationAddService {
 
         }else if (relationAddRequest.relType == "ArchForArch_Bd2Bd"||relationAddRequest.relType == "ArchForArch_Bd2Fl"||relationAddRequest.relType == "ArchForArch_Bd2Sh"
             ||relationAddRequest.relType == "ArchForArch_Bd2Sp"||relationAddRequest.relType == "ArchForArch_Fl2Bd"||relationAddRequest.relType == "ArchForArch_Fl2Fl"
-            ||relationAddRequest.relType == "ArchForArch_Fl2Sh"||relationAddRequest.relType == "ArchForArch_Fl2Sp"||relationAddRequest.relType == "ArchForArch_Sh2Bd"||
-            relationAddRequest.relType == "ArchForArch_Sh2Fl"||relationAddRequest.relType == "ArchForArch_Sh2Sh"||relationAddRequest.relType == "ArchForArch_Sh2Sp"||relationAddRequest.relType == "ArchForArch_Sp2Bd"
-            ||relationAddRequest.relType == "ArchForArch_Sp2Fl"||relationAddRequest.relType == "ArchForArch_Sp2Sh"||relationAddRequest.relType == "ArchForArch_Sp2Sp"){
+            ||relationAddRequest.relType == "ArchForArch_Fl2Sh"||relationAddRequest.relType == "ArchForArch_Fl2Sp"||relationAddRequest.relType == "ArchForArch_Sh2Bd"
+                || relationAddRequest.relType == "ArchForArch_Sh2Fl"||relationAddRequest.relType == "ArchForArch_Sh2Sh"||relationAddRequest.relType == "ArchForArch_Sh2Sp"
+                || relationAddRequest.relType == "ArchForArch_Sp2Bd" ||relationAddRequest.relType == "ArchForArch_Sp2Fl"||relationAddRequest.relType == "ArchForArch_Sp2Sh"
+                ||relationAddRequest.relType == "ArchForArch_Sp2Sp"){
 //            val sReplaceBuilder = SReplaceBuilder<RBd2Bd>(SMybatisDao(RBd2Bd::class.java))
 
             if (!relationAddRequest.type.isNullOrEmpty()&&relationAddRequest.type == "cadId"){
@@ -1992,7 +2023,7 @@ class ManualRelationAddService {
                     rBd2Bd.projectId = projectId
                     rBd2Bd.type = relationAddRequest.relType
                     rBd2Bd.sign = 1
-                    rRBd2BdService.replace(rBd2Bd)
+                    rBd2BdService.replace(rBd2Bd)
                 }
                 }else if (relationAddRequest.relType == "ArchForArch_Bd2Fl") {
                     for (fromContent in relationAddRequest.fromContent!!){
@@ -2022,14 +2053,14 @@ class ManualRelationAddService {
                     /** 查询空间 */
                     val floorToList = FloorService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
                     for (floorTo in floorToList) {
-                        val rBd2Bd = RBd2Bd()
-                        rBd2Bd.id1 = building.id
-                        rBd2Bd.id2 = floorTo.id
-                        rBd2Bd.projectId = projectId
-                        rBd2Bd.type = relationAddRequest.relType
-                        rBd2Bd.sign = 1
+                        val rBd2Fl = RBd2Fl()
+                        rBd2Fl.id1 = building.id
+                        rBd2Fl.id2 = floorTo.id
+                        rBd2Fl.projectId = projectId
+                        rBd2Fl.type = relationAddRequest.relType
+                        rBd2Fl.sign = 1
 //                        sReplaceBuilder.tableName = "relationship.r_bd2bd"
-////                        rRBd2BdService.replace(rBd2Bd,sReplaceBuilder)
+                        rBd2FlService.replace(rBd2Fl)
                     }
 
                 }else if (relationAddRequest.relType =="ArchForArch_Bd2Sh") {
@@ -2060,19 +2091,55 @@ class ManualRelationAddService {
                     /** 查询空间 */
                     val shaftToList = ShaftService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
                     for (shaftTo in shaftToList) {
-                        val rBd2Bd = RBd2Bd()
-                        rBd2Bd.id1 = building.id
-                        rBd2Bd.id2 = shaftTo.id
-                        rBd2Bd.projectId = projectId
-                        rBd2Bd.type = relationAddRequest.relType
-                        rBd2Bd.sign = 1
+                        val rBd2Sh = RBd2Sh()
+                        rBd2Sh.id1 = building.id
+                        rBd2Sh.id2 = shaftTo.id
+                        rBd2Sh.projectId = projectId
+                        rBd2Sh.type = relationAddRequest.relType
+                        rBd2Sh.sign = 1
 //                        sReplaceBuilder.tableName = "relationship.r_bd2sh"
 //                        rRBd2BdService.replace(rBd2Bd,sReplaceBuilder)
+                        rBd2ShService.replace(rBd2Sh)
                     }
-                }else if (relationAddRequest.relType =="ArchForArch_Bd2Sh") {
-
                 }else if (relationAddRequest.relType =="ArchForArch_Bd2Sp") {
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val spaceToList = relZoneSpaceService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent!!)).exec()
+                        if (spaceToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (spaceToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
 
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val spaceToList = relZoneSpaceService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (spaceTo in spaceToList) {
+                        val rBd2Sp = RBd2Sp()
+                        rBd2Sp.id1 = building.id
+                        rBd2Sp.id2 = spaceTo.id
+                        rBd2Sp.projectId = projectId
+                        rBd2Sp.type = relationAddRequest.relType
+                        rBd2Sp.sign = 1
+                        rBd2Sp.zoneType = spaceTo.classCode
+//                        sReplaceBuilder.tableName = "relationship.r_bd2sh"
+//                        rRBd2BdService.replace(rBd2Bd,sReplaceBuilder)
+                        rBd2SpService.replace(rBd2Sp)
+                    }
                 }
             }else if (relationAddRequest.relType == "ArchForArch_Fl2Bd"||relationAddRequest.relType == "ArchForArch_Fl2Fl"
                 ||relationAddRequest.relType == "ArchForArch_Fl2Sh"||relationAddRequest.relType == "ArchForArch_Fl2Sp") {
@@ -2094,13 +2161,152 @@ class ManualRelationAddService {
                 }
 
                 if (relationAddRequest.relType == "ArchForArch_Fl2Bd") {
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val buildingToList = BuildingService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent!!)).exec()
+                        if (buildingToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (buildingToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
 
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val buildingToList = BuildingService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (buildingTo in buildingToList) {
+                        val rFl2Bd = RFl2Bd()
+                        rFl2Bd.id1 = floorList[0].id
+                        rFl2Bd.id2 = buildingTo.id
+                        rFl2Bd.projectId = projectId
+                        rFl2Bd.type = relationAddRequest.relType
+                        rFl2Bd.sign = 1
+                        rFl2BdService.replace(rFl2Bd)
+                    }
                 } else if (relationAddRequest.relType == "ArchForArch_Fl2Fl") {
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val floorToList = FloorService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent!!)).exec()
+                        if (floorToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (floorToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
 
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val floorToList = FloorService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (floorTo in floorToList) {
+                        val rFl2Fl = RFl2Fl()
+                        rFl2Fl.id1 = floorList[0].id
+                        rFl2Fl.id2 = floorTo.id
+                        rFl2Fl.projectId = projectId
+                        rFl2Fl.type = relationAddRequest.relType
+                        rFl2Fl.sign = 1
+                        rFl2FlService.replace(rFl2Fl)
+                    }
                 } else if (relationAddRequest.relType == "ArchForArch_Fl2Sh") {
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val shaftToList = ShaftService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent!!)).exec()
+                        if (shaftToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (shaftToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
 
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val shaftToList = ShaftService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (shaftTo in shaftToList) {
+                        val rFl2Sh = RFl2Sh()
+                        rFl2Sh.id1 = floorList[0].id
+                        rFl2Sh.id2 = shaftTo.id
+                        rFl2Sh.projectId = projectId
+                        rFl2Sh.type = relationAddRequest.relType
+                        rFl2Sh.sign = 1
+                        rFl2Sh.graphCode = relationAddRequest.graphicType
+                        rFl2ShService.replace(rFl2Sh)
+                    }
                 }else if (relationAddRequest.relType == "ArchForArch_Fl2Sp") {
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val spaceToList = relZoneSpaceService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent)).exec()
+                        if (spaceToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (spaceToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
 
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val spaceToList = relZoneSpaceService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (spaceTo in spaceToList) {
+                        val rFl2Sp = RFl2Sp()
+                        rFl2Sp.id1 = floorList[0].id
+                        rFl2Sp.id2 = spaceTo.id
+                        rFl2Sp.projectId = projectId
+                        rFl2Sp.type = relationAddRequest.relType
+                        rFl2Sp.sign = 1
+                        rFl2Sp.graphCode = relationAddRequest.graphicType
+                        rFl2Sp.zoneType = spaceTo.classCode
+                        rFl2SpService.replace(rFl2Sp)
+                    }
                 }
 
             }else if (relationAddRequest.relType == "ArchForArch_Sh2Bd"|| relationAddRequest.relType == "ArchForArch_Sh2Fl"||
@@ -2122,20 +2328,326 @@ class ManualRelationAddService {
                     return sCreateResponse
                 }
                 if (relationAddRequest.relType == "ArchForArch_Sh2Bd"){
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val buildingToList = BuildingService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent)).exec()
+                        if (buildingToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (buildingToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
 
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val buildingToList = BuildingService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (buildingTo in buildingToList) {
+                        val rSh2Bd = RSh2Bd()
+                        rSh2Bd.id1 = shaftList[0].id
+                        rSh2Bd.id2 = buildingTo.id
+                        rSh2Bd.projectId = projectId
+                        rSh2Bd.type = relationAddRequest.relType
+                        rSh2Bd.sign = 1
+                        rSh2BdService.replace(rSh2Bd)
+                    }
                 }else if (relationAddRequest.relType == "ArchForArch_Sh2Fl"){
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val floorToList = FloorService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent)).exec()
+                        if (floorToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (floorToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
 
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val floorToList = FloorService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (floorTo in floorToList) {
+                        val rSh2Fl = RSh2Fl()
+                        rSh2Fl.id1 = shaftList[0].id
+                        rSh2Fl.id2 = floorTo.id
+                        rSh2Fl.projectId = projectId
+                        rSh2Fl.type = relationAddRequest.relType
+                        rSh2Fl.sign = 1
+                        rSh2FlService.replace(rSh2Fl)
+                    }
                 }else if (relationAddRequest.relType == "ArchForArch_Sh2Sh"){
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val shaftToList = ShaftService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent)).exec()
+                        if (shaftToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (shaftToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
 
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val shaftToList = ShaftService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (shaftTo in shaftToList) {
+                        val rSh2Sh = RSh2Sh()
+                        rSh2Sh.id1 = shaftList[0].id
+                        rSh2Sh.id2 = shaftTo.id
+                        rSh2Sh.projectId = projectId
+                        rSh2Sh.type = relationAddRequest.relType
+                        rSh2Sh.sign = 1
+                        rSh2Sh.graphCode = relationAddRequest.graphicType
+                        rSh2ShService.replace(rSh2Sh)
+                    }
                 }else if (relationAddRequest.relType == "ArchForArch_Sh2Sp"){
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val spaceToList = relZoneSpaceService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent)).exec()
+                        if (spaceToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (spaceToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
+
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val spaceToList = relZoneSpaceService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (spaceTo in spaceToList) {
+                        val rSh2Sp = RSh2Sp()
+                        rSh2Sp.id1 = shaftList[0].id
+                        rSh2Sp.id2 = spaceTo.id
+                        rSh2Sp.projectId = projectId
+                        rSh2Sp.type = relationAddRequest.relType
+                        rSh2Sp.sign = 1
+                        rSh2Sp.graphCode = relationAddRequest.graphicType
+                        rSh2Sp.zoneType = spaceTo.classCode
+                        rSh2SpService.replace(rSh2Sp)
+                    }
+                }
+            }else if(relationAddRequest.relType == "ArchForArch_Sp2Bd" ||relationAddRequest.relType == "ArchForArch_Sp2Fl"
+                    ||relationAddRequest.relType == "ArchForArch_Sp2Sh"||relationAddRequest.relType == "ArchForArch_Sp2Sp") {
+
+                /** 楼层服务 */
+                val zoneSpaceList = relZoneSpaceService.select(SFilter.eq("projectId", projectId!!), SFilter.eq(relationAddRequest.type!!, relationAddRequest.mainContent!!)).exec()
+                if (zoneSpaceList.size<1){
+                    /** 主对象不存在 */
+                    sCreateResponse.result = SResponseType.failure
+                    sCreateResponse.message = relationAddRequest.mainContent+":不存在"
+                    sCreateResponse.errorType = "1"
+                    return sCreateResponse
+                }
+                if (zoneSpaceList.size>1){
+                    /** 主对象编码识别到多个实例 */
+                    sCreateResponse.result = SResponseType.failure
+                    sCreateResponse.message = relationAddRequest.mainContent+":存在多个实例"
+                    sCreateResponse.errorType = "1"
+                    return sCreateResponse
+                }
+                if (relationAddRequest.relType == "ArchForArch_Sp2Sp") {
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val spaceToList = relZoneSpaceService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent)).exec()
+                        if (spaceToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (spaceToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
+
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val spaceToList = relZoneSpaceService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (spaceTo in spaceToList) {
+                        val rSp2Sp = RSp2Sp()
+                        rSp2Sp.id1 = zoneSpaceList[0].id
+                        rSp2Sp.id2 = spaceTo.id
+                        rSp2Sp.projectId = projectId
+                        rSp2Sp.type = relationAddRequest.relType
+                        rSp2Sp.sign = 1
+                        rSp2Sp.zoneType = zoneSpaceList[0].classCode
+                        rSp2SpService.replace(rSp2Sp)
+                    }
+
+                }else if (relationAddRequest.relType == "ArchForArch_Sp2Bd") {
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val buildingToList = BuildingService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent)).exec()
+                        if (buildingToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (buildingToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
+
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val buildingToList = BuildingService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (buildingTo in buildingToList) {
+                        val rSp2Bd = RSp2Bd()
+                        rSp2Bd.id1 = zoneSpaceList[0].id
+                        rSp2Bd.id2 = buildingTo.id
+                        rSp2Bd.projectId = projectId
+                        rSp2Bd.type = relationAddRequest.relType
+                        rSp2Bd.sign = 1
+                        rSp2Bd.zoneType = zoneSpaceList[0].classCode
+                        rSp2BdService.replace(rSp2Bd)
+                    }
+                }else if (relationAddRequest.relType == "ArchForArch_Sp2Fl") {
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val floorToList = FloorService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent)).exec()
+                        if (floorToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (floorToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
 
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val floorToList = FloorService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (floorTo in floorToList) {
+                        val rSp2Fl = RSp2Fl()
+                        rSp2Fl.id1 = zoneSpaceList[0].id
+                        rSp2Fl.id2 = floorTo.id
+                        rSp2Fl.projectId = projectId
+                        rSp2Fl.type = relationAddRequest.relType
+                        rSp2Fl.sign = 1
+                        rSp2Fl.zoneType = zoneSpaceList[0].classCode
+                        rSp2FlService.replace(rSp2Fl)
+                    }
+                }else if (relationAddRequest.relType == "ArchForArch_Sp2Sh") {
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        /** 去除主对象空间id */
+                        val shaftToList = ShaftService.select(SFilter.eq("projectId", projectId), SFilter.eq(relationAddRequest.type!!, fromContent)).exec()
+                        if (shaftToList.size<1){
+                            /** 从对象不存在 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":不存在"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                        if (shaftToList.size>1){
+                            /** 从对象编码识别到多个实例 */
+                            sCreateResponse.result = SResponseType.failure
+                            sCreateResponse.message = fromContent+":存在多个实例"
+                            sCreateResponse.errorType = "2"
+                            return sCreateResponse
+                        }
+                    }
+                    /** 处理关系 */
+                    val setCode = HashSet<String>()
+                    for (fromContent in relationAddRequest.fromContent!!){
+                        setCode.add(fromContent)
+                    }
+                    /** 查询空间 */
+                    val shaftToList = ShaftService.select(SFilter.eq("projectId", projectId), SFilter.inList(relationAddRequest.type!!, setCode.toList())).exec()
+                    for (shaftTo in shaftToList) {
+                        val rSp2Sh = RSp2Sh()
+                        rSp2Sh.id1 = zoneSpaceList[0].id
+                        rSp2Sh.id2 = shaftTo.id
+                        rSp2Sh.projectId = projectId
+                        rSp2Sh.type = relationAddRequest.relType
+                        rSp2Sh.sign = 1
+                        rSp2Sh.zoneType = zoneSpaceList[0].classCode
+                        rSp2ShService.replace(rSp2Sh)
+                    }
                 }
             }
 
         }
             sCreateResponse.result = SResponseType.success
             sCreateResponse.message = "添加成功"
-
         return sCreateResponse
     } // Fun