Browse Source

@task: dict

bai 3 years ago
parent
commit
91b40d7911
21 changed files with 145 additions and 94 deletions
  1. 10 8
      demo/src/main/java/com/framework/app/api/Api.kt
  2. 4 5
      demo/src/main/java/com/framework/di/Di.kt
  3. 5 5
      demo/src/main/java/com/framework/mvvm/model/data/ToDb.kt
  4. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/AdmDatabase.kt
  5. 4 1
      demo/src/main/java/com/framework/mvvm/model/db/dao/FileDao.kt
  6. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/dao/ObjectDao.kt
  7. 3 0
      demo/src/main/java/com/framework/mvvm/model/db/dao/ProblemArchDao.kt
  8. 4 1
      demo/src/main/java/com/framework/mvvm/model/db/dao/ProblemEquipDao.kt
  9. 4 1
      demo/src/main/java/com/framework/mvvm/model/db/dao/QrCodeDao.kt
  10. 4 2
      demo/src/main/java/com/framework/mvvm/model/db/dao/RelationDao.kt
  11. 4 1
      demo/src/main/java/com/framework/mvvm/model/db/dao/SpaceDao.kt
  12. 1 1
      demo/src/main/java/com/framework/mvvm/model/db/entity/SpaceEntity.kt
  13. 37 6
      demo/src/main/java/com/framework/mvvm/model/repository/FrameRepository.kt
  14. 12 0
      demo/src/main/java/com/framework/mvvm/model/vo/AdmRequest.kt
  15. 18 0
      demo/src/main/java/com/framework/mvvm/model/vo/Building.kt
  16. 0 19
      demo/src/main/java/com/framework/mvvm/model/vo/Config.kt
  17. 4 4
      demo/src/main/java/com/framework/mvvm/model/vo/Define.kt
  18. 0 18
      demo/src/main/java/com/framework/mvvm/model/vo/Floor.kt
  19. 0 10
      demo/src/main/java/com/framework/mvvm/model/vo/FrameRequest.kt
  20. 16 6
      demo/src/main/java/com/framework/mvvm/mv/FrameViewModel.kt
  21. 13 4
      demo/src/main/java/com/sybotan/android/demo/activities/PocActivity.kt

+ 10 - 8
demo/src/main/java/com/framework/app/api/Api.kt

@@ -1,10 +1,10 @@
 package com.framework.app.api
 
 import com.framework.mvvm.model.data.Model
-import com.framework.mvvm.model.vo.Define
-import com.framework.mvvm.model.vo.Floor
+import com.framework.mvvm.model.vo.AdmRequest
+import com.framework.mvvm.model.vo.Building
+import com.framework.mvvm.model.vo.Dict
 import com.framework.mvvm.model.vo.Frame
-import com.framework.mvvm.model.vo.FrameRequest
 import retrofit2.http.Body
 import retrofit2.http.POST
 
@@ -13,7 +13,7 @@ interface Api {
      * 获取自字典数据
      */
     @POST("adm/dict")
-    suspend fun getDefine(@Body request: FrameRequest): Model<Define>
+    suspend fun getDict(@Body request: AdmRequest): Model<Dict>
 
     /**
      * 获取框架数据
@@ -21,14 +21,16 @@ interface Api {
     @POST("adm/frame")
     suspend fun getFrame(): Model<Frame>
 
+    /**
+     * 获取框架数据
+     */
     @POST("adm/frame")
-    suspend fun getFrame(@Body request: FrameRequest): Model<Frame>
+    suspend fun getFrame(@Body request: AdmRequest): Model<Frame>
 
     /**
-     * 获取楼层数据
+     * 获取建筑数据
      */
     @POST("adm/download")
-    suspend fun getFloor(): Model<Floor>
-
+    suspend fun getBuilding(@Body request: AdmRequest): Model<Building>
 }
 

+ 4 - 5
demo/src/main/java/com/framework/di/Di.kt

