Browse Source

@task: upload data

bai 3 years ago
parent
commit
ac0f2fa84c
20 changed files with 113 additions and 65 deletions
  1. 1 1
      demo/src/main/java/com/framework/mvvm/model/data/Http.kt
  2. 3 0
      demo/src/main/java/com/framework/mvvm/model/db/dao/FileDao.kt
  3. 3 0
      demo/src/main/java/com/framework/mvvm/model/db/dao/ObjectDao.kt
  4. 4 1
      demo/src/main/java/com/framework/mvvm/model/db/dao/PipeDao.kt
  5. 3 0
      demo/src/main/java/com/framework/mvvm/model/db/dao/ProblemArchDao.kt
  6. 3 1
      demo/src/main/java/com/framework/mvvm/model/db/dao/ProblemEquipDao.kt
  7. 3 0
      demo/src/main/java/com/framework/mvvm/model/db/dao/QrCodeDao.kt
  8. 3 0
      demo/src/main/java/com/framework/mvvm/model/db/dao/RelationDao.kt
  9. 3 0
      demo/src/main/java/com/framework/mvvm/model/db/dao/SpaceDao.kt
  10. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/entity/FileEntity.kt
  11. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/entity/ObjectEntity.kt
  12. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/entity/PipeEntity.kt
  13. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/entity/ProblemArchEntity.kt
  14. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/entity/ProblemEquipEntity.kt
  15. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/entity/QrCodeEntity.kt
  16. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/entity/RelationEntity.kt
  17. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/entity/SpaceEntity.kt
  18. 76 37
      demo/src/main/java/com/framework/mvvm/model/repository/AdmRepository.kt
  19. 2 16
      demo/src/main/java/com/framework/mvvm/mv/AdmViewModel.kt
  20. 1 1
      demo/src/main/java/com/sybotan/android/demo/activities/PocActivity.kt

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/data/Http.kt

