Browse Source

@task: download floor map

bai 3 years ago
parent
commit
29f5d9b579

+ 1 - 1
demo/build.gradle

@@ -226,7 +226,7 @@ dependencies {
     implementation 'org.kodein.di:kodein-di-framework-android-x-viewmodel:7.8.0'
 
     // kotlin
-    implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0-RC'
+    implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0'
 
     implementation 'com.arashivision.sdk:sdkcamera:1.3.10'
     implementation 'com.arashivision.sdk:sdkmedia:1.3.10'

+ 8 - 0
demo/src/main/java/com/framework/app/Constants.kt

@@ -0,0 +1,8 @@
+package com.framework.app
+
+/**
+ * 测试服务器 IP
+ */
+const val testIP = "http://192.168.0.48:8876/"
+
+const val pathDownloadMap = "adm/downloadMap?key="

+ 6 - 0
demo/src/main/java/com/framework/mvvm/model/db/dao/ObjectDao.kt

@@ -35,6 +35,12 @@ interface ObjectDao {
     @Query("select * from object where obj_type = 'floor'")
     suspend fun getFloors(): List<ObjectEntity>
 
+    /**
+     * 更新 ObjectEntity
+     */
+    @Update
+    suspend fun upObject(obj: ObjectEntity)
+
     // @Transaction
     // @Query("select * from object")
     // fun getObjectAndInfosWithOutlines() : List<ObjectAndInfosWithOutlines>

+ 2 - 2
demo/src/main/java/com/framework/mvvm/model/db/entity/EquipmentEntity.kt

@@ -12,8 +12,8 @@ data class EquipmentEntity(
     @PrimaryKey val id: String,
     @ColumnInfo(name = "valid") val valid: Int,                  // 1 正常 0 删除
     @ColumnInfo(name = "project_id") val projectId: String?,      // 项目 id
-    @ColumnInfo(name = "code") val code: String?,                 // 系统编码
-    @ColumnInfo(name = "name") val name: String?,                 // 系统名称
+    @ColumnInfo(name = "code") val code: String?,                 // 设备编码
+    @ColumnInfo(name = "name") val name: String?,                 // 设备名称
     @ColumnInfo(name = "obj_type") val objType: String?,          // 对象类型 "system"
     @ColumnInfo(name = "group_code") val groupCode: String?,      // 集团编码
     @ColumnInfo(name = "major_code") val majorCode: String?,      // 专业编码

+ 2 - 2
demo/src/main/java/com/framework/mvvm/model/db/entity/ObjectEntity.kt

@@ -1,6 +1,5 @@
 package com.framework.mvvm.model.db.entity
 
-import android.graphics.Outline
 import androidx.annotation.NonNull
 import androidx.room.ColumnInfo
 import androidx.room.Entity
@@ -46,7 +45,8 @@ data class ObjectEntity(
     @ColumnInfo(name = "infos")
     @Contextual
     var infos: JSONObject?,               // 信息点数据: Json 数据格式
-    @ColumnInfo(name = "str_infos") var strInfos: String?               // 信息点数据: Json 数据格式
+    @ColumnInfo(name = "str_infos") var strInfos: String?,           // 信息点数据: Json 数据格式
+    @ColumnInfo(name = "floor_map") var floorMap: String?            // 楼层地图
 )
 
 

+ 6 - 0
demo/src/main/java/com/framework/mvvm/model/repository/AdmRepository.kt

@@ -207,4 +207,10 @@ class AdmRepository(
         return db.objectDao().getFloors()
     }
 
+    /**
+     * 更新 ObjectEntity
+     */
+    suspend fun upObject(obj: ObjectEntity) {
+        db.objectDao().upObject(obj)
+    }
 }

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/vo/FloorInfo.kt

@@ -13,5 +13,5 @@ data class FloorInfo(
     val floorMap: String?,          // 楼层地图
     val floorElevation: Double,
     val floorSequenceID: Double,
-    //val outline: List<Outline>
+    val outline: List<Outline> = ArrayList()
 )

+ 5 - 1
demo/src/main/java/com/framework/mvvm/model/vo/Outline.kt

@@ -1,5 +1,6 @@
 package com.framework.mvvm.model.vo
 
+import kotlinx.serialization.SerialName
 import kotlinx.serialization.Serializable
 
 /**
@@ -7,7 +8,10 @@ import kotlinx.serialization.Serializable
  */
 @Serializable
 data class Outline(
+    @SerialName("X")
     val x: Double,
+    @SerialName("Y")
     val y: Double,
-    var z: Double = 0.0
+    @SerialName("Z")
+    val z: Double = 0.0
 )

+ 22 - 14
demo/src/main/java/com/framework/mvvm/mv/AdmViewModel.kt

@@ -1,12 +1,19 @@
 package com.framework.mvvm.mv
 
 import androidx.lifecycle.*
+import cn.sagacloud.cadengine.OkhttpUtil
+import com.framework.app.pathDownloadMap
+import com.framework.app.testIP
 import com.framework.mvvm.model.data.AbsentLiveData
 import com.framework.mvvm.model.data.Data
 import com.framework.mvvm.model.db.entity.ProjectEntity
 import com.framework.mvvm.model.repository.AdmRepository
 import com.framework.mvvm.model.vo.AdmRequest
+import com.framework.mvvm.model.vo.FloorInfo
+import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
+import kotlinx.serialization.decodeFromString
+import kotlinx.serialization.json.Json
 
 
 class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
@@ -46,23 +53,24 @@ class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
      * 请求建筑
      */
     fun requestBuilding(request: AdmRequest) {
-        viewModelScope.launch {
+        viewModelScope.launch(Dispatchers.IO) {
             repository.requestBuilding(request)
-        }
-    }
-
-    /**
-     * 下载底图
-     */
-    fun downloadFloorMap() {
-        viewModelScope.launch {
-            val floors =  repository.getFloors()
+            val floors = repository.getFloors()
             floors.forEach {
-
+                val strInfo = it.strInfos
+                if (!strInfo.isNullOrEmpty()) {
+                    try {
+                        val info = Json.decodeFromString<FloorInfo>(strInfo)
+                        val map = info.floorMap
+                        val floorMap =
+                            OkhttpUtil.getGzipMap("$testIP$pathDownloadMap${map!!}")
+                        it.floorMap = floorMap
+                        repository.upObject(it)
+                    } catch (e: Exception) {
+                        println("floor map Exception: $e")
+                    }
+                }
             }
-            // 遍历 floor ,创建 FloorInfo
-            //  获取 floorMap
-
         }
     }
 }