@@ -1,11 +1,10 @@
 package com.framework.di
 
 import android.util.Log
-import androidx.room.Room
 import com.framework.app.api.Api
 import com.framework.mvvm.model.db.AdmDatabase
-import com.framework.mvvm.model.repository.FrameRepository
-import com.framework.mvvm.mv.FrameViewModel
+import com.framework.mvvm.model.repository.AdmRepository
+import com.framework.mvvm.mv.AdmViewModel
 import okhttp3.OkHttpClient
 import okhttp3.logging.HttpLoggingInterceptor
 import org.kodein.di.*
@@ -60,11 +59,11 @@ val httpModule = DI.Module("netModule") {
 }
 
 val repositoryModule = DI.Module("repository") {
-    bindSingleton { FrameRepository(instance(), instance()) }
+    bindSingleton { AdmRepository(instance(), instance()) }
 }
 
 val viewModelModule = DI.Module("viewModel") {
-    bindProvider { FrameViewModel(instance()) }
+    bindProvider { AdmViewModel(instance()) }
 }
 
 val databaseModule = DI.Module("database") {

+ 5 - 5
demo/src/main/java/com/framework/mvvm/model/data/ToDb.kt

@@ -5,11 +5,11 @@ import android.util.Log
 /**
  * 网络数据直接从 from 流入 to
  */
-suspend fun <Result> toDb(
-    from: suspend () -> Model<Result>,
-    to: suspend (Result) -> Unit
+suspend fun <T> toDb(
+    from: suspend () -> Model<T>,
+    to: suspend (T) -> Unit
 ): Boolean {
-    return when (val response: Response<Result> = request { from() }) {
+    return when (val response: Response<T> = request { from() }) {
         is EmptyResponse -> {
             false
         }
@@ -18,7 +18,7 @@ suspend fun <Result> toDb(
             true
         }
         is FailureResponse -> {
-            Log.d("ntToDb", response.msg)
+            Log.d("toDb", response.msg)
             false
         }
     }

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

@@ -41,7 +41,7 @@ abstract class AdmDatabase : RoomDatabase() {
     abstract fun majorDao(): MajorDao
     abstract fun objectDao(): ObjectDao
     abstract fun pipeConfigDao(): PipeConfigDao
-    abstract fun problemArch(): ProblemArchDao
+    abstract fun problemArchDao(): ProblemArchDao
     abstract fun problemEquipDao(): ProblemEquipDao
     abstract fun projectDao(): ProjectDao
     abstract fun qrCodeDao(): QrCodeDao

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

@@ -15,7 +15,10 @@ interface FileDao {
     suspend fun getFileById(id: String): FileEntity
 
     @Insert(onConflict = OnConflictStrategy.REPLACE)
-    suspend fun insFile(file: FileEntity)
+    suspend fun insFile(vararg file: FileEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insFiles(files: List<FileEntity>)
 
     @Delete
     suspend fun delFile(file: FileEntity)

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

@@ -18,7 +18,7 @@ interface ObjectDao {
     suspend fun insObject(vararg obj: ObjectEntity)
 
     @Insert(onConflict = OnConflictStrategy.REPLACE)
-    suspend fun insObjects(objs: List<ObjectEntity>)
+    suspend fun insObjects(objects: List<ObjectEntity>)
 
     @Delete
     suspend fun delObject(obj: ObjectEntity)

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

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

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

@@ -15,7 +15,10 @@ interface ProblemEquipDao {
     suspend fun getProblemById(id: String): ProblemEquipEntity
 
     @Insert(onConflict = OnConflictStrategy.REPLACE)
-    suspend fun insProblem(config: ProblemEquipEntity)
+    suspend fun insProblem(vararg problem: ProblemEquipEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insProblems(problems: List<ProblemEquipEntity>)
 
     @Delete
     suspend fun delProblem(config: ProblemEquipEntity)

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

@@ -15,7 +15,10 @@ interface QrCodeDao {
     suspend fun getQrCodeById(id: String): QrCodeEntity
 
     @Insert(onConflict = OnConflictStrategy.REPLACE)
-    suspend fun insQrCode(qrCode: QrCodeEntity)
+    suspend fun insQrCode(vararg qrCode: QrCodeEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insQrCodes(qrCodes: List<QrCodeEntity>)
 
     @Delete
     suspend fun delQrCode(qrCode: QrCodeEntity)

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

@@ -1,7 +1,6 @@
 package com.framework.mvvm.model.db.dao
 
 import androidx.room.*
-import com.framework.mvvm.model.db.entity.ObjectEntity
 import com.framework.mvvm.model.db.entity.RelationEntity
 
 /**
@@ -16,7 +15,10 @@ interface RelationDao {
     suspend fun getRelationById(id: String): RelationEntity
 
     @Insert(onConflict = OnConflictStrategy.REPLACE)
-    suspend fun insRelation(relation: RelationEntity)
+    suspend fun insRelation(vararg relation: RelationEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insRelations(relations: List<RelationEntity>)
 
     @Delete
     suspend fun delRelation(relation: RelationEntity)

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

@@ -15,7 +15,10 @@ interface SpaceDao {
     suspend fun getSpaceById(id: String): SpaceEntity
 
     @Insert(onConflict = OnConflictStrategy.REPLACE)
-    suspend fun insSpace(space: SpaceEntity)
+    suspend fun insSpace(vararg space: SpaceEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insSpaces(spaces: List<SpaceEntity>)
 
     @Delete
     suspend fun delSpace(space: SpaceEntity)

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

@@ -13,7 +13,7 @@ import kotlinx.serialization.Serializable
 data class SpaceEntity(
     @PrimaryKey val id: String,
     @ColumnInfo(name = "space_id") val spaceId: String,              // 空间id
-    @ColumnInfo(name = "work_id") val workId: String,                // 交付工作流程id
+    @ColumnInfo(name = "work_id") val workId: String?,                // 交付工作流程id
     @ColumnInfo(name = "space_type") val spaceType: String?,          // 任务空间类型(base|sub)
     @ColumnInfo(name = "parent_space_id") val parentSpaceId: String?, // 父级空间id(空间类型为sub时)
     @ColumnInfo(name = "arch_state") val archState: Int?,             // 建筑结构核查任务状态(0:待核查;1:核查中;2:核查完毕)

+ 37 - 6
demo/src/main/java/com/framework/mvvm/model/repository/FrameRepository.kt

@@ -10,14 +10,14 @@ import com.framework.mvvm.model.data.request
 import com.framework.mvvm.model.data.toDb
 import com.framework.mvvm.model.db.AdmDatabase
 import com.framework.mvvm.model.db.entity.ProjectEntity
-import com.framework.mvvm.model.vo.FrameRequest
+import com.framework.mvvm.model.vo.AdmRequest
 
-class FrameRepository(
+class AdmRepository(
     private val api: Api,
     private val db: AdmDatabase
 ) : IRepository {
 
-    fun getProjects(request: FrameRequest): LiveData<Data<List<ProjectEntity>>> {
+    fun getProjects(request: AdmRequest): LiveData<Data<List<ProjectEntity>>> {
         return dataSource(
             fromDb = { db.projectDao().getProjects() },
             fromNt = { request { api.getFrame(request) } },
@@ -29,7 +29,7 @@ class FrameRepository(
                     db.projectDao().insProject(projects)
                     db.objectDao().insObjects(bafs)
                 } catch (e: Exception) {
-                    Log.d("IRepository:${FrameRepository::class.simpleName}", e.message!!)
+                    Log.d("IRepository:${AdmRepository::class.simpleName}", e.message!!)
                 }
             },
             onFailure = {
@@ -46,9 +46,9 @@ class FrameRepository(
         return db.projectDao().insProject(projects)
     }
 
-    suspend fun requestDict(request: FrameRequest) {
+    suspend fun requestDict(request: AdmRequest) {
         toDb(
-            from = { api.getDefine(request) },
+            from = { api.getDict(request) },
             to = { define ->
 
                 val pipeConfig = define.pipeConfig
@@ -78,4 +78,35 @@ class FrameRepository(
         )
     }
 
+
+    suspend fun requestBuilding(request: AdmRequest) {
+        toDb(
+            from = { api.getBuilding(request) },
+            to = { building ->
+                val file = building.file
+                val space = building.jobSpace
+                val objects = building.objects
+                val problemArch = building.problemArch
+                val problemEquip = building.problemEquip
+                val qrCode = building.qrCode
+                val relations = building.relations
+
+                try {
+                    db.fileDao().insFiles(file)
+                    db.spaceDao().insSpaces(space)
+                    db.objectDao().insObjects(objects)
+                    db.problemArchDao().insProblems(problemArch)
+                    db.problemEquipDao().insProblems(problemEquip)
+                    db.qrCodeDao().insQrCodes(qrCode)
+                    db.relationDao().insRelations(relations)
+                } catch (e: Exception) {
+                    Log.d(
+                        "FrameRepositoryFrameRepository",
+                        e.message ?: "requestBuilding has error"
+                    )
+                }
+            }
+        )
+    }
+
 }

+ 12 - 0
demo/src/main/java/com/framework/mvvm/model/vo/AdmRequest.kt

@@ -0,0 +1,12 @@
+package com.framework.mvvm.model.vo
+
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class AdmRequest(
+    val userId: String = "",
+    val projectId: String = "",
+    val groupCode: String = "",
+    val buildingId: String = "",
+    val floorId: String = ""
+)

+ 18 - 0
demo/src/main/java/com/framework/mvvm/model/vo/Building.kt

@@ -0,0 +1,18 @@
+package com.framework.mvvm.model.vo
+
+import com.framework.mvvm.model.db.entity.*
+
+/**
+ * Building 对象
+ */
+data class Building(
+    val buildingId: String,
+    val timestamp: String,
+    val jobSpace: List<SpaceEntity>, // outline 需要处理
+    val objects: List<ObjectEntity>,
+    val file: List<FileEntity>,
+    val qrCode: List<QrCodeEntity>,
+    val relations: List<RelationEntity>,
+    val problemArch: List<ProblemArchEntity>,
+    val problemEquip: List<ProblemEquipEntity>
+)

+ 0 - 19
demo/src/main/java/com/framework/mvvm/model/vo/Config.kt

@@ -1,19 +0,0 @@
-package com.framework.mvvm.model.vo
-
-/**
- * Config 对象
- */
-data class Config(
-    val id: String,
-    val code: String,
-    val name: String,
-    val data: List<ConfigData>
-)
-
-/**
- * Config 对象
- */
-data class ConfigData(
-    val code: String,
-    val name: String
-)

+ 4 - 4
demo/src/main/java/com/framework/mvvm/model/vo/Define.kt

@@ -5,9 +5,9 @@ import com.framework.mvvm.model.db.entity.*
 /**
  * 数据定义
  */
-data class Define(
+data class Dict(
     val config: List<ConfigEntity>,
-    val dict: Dict,
+    val dict: Dictionary,
     val m2dTypes: List<M2dEquipEntity>,
     val pipeConfig: List<PipeConfigEntity>,
     val infosConfig: List<InfosConfigEntity>,
@@ -16,9 +16,9 @@ data class Define(
 )
 
 /**
- * Dict 对象
+ * Dictionary 对象
  */
-data class Dict(
+data class Dictionary(
     val system: List<SystemEntity>,
     val major: List<MajorEntity>,
     val equipment: List<EquipmentEntity>,

+ 0 - 18
demo/src/main/java/com/framework/mvvm/model/vo/Floor.kt

@@ -1,18 +0,0 @@
-package com.framework.mvvm.model.vo
-
-import com.framework.mvvm.model.db.entity.ObjectEntity
-import com.framework.mvvm.model.db.entity.SpaceEntity
-
-/**
- * Floor 对象
- */
-data class Floor(
-    val floorId: String,
-    val jobSpace: List<SpaceEntity>, // outline 需要处理
-    val objects: List<ObjectEntity>,
-    val file: List<Any>,
-    val qrCode: List<Any>,
-    val relations: List<Any>,
-    val problemArch: List<Any>,
-    val problemEquip: List<Any>
-)

+ 0 - 10
demo/src/main/java/com/framework/mvvm/model/vo/FrameRequest.kt

@@ -1,10 +0,0 @@
-package com.framework.mvvm.model.vo
-
-import kotlinx.serialization.Serializable
-
-@Serializable
-data class FrameRequest(
-    val userId: String,
-    val projectId: String,
-    val groupCode: String
-)

+ 16 - 6
demo/src/main/java/com/framework/mvvm/mv/FrameViewModel.kt

@@ -4,13 +4,13 @@ import androidx.lifecycle.*
 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.FrameRepository
-import com.framework.mvvm.model.vo.FrameRequest
+import com.framework.mvvm.model.repository.AdmRepository
+import com.framework.mvvm.model.vo.AdmRequest
 import kotlinx.coroutines.launch
 
 
-class FrameViewModel(private val repository: FrameRepository) : ViewModel() {
-    private val _frameRequest = MutableLiveData<FrameRequest>()
+class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
+    private val _frameRequest = MutableLiveData<AdmRequest>()
 
     private var _projects = MutableLiveData<Data<List<ProjectEntity>>>()
 
@@ -23,7 +23,7 @@ class FrameViewModel(private val repository: FrameRepository) : ViewModel() {
             }
         }
 
-    fun requestFrame(request: FrameRequest) {
+    fun requestFrame(request: AdmRequest) {
         _frameRequest.value = request
     }
 
@@ -39,9 +39,19 @@ class FrameViewModel(private val repository: FrameRepository) : ViewModel() {
         }
     }
 
-    fun requestDict(request: FrameRequest) {
+    fun requestDict(request: AdmRequest) {
         viewModelScope.launch {
             repository.requestDict(request)
         }
     }
+
+    /**
+     * 请求建筑
+     */
+    fun requestBuilding(request: AdmRequest) {
+        viewModelScope.launch {
+            repository.requestBuilding(request)
+        }
+    }
+
 }

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

@@ -5,8 +5,8 @@ import android.os.Bundle
 import androidx.appcompat.app.AppCompatActivity
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.app.ActivityCompat
-import com.framework.mvvm.model.vo.FrameRequest
-import com.framework.mvvm.mv.FrameViewModel
+import com.framework.mvvm.model.vo.AdmRequest
+import com.framework.mvvm.mv.AdmViewModel
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.poc.SceneActivity
 import com.sybotan.android.demo.activities.poc.SpaceActivity
@@ -20,7 +20,7 @@ class PocActivity : AppCompatActivity(), DIAware {
 
     override val di: DI by closestDI()
 
-    private val mVm: FrameViewModel by viewModel()
+    private val mVm: AdmViewModel by viewModel()
 
     private val tag = "PocActivity"
 
@@ -53,12 +53,21 @@ class PocActivity : AppCompatActivity(), DIAware {
         )*/
 
         mVm.requestDict(
-            FrameRequest(
+            AdmRequest(
                 userId = "bdtp",
                 projectId = "Pj0002220002",
                 groupCode = "BR"
             )
         )
+        mVm.requestBuilding(
+            AdmRequest(
+                userId = "bdtp",
+                projectId = "Pj0002220002",
+                groupCode = "BR",
+                buildingId = "Bd0002220002bcaa181bd406439c9ecaddac13b0d543"
+            )
+        )
+
     }
 
     private fun checkStoragePermission() {