Browse Source

扫楼:模型文件查询接口函数转换

linhuili 3 years ago
parent
commit
dd55e149d1

+ 4 - 3
scanbuilding/build.gradle

@@ -88,13 +88,14 @@ dependencies {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // Sybotan依赖
 
+
     compile group: "com.persagy", name: "persagy-kotlin-base", version: PERSAGY_KOTLIN_VERSION
     compile group: "com.persagy", name: "persagy-kotlin-database", version: PERSAGY_KOTLIN_VERSION
     compile group: "com.persagy", name: "persagy-kotlin-mybatis", version: PERSAGY_KOTLIN_VERSION
-    //compile group: "com.persagy", name: "persagy-kotlin-postgresql", version: PERSAGY_KOTLIN_VERSION
-    compile group: "com.persagy", name: "persagy-service-base", version: PERSAGY_SERVICE_VERSION_LAST
-    compile group: "com.persagy", name: "persagy-service-mybatis", version: PERSAGY_SERVICE_VERSION_LAST
     compile group: "com.persagy", name: "persagy-kotlin-mysql", version: PERSAGY_KOTLIN_VERSION
+    compile group: "com.persagy", name: "persagy-service-base", version: PERSAGY_SERVICE_VERSION_LAST
+    compile group: "com.persagy", name: "persagy-service-mybatis", version: PERSAGY_SERVICE_VERSION
+    compile group: "com.persagy", name: "persagy-service-mysql", version: PERSAGY_SERVICE_VERSION
     compile group: "com.persagy", name: "dmp-digital-starter", version: DIGITAL_START_VERSION
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

+ 29 - 0
scanbuilding/src/main/kotlin/com/persagy/server/client/AdmMiddlewareClient.kt

@@ -0,0 +1,29 @@
+package com.persagy.server.client
+
+import com.persagy.dmp.basic.config.DigitalFeignConfig
+import com.persagy.server.constant.AdmMiddlewareUrlConstant
+import com.persagy.server.datacenter.models.entities.task.BuildingDic
+import com.persagy.service.models.requests.SQueryRequest
+import com.persagy.service.models.responses.SQueryResponse
+import org.springframework.cloud.openfeign.FeignClient
+import org.springframework.cloud.openfeign.SpringQueryMap
+import org.springframework.web.bind.annotation.PostMapping
+import org.springframework.web.bind.annotation.RequestBody
+
+/**
+ * @description:数据中台dmp-rwd 物理世界、数据字典、IOT 接口feign
+ * @author:lgy
+ * @data:2021/8/11 14:56
+ */
+@FeignClient(name = "adm-middleware", configuration = [DigitalFeignConfig::class])
+interface AdmMiddlewareClient {
+    /**
+     * @description: 查询对象列表
+     * @param: objectUrlParam 对象请求url通用参数
+     * @param: criteria post请求参数
+     * @return: com.persagy.dmp.common.DmpResult
+     */
+    @PostMapping(AdmMiddlewareUrlConstant.BUILDING_QUERY)
+    fun queryBuilding(@SpringQueryMap projectId: String?, @RequestBody criteria: SQueryRequest?): SQueryResponse<BuildingDic>?
+
+ }

+ 15 - 0
scanbuilding/src/main/kotlin/com/persagy/server/constant/AdmMiddlewareUrlConstant.java

@@ -0,0 +1,15 @@
+package com.persagy.server.constant;
+
+/**
+ * Description
+ *
+ * @author:linhuili
+ * @date:2021/10/25
+ */
+public class AdmMiddlewareUrlConstant {
+
+    /**
+     * 建筑查询
+     */
+    public final static String BUILDING_QUERY = "/object/building/query";
+}

+ 39 - 0
scanbuilding/src/main/kotlin/com/persagy/server/services/AdmBaseService.kt

@@ -0,0 +1,39 @@
+package com.persagy.server.services
+
+import cn.hutool.core.collection.CollUtil
+import com.persagy.server.Opts
+import com.persagy.server.client.AdmMiddlewareClient
+import com.persagy.server.datacenter.models.entities.task.BuildingDic
+import com.persagy.service.models.requests.SQueryRequest
+import com.persagy.service.utils.SSpringContextUtil
+import org.springframework.stereotype.Service
+
+/**
+ * ADM基础接口查询
+ * @author:linhuili
+ * @date:2021/10/19
+ */
+@Service
+class AdmBaseService {
+
+    /** 自定义 sql */
+    private val admMiddlewareClient by lazy {
+        SSpringContextUtil.getBean(AdmMiddlewareClient::class.java) as AdmMiddlewareClient
+    }
+
+    /**
+     * 查询建筑
+     * @param params
+     * @return
+     */
+    fun queryBuilding(criteria: SQueryRequest?): List<BuildingDic>? {
+        //查询对象信息
+        val result = admMiddlewareClient!!.queryBuilding(Opts.projectId, criteria) ?: return ArrayList()
+        if(CollUtil.isEmpty(result.content)){
+            return ArrayList<BuildingDic>()
+        }
+        return result.content
+    }
+
+
+}

+ 2 - 1
scanbuilding/src/main/kotlin/com/persagy/server/services/DmpBaseService.kt

@@ -1,5 +1,6 @@
 package com.persagy.server.services
 
+import cn.hutool.core.collection.CollUtil
 import com.alibaba.fastjson.JSONArray
 import com.alibaba.fastjson.JSONObject
 import com.persagy.server.Opts
@@ -35,7 +36,7 @@ class DmpBaseService {
         instanceUrlParam.projectId = Opts.projectId
         //查询对象信息
         val dmpResult = rwdClient!!.queryDictObjectType(instanceUrlParam, params) ?: return ArrayList()
-        if(dmpResult.data == null){
+        if(CollUtil.isEmpty(dmpResult.data)){
             return ArrayList<EquipCategoryDic>()
         }
         return AdmEntityTransferUtil.toAdmMultiEntity(dmpResult.data, null, EquipCategoryDic::class.java)

+ 54 - 5
scanbuilding/src/main/kotlin/com/persagy/server/services/task/ModelScanTaskService.kt

@@ -26,6 +26,7 @@
 
 package com.persagy.server.services.task
 
+import cn.hutool.core.collection.CollUtil
 import cn.sagacloud.server.scanbuilding.User
 import com.alibaba.fastjson.JSONObject
 import com.google.gson.Gson
@@ -33,6 +34,7 @@ import com.google.gson.reflect.TypeToken
 import com.persagy.base.extensions.toJson
 import com.persagy.database.SFilter
 import com.persagy.database.SPageQueryInfo
+import com.persagy.database.extensions.keyMap
 import com.persagy.mybatis.SMybatisDao
 import com.persagy.server.Opts
 import com.persagy.server.datacenter.models.entities.assistant.TaskPic
@@ -56,7 +58,7 @@ import com.persagy.service.utils.SSpringContextUtil
 import org.slf4j.LoggerFactory
 import org.springframework.web.bind.annotation.RequestBody
 import java.util.*
-import kotlin.collections.ArrayList
+import java.util.stream.Collectors
 
 
 /**
@@ -419,12 +421,58 @@ object ModelScanTaskService : RService<ModelScanTask>(SMybatisDao(ModelScanTask:
      * 查询所有模型文件夹和文件
      */
     fun modelFileQuery(): SQueryResponse<ModelFolder> {
-        val pageQuery: SPageQueryInfo<ModelFolder>
+        val pageQuery = SPageQueryInfo<ModelFolder>(1, 1000)
         val gson = Gson()
         return try {
-            val projectId = SPageContext.getHeader("projectId")
             var request = SQueryRequest()
-            val modelFolderService = SBaseService(SMybatisDao(ModelFolder::class.java))
+            request.filters = "ProjectId = '${SPageContext.getHeader("ProjectId")}'";
+            request.distinct = true
+            val response = pageQuery(request, null);
+
+            //文件夹集合
+            val folderMap = HashMap<String,String>()
+            //集合封装:文件夹->模型文件
+           /* val modelFiles = arrayListOf<ModelFile>()*/
+            val folderFileMap = HashMap<String,ArrayList<ModelFile>>()
+            for(folder in response.content!!){
+                folder.folderId?.let { folder.folderName?.let { it1 -> folderMap.put(it, it1) } }
+                //获取文件夹中的所有文件
+                var modelFiles: ArrayList<ModelFile>? =  folderFileMap.get(folder.folderId)
+                if (CollUtil.isEmpty(modelFiles)) {
+                    modelFiles =ArrayList<ModelFile>()
+                }
+                val modelFile = ModelFile()
+                modelFile.fileId = folder.fileId
+                modelFile.fileName = folder.fileName
+
+                val fileIds = modelFiles?.stream()?.map(ModelFile::fileId)?.collect(Collectors.toList<String>())
+                if (fileIds != null) {
+                    if(fileIds.contains(folder.fileId)){
+                       continue
+                    }
+                }
+                if (modelFiles != null) {
+                    modelFiles.add(modelFile)
+                }
+                folder.folderId?.let { folderFileMap.put(it, modelFiles as ArrayList<ModelFile>) }
+            }
+
+            //结果集封装:文件夹->模型文件
+            val modelFolders = arrayListOf<ModelFolder>()
+            for ((folderId, folderName) in folderMap.entries) {
+                val fileList = folderFileMap.get(folderId)
+
+                val modelFolder = ModelFolder()
+                modelFolder.folderId = folderId
+                modelFolder.folderName = folderName
+
+                modelFolder.fileList = fileList
+                modelFolder.fileListStr = null
+                modelFolders.add(modelFolder)
+            }
+
+            //历史逻辑:
+            /*val modelFolderService = SBaseService(SMybatisDao(ModelFolder::class.java))
             val modelFolderQueryBuilder = modelFolderService.select(request.filters)
             modelFolderQueryBuilder.tableName = "scantask.f_get_modelfile('$projectId')"
             pageQuery = modelFolderQueryBuilder.pageQuery(1, 1000)
@@ -439,7 +487,8 @@ object ModelScanTaskService : RService<ModelScanTask>(SMybatisDao(ModelScanTask:
                     folder.fileList = siInSpList
                     folder.fileListStr = null
                 }
-            }
+            }*/
+            pageQuery.content = modelFolders;
             SQueryResponse(pageQuery)
         } catch (e: Exception) {
             e.printStackTrace()

+ 26 - 2
scanbuilding/src/main/kotlin/com/persagy/server/services/task/ScanTaskBaseService.kt

@@ -35,6 +35,7 @@ import com.persagy.mybatis.SMybatisDao
 import com.persagy.server.datacenter.models.entities.task.*
 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.base.RService
 import com.persagy.service.SBaseService
@@ -61,10 +62,34 @@ object ScanTaskBaseService : RService<ScanTaskBase>(SMybatisDao(ScanTaskBase::cl
     @Autowired
     private val dmpBaseService: DmpBaseService? = DmpBaseService()
 
+    @Autowired
+    private val admBaseService: AdmBaseService? = AdmBaseService()
+
     /**
      * 查询所有设备类型或设备族
      */
     fun equipCategoryQuery(type: String): SQueryResponse<EquipCategoryDic> {
+        val sQueryResponse = SQueryResponse<EquipCategoryDic>(SResponseType.success)
+        val projectId = SPageContext.getHeader("projectId").toString()
+        var request = SQueryRequest()
+        request.filters = "ProjectId = '${SPageContext.getHeader("ProjectId")}'";
+
+        request.projection = arrayListOf("category")
+        request.distinct = true
+        val tasks = ArrayList<ScanTaskBase>()
+        if(type == "equip") {
+            // 如果是equip
+            val response = EquipScanTaskService.pageQuery(request, null)
+            tasks.addAll(response.content!!)
+        } else if(type == "property") {
+            // 如果是property
+            val response = PropertyScanTaskService.pageQuery(request, null)
+            tasks.addAll(response.content!!)
+        } else if(type == "model") {
+            // 如果是model
+            val response = ModelScanTaskService.pageQuery(request, null)
+            tasks.addAll(response.content!!)
+        }
         /*val pageQuery: SPageQueryInfo<EquipCategoryDic>
         return try {
              val equipCategoryDicService = SBaseService(SMybatisDao(EquipCategoryDic::class.java))
@@ -79,7 +104,6 @@ object ScanTaskBaseService : RService<ScanTaskBase>(SMybatisDao(ScanTaskBase::cl
              e.printStackTrace()
              SQueryResponse(SResponseType.failure, e.message!!)
          }*/
-        val sQueryResponse = SQueryResponse<EquipCategoryDic>(SResponseType.success)
         val param = JSONObject()
         val criteria = JSONObject()
          if ("equip" == type) {
@@ -133,7 +157,7 @@ object ScanTaskBaseService : RService<ScanTaskBase>(SMybatisDao(ScanTaskBase::cl
                 cascade.filters = "id in (" +floors!!.joinToString(",", ",", "'") + ")"
                 buildingRequest.cascade = arrayListOf(cascade)
                 // TODO 调用adm-middleware建筑查询接口
-                // ...
+                pageQuery.content = admBaseService?.queryBuilding(buildingRequest) as ArrayList<BuildingDic>?
                 // TODO 转换为BuildingDic
                 // ...
             }