Browse Source

设备,模型类型统计sql转换

linhuili 3 years ago
parent
commit
15b6cb2b00

+ 3 - 3
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/task/PropertyScanTask.kt

@@ -57,17 +57,17 @@ open class PropertyScanTask : ScanTaskBase() {
 
     /** 级联-项目   table  对应关系表   idColumn 对应 本类的id    childIdColumn 级联对象的关系id */
     @Schema(description = "级联-项目")
-    @SCascade(table="scantask.property_scan_task", idColumn="id", childIdColumn="project_id")
+    //@SCascade(table="scantask.property_scan_task", idColumn="id", childIdColumn="project_id")
     var project: Project? = null
 
     /** 级联-建筑 */
     @Schema(description = "级联-建筑")
-    @SCascade(table="scantask.property_scan_task", idColumn="id", childIdColumn="building_id")
+   // @SCascade(table="scantask.property_scan_task", idColumn="id", childIdColumn="building_id")
     var building: Building? = null
 
     /** 级联-楼层 */
     @Schema(description = "级联-楼层")
-    @SCascade(table="scantask.property_scan_task", idColumn="id", childIdColumn="floor_id")
+    //@SCascade(table="scantask.property_scan_task", idColumn="id", childIdColumn="floor_id")
     var floor: Floor? = null
 
     /** 级联-方案*/

+ 1 - 1
labsl/src/main/kotlin/com/persagy/labsl/models/entities/pbs/Building.kt

@@ -11,7 +11,7 @@ import javax.persistence.Table
  * @date  2020/12/2 19:08
  */
 @Schema(description = "建筑信息实体类")
-@Table(name = "public.building")
+//@Table(name = "public.building")
 class Building {
 
     /** 建筑体ID */

+ 4 - 4
scanbuilding/src/main/kotlin/com/persagy/server/mappers/StatisticsCountMapper.kt

@@ -156,14 +156,14 @@ interface StatisticsCountMapper {
     /**
      * 统计设备任务下的部件类型以及数量
      */
-    @Select("SELECT class_code as code,(SELECT name FROM dict.def_class WHERE code = class_code  LIMIT 1 ) as name, COUNT(class_code) FROM scantask.equip_scan_task WHERE task_parent_id = #{id} AND parent_id = #{equipId} GROUP BY class_code")
-    fun categoryStatistics(projectId:String,id: String,equipId: String): ArrayList<CategoryStatistics>
+    // @Select("SELECT class_code as code,(SELECT name FROM dict.def_class WHERE code = class_code  LIMIT 1 ) as name, COUNT(class_code) FROM scantask.equip_scan_task WHERE task_parent_id = #{id} AND parent_id = #{equipId} GROUP BY class_code")
+   //fun categoryStatistics(projectId:String,id: String,equipId: String): ArrayList<CategoryStatistics>
 
     /**
      * 统计模型设备部件类型以及数量
      */
-    @Select("SELECT mt.class_code as code,(SELECT name FROM dict.def_class WHERE code = mt.class_code LIMIT 1 ) as name, COUNT(class_code) FROM scantask.model_scan_task mt WHERE mt.task_parent_id = #{id} AND mt.parent_id = #{equipId} GROUP BY mt.class_code")
-    fun categoryStatisticsModel(projectId:String,id: String,equipId: String): ArrayList<CategoryStatistics>
+    //@Select("SELECT mt.class_code as code,(SELECT name FROM dict.def_class WHERE code = mt.class_code LIMIT 1 ) as name, COUNT(class_code) FROM scantask.model_scan_task mt WHERE mt.task_parent_id = #{id} AND mt.parent_id = #{equipId} GROUP BY mt.class_code")
+    //fun categoryStatisticsModel(projectId:String,id: String,equipId: String): ArrayList<CategoryStatistics>
 
     /**
      * 查询 当前模型文件下指定元空间内的设备

+ 32 - 0
scanbuilding/src/main/kotlin/com/persagy/server/services/StatisticsCountService.kt

@@ -0,0 +1,32 @@
+package com.persagy.server.services
+
+import com.persagy.server.datacenter.models.entities.task.CategoryStatistics
+import com.persagy.server.datacenter.models.entities.task.ModelScanTaskQuery
+import com.persagy.server.services.task.EquipScanTaskQueryService
+import com.persagy.server.services.task.ModelScanTaskQueryService
+import org.springframework.stereotype.Service
+
+/**
+ * Description
+ *
+ * @author:linhuili
+ * @date:2021/10/27
+ */
+@Service
+class StatisticsCountService{
+    /**
+     * 分类统计
+     */
+    fun categoryStatistics(projectId:String,id: String,equipId: String): ArrayList<CategoryStatistics>{
+        //"SELECT class_code as code,(SELECT name FROM dict.def_class WHERE code = class_code  LIMIT 1 ) as name, COUNT(class_code) FROM scantask.equip_scan_task WHERE task_parent_id = #{id} AND parent_id = #{equipId} GROUP BY class_code"
+        return EquipScanTaskQueryService.categoryStatistics(projectId,id,equipId)
+    }
+
+    /**
+     * 统计模型设备部件类型以及数量
+     */
+    fun categoryStatisticsModel(projectId:String,id: String,equipId: String): ArrayList<CategoryStatistics>{
+        //"SELECT mt.class_code as code,(SELECT name FROM dict.def_class WHERE code = mt.class_code LIMIT 1 ) as name, COUNT(class_code) FROM scantask.model_scan_task mt WHERE mt.task_parent_id = #{id} AND mt.parent_id = #{equipId} GROUP BY mt.class_code"
+        return ModelScanTaskQueryService.categoryStatisticsModel(projectId,id,equipId)
+    }
+}

+ 45 - 2
scanbuilding/src/main/kotlin/com/persagy/server/services/task/EquipScanTaskQueryService.kt

@@ -33,6 +33,7 @@ import com.persagy.database.functions.SLength
 import com.persagy.mybatis.SMybatisDao
 import com.persagy.server.datacenter.models.entities.dictnew.DefClass
 import com.persagy.server.datacenter.models.entities.objects.Equipment
+import com.persagy.server.datacenter.models.entities.task.CategoryStatistics
 import com.persagy.server.datacenter.models.entities.task.EquipScanTaskQuery
 import com.persagy.server.services.AdmBaseService
 import com.persagy.server.services.DmpBaseService
@@ -51,7 +52,7 @@ import java.util.stream.Collectors
  *
  * @author  邓婷婷
  */
-object EquipScanTaskQueryService : SObjectService<EquipScanTaskQuery>(SMybatisDao(EquipScanTaskQuery::class.java))  {
+object EquipScanTaskQueryService : SObjectService<EquipScanTaskQuery>(SMybatisDao(EquipScanTaskQuery::class.java))  { // Class EquipScanTaskService
 
     /** 字典平台对象类型 */
   //  private val defClassService = SBaseService(SMybatisDao(DefClass::class.java))
@@ -207,4 +208,46 @@ object EquipScanTaskQueryService : SObjectService<EquipScanTaskQuery>(SMybatisDa
     }
 
 
-} // Class EquipScanTaskService
+
+    /**
+     * 分类统计
+     */
+    fun categoryStatistics(projectId:String,id: String,equipId: String): ArrayList<CategoryStatistics>{
+        val result = ArrayList<CategoryStatistics>()
+        //查询所有的设备类别
+        val dictTypeList = dmpBaseService?.queryDictType(JSONObject())
+        val dictTypeMap = HashMap<String, String>()
+        if (dictTypeList != null) {
+            for(dictType in dictTypeList){
+                dictType.code?.let { dictType.name?.let { it1 -> dictTypeMap.put(it, it1) } }
+            }
+        }
+
+        //查询设备任务
+        val request = SQueryRequest()
+        val withFilterList = ArrayList<SFilter>()
+        withFilterList.add(SFilter.eq("projectId", projectId))
+        withFilterList.add(SFilter.eq("taskParentId", id))
+        withFilterList.add(SFilter.eq("parentId", equipId))
+        val pageQuery = EquipScanTaskQueryService.pageQuery(request, withFilterList)
+        val equipScanTask = pageQuery.content
+
+        if (!pageQuery.content.isNullOrEmpty()&&pageQuery.content!!.size>0) {
+            val equipScanTaskMap: Map<String?, List<EquipScanTaskQuery>> = equipScanTask?.stream()
+                    ?.collect(Collectors.groupingBy(EquipScanTaskQuery::classCode)) as Map<String?, List<EquipScanTaskQuery>>
+
+            for ((key, value) in equipScanTaskMap.entries) {
+                val categoryStatistics = CategoryStatistics()
+                categoryStatistics.code = key
+                categoryStatistics.name = dictTypeMap.get(key)
+                categoryStatistics.count = value.size
+                result.add(categoryStatistics)
+            }
+
+        }
+        return result
+    }
+
+
+
+}

+ 42 - 0
scanbuilding/src/main/kotlin/com/persagy/server/services/task/ModelScanTaskQueryService.kt

@@ -31,6 +31,8 @@ import com.persagy.database.SFilter
 import com.persagy.database.functions.SLength
 import com.persagy.mybatis.SMybatisDao
 import com.persagy.server.datacenter.models.entities.dictnew.DefClass
+import com.persagy.server.datacenter.models.entities.task.CategoryStatistics
+import com.persagy.server.datacenter.models.entities.task.EquipScanTaskQuery
 import com.persagy.server.datacenter.models.entities.task.ModelScanTaskQuery
 import com.persagy.server.services.DmpBaseService
 import com.persagy.server.services.base.RService
@@ -40,6 +42,7 @@ import com.persagy.service.SPageContext
 import com.persagy.service.models.requests.SQueryRequest
 import com.persagy.service.models.responses.SQueryResponse
 import org.springframework.beans.factory.annotation.Autowired
+import java.util.stream.Collectors
 
 
 /**
@@ -112,4 +115,43 @@ object ModelScanTaskQueryService : RService<ModelScanTaskQuery>(SMybatisDao(Mode
         return pageQuery
     } // Fun
 
+
+    /**
+     * 分类统计
+     */
+    fun categoryStatisticsModel(projectId:String,id: String,equipId: String): ArrayList<CategoryStatistics>{
+        val result = ArrayList<CategoryStatistics>()
+        //查询所有的设备类别
+        val dictTypeList = dmpBaseService?.queryDictType(JSONObject())
+        val dictTypeMap = HashMap<String, String>()
+        if (dictTypeList != null) {
+            for(dictType in dictTypeList){
+                dictType.code?.let { dictType.name?.let { it1 -> dictTypeMap.put(it, it1) } }
+            }
+        }
+        //查询设备任务
+        val request = SQueryRequest()
+        val withFilterList = ArrayList<SFilter>()
+        withFilterList.add(SFilter.eq("projectId", projectId))
+        withFilterList.add(SFilter.eq("taskParentId", id))
+        withFilterList.add(SFilter.eq("parentId", equipId))
+        val pageQuery = ModelScanTaskQueryService.pageQuery(request, withFilterList)
+        val equipScanTask = pageQuery.content
+
+        if (!pageQuery.content.isNullOrEmpty()&&pageQuery.content!!.size>0) {
+            val equipScanTaskMap: Map<String?, List<ModelScanTaskQuery>> = equipScanTask?.stream()
+                    ?.collect(Collectors.groupingBy(ModelScanTaskQuery::classCode)) as Map<String?, List<ModelScanTaskQuery>>
+
+            for ((key, value) in equipScanTaskMap.entries) {
+                val categoryStatistics = CategoryStatistics()
+                categoryStatistics.code = key
+                categoryStatistics.name = dictTypeMap.get(key)
+                categoryStatistics.count = value.size
+                result.add(categoryStatistics)
+            }
+
+        }
+        return result
+    }
+
 } // Class ModelScanTaskService

+ 7 - 2
scanbuilding/src/main/kotlin/com/persagy/server/services/task/ModelScanTaskService.kt

@@ -47,7 +47,9 @@ import com.persagy.server.mappers.StatisticsCountMapper
 import com.persagy.server.scanbuilding.UserLog
 import com.persagy.server.services.AdmBaseService
 import com.persagy.server.services.DmpBaseService
+import com.persagy.server.services.StatisticsCountService
 import com.persagy.server.services.base.RService
+import com.persagy.server.services.task.ModelScanTaskQueryService.categoryStatisticsModel
 import com.persagy.server.util.AdmEntityTransferUtil
 import com.persagy.server.util.IdUtils
 import com.persagy.service.SBaseService
@@ -90,6 +92,9 @@ object ModelScanTaskService : RService<ModelScanTask>(SMybatisDao(ModelScanTask:
     @Autowired
     private val dmpBaseService: DmpBaseService? = DmpBaseService()
 
+    @Autowired
+    private val statisticsCountService: StatisticsCountService? = StatisticsCountService()
+
 
     /** 实例化 mapper 对象 */
     val mapper by lazy {
@@ -706,9 +711,9 @@ object ModelScanTaskService : RService<ModelScanTask>(SMybatisDao(ModelScanTask:
         try {
             val projectId = SPageContext.getHeader("projectId")
             if (!equipScanTask.id.isNullOrEmpty()&&!equipScanTask.equipId.isNullOrEmpty()){
-                val categoryStatistics = mapper.categoryStatisticsModel(projectId!!,equipScanTask.id!!, equipScanTask.equipId!!)
+                val categoryStatistics = statisticsCountService?.categoryStatisticsModel(projectId!!,equipScanTask.id!!, equipScanTask.equipId!!)
                 val sQueryResponse = SQueryResponse<CategoryStatistics>()
-                sQueryResponse.total = categoryStatistics.size.toLong()
+                sQueryResponse.total = categoryStatistics?.size?.toLong()
                 sQueryResponse.content = categoryStatistics
                 sQueryResponse.result = SResponseType.success
                 return sQueryResponse

+ 10 - 6
scanbuilding/src/main/kotlin/com/persagy/server/services/task/ScanTaskBaseService.kt

@@ -36,6 +36,7 @@ import com.persagy.server.datacenter.models.entities.task.base.ScanTaskBase
 import com.persagy.server.mappers.StatisticsCountMapper
 import com.persagy.server.services.AdmBaseService
 import com.persagy.server.services.DmpBaseService
+import com.persagy.server.services.StatisticsCountService
 import com.persagy.server.services.base.RService
 import com.persagy.server.util.AdmEntityTransferUtil
 import com.persagy.service.SPageContext
@@ -64,6 +65,9 @@ object ScanTaskBaseService : RService<ScanTaskBase>(SMybatisDao(ScanTaskBase::cl
     @Autowired
     private val admBaseService: AdmBaseService? = AdmBaseService()
 
+    @Autowired
+    private val statisticsCountService: StatisticsCountService? = StatisticsCountService()
+
     /**
      * 查询所有设备类型或设备族
      */
@@ -281,9 +285,9 @@ object ScanTaskBaseService : RService<ScanTaskBase>(SMybatisDao(ScanTaskBase::cl
         try {
             val projectId = SPageContext.getHeader("projectId").toString()
             if (!equipScanTask.id.isNullOrEmpty()&&!equipScanTask.equipId.isNullOrEmpty()){
-                val categoryStatistics = mapper.categoryStatistics(projectId,equipScanTask.id!!, equipScanTask.equipId!!)
+                val categoryStatistics = statisticsCountService?.categoryStatistics(projectId,equipScanTask.id!!, equipScanTask.equipId!!)
                 val sQueryResponse = SQueryResponse<CategoryStatistics>()
-                sQueryResponse.total = categoryStatistics.size.toLong()
+                sQueryResponse.total = categoryStatistics?.size?.toLong()
                 sQueryResponse.content = categoryStatistics
                 sQueryResponse.result = SResponseType.success
                 return sQueryResponse
@@ -307,16 +311,16 @@ object ScanTaskBaseService : RService<ScanTaskBase>(SMybatisDao(ScanTaskBase::cl
             val projectId = SPageContext.getHeader("projectId")
             if (!equipScanTask.id.isNullOrEmpty()&&!equipScanTask.equipId.isNullOrEmpty()){
                 if (!type.isNullOrEmpty()&&type == "model"){
-                    val categoryStatistics = ModelScanTaskService.mapper.categoryStatisticsModel(projectId!!,equipScanTask.id!!, equipScanTask.equipId!!)
+                    val categoryStatistics = statisticsCountService?.categoryStatisticsModel(projectId!!,equipScanTask.id!!, equipScanTask.equipId!!)
                     val sQueryResponse = SQueryResponse<CategoryStatistics>()
-                    sQueryResponse.total = categoryStatistics.size.toLong()
+                    sQueryResponse.total = categoryStatistics?.size?.toLong()
                     sQueryResponse.content = categoryStatistics
                     sQueryResponse.result = SResponseType.success
                     return sQueryResponse
                 }else{
-                    val categoryStatistics = mapper.categoryStatistics(projectId!!,equipScanTask.id!!, equipScanTask.equipId!!)
+                    val categoryStatistics = statisticsCountService?.categoryStatistics(projectId!!,equipScanTask.id!!, equipScanTask.equipId!!)
                     val sQueryResponse = SQueryResponse<CategoryStatistics>()
-                    sQueryResponse.total = categoryStatistics.size.toLong()
+                    sQueryResponse.total = categoryStatistics?.size?.toLong()
                     sQueryResponse.content = categoryStatistics
                     sQueryResponse.result = SResponseType.success
                     return sQueryResponse