瀏覽代碼

关系计算相关类型

caiaf 4 年之前
父節點
當前提交
bf233b1f2a

+ 1 - 1
data-core/src/main/kotlin/com/persagy/server/datacenter/wanda/rel/REq2SyTwo.kt

@@ -38,7 +38,7 @@ import javax.persistence.Table
  * @author 张维新
  */
 @Schema(description = "设备系统关系")
-@Table(name = "relationship.r_sy2eq")
+@Table(name = "v_system_sy2eq")
 class REq2SyTwo : RBaseInfo(){
 
     /** 设备Id */

+ 27 - 0
datacenter/src/main/kotlin/com/persagy/server/datacenter/services/rel/CommonObjectService.kt

@@ -0,0 +1,27 @@
+package com.persagy.server.datacenter.services.rel
+
+import com.persagy.mybatis.SMybatisDao
+import com.persagy.server.datacenter.datacenter.models.entities.dictnew.DefClass
+import com.persagy.server.datacenter.wanda.obj.Equipment
+import com.persagy.server.datacenter.wanda.obj.ZoneSpace
+import com.persagy.server.datacenter.wanda.rel.REq2Sp
+import com.persagy.server.datacenter.wanda.rel.REq2Sy
+import com.persagy.server.datacenter.wanda.rel.REq2SyTwo
+import com.persagy.server.datacenter.wanda.rel.RSp2Sp
+import com.persagy.service.SObjectService
+
+/**
+ *
+ * @author  Cainga
+ * @date  2021/3/3 15:42
+ */
+object CommonObjectService {
+
+    val rEq2SpService = SObjectService<REq2Sp>(SMybatisDao(REq2Sp::class.java))
+    val equipmentService = SObjectService<Equipment>(SMybatisDao(Equipment::class.java))
+    val dictClassService = SObjectService<DefClass>(SMybatisDao(DefClass::class.java))
+    val eq2SyService = SObjectService<REq2Sy>(SMybatisDao(REq2Sy::class.java))
+    val zoneSpaceService = SObjectService<ZoneSpace>(SMybatisDao(ZoneSpace::class.java))
+    val sp2SpService = SObjectService<RSp2Sp>(SMybatisDao(RSp2Sp::class.java))
+    val rEq2SyTwoService = SObjectService(SMybatisDao(REq2SyTwo::class.java))
+}

+ 172 - 0
datacenter/src/main/kotlin/com/persagy/server/datacenter/services/rel/RelStatisticService.kt

@@ -0,0 +1,172 @@
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .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.services.rel
+
+import com.persagy.database.SFilter
+import com.persagy.server.datacenter.services.objects.EquipmentService
+import com.persagy.server.datacenter.wanda.obj.Equipment
+import com.persagy.server.mappers.ICalcSpaceMapper
+import com.persagy.service.SPageContext
+import com.persagy.service.models.enums.SResponseType
+import com.persagy.service.models.responses.SQueryResponse
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.stereotype.Service
+import java.util.stream.Collectors
+
+/**
+ * 关系统计
+ *
+ */
+@Service
+open class RelStatisticService {
+    /** 实例化 mapper 对象 */
+//    @Autowired
+//    lateinit var mapper: ICalcSpaceMapper
+    /**
+     * @Description: 查询关系相关的数据类型
+     * @Param:
+     * @Return:
+     */
+    fun relToType(zoneType: String?,graphCode: String,type: String,relType: String,status: Int): SQueryResponse<HashMap<String,String?>> {
+        val projectId = SPageContext.getHeader("ProjectId")
+        if(projectId == null){
+            return SQueryResponse(SResponseType.failure,"项目ID不能为空")
+        }
+        val results = ArrayList<HashMap<String,String?>>()
+        val defClasses  = CommonObjectService.dictClassService.select(SFilter.eq("type","group"), SFilter.eq("groupCode","WD")).exec()
+        val eqMap = HashMap<String,String>(512)
+//        val spMap = HashMap<String,String>()
+        for (defClass in defClasses) {
+//            if(defClass.objType == "equipment"){
+//                eqMap[defClass.code!!] = defClass.name!!
+//            }else if(defClass.objType == "space"){
+//                spMap[defClass.code!!] = defClass.name!!
+//            }
+            eqMap[defClass.code!!] = defClass.name!!
+        }
+        when (relType) {
+            RelationType.Eq2Bd -> {
+                val bdEquipments = CommonObjectService.equipmentService.select(SFilter.eq("projectId",projectId), SFilter.not(SFilter.isNull("buildingId"))).projection(listOf("classCode")).distinct().exec()
+                for (bdEquipment in bdEquipments) {
+                    val classCode = bdEquipment.classCode!!
+                    val item = HashMap<String,String?>()
+                    item["classCode"] = classCode
+                    item["className"] = eqMap[classCode]
+                    results.add(item)
+                }
+            }
+            RelationType.Eq2Fl -> {
+                val flEquipments = CommonObjectService.equipmentService.select(SFilter.eq("projectId",projectId), SFilter.not(SFilter.isNull("floorId"))).projection(listOf("classCode")).distinct().exec()
+                for (flEquipment in flEquipments) {
+                    val classCode = flEquipment.classCode!!
+                    val item = HashMap<String,String?>()
+                    item["classCode"] = classCode
+                    item["className"] = eqMap[classCode]
+                    results.add(item)
+                }
+
+            }
+            RelationType.Eq2Sp -> {
+                val rEq2Sps = CommonObjectService.rEq2SpService.select(SFilter.eq("projectId",projectId),SFilter.eq("type",type), SFilter.eq("graphCode",graphCode), SFilter.eq("zoneType",zoneType!!)).exec()
+                val equipIds = rEq2Sps.stream().map { r -> r.id1!! }.collect(Collectors.toList())
+                if(equipIds.size > 0){
+                    val equipments = EquipmentService.select(SFilter.eq("projectId",projectId), SFilter.inList("id",equipIds)).exec()
+                    for (equipment in equipments) {
+                        val classCode = equipment.classCode!!
+                        val item = HashMap<String,String?>()
+                        item["classCode"] = classCode
+                        item["className"] = eqMap[classCode]
+                        results.add(item)
+                    }
+                }
+
+            }
+            RelationType.Sy2Eq -> {
+                val rEq2Sys = CommonObjectService.rEq2SyTwoService.select(SFilter.eq("projectId",projectId)).exec()
+                if(status == 1){
+                    for (rEq2Sy in rEq2Sys) {
+                        val classCode = rEq2Sy.classCode1!!
+                        val item = HashMap<String,String?>()
+                        item["classCode"] = classCode
+                        item["className"] = eqMap[classCode]
+                        results.add(item)
+                    }
+                }else if(status == 2){
+                    for (rEq2Sy in rEq2Sys) {
+                        val classCode = rEq2Sy.classCode2!!
+                        val item = HashMap<String,String?>()
+                        item["classCode"] = classCode
+                        item["className"] = eqMap[classCode]
+                        results.add(item)
+                    }
+
+
+                }
+
+
+            }
+            RelationType.Sp2Bd -> {
+                val bdZoneSpaces = CommonObjectService.zoneSpaceService.select(SFilter.eq("projectId",projectId), SFilter.not(SFilter.isNull("buildingId"))).projection(listOf("classCode")).distinct().exec()
+                for (bdZoneSpace in bdZoneSpaces) {
+                    val classCode = bdZoneSpace.classCode!!
+                    val item = HashMap<String,String?>()
+                    item["classCode"] = classCode
+                    item["className"] = eqMap[classCode]
+                    results.add(item)
+                }
+            }
+            RelationType.Sp2Fl -> {
+                val flZoneSpaces = CommonObjectService.zoneSpaceService.select(SFilter.eq("projectId",projectId), SFilter.not(SFilter.isNull("floorId"))).projection(listOf("classCode")).distinct().exec()
+                for(flZoneSpace in flZoneSpaces){
+                    val classCode = flZoneSpace.classCode!!
+                    val item = HashMap<String,String?>()
+                    item["classCode"] = classCode
+                    item["className"] = eqMap[classCode]
+                    results.add(item)
+                }
+            }
+            RelationType.Sp2Sp -> {
+                val rSp2Sps = CommonObjectService.sp2SpService.select(SFilter.eq("projectId",projectId),SFilter.eq("type",type), SFilter.eq("graphCode",graphCode)).projection(listOf("zoneType")).distinct().exec()
+                for(rSp2Sp in rSp2Sps){
+                    val classCode = rSp2Sp.zoneType!!
+                    val item = HashMap<String,String?>()
+                    item["classCode"] = classCode
+                    item["className"] = eqMap[classCode]
+                    results.add(item)
+                }
+
+            }
+
+        }
+        val response = SQueryResponse<HashMap<String,String?>>()
+        response.content = results
+        return response
+        
+    }
+
+
+} // Class CalcSpaceService

+ 20 - 0
datacenter/src/main/kotlin/com/persagy/server/datacenter/services/rel/RelationType.kt

@@ -0,0 +1,20 @@
+package com.persagy.server.datacenter.services.rel
+
+/**
+ *
+ * @author  Cainga
+ * @date  2021/3/3 18:14
+ */
+interface RelationType {
+
+    companion object {
+        const val Eq2Bd: String = "eq2bd"
+        const val Eq2Fl: String = "eq2fl"
+        const val Eq2Sp: String = "eq2sp"
+        const val Sy2Eq: String = "sy2eq"
+        const val Sp2Bd: String = "sp2bd"
+        const val Sp2Fl: String = "sp2fl"
+        const val Sp2Sp: String = "sp2sp"
+
+    }
+}

+ 2 - 2
datacenter/src/main/kotlin/com/persagy/server/datacenter/services/relation_calc/ManualRelationCalcAddService.kt

@@ -4,13 +4,13 @@ import com.persagy.database.SFilter
 import com.persagy.mybatis.SMybatisDao
 import com.persagy.server.datacenter.datacenter.models.entities.graphtype.block.RelationAddRequest
 import com.persagy.server.datacenter.datacenter.models.entities.graphtype.rel.RelZoneSpace
-import com.persagy.server.datacenter.datacenter.models.entities.rel.REq2Sp
-import com.persagy.server.datacenter.datacenter.models.entities.rel.REq2Sy
 import com.persagy.server.datacenter.models.entities.graphtype.RelationTypeProject
 import com.persagy.server.datacenter.models.response.ManualRelationCalcSCreateResponse
 import com.persagy.server.datacenter.services.objects.BuildingService
 import com.persagy.server.datacenter.services.objects.EquipmentService
 import com.persagy.server.datacenter.services.objects.GeneralSystemService
+import com.persagy.server.datacenter.wanda.rel.REq2Sp
+import com.persagy.server.datacenter.wanda.rel.REq2Sy
 import com.persagy.server.datacenter.wanda.rel.RSp2Sp
 import com.persagy.server.services.objects.FloorService
 import com.persagy.service.SObjectService

+ 1 - 1
datacenter/src/main/kotlin/com/persagy/server/datacenter/services/relation_calc/RelationCalcService.kt

@@ -30,7 +30,6 @@ import com.persagy.database.SFilter
 import com.persagy.mybatis.SMybatisDao
 import com.persagy.server.Opt
 import com.persagy.server.datacenter.datacenter.models.entities.graphtype.block.ConnectedBlock
-import com.persagy.server.datacenter.datacenter.models.entities.rel.REq2Sp
 import com.persagy.server.datacenter.models.entities.graphtype.MPoint
 import com.persagy.server.datacenter.models.entities.graphtype.RelationTypeProject
 import com.persagy.server.datacenter.services.base.RService
@@ -42,6 +41,7 @@ import com.persagy.server.mappers.IRelationCalcMapper
 import com.persagy.server.datacenter.models.wrapperobj.TwicePoint
 import com.persagy.server.datacenter.models.service.BaseDataService
 import com.persagy.server.datacenter.models.wrapperobj.ClassCodeEnum
+import com.persagy.server.datacenter.wanda.rel.REq2Sp
 import com.persagy.server.services.assistant.RUpDateEquipAndSapceService
 import com.persagy.server.services.graphtype.ConnectedBlockService
 import com.persagy.server.services.objects.FloorService

+ 4 - 4
datacenter/src/main/kotlin/com/persagy/server/datacenter/wanda/controllers/obj/ProjectController.kt

@@ -105,11 +105,11 @@ private open class ProjectController {
     @PostMapping(value = ["/query"])
     fun query(@RequestBody request: SQueryRequest): SQueryResponse<Project> {
         val projectId = SPageContext.getHeader("projectId")
-        if (projectId.isNullOrEmpty()){
+//        if (projectId.isNullOrEmpty()){
             return ProjectService.pageQuery(request)
-        }else{
-            return ProjectService.pageQuery(request, arrayListOf(SFilter.eq("id",projectId)))
-        }
+//        }else{
+//            return ProjectService.pageQuery(request, arrayListOf(SFilter.eq("id",projectId)))
+//        }
     }
 
     @Operation(summary = "查询所有项目信息", description = "")

+ 12 - 0
datacenter/src/main/kotlin/com/persagy/server/datacenter/wanda/controllers/relation/GraphicTypeController.kt

@@ -28,6 +28,7 @@ import com.persagy.server.datacenter.models.entities.graphtype.block.ConnectedBl
 import com.persagy.server.datacenter.models.entities.graphtype.block.ConnectedBlockSourceRequest
 import com.persagy.server.datacenter.services.graphtype.GraphicTypeMapperService
 import com.persagy.server.datacenter.services.graphtype.RelationTypeProjectService
+import com.persagy.server.datacenter.services.rel.RelStatisticService
 import com.persagy.server.services.graphtype.*
 import com.persagy.service.SObjectService
 import com.persagy.service.SPageContext
@@ -64,6 +65,9 @@ open class GraphicTypeController {
     @Autowired
     lateinit var graphicTypeMapperService: GraphicTypeMapperService
 
+    @Autowired
+    lateinit var relStatisticService: RelStatisticService
+
     /**
      * 查询关系总览
      */
@@ -155,6 +159,14 @@ open class GraphicTypeController {
         return service.pageQuery(request, arrayListOf(SFilter.eq("projectId", SPageContext.getHeader("ProjectId").toString())))
     } // Fun replaceConnectedBlockSource()
 
+    /**
+     * 查看关系相关的数据类型
+     */
+    @Operation(summary="查看关系相关的数据类型*", description="")
+    @GetMapping(value = ["/relToType"])
+    fun relToType(@RequestParam(required = false) zoneType: String?,@RequestParam graphCode: String,@RequestParam type: String,@RequestParam relType: String,@RequestParam status: Int): SQueryResponse<HashMap<String,String?>>{
+        return relStatisticService.relToType(zoneType,graphCode,type,relType,status)
+    }
 
 
 } // Class EquipScanTaskController