浏览代码

***********************WX*****************************
空间统计

张维新 4 年之前
父节点
当前提交
62c28ca48c

+ 1 - 0
equip-component/src/main/kotlin/com/persagy/server/controllers/SpaceController.kt

@@ -173,4 +173,5 @@ class SpaceController {
 //        return ZoneSpaceBaseService.spatialRelationship(spatialRelationship)
 //    }
 
+
 }  // Class SpaceController

+ 11 - 1
equip-component/src/main/kotlin/com/persagy/server/controllers/planar/PlanarController.kt

@@ -48,7 +48,9 @@ import org.springframework.web.bind.annotation.RestController
 @RequestMapping("/planar")
 class PlanarController {
 
-
+    /**
+     * 设备查询
+     */
     @Operation(summary = "查询设备信息", description = "")
     @PostMapping(value = ["/equip"])
     fun equipQuery(@RequestBody request: PlanarEquipRequests): SQueryResponse<PlanarEquip> {
@@ -60,5 +62,13 @@ class PlanarController {
 //    fun equipQueryCount(@RequestBody request: PlanarEquipRequests): SQueryResponse<EquipQueryCount> {
 //        return EquipmentComService.equipQueryCount(request)
 //    }
+    /**
+     * 空间查询
+     */
+    @Operation(summary = "查询空间信息", description = "")
+    @PostMapping(value = ["/space"])
+    fun spaceQuery(){
+
+    }
 
 }

+ 81 - 0
equip-component/src/main/kotlin/com/persagy/server/models/planar/PlanarSpace.kt

@@ -0,0 +1,81 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .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.models.planar
+
+import io.swagger.v3.oas.annotations.media.Schema
+import java.io.Serializable
+import javax.persistence.Column
+import javax.persistence.Id
+import javax.persistence.Table
+
+/**
+ * 空间
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2020/12/10 14:50
+ */
+@Schema(description = "平面图空间")
+@Table(name = "v_planar_space")
+class PlanarSpace: Serializable {
+
+    /** 空间 id */
+    @Schema(description = "空间 id",required = true)
+    @Id
+    @Column(name = "id")
+    var id: String? = null
+
+    /** 空间名称 */
+    @Schema(description = "空间名称",required = true)
+    @Column(name = "name")
+    var name: String? = null
+
+    /** 空间本地编码 */
+    @Schema(description = "空间本地编码")
+    @Column(name = "local_id")
+    var localId: String? = null
+
+    /** 空间本地名称 */
+    @Schema(description = "空间本地名称")
+    @Column(name = "local_name")
+    var localName: String? = null
+
+    /** 空间编码 */
+    @Schema(description = "空间编码")
+    @Column(name = "class_code")
+    var classCode: String? = null
+
+    /** 类型名称 */
+    @Schema(description = "类型名称")
+    @Column(name = "code_name")
+    var codeName: String? = null
+
+    /** 空间功能区类型 */
+    @Schema(description = "空间功能区类型")
+    @Column(name = "func_type")
+    var roomFuncType: String? = null
+
+}

+ 70 - 10
equip-component/src/main/kotlin/com/persagy/server/service/EquipmentComService.kt

@@ -31,6 +31,7 @@ import com.persagy.base.extensions.toJson
 import com.persagy.database.SFilter
 import com.persagy.database.SQueryBuilder
 import com.persagy.mybatis.SMybatisDao
+import com.persagy.server.Opt
 import com.persagy.server.datacenter.models.entities.dict.EquipCategory
 import com.persagy.server.datacenter.models.entities.dict.EquipFamily
 import com.persagy.server.datacenter.models.entities.dict.Family
@@ -38,6 +39,8 @@ import com.persagy.server.datacenter.models.entities.dictnew.DefClass
 import com.persagy.server.datacenter.models.entities.graphtype.RelationTypeProject
 import com.persagy.server.datacenter.models.entities.objects.*
 import com.persagy.server.datacenter.models.entities.rel.REq2Sp
+import com.persagy.server.datacenter.models.entities.rel.RSp2Sp
+import com.persagy.server.datacenter.models.entities.rel.RSpinFl
 import com.persagy.server.models.planar.PlanarEquip
 import com.persagy.server.models.requests.PlanarEquipRequests
 import com.persagy.server.service.base.Service
@@ -57,6 +60,8 @@ import com.persagy.service.utils.SSpringContextUtil
 import org.slf4j.LoggerFactory
 import java.util.*
 import kotlin.collections.ArrayList
+import kotlin.collections.HashMap
+import kotlin.collections.HashSet
 
 /**
  * 设备和部件信息服务
@@ -87,6 +92,10 @@ object EquipmentComService : Service<Equipment>(SMybatisDao(Equipment::class.jav
 
     /** 空间服务 */
     val spaceService = SObjectService(SMybatisDao(ZoneSpace::class.java))
+    /** 空间建筑楼层 */
+    val spInFlService = SObjectService(SMybatisDao(RSpinFl::class.java))
+    /** 设备和空间关系 */
+    val rEq2SpService = SObjectService(SMybatisDao(REq2Sp::class.java))
 
     /**
      * 查询之前操作
@@ -659,24 +668,75 @@ object EquipmentComService : Service<Equipment>(SMybatisDao(Equipment::class.jav
 
         val sQueryResponse = SQueryResponse<PlanarEquip>()
         try {
+            /** 先查询空间数据 */
+            if (request.spaceIds.isNullOrEmpty()) {
+                request.spaceIds = ArrayList()
+            }
             sQueryResponse.result = SResponseType.success
             if (!request.equipTypes.isNullOrEmpty()&&!request.zoneTypes.isNullOrEmpty()&&!request.funcTypes.isNullOrEmpty()) {
-                /** 先查询空间数据 */
-                if (!request.spaceIds.isNullOrEmpty()) {
-
-//                    spaceService.select(SFilter.eq())
-
-                } else {
 
+                val spInFlList = spInFlService.select(SFilter.eq("projectId", Opt.projectId!!), SFilter.eq("buildingId", request.buildingId!!),
+                        SFilter.eq("floorId", request.floorId!!), SFilter.inList("objectType", request.zoneTypes!!)).exec()
+                val spIds = ArrayList<String>()
+                if (!spInFlList.isNullOrEmpty()){
+                    for ( sp in spInFlList){
+                        spIds!!.add(sp.spaceId!!)
+                    }
+                    val spaceList = spaceService.select(SFilter.eq("projectId", Opt.projectId!!), SFilter.inList("roomFuncType", request.funcTypes!!),
+                            SFilter.inList("id", request.spaceIds!!)).exec()
+                    if (!spaceList.isNullOrEmpty()) {
+                        for (space in spaceList) {
+                            request.spaceIds!!.add(space.id!!)
+                        }
+                    }
                 }
 
-
-            } else if (!request.equipTypes.isNullOrEmpty()&&!request.zoneTypes.isNullOrEmpty()&&!request.funcTypes.isNullOrEmpty()){
-
+                if (request.spaceIds.isNullOrEmpty()){
+                    sQueryResponse.content = ArrayList()
+                }else {
+                    val rEq2SpList = rEq2SpService.select(SFilter.eq("projectId", Opt.projectId!!), SFilter.inList("id2", request.spaceIds!!)).exec()
+                    if (!rEq2SpList.isNullOrEmpty()) {
+                        val setIds = HashSet<String>()
+                        for (rEq2Sp in rEq2SpList) {
+                            setIds.add(rEq2Sp.id1!!)
+                        }
+                        val planarEquipList = planarEquipService.select(
+                                SFilter.inList("classCode", request.equipTypes!!),SFilter.inList("id", setIds.toList()!!)
+                        ).exec()
+                        sQueryResponse.content = planarEquipList
+                    } else {
+                        sQueryResponse.content = ArrayList()
+                    }
+                }
             } else if (!request.equipTypes.isNullOrEmpty()&&!request.zoneTypes.isNullOrEmpty()){
 
-            } else if (!request.equipTypes.isNullOrEmpty()&&!request.funcTypes.isNullOrEmpty()){
+                val spInFlList = spInFlService.select(SFilter.eq("projectId", Opt.projectId!!), SFilter.eq("buildingId", request.buildingId!!),
+                        SFilter.eq("floorId", request.floorId!!), SFilter.inList("objectType", request.zoneTypes!!)).exec()
+                if (!spInFlList.isNullOrEmpty()){
+                    for ( sp in spInFlList){
+                        request.spaceIds!!.add(sp.spaceId!!)
+                    }
+                }
 
+                if (request.spaceIds.isNullOrEmpty()){
+                    sQueryResponse.content = ArrayList()
+                }else {
+                    val rEq2SpList = rEq2SpService.select(SFilter.eq("projectId", Opt.projectId!!), SFilter.inList("id2", request.spaceIds!!)).exec()
+                    if (!rEq2SpList.isNullOrEmpty()) {
+                        val setIds = HashSet<String>()
+                        for (rEq2Sp in rEq2SpList) {
+                            setIds.add(rEq2Sp.id1!!)
+                        }
+                        val planarEquipList = planarEquipService.select(
+                                SFilter.inList("classCode", request.equipTypes!!),SFilter.inList("id", setIds.toList()!!)
+                        ).exec()
+                        sQueryResponse.content = planarEquipList
+                    } else {
+                        sQueryResponse.content = ArrayList()
+                    }
+                }
+            } else if (!request.equipTypes.isNullOrEmpty()&&!request.funcTypes.isNullOrEmpty()){
+                sQueryResponse.content = ArrayList()
             }else if (!request.equipTypes.isNullOrEmpty()){
 
                 val planarEquipList = planarEquipService.select(

+ 42 - 0
equip-component/src/main/kotlin/com/persagy/server/service/objects/ZoneSpaceBaseService.kt

@@ -29,9 +29,13 @@ package com.persagy.server.service.objects
 import com.persagy.database.SFilter
 import com.persagy.database.SQueryBuilder
 import com.persagy.mybatis.SMybatisDao
+import com.persagy.server.Opt
 import com.persagy.server.datacenter.models.entities.objects.ZoneIspace
 import com.persagy.server.datacenter.models.entities.objects.ZoneSpace
 import com.persagy.server.datacenter.models.entities.rel.RSpatialConnection
+import com.persagy.server.datacenter.models.entities.rel.RSpinFl
+import com.persagy.server.models.planar.PlanarSpace
+import com.persagy.server.models.requests.PlanarEquipRequests
 import com.persagy.server.models.requests.SpatialRelationship
 import com.persagy.server.service.CustomSqlService
 import com.persagy.service.SObjectService
@@ -52,6 +56,10 @@ object ZoneSpaceBaseService : SObjectService<ZoneSpace>(SMybatisDao(ZoneSpace::c
     private val rSpatialConnectionService = SObjectService(SMybatisDao(RSpatialConnection::class.java))
     /** 元空间 */
     private val zoneIspaceService = SObjectService(SMybatisDao(ZoneIspace::class.java))
+    /** 空间服务 */
+    private val planarSpaceService = SObjectService(SMybatisDao(PlanarSpace::class.java))
+    /** 空间建筑楼层 */
+    val spInFlService = SObjectService(SMybatisDao(RSpinFl::class.java))
 
     override fun onQueryBefore(queryBuilder: SQueryBuilder<ZoneSpace>) {
         val projectId = SPageContext.getHeader("projectId")
@@ -118,5 +126,39 @@ object ZoneSpaceBaseService : SObjectService<ZoneSpace>(SMybatisDao(ZoneSpace::c
         return SCountResponse(spaceBdFls.toLong(),SResponseType.success)
     } //
 
+    /**
+     *
+     */
+    fun spaceQuery(request: PlanarEquipRequests){
+        if (request.spaceIds.isNullOrEmpty()){
+            request.spaceIds = ArrayList()
+        }
+        if (!request.zoneTypes.isNullOrEmpty()&&!request.funcTypes.isNullOrEmpty()){
+            val spInFlList = spInFlService.select(SFilter.eq("projectId", Opt.projectId!!), SFilter.inList("objectType", request.zoneTypes!!),
+                    SFilter.eq("building", request.buildingId!!), SFilter.eq("floorId", request.floorId!!)).exec()
+            if (!spInFlList.isNullOrEmpty()) {
+                val setIds = HashSet<String>()
+                for (spInFl in spInFlList){
+                    setIds.add(spInFl.spaceId!!)
+                }
+
+
+
+            } else {
+
+            }
+
+
+
+
+        } else if (!request.zoneTypes.isNullOrEmpty()){
+
+        } else {
+
+        }
+
+
+
+    }
 
 }