Browse Source

@task: download building data

bai 3 years ago
parent
commit
ded6b0e404

+ 49 - 0
demo/src/main/java/com/framework/mvvm/mv/AdmViewModel.kt

@@ -1,10 +1,14 @@
 package com.framework.mvvm.mv
 
+import android.content.SharedPreferences
+import androidx.core.content.edit
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.viewModelScope
 import cn.sagacloud.cadengine.OkhttpUtil
 import com.framework.app.IP
+import com.framework.app.deviceId
 import com.framework.app.pathDownloadMap
+import com.framework.app.timestamp
 import com.framework.mvvm.model.db.entity.ObjectEntity
 import com.framework.mvvm.model.repository.AdmRepository
 import com.framework.mvvm.model.vo.AdmRequest
@@ -84,6 +88,51 @@ class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
     }
 
     /**
+     *  下载建筑数据
+     */
+    fun downloadBuilding(sp: SharedPreferences, block: (() -> Unit)? = null) {
+        viewModelScope.launch(Dispatchers.IO) {
+            val buildings = repository.getBuildings()
+            println("downloadBuilding will download : ${buildings.size} $buildings")
+            for (building in buildings) {
+                repository.requestBuilding(
+                    AdmRequest(
+                        userId = "bdtp",
+                        projectId = building.projectId,
+                        groupCode = "BR",
+                        buildingId = building.id,
+                        uploadFlag = sp.getString(deviceId, "") ?: "",
+                        lastDownloadTime = sp.getString(timestamp, "") ?: ""
+                    )
+                ) {
+                    println("downloadBuilding save buildingId and Timestamp  -> ${it.buildingId}, ${it.timestamp}")
+                    sp.edit { putString(it.buildingId, it.timestamp) }
+                }
+            }
+            withContext(Dispatchers.Main) {
+                block?.invoke()
+            }
+        }
+        /*val buildings = mVm.getBuildings()
+        println("download buildings: ${buildings.size} $buildings")
+        for (building in buildings) {
+            mVm.requestBuilding(
+                AdmRequest(
+                    userId = "bdtp",
+                    projectId = building.projectId,
+                    groupCode = "BR",
+                    buildingId = building.id,
+                    uploadFlag = sp.getString(deviceId, "") ?: "",
+                    lastDownloadTime = sp.getString(timestamp, "") ?: ""
+                )
+            ) {
+                println("buildingIdTimestamp  -> ${it.buildingId}, ${it.timestamp}")
+                sp.edit { putString(it.buildingId, it.timestamp) }
+            }
+        }*/
+    }
+
+    /**
      * 获取建筑数量
      */
     val buildings: StateFlow<List<ObjectEntity>> = flow {

+ 2 - 22
demo/src/main/java/com/sybotan/android/demo/activities/PocActivity.kt

@@ -9,9 +9,6 @@ import androidx.appcompat.app.AppCompatActivity
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.app.ActivityCompat
 import androidx.core.content.edit
-import androidx.lifecycle.lifecycleScope
-import com.framework.app.deviceId
-import com.framework.app.timestamp
 import com.framework.app.tools.MacUtil
 import com.framework.mvvm.model.vo.AdmRequest
 import com.framework.mvvm.mv.AdmViewModel
@@ -19,7 +16,6 @@ import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.poc.SceneActivity
 import com.sybotan.android.demo.activities.poc.SpaceActivity
 import com.sybotan.android.demo.tools.ToastUtils
-import kotlinx.coroutines.launch
 import org.jetbrains.anko.startActivity
 import org.kodein.di.DI
 import org.kodein.di.DIAware
@@ -47,24 +43,8 @@ class PocActivity : AppCompatActivity(), DIAware {
         downloadBtn = findViewById(R.id.downloadBtn)
         uploadBtn = findViewById(R.id.uploadBtn)
         downloadBtn.setOnClickListener {
-            lifecycleScope.launch {
-                val buildings = mVm.getBuildings()
-                println("download buildings: ${buildings.size} $buildings")
-                for (building in buildings) {
-                    mVm.requestBuilding(
-                        AdmRequest(
-                            userId = "bdtp",
-                            projectId = building.projectId,
-                            groupCode = "BR",
-                            buildingId = building.id,
-                            uploadFlag = sp.getString(deviceId, "") ?: "",
-                            lastDownloadTime = sp.getString(timestamp, "") ?: ""
-                        )
-                    ) {
-                        println("buildingIdTimestamp  -> ${it.buildingId}, ${it.timestamp}")
-                        sp.edit { putString(it.buildingId, it.timestamp) }
-                    }
-                }
+            mVm.downloadBuilding(sp) {
+                ToastUtils.showMyToast("下载建筑数据")
             }
         }