@@ -35,7 +35,7 @@ suspend fun <T> request(block: suspend () -> Model<T>): Response<T> {
     runCatching {
         block()
     }.onSuccess {
-        // "000000" 代表数据请求成功
+        // "00000" 代表数据请求成功
         result = if (it.code == "00000") {
             Response.create(it.data)
         } else {

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

@@ -26,6 +26,9 @@ interface FileDao {
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     suspend fun insFiles(files: List<FileEntity>)
 
+    @Update
+    suspend fun updateFiles(files: List<FileEntity>)
+
     @Delete
     suspend fun delFile(file: FileEntity)
 }

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

@@ -29,6 +29,9 @@ interface ObjectDao {
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     suspend fun insObjects(objects: List<ObjectEntity>)
 
+    @Update
+    suspend fun updateObjects(objects: List<ObjectEntity>)
+
     @Delete
     suspend fun delObject(obj: ObjectEntity)
 

+ 4 - 1
demo/src/main/java/com/framework/mvvm/model/db/dao/PipeDao.kt

@@ -25,7 +25,10 @@ interface PipeDao {
     suspend fun insPipes(pipes: List<PipeEntity>)
 
     @Update
-    suspend fun upPipe(pipe: PipeEntity)
+    suspend fun updatePipe(pipe: PipeEntity)
+
+    @Update
+    suspend fun updatePipes(pipes: List<PipeEntity>)
 
     @Delete
     suspend fun delConfig(config: PipeConfigEntity)

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

@@ -23,6 +23,9 @@ interface ProblemArchDao {
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     suspend fun insProblems(problems: List<ProblemArchEntity>)
 
+    @Update
+    suspend fun updateProblems(problems: List<ProblemArchEntity>)
+
     @Delete
     suspend fun delProblem(problem: ProblemArchEntity)
 

+ 3 - 1
demo/src/main/java/com/framework/mvvm/model/db/dao/ProblemEquipDao.kt

@@ -1,7 +1,6 @@
 package com.framework.mvvm.model.db.dao
 
 import androidx.room.*
-import com.framework.mvvm.model.db.entity.ProblemArchEntity
 import com.framework.mvvm.model.db.entity.ProblemEquipEntity
 
 /**
@@ -24,6 +23,9 @@ interface ProblemEquipDao {
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     suspend fun insProblems(problems: List<ProblemEquipEntity>)
 
+    @Update
+    suspend fun updateProblems(problems: List<ProblemEquipEntity>)
+
     @Delete
     suspend fun delProblem(config: ProblemEquipEntity)
 }

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

@@ -26,6 +26,9 @@ interface QrCodeDao {
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     suspend fun insQrCodes(qrCodes: List<QrCodeEntity>)
 
+    @Update
+    suspend fun updateQrCodes(qrCodes: List<QrCodeEntity>)
+
     @Delete
     suspend fun delQrCode(qrCode: QrCodeEntity)
 }

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

@@ -23,6 +23,9 @@ interface RelationDao {
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     suspend fun insRelations(relations: List<RelationEntity>)
 
+    @Update
+    suspend fun updateRelations(relations: List<RelationEntity>)
+
     @Delete
     suspend fun delRelation(relation: RelationEntity)
 }

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

@@ -32,6 +32,9 @@ interface SpaceDao {
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     suspend fun insSpaces(spaces: List<SpaceEntity>)
 
+    @Update
+    suspend fun updateSpaces(spaces: List<SpaceEntity>)
+
     @Delete
     suspend fun delSpace(space: SpaceEntity)
 }

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/FileEntity.kt

@@ -29,5 +29,5 @@ data class FileEntity(
     @ColumnInfo(name = "modified_time") val modifiedTime: String?,  // 修改时间
     @ColumnInfo(name = "valid") val valid: Int?,                    // 合法标识
     @ColumnInfo(name = "upload_flag") val uploadFlag: String?,      // app端上传数据标记
-    @ColumnInfo(name = "state") var state: String = "0"             // 数据状态:0:未处理,1:已处理 2:已上传
+    @ColumnInfo(name = "state") var state: String? = "0"             // 数据状态:0:未处理,1:已处理 2:已上传
 )

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

@@ -47,7 +47,7 @@ data class ObjectEntity(
     var infos: JSONObject?,               // 信息点数据: Json 数据格式
     @ColumnInfo(name = "str_infos") var strInfos: String?,           // 信息点数据: Json 数据格式
     @ColumnInfo(name = "floor_map") var floorMap: String?,           // 楼层地图
-    @ColumnInfo(name = "state") var state: String = "0"              // 数据状态:0:未处理,1:已处理 2:已上传
+    @ColumnInfo(name = "state") var state: String? = "0"              // 数据状态:0:未处理,1:已处理 2:已上传
 )
 
 

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/PipeEntity.kt

@@ -32,5 +32,5 @@ data class PipeEntity(
     @ColumnInfo(name = "upload_flag") val uploadFlag: String?,        // app端上传数据标记
     @ColumnInfo(name = "d2m_state") val d2mState: String?,            // 逆向数据的数模同步状态(0:未同步;1:已同步)
     @ColumnInfo(name = "delivery_state") val deliveryState: String?,  // 交付BDTP状态:1已交付,0待交付
-    @ColumnInfo(name = "state") var state: String = "0"               // 数据状态:0:未处理,1:已处理 2:已上传
+    @ColumnInfo(name = "state") var state: String? = "0"               // 数据状态:0:未处理,1:已处理 2:已上传
 )

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/ProblemArchEntity.kt

@@ -27,5 +27,5 @@ data class ProblemArchEntity(
     @ColumnInfo(name = "upload_flag") val uploadFlag: String?,      // app端上传数据标记
     @ColumnInfo(name = "valid") val valid: Int?,                    // 1 有效,2 无效
     @ColumnInfo(name = "geom") val geom: String?,                   // 问题记录的几何数据(Json)
-    @ColumnInfo(name = "state") var state: String = "0"             // 数据状态:0:未处理,1:已处理 2:已上传
+    @ColumnInfo(name = "state") var state: String? = "0"             // 数据状态:0:未处理,1:已处理 2:已上传
 )

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/ProblemEquipEntity.kt

@@ -26,5 +26,5 @@ data class ProblemEquipEntity(
     @ColumnInfo(name = "modified_time") val modifiedTime: String?,  // 修改时间
     @ColumnInfo(name = "upload_flag") val uploadFlag: String?,      // app端上传数据标记
     @ColumnInfo(name = "valid") val valid: Int?,                    // 1 有效,2 无效
-    @ColumnInfo(name = "state") var state: String = "0"             // 数据状态:0:未处理,1:已处理 2:已上传
+    @ColumnInfo(name = "state") var state: String? = "0"             // 数据状态:0:未处理,1:已处理 2:已上传
 )

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/QrCodeEntity.kt

@@ -25,6 +25,6 @@ data class QrCodeEntity(
     @ColumnInfo(name = "valid") val valid: Int?,                 // 合法标识
     @ColumnInfo(name = "upload_flag") val uploadFlag: String?,      // app端上传数据标记
     @ColumnInfo(name = "location") val location: String?,           // 位置坐标({x:1,y:1,z:1})
-    @ColumnInfo(name = "state") var state: String = "0"             // 数据状态:0:未处理,1:已处理 2:已上传
+    @ColumnInfo(name = "state") var state: String? = "0"             // 数据状态:0:未处理,1:已处理 2:已上传
 
 )

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/RelationEntity.kt

@@ -37,5 +37,5 @@ data class RelationEntity(
     @ColumnInfo(name = "delivery_state") val deliveryState: Int?,    // BDTP交付状态: 1 已交付, 0 待交付
     @ColumnInfo(name = "valid") val valid: Int?,                     // 合法标识: 1 合法, 0 非法
     @ColumnInfo(name = "d2m_state") val d2mState: Int?,              // 逆向数据的数模同步状态(0:未同步;1:已同步)
-    @ColumnInfo(name = "state") var state: String = "0"              // 数据状态:0:未处理,1:已处理 2:已上传
+    @ColumnInfo(name = "state") var state: String? = "0"              // 数据状态:0:未处理,1:已处理 2:已上传
 )

+ 1 - 1
demo/src/main/java/com/framework/mvvm/model/db/entity/SpaceEntity.kt

@@ -34,7 +34,7 @@ data class SpaceEntity(
     @Contextual
     val outline: JSONObject?,               // 空间边界,模型更新空间变化时,用来做匹配计算
     @ColumnInfo(name = "strOutline") val strOutline: String?,         // 空间边界,模型更新空间变化时,用来做匹配计算
-    @ColumnInfo(name = "state") var state: String = "0"               // 数据状态:0:未处理,1:已处理过 2:已上传
+    @ColumnInfo(name = "state") var state: String? = "0"               // 数据状态:0:未处理,1:已处理过 2:已上传
 )
 
 /*

+ 76 - 37
demo/src/main/java/com/framework/mvvm/model/repository/AdmRepository.kt

@@ -5,10 +5,7 @@ import android.util.Log
 import androidx.lifecycle.LiveData
 import com.framework.app.api.Api
 import com.framework.app.base.IRepository
-import com.framework.mvvm.model.data.Data
-import com.framework.mvvm.model.data.Response
-import com.framework.mvvm.model.data.dataSource
-import com.framework.mvvm.model.data.request
+import com.framework.mvvm.model.data.*
 import com.framework.mvvm.model.db.AdmDatabase
 import com.framework.mvvm.model.db.entity.*
 import com.framework.mvvm.model.vo.AdmRequest
@@ -168,7 +165,7 @@ class AdmRepository(
                     Log.d("requestDict", e.message!!)
                 }
             },
-            error = { println("error:$it") }
+            error = { println("requestDict error:$it") }
         )
     }
 
@@ -204,7 +201,7 @@ class AdmRepository(
                     )
                 }
             },
-            error ={ println("error: $it")}
+            error = { println("requestBuilding error: $it") }
         )
     }
 
@@ -233,36 +230,78 @@ class AdmRepository(
     /**
      * 上传建筑数据
      */
-    suspend fun uploadBuilding(buildingId: String): Response<Building> {
-        val pipes = db.pipeDao().getPipeByBuildingId(buildingId)
-        val files = db.fileDao().getFileByBuildingId(buildingId)
-        val spaces = db.spaceDao().getSpaceByBuildingId(buildingId)
-        val qrCodes = db.qrCodeDao().getQrCodeByBuildingId(buildingId)
-        val objects = db.objectDao().getObjectByBuildingId(buildingId)
-        val relations = db.relationDao().getRelationByBuildingId(buildingId)
-        val problemArchs = db.problemArchDao().getProblemByBuildingId(buildingId)
-        val problemEquips = db.problemEquipDao().getProblemByBuildingId(buildingId)
-
-        val deviceId = sp.getString("deviceId", "") ?: ""
-        val projectId = objects[0].projectId
-        val building = Building(
-            buildingId = buildingId,
-            file = files,
-            qrCode = qrCodes,
-            objects = objects,
-            jobSpace = spaces,
-            relations = relations,
-            problemArch = problemArchs,
-            problemEquip = problemEquips,
-            pipes = pipes,
-        )
-
-        val uploadBuilding = UploadBuilding(
-            projectId = projectId,
-            uploadFlag = deviceId,
-            uploadData = building
-        )
-
-        return request { api.uploadBuilding(uploadBuilding) }
+    suspend fun uploadBuilding(projectId: String, buildingId: String) {
+        try {
+            val pipeDao = db.pipeDao()
+            val fileDao = db.fileDao()
+            val spaceDao = db.spaceDao()
+            val qrCodeDao = db.qrCodeDao()
+            val objectDao = db.objectDao()
+            val relationDao = db.relationDao()
+            val problemArchDao = db.problemArchDao()
+            val problemEquipDao = db.problemEquipDao()
+
+            val pipes = pipeDao.getPipeByBuildingId(buildingId).filter { it.state == "1" }
+            val files = fileDao.getFileByBuildingId(buildingId).filter { it.state == "1" }
+            val spaces = spaceDao.getSpaceByBuildingId(buildingId).filter { it.state == "1" }
+            val qrCodes = qrCodeDao.getQrCodeByBuildingId(buildingId).filter { it.state == "1" }
+            val objects = objectDao.getObjectByBuildingId(buildingId).filter { it.state == "1" }
+            val relations =
+                relationDao.getRelationByBuildingId(buildingId).filter { it.state == "1" }
+            val problemArchs =
+                problemArchDao.getProblemByBuildingId(buildingId).filter { it.state == "1" }
+            val problemEquips =
+                problemEquipDao.getProblemByBuildingId(buildingId).filter { it.state == "1" }
+
+            val deviceId = sp.getString("deviceId", "") ?: ""
+
+            val building = Building(
+                buildingId = buildingId,
+                file = files,
+                qrCode = qrCodes,
+                objects = objects,
+                jobSpace = spaces,
+                relations = relations,
+                problemArch = problemArchs,
+                problemEquip = problemEquips,
+                pipes = pipes,
+            )
+
+            val uploadBuilding = UploadBuilding(
+                projectId = projectId,
+                uploadFlag = deviceId,
+                uploadData = building
+            )
+
+            when (val response = request { api.uploadBuilding(uploadBuilding) }) {
+                is EmptyResponse -> {
+                }
+                is FailureResponse -> {
+                    Log.e("AdmViewModel", "uploadBuilding fail:${response.msg}")
+                }
+                is SuccessResponse -> {
+                    Log.e("AdmViewModel", "uploadBuilding success")
+                    files.forEach { it.state = "2" }
+                    pipes.forEach { it.state = "2" }
+                    spaces.forEach { it.state = "2" }
+                    objects.forEach { it.state = "2" }
+                    qrCodes.forEach { it.state = "2" }
+                    relations.forEach { it.state = "2" }
+                    problemArchs.forEach { it.state = "2" }
+                    problemEquips.forEach { it.state = "2" }
+
+                    fileDao.updateFiles(files)
+                    pipeDao.updatePipes(pipes)
+                    spaceDao.updateSpaces(spaces)
+                    objectDao.updateObjects(objects)
+                    qrCodeDao.updateQrCodes(qrCodes)
+                    relationDao.updateRelations(relations)
+                    problemArchDao.updateProblems(problemArchs)
+                    problemEquipDao.updateProblems(problemEquips)
+                }
+            }
+        } catch (e: Exception) {
+            println("uploadBuilding Exception: $e")
+        }
     }
 }

+ 2 - 16
demo/src/main/java/com/framework/mvvm/mv/AdmViewModel.kt

@@ -1,14 +1,10 @@
 package com.framework.mvvm.mv
 
-import android.util.Log
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.viewModelScope
 import cn.sagacloud.cadengine.OkhttpUtil
 import com.framework.app.pathDownloadMap
 import com.framework.app.tencentIP
-import com.framework.mvvm.model.data.EmptyResponse
-import com.framework.mvvm.model.data.FailureResponse
-import com.framework.mvvm.model.data.SuccessResponse
 import com.framework.mvvm.model.db.entity.ObjectEntity
 import com.framework.mvvm.model.repository.AdmRepository
 import com.framework.mvvm.model.vo.AdmRequest
@@ -74,19 +70,9 @@ class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
     /**
      * 上传建筑数据
      */
-    fun uploadBuilding(buildingId: String) {
+    fun uploadBuilding(projectId: String, buildingId: String) {
         viewModelScope.launch(Dispatchers.IO) {
-            when (val response = repository.uploadBuilding(buildingId)) {
-                is EmptyResponse -> {
-                    Log.e("AdmViewModel", "uploadBuilding empty")
-                }
-                is FailureResponse -> {
-                    Log.e("AdmViewModel", "uploadBuilding fail:${response.msg}")
-                }
-                is SuccessResponse -> {
-                    Log.e("AdmViewModel", "uploadBuilding success")
-                }
-            }
+            repository.uploadBuilding(projectId, buildingId)
         }
     }
 

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

@@ -73,7 +73,7 @@ class PocActivity : AppCompatActivity(), DIAware {
                 val buildings = mVm.getBuildings()
                 println("upload buildings: $buildings")
                 for (building in buildings) {
-                    mVm.uploadBuilding(building.id)
+                    mVm.uploadBuilding(building.projectId, building.id)
                 }
                 ToastUtils.showMyToast("建筑数据上传完成")
             }