فهرست منبع

@fun: migrate database

bai 3 سال پیش
والد
کامیت
38513cd1dd
49فایلهای تغییر یافته به همراه1600 افزوده شده و 4 حذف شده
  1. 97 3
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/AdmDatabase.kt
  2. 22 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/converter/GsonConverter.kt
  3. 30 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ComponentDao.kt
  4. 25 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ConfigDao.kt
  5. 27 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ContainerConfigDao.kt
  6. 28 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/EquipmentDao.kt
  7. 37 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/FileDao.kt
  8. 30 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/InfoDao.kt
  9. 35 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/InfosConfigDao.kt
  10. 43 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/JobSpaceDao.kt
  11. 29 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/M2dEquipDao.kt
  12. 26 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/MajorDao.kt
  13. 104 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ObjectDao.kt
  14. 31 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/PipeConfigDao.kt
  15. 52 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/PipeDao.kt
  16. 41 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ProblemArchDao.kt
  17. 42 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ProblemEquipDao.kt
  18. 26 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ProjectDao.kt
  19. 43 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/QrCodeDao.kt
  20. 35 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/RelConfigDao.kt
  21. 60 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/RelationDao.kt
  22. 29 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/RelationDictDao.kt
  23. 32 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ServeAreaDao.kt
  24. 28 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/SystemDao.kt
  25. 9 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/UserDao.kt
  26. 22 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/BaseEntity.kt
  27. 24 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/ProjectEntity.kt
  28. 2 1
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/UserEntity.kt
  29. 17 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/ComponentEntity.kt
  30. 18 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/ConfigEntity.kt
  31. 15 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/ContainerConfigEntity.kt
  32. 28 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/EquipmentEntity.kt
  33. 35 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/InfoEntity.kt
  34. 21 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/InfosConfigEntity.kt
  35. 18 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/M2dEquipEntity.kt
  36. 20 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/MajorEntity.kt
  37. 22 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/PipeConfigEntity.kt
  38. 24 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/RelConfigEntity.kt
  39. 25 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/RelationDictEntity.kt
  40. 26 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/SystemEntity.kt
  41. 29 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/FileEntity.kt
  42. 28 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/JobSpaceEntity.kt
  43. 95 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/ObjectEntity.kt
  44. 34 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/PipeEntity.kt
  45. 27 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/ProblemArchEntity.kt
  46. 25 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/ProblemEquipEntity.kt
  47. 25 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/QrCodeEntity.kt
  48. 33 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/RelationEntity.kt
  49. 26 0
      app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/ServeAreaEntity.kt

+ 97 - 3
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/AdmDatabase.kt

@@ -2,15 +2,109 @@ package com.ys.bdtp.adm.mvvm.model.db
 
 import android.content.Context
 import androidx.room.Database
-import androidx.room.Entity
-import androidx.room.RenameTable
 import androidx.room.Room
 import androidx.room.RoomDatabase
+import androidx.room.TypeConverters
+import com.ys.bdtp.adm.mvvm.model.db.dao.InfoDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.ProblemArchDao
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.ContainerConfigEntity
+import com.framework.mvvm.model.db.entity.task.PipeEntity
+import com.ys.bdtp.adm.mvvm.model.db.converter.GsonConverter
+import com.ys.bdtp.adm.mvvm.model.db.dao.ComponentDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.ConfigDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.ContainerConfigDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.EquipmentDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.FileDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.InfosConfigDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.JobSpaceDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.M2dEquipDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.MajorDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.ObjectDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.PipeConfigDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.PipeDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.ProblemEquipDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.ProjectDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.QrCodeDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.RelConfigDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.RelationDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.RelationDictDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.ServeAreaDao
+import com.ys.bdtp.adm.mvvm.model.db.dao.SystemDao
 import com.ys.bdtp.adm.mvvm.model.db.dao.UserDao
+import com.ys.bdtp.adm.mvvm.model.db.entity.ProjectEntity
 import com.ys.bdtp.adm.mvvm.model.db.entity.UserEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.ComponentEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.ConfigEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.EquipmentEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.InfoEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.InfosConfigEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.M2dEquipEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.MajorEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.PipeConfigEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.RelConfigEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.RelationDictEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.SystemEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.FileEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.JobSpaceEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.ObjectEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.ProblemArchEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.ProblemEquipEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.QrCodeEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.RelationEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.ServeAreaEntity
 
-@Database(entities = [UserEntity::class], version = 1, exportSchema = true)
+
+@Database(
+    entities = [
+        MajorEntity::class,
+        SystemEntity::class,
+        RelationDictEntity::class,
+        EquipmentEntity::class,
+        InfosConfigEntity::class,
+        PipeConfigEntity::class,
+        RelConfigEntity::class,
+        M2dEquipEntity::class,
+        ConfigEntity::class,
+        FileEntity::class,
+        JobSpaceEntity::class,
+        QrCodeEntity::class,
+        ObjectEntity::class,
+        ProjectEntity::class,
+        RelationEntity::class,
+        ProblemArchEntity::class,
+        ProblemEquipEntity::class,
+        ComponentEntity::class,
+        PipeEntity::class,
+        ServeAreaEntity::class,
+        ContainerConfigEntity::class,
+        InfoEntity::class,
+        UserEntity::class
+    ], version = 1, exportSchema = true
+)
+@TypeConverters(GsonConverter::class)
 abstract class AdmDatabase : RoomDatabase() {
+    abstract fun configDao(): ConfigDao
+    abstract fun equipmentDao(): EquipmentDao
+    abstract fun fileDao(): FileDao
+    abstract fun infosConfigDao(): InfosConfigDao
+    abstract fun m2dEquipDao(): M2dEquipDao
+    abstract fun majorDao(): MajorDao
+    abstract fun objectDao(): ObjectDao
+    abstract fun pipeConfigDao(): PipeConfigDao
+    abstract fun problemArchDao(): ProblemArchDao
+    abstract fun problemEquipDao(): ProblemEquipDao
+    abstract fun projectDao(): ProjectDao
+    abstract fun qrCodeDao(): QrCodeDao
+    abstract fun relationDao(): RelationDao
+    abstract fun relationDictDao(): RelationDictDao
+    abstract fun relConfigDao(): RelConfigDao
+    abstract fun jobSpaceDao(): JobSpaceDao
+    abstract fun systemDao(): SystemDao
+    abstract fun componentDao(): ComponentDao
+    abstract fun pipeDao(): PipeDao
+    abstract fun serveAreaDao(): ServeAreaDao
+    abstract fun containerConfigDao(): ContainerConfigDao
+    abstract fun infoDao(): InfoDao
     abstract fun userDao(): UserDao
 
     companion object {

+ 22 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/converter/GsonConverter.kt

@@ -0,0 +1,22 @@
+package com.ys.bdtp.adm.mvvm.model.db.converter
+
+import androidx.room.TypeConverter
+import com.google.gson.JsonElement
+import com.google.gson.JsonParser
+
+/**
+ * Gson 转换器
+ */
+class GsonConverter {
+    @TypeConverter
+    fun jsonToString(json: JsonElement?): String {
+        return json?.toString() ?: ""
+    }
+
+    @TypeConverter
+    fun jsonToString(string: String?): JsonElement? {
+        if (string.isNullOrEmpty()) return null
+        val parser = JsonParser()
+        return parser.parse(string)
+    }
+}

+ 30 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ComponentDao.kt

@@ -0,0 +1,30 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.ComponentEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.ConfigEntity
+
+@Dao
+interface ComponentDao {
+    @Query("select * from component")
+    suspend fun getComponents(): List<ComponentEntity>
+
+    @Query("select * from component where id = :id")
+    suspend fun getComponentById(id: String): ComponentEntity
+
+    @Query("select * from component where class_code = :code")
+    suspend fun getComponentByCode(code: String): List<ComponentEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insComponent(vararg comp: ComponentEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insComponents( comps: List<ComponentEntity>)
+
+    @Delete
+    suspend fun delConfig(config: ConfigEntity)
+}

+ 25 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ConfigDao.kt

@@ -0,0 +1,25 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.ConfigEntity
+
+/**
+ * 表 config Dao
+ */
+@Dao
+interface ConfigDao {
+    @Query("select * from config")
+    suspend fun getConfigs(): List<ConfigEntity>
+
+    @Query("select * from config where id = :id")
+    suspend fun getConfigById(id: String): ConfigEntity
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insConfig(vararg config: ConfigEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insConfigs(configs: List<ConfigEntity>)
+
+    @Delete
+    suspend fun delConfig(config: ConfigEntity)
+}

+ 27 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ContainerConfigDao.kt

@@ -0,0 +1,27 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.ContainerConfigEntity
+
+/**
+ * 表 container_config Dao
+ */
+@Dao
+interface ContainerConfigDao {
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insContainer(vararg container: ContainerConfigEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insContainers(containers: List<ContainerConfigEntity>)
+
+    @Query("select * from container_config")
+    suspend fun getContainers(): List<ContainerConfigEntity>
+
+    @Query("select * from container_config where container_code = :container")
+    suspend fun getWidgetsByContainer(container: String): List<ContainerConfigEntity>
+
+}

+ 28 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/EquipmentDao.kt

@@ -0,0 +1,28 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.EquipmentEntity
+
+/**
+ * 表 equipment Dao
+ */
+@Dao
+interface EquipmentDao {
+    @Query("select * from equipment")
+    suspend fun getEquipments(): List<EquipmentEntity>
+
+    @Query("select * from equipment where id = :id and valid = 1")
+    suspend fun getEquipmentById(id: String): EquipmentEntity
+
+    @Query("select * from equipment where code = :code and valid = 1")
+    suspend fun getEquipmentByCode(code: String): EquipmentEntity?
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insEquipment(vararg equipment: EquipmentEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insEquipments(equipments: List<EquipmentEntity>)
+
+    @Delete
+    suspend fun delEquipment(equipment: EquipmentEntity)
+}

+ 37 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/FileDao.kt

@@ -0,0 +1,37 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.FileEntity
+
+/**
+ * 表 file Dao
+ */
+@Dao
+interface FileDao {
+    @Query("select * from file")
+    suspend fun getFiles(): List<FileEntity>
+
+    @Query("select * from file where id = :id")
+    suspend fun getFileById(id: String): FileEntity
+
+    @Query("select * from file where ref_obj_id = :id")
+    suspend fun getFileByRefId(id: String): List<FileEntity>
+
+    @Query("select * from file where building_id = :id")
+    suspend fun getFileByBuildingId(id: String): List<FileEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insFile(vararg file: FileEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insFiles(files: List<FileEntity>)
+
+    @Update
+    suspend fun updateFiles(files: List<FileEntity>)
+
+    @Delete
+    suspend fun delFile(file: FileEntity)
+
+    @Query("select count(*) from file where project_id = :projectId and (state = 0 or state = 1)")
+    suspend fun countUnDone(projectId: String): Int
+}

+ 30 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/InfoDao.kt

@@ -0,0 +1,30 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.InfoEntity
+
+/**
+ * 表 info dao
+ */
+@Dao
+interface InfoDao {
+    @Query("select * from info")
+    suspend fun getInfos(): List<InfoEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insInfo(vararg info: InfoEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insInfos(infos: List<InfoEntity>)
+
+    @Update
+    suspend fun updateInfo(vararg info: InfoEntity)
+
+    @Query("select * from info where (class_code = :classCode or class_code= :parentClassCode) and code = :code")
+    suspend fun getInfoByClassCodeAndCode(
+        classCode: String,
+        parentClassCode: String,
+        code: String
+    ): InfoEntity?
+
+}

+ 35 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/InfosConfigDao.kt

@@ -0,0 +1,35 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.InfosConfigEntity
+
+/**
+ * 表 infos_config Dao
+ */
+@Dao
+interface InfosConfigDao {
+    @Query("select * from infos_config")
+    suspend fun getConfigs(): List<InfosConfigEntity>
+
+    @Query("select * from infos_config where id = :id")
+    suspend fun getConfigById(id: String): InfosConfigEntity
+
+    @Query("select * from infos_config where obj_type = :type and class_code ='GeneralZone'")
+    suspend fun getConfigByObjType(type: String): List<InfosConfigEntity>
+
+    @Query("select * from infos_config where obj_type = :type and class_code =:code")
+    suspend fun getConfigByEquipCode(type: String, code: String): List<InfosConfigEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insConfig(vararg config: InfosConfigEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insConfigs(configs: List<InfosConfigEntity>)
+
+    @Delete
+    suspend fun delConfig(config: InfosConfigEntity)
+}

+ 43 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/JobSpaceDao.kt

@@ -0,0 +1,43 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.JobSpaceEntity
+
+/**
+ * 表 space Dao
+ */
+@Dao
+interface JobSpaceDao {
+    @Query("select * from job_space")
+    suspend fun getSpaces(): List<JobSpaceEntity>
+
+    @Query("select * from job_space where id = :id")
+    suspend fun getSpaceById(id: String): JobSpaceEntity
+
+    @Query("select * from job_space where space_id = :id and valid = 1")
+    suspend fun getSpaceBySpaceId(id: String): JobSpaceEntity
+
+    @Query("select * from job_space where floor_id = :id and arch_state =:archState and valid = 1")
+    suspend fun getSpaceByArchStateFloorId(id: String, archState: String): List<JobSpaceEntity>
+
+    @Query("select * from job_space where floor_id = :id and equip_state =:equipState and valid = 1")
+    suspend fun getSpaceByEquipStateFloorId(id: String, equipState: String): List<JobSpaceEntity>
+
+    @Query("select * from job_space where building_id = :id")
+    suspend fun getSpaceByBuildingId(id: String): List<JobSpaceEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insSpace(vararg space: JobSpaceEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insSpaces(spaces: List<JobSpaceEntity>)
+
+    @Update
+    suspend fun updateSpaces(spaces: List<JobSpaceEntity>)
+
+    @Delete
+    suspend fun delSpace(space: JobSpaceEntity)
+
+    @Query("select count(*) from job_space where project_id = :projectId and (state = 0 or state = 1)")
+    suspend fun countUnDone(projectId: String): Int
+}

+ 29 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/M2dEquipDao.kt

@@ -0,0 +1,29 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.M2dEquipEntity
+
+/**
+ * table m2d_equip Dao
+ */
+@Dao
+interface M2dEquipDao {
+    @Query("select * from m2d_equip")
+    suspend fun getM2ds(): List<M2dEquipEntity>
+
+    @Query("select * from m2d_equip where id = :id")
+    suspend fun getM2dById(id: String): M2dEquipEntity
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insM2d(vararg m2d: M2dEquipEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insM2ds(m2ds: List<M2dEquipEntity>)
+
+    @Delete
+    suspend fun delM2d(m2d: M2dEquipEntity)
+}

+ 26 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/MajorDao.kt

@@ -0,0 +1,26 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.MajorEntity
+
+/**
+ * 表 maj_dict Dao
+ */
+@Dao
+interface MajorDao {
+    @Query("select * from major")
+    suspend fun getMajors(): List<MajorEntity>
+
+    @Query("select * from major where id = :id")
+    suspend fun getMajorById(id: String): MajorEntity
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insMajor(vararg major: MajorEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insMajors(majors: List<MajorEntity>)
+
+    @Delete
+    suspend fun delMajor(major: MajorEntity)
+
+}

+ 104 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ObjectDao.kt

@@ -0,0 +1,104 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.ObjectEntity
+
+/**
+ * 表 object Dao
+ */
+@Dao
+interface ObjectDao {
+    @Query("select * from object")
+    suspend fun getObjects(): List<ObjectEntity>
+
+    @Query("select * from object where id = :id and valid = 1")
+    suspend fun getObjectById(id: String): ObjectEntity?
+
+    @Query("select * from object where bim_id = :bimId")
+    suspend fun getObjectByBimId(bimId: String): ObjectEntity?
+
+    @Query("select * from object where obj_type = :objType and valid = 1")
+    suspend fun getObjectByObjType(objType: String): List<ObjectEntity>
+
+    @Query("select * from object where building_id = :buildingId and obj_type=:type and valid = 1")
+    suspend fun getObjectByBuildingId(buildingId: String, type: String): List<ObjectEntity>
+
+    @Query("select * from object where building_id = :buildingId and valid = 1")
+    suspend fun getObjectByBuildingId(buildingId: String): List<ObjectEntity>
+
+    @Query("select * from object where floor_id = :floorId and obj_type=:type and valid = 1")
+    suspend fun getEquipByFloorId(
+        floorId: String,
+        type: String,
+    ): List<ObjectEntity>
+
+    @Query("select * from object where class_code = :code and building_id =:buildingId and valid = 1")
+    suspend fun getObjectByCode(code: String, buildingId: String): List<ObjectEntity>
+
+    @Query("select * from object where container_id = :objId and valid = 1")
+    suspend fun getContainerObjs(objId: String): List<ObjectEntity>
+
+    @Query("select * from object where local_id = UPPEr(:localId) and valid = 1")
+    suspend fun getObjectByLocalId(localId: String): ObjectEntity?
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insObject(vararg obj: ObjectEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insObjects(objects: List<ObjectEntity>)
+
+    @Update
+    suspend fun updateObjects(objects: List<ObjectEntity>)
+
+    @Delete
+    suspend fun delObject(obj: ObjectEntity)
+
+    /**
+     * 返回楼层类型的 ObjectEntity
+     */
+    @Query("select * from object where obj_type = 'floor'")
+    suspend fun getFloors(): List<ObjectEntity>
+
+    /**
+     * 返回楼层类型的 ObjectEntity
+     */
+    @Query("select * from object where obj_type = 'floor' and building_id =:buildingId")
+    suspend fun getFloorsByBuildingId(buildingId: String): List<ObjectEntity>
+
+    /**
+     * 返回楼层类型的 ObjectEntity
+     */
+    @Query("select * from object where obj_type = 'floor' and id =:floorId")
+    suspend fun getFloorById(floorId: String): ObjectEntity
+
+    /**
+     * 返回所有建筑 ObjectEntity
+     */
+    @Query("select * from object where obj_type = 'building'")
+    suspend fun getBuildings(): List<ObjectEntity>
+
+    /**
+     * 返回项目下的建筑
+     * */
+    @Query("select * from object where obj_type = 'building' and project_id = :projectId")
+    suspend fun getBuildingsByProjectId(projectId: String): List<ObjectEntity>
+
+    /**
+     * 返回所有建筑 ObjectEntity
+     */
+    @Query("select * from object where obj_type = 'space' and class_code ='GeneralZone' and floor_id =:floorId")
+    suspend fun getSpaceByFloorId(floorId: String): List<ObjectEntity>
+
+    /**
+     * 更新 ObjectEntity
+     */
+    @Update
+    suspend fun updateObject(obj: ObjectEntity)
+
+    // @Transaction
+    // @Query("select * from object")
+    // fun getObjectAndInfosWithOutlines() : List<ObjectAndInfosWithOutlines>
+
+    @Query("select count(*) from object where project_id = :projectId and (state = 0 or state = 1)")
+    suspend fun countUnDone(projectId: String): Int
+}

+ 31 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/PipeConfigDao.kt

@@ -0,0 +1,31 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.PipeConfigEntity
+
+/**
+ * 表 pipe_config Dao
+ */
+@Dao
+interface PipeConfigDao {
+    @Query("select * from pipe_config")
+    suspend fun getConfigs(): List<PipeConfigEntity>
+
+    @Query("select * from pipe_config where id = :id")
+    suspend fun getConfigById(id: String): PipeConfigEntity
+
+    @Query("select * from pipe_config where class_code_from = :code")
+    suspend fun getConfigByCodeFrom(code: String): List<PipeConfigEntity>
+
+    @Query("select * from pipe_config where class_code_to = :code")
+    suspend fun getConfigByCodeTo(code: String): List<PipeConfigEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insConfig(vararg config: PipeConfigEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insConfigs(configs: List<PipeConfigEntity>)
+
+    @Delete
+    suspend fun delConfig(config: PipeConfigEntity)
+}

+ 52 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/PipeDao.kt

@@ -0,0 +1,52 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import androidx.room.Update
+import com.framework.mvvm.model.db.entity.task.PipeEntity
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.PipeConfigEntity
+
+/**
+ * 管道表 Dao
+ */
+@Dao
+interface PipeDao {
+    @Query("select * from pipe")
+    suspend fun getPipes(): List<PipeEntity>
+
+    @Query("select * from pipe where id = :id")
+    suspend fun getPipeById(id: String): PipeEntity
+
+    @Query("select * from pipe where building_id = :id")
+    suspend fun getPipeByBuildingId(id: String): List<PipeEntity>
+
+    @Query("select * from pipe where obj_from = :id and pipe_type = :pipeType and pipe_sub_type=:pipeSubType and valid = 1")
+    suspend fun getPipeByIdFrom(id: String, pipeType: String, pipeSubType: String): List<PipeEntity>
+
+    @Query("select * from pipe where obj_to = :id and pipe_type = :pipeType and pipe_sub_type=:pipeSubType and valid = 1")
+    suspend fun getPipeByIdTo(id: String, pipeType: String, pipeSubType: String): List<PipeEntity>
+
+    @Query("select * from pipe where floor_id = :floorId and valid = 1")
+    suspend fun getPipeByFloorId(floorId: String): List<PipeEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insPipe(vararg pipe: PipeEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insPipes(pipes: List<PipeEntity>)
+
+    @Update
+    suspend fun updatePipe(pipe: PipeEntity)
+
+    @Update
+    suspend fun updatePipes(pipes: List<PipeEntity>)
+
+    @Delete
+    suspend fun delConfig(config: PipeConfigEntity)
+
+    @Query("select count(*) from pipe where project_id = :projectId and (state = 0 or state = 1)")
+    suspend fun countUnDone(projectId: String): Int
+}

+ 41 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ProblemArchDao.kt

@@ -0,0 +1,41 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.ProblemArchEntity
+
+/**
+ * 表 problem_arch Dao
+ */
+@Dao
+interface ProblemArchDao {
+    @Query("select * from problem_arch")
+    suspend fun getProblems(): List<ProblemArchEntity>
+
+    @Query("select * from problem_arch where id = :id")
+    suspend fun getProblemById(id: String): ProblemArchEntity
+
+    @Query("select * from problem_arch where floor_id = :floorId")
+    suspend fun getProblemByFloor(floorId: String): List<ProblemArchEntity>
+
+    @Query("select * from problem_arch where floor_id = :floorId and valid = 1 and problem_state = 1")
+    suspend fun getProblemByAvalible(floorId: String): List<ProblemArchEntity>
+
+    @Query("select * from problem_arch where building_id = :id")
+    suspend fun getProblemByBuildingId(id: String): List<ProblemArchEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insProblem(problem: ProblemArchEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insProblems(problems: List<ProblemArchEntity>)
+
+    @Update
+    suspend fun updateProblems(problems: List<ProblemArchEntity>)
+
+    @Delete
+    suspend fun delProblem(problem: ProblemArchEntity)
+
+    @Query("select count(*) from problem_arch where project_id = :projectId and (state = 0 or state = 1)")
+    suspend fun countUnDone(projectId: String): Int
+
+}

+ 42 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ProblemEquipDao.kt

@@ -0,0 +1,42 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import androidx.room.Update
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.ProblemEquipEntity
+
+/**
+ * 表 problem_equip Dao
+ */
+@Dao
+interface ProblemEquipDao {
+    @Query("select * from problem_equip")
+    suspend fun getProblems(): List<ProblemEquipEntity>
+
+    @Query("select * from problem_equip where id = :id")
+    suspend fun getProblemById(id: String): ProblemEquipEntity
+
+    @Query("select * from problem_equip where building_id = :id")
+    suspend fun getProblemByBuildingId(id: String): List<ProblemEquipEntity>
+
+    @Query("select * from problem_equip where equip_id = :id")
+    suspend fun getProblemByEquipId(id: String): ProblemEquipEntity?
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insProblem(vararg problem: ProblemEquipEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insProblems(problems: List<ProblemEquipEntity>)
+
+    @Update
+    suspend fun updateProblems(problems: List<ProblemEquipEntity>)
+
+    @Delete
+    suspend fun delProblem(config: ProblemEquipEntity)
+
+    @Query("select count(*) from problem_equip where project_id = :projectId and (state = 0 or state = 1)")
+    suspend fun countUnDone(projectId: String): Int
+}

+ 26 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ProjectDao.kt

@@ -0,0 +1,26 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.*
+import com.ys.bdtp.adm.mvvm.model.db.entity.ProjectEntity
+
+/**
+ * 表 project Dao
+ */
+@Dao
+interface ProjectDao {
+
+    @Query("select * from project")
+    suspend fun getProjects(): List<ProjectEntity>
+
+    @Query("select * from project where id = :id")
+    suspend fun getProjectById(id: String): ProjectEntity
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insProjects(projects: List<ProjectEntity>)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insProject(vararg project: ProjectEntity)
+
+    @Delete
+    suspend fun delProject(project: ProjectEntity)
+}

+ 43 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/QrCodeDao.kt

@@ -0,0 +1,43 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import androidx.room.Update
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.QrCodeEntity
+
+/**
+ * 表 qr_code Dao
+ */
+@Dao
+interface QrCodeDao {
+    @Query("select * from qr_code")
+    suspend fun getQrCodes(): List<QrCodeEntity>
+
+    @Query("select * from qr_code where id = :id")
+    suspend fun getQrCodeById(id: String): QrCodeEntity
+
+    @Query("select * from qr_code where obj_id = :id")
+    suspend fun getQrCodeByObjId(id: String): List<QrCodeEntity>?
+
+    @Query("select * from qr_code where building_id = :id")
+    suspend fun getQrCodeByBuildingId(id: String): List<QrCodeEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insQrCode(vararg qrCode: QrCodeEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insQrCodes(qrCodes: List<QrCodeEntity>)
+
+    @Update
+    suspend fun updateQrCodes(qrCodes: List<QrCodeEntity>)
+
+    @Delete
+    suspend fun delQrCode(qrCode: QrCodeEntity)
+
+    @Query("select count(*) from qr_code where project_id = :projectId and (state = 0 or state = 1)")
+    suspend fun countUnDone(projectId: String): Int
+
+}

+ 35 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/RelConfigDao.kt

@@ -0,0 +1,35 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.RelConfigEntity
+
+/**
+ * 表 rel_config Dao
+ */
+@Dao
+interface RelConfigDao {
+    @Query("select * from rel_config")
+    suspend fun getConfigs(): List<RelConfigEntity>
+
+    @Query("select * from rel_config where id = :id")
+    suspend fun getConfigById(id: String): RelConfigEntity
+
+    @Query("select * from rel_config where class_code_from = :code")
+    suspend fun getConfigByCodeFrom(code: String): List<RelConfigEntity>
+
+    @Query("select * from rel_config where class_code_to = :code")
+    suspend fun getConfigByCodeTo(code: String): List<RelConfigEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insConfig(vararg config: RelConfigEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insConfigs(configs: List<RelConfigEntity>)
+
+    @Delete
+    suspend fun delConfig(config: RelConfigEntity)
+}

+ 60 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/RelationDao.kt

@@ -0,0 +1,60 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import androidx.room.Update
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.RelationEntity
+
+/**
+ * 表 relation Dao
+ */
+@Dao
+interface RelationDao {
+    @Query("select * from relation")
+    suspend fun getRelations(): List<RelationEntity>
+
+    @Query("select * from relation where id = :id")
+    suspend fun getRelationById(id: String): RelationEntity
+
+    @Query("select * from relation where building_id = :id")
+    suspend fun getRelationByBuildingId(id: String): List<RelationEntity>
+
+    @Query("select * from relation where graph_code = :graphCode and rel_code = :relCode and valid = 1")
+    suspend fun getRelationByCode(graphCode: String, relCode: String): List<RelationEntity>
+
+    @Query("select * from relation where graph_code = :graphCode and rel_code = :relCode and obj_from =:objFrom and obj_to =:objto and valid = 1")
+    suspend fun getRelByGraphCodeAndRelCodeAndObjFromAndObjTo(graphCode: String, relCode: String, objFrom: String, objto: String): RelationEntity?
+
+    @Query("select * from relation where graph_code = :graphCode and rel_code = :relCode and obj_from=:equipId and valid = 1")
+    suspend fun getRelationByCodeFrom(
+        graphCode: String,
+        relCode: String,
+        equipId: String
+    ): List<RelationEntity>
+
+    @Query("select * from relation where graph_code = :graphCode and rel_code = :relCode and obj_to=:equipId and valid = 1")
+    suspend fun getRelationByCodeTo(
+        graphCode: String,
+        relCode: String,
+        equipId: String
+    ): List<RelationEntity>
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insRelation(vararg relation: RelationEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insRelations(relations: List<RelationEntity>)
+
+    @Update
+    suspend fun updateRelations(relations: List<RelationEntity>)
+
+    @Delete
+    suspend fun delRelation(relation: RelationEntity)
+
+    @Query("select count(*) from relation where project_id = :projectId and (state = 0 or state = 1)")
+    suspend fun countUnDone(projectId: String): Int
+
+}

+ 29 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/RelationDictDao.kt

@@ -0,0 +1,29 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.RelationDictEntity
+
+/**
+ * 表 relation_dict Dao
+ */
+@Dao
+interface RelationDictDao {
+    @Query("select * from relation_dict")
+    suspend fun getRelationDicts(): List<RelationDictEntity>
+
+    @Query("select * from relation_dict where id = :id")
+    suspend fun getRelationDictById(id: String): RelationDictEntity
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insRelationDict(vararg relationDict: RelationDictEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insRelationDicts(relationDicts: List<RelationDictEntity>)
+
+    @Delete
+    suspend fun delRelationDict(relationDict: RelationDictEntity)
+}

+ 32 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/ServeAreaDao.kt

@@ -0,0 +1,32 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import com.ys.bdtp.adm.mvvm.model.db.entity.task.ServeAreaEntity
+
+/**
+ * 表 serve_area Dao
+ */
+@Dao
+interface ServeAreaDao {
+
+    @Query("select * from serve_area")
+    suspend fun getAreas(): List<ServeAreaEntity>
+
+    @Query("select * from serve_area where building_id = :id")
+    suspend fun getAreasByBuildingId(id: String): List<ServeAreaEntity>
+
+    @Query("select * from serve_area where obj_id = :id and valid = 1")
+    suspend fun getAreasByObjId(id: String): ServeAreaEntity?
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insertAreas(areas: List<ServeAreaEntity>)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insertArea(areas: ServeAreaEntity)
+
+    @Query("select count(*) from serve_area where project_id = :projectId and (state = 0 or state = 1)")
+    suspend fun countUnDone(projectId: String): Int
+}

+ 28 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/SystemDao.kt

@@ -0,0 +1,28 @@
+package com.ys.bdtp.adm.mvvm.model.db.dao
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import com.ys.bdtp.adm.mvvm.model.db.entity.dict.SystemEntity
+
+/**
+ * 表 sys_dict Dao
+ */
+@Dao
+interface SystemDao {
+    @Query("select * from system")
+    suspend fun getEqus(): List<SystemEntity>
+
+    @Query("select * from system where id = :id")
+    suspend fun getEquById(id: String): SystemEntity
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insSystem(vararg system: SystemEntity)
+
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    suspend fun insSystems(systems: List<SystemEntity>)
+
+    @Query("select * from system where code = :code")
+    suspend fun getSysByCode(code: String): SystemEntity?
+}

+ 9 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/dao/UserDao.kt

@@ -13,9 +13,18 @@ interface UserDao {
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     fun insertUser(vararg user: UserEntity)
 
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    fun insUsers(users: List<UserEntity>): List<Long>
+
     @Query("select * from user")
     fun queryUsers(): List<UserEntity>
 
+    @Query("select * from user where id = :id")
+    fun queryUserById(id: String): UserEntity
+
+    @Query("select * from user where name =:name and password = :password")
+    suspend fun getUser(name: String, password: String): UserEntity?
+
     @Update
     fun updateUser(user: UserEntity)
 

+ 22 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/BaseEntity.kt

@@ -0,0 +1,22 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity
+
+/**
+ * 数据公共字段约束
+ */
+interface BaseEntity {
+    val id: String               // id
+    var valid: Int               // 有效标识: 1 保留, 0 删除
+    var state: Int               // 数据状态:-1 默认, 0:本地创建, 1:修改过的网络数据 2:已上传的本地数据或者从网络来的数据
+    val projectId: String?       // 项目id
+    val buildingId: String?      // 建筑id
+    val floorId: String?         // 楼层id
+    val ts: Long                 // 服务端用时间戳
+}
+
+fun BaseEntity.state() {
+    if (state == -1)
+        state = 0
+
+    if (state == 2)
+        state = 1
+}

+ 24 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/ProjectEntity.kt

@@ -0,0 +1,24 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+/**
+ * 项目表(远程无对应表)
+ */
+@Entity(tableName = "project")
+data class ProjectEntity(
+    @PrimaryKey
+    @ColumnInfo(name = "id") val projectId: String,
+    @ColumnInfo(name = "name") val projectName: String,
+    @ColumnInfo(name = "group_code") val groupCode: String,
+    @ColumnInfo(name = "latitude") val latitude: String?,
+    @ColumnInfo(name = "longitude") val longitude: String?,
+    @ColumnInfo(name = "address") val detailAddress: String?,
+    @ColumnInfo(name = "local_id") val projectLocalID: String?,
+    @ColumnInfo(name = "local_name") val projectLocalName: String?,
+    @ColumnInfo(name = "function_type") val functionType: String?,
+    @ColumnInfo(name = "live_status") val liveStatus: String?,
+    @ColumnInfo(name = "user_id") val userId: String?
+)

+ 2 - 1
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/UserEntity.kt

@@ -7,5 +7,6 @@ import androidx.room.PrimaryKey
 @Entity(tableName = "user")
 data class UserEntity(
     @PrimaryKey val id: String,
-    @ColumnInfo(name = "name") val name: String
+    @ColumnInfo(name = "name") val name: String,
+    @ColumnInfo(name = "password") val password: String
 )

+ 17 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/ComponentEntity.kt

@@ -0,0 +1,17 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+/**
+ * component 表
+ */
+@Entity(tableName = "component")
+data class ComponentEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "comp_code") val compCode: String,       // 构件编码
+    @ColumnInfo(name = "comp_name") val compName: String?,      // 构件名称
+    @ColumnInfo(name = "system_code") val systemCode: String,   // 系统编码
+    @ColumnInfo(name = "class_code") val classCode: String      // 类型编码
+)

+ 18 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/ConfigEntity.kt

@@ -0,0 +1,18 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.google.gson.JsonElement
+
+/**
+ * 基本配置 表
+ */
+@Entity(tableName = "config")
+data class ConfigEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "name") val name: String,               // 配置项名称
+    @ColumnInfo(name = "code") val code: String,               // 配置项编码
+    @ColumnInfo(name = "data") val data: JsonElement? = null,  // 配置项内容
+)

+ 15 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/ContainerConfigEntity.kt

@@ -0,0 +1,15 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+/**
+ * 容器设备-无模型设备 配置
+ */
+@Entity(tableName = "container_config")
+data class ContainerConfigEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "container_code") var containerCode: String, // 容器设备类型编码
+    @ColumnInfo(name = "widget_code") var widgetCode: String        // 无模型设备类型编码
+)

+ 28 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/EquipmentEntity.kt

@@ -0,0 +1,28 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import java.io.Serializable
+
+/**
+ * 设备字典表(远程无对应表)
+ */
+@Entity(tableName = "equipment")
+data class EquipmentEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "project_id") val projectId: String?,         // 项目 id
+    @ColumnInfo(name = "code") val code: String?,                    // 设备编码
+    @ColumnInfo(name = "name") val name: String?,                    // 设备名称
+    @ColumnInfo(name = "obj_type") val objType: String?,             // 对象类型
+    @ColumnInfo(name = "group_code") val groupCode: String?,         // 集团编码
+    @ColumnInfo(name = "major_code") val majorCode: String?,         // 专业编码
+    @ColumnInfo(name = "system_code") val systemCode: String?,       // 系统编码
+    @ColumnInfo(name = "parent_code") val parentCode: String?,       // 父编码
+    @ColumnInfo(name = "equipment_code") val equipmentCode: String?, // 设备编码
+    @ColumnInfo(name = "alias_code") val aliasCode: String?,         // 编码别名
+    @ColumnInfo(name = "alias_name") val aliasName: String?,         // 名称别名
+    @ColumnInfo(name = "version") val version: String?,              // 版本
+    @ColumnInfo(name = "system_name") var systemName: String?,       // 系统编码
+    @ColumnInfo(name = "valid") var valid: Int?,                     // 有效标识, // 1 正常 0 删除
+) : Serializable

+ 35 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/InfoEntity.kt

@@ -0,0 +1,35 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.google.gson.JsonElement
+
+/**
+ * info 表
+ * 通过 code 和 classCode 的各种组合来使用
+ * code : Info 本身编码,
+ * classCode : 设备编码,对应多个 info
+ * 关系:一个 classCode 下有多个 code;不同 classCode 下的 code 可能相同
+ */
+@Entity(tableName = "info")
+data class InfoEntity(
+    @PrimaryKey(autoGenerate = true) val id: Int = 0,
+    @ColumnInfo(name = "group_code") val groupCode: String? = null,
+    @ColumnInfo(name = "project_id") val projectId: String? = null,
+    @ColumnInfo(name = "code") val code: String? = null,              // Info 编码
+    @ColumnInfo(name = "name") val name: String? = null,
+    @ColumnInfo(name = "alias_code") val aliasCode: String? = null,
+    @ColumnInfo(name = "class_code") val classCode: String? = null,   // 类型编码
+    @ColumnInfo(name = "first_tag") val firstTag: String? = null,
+    @ColumnInfo(name = "second_tag") val secondTag: String? = null,
+    @ColumnInfo(name = "input_mode") val inputMode: String? = null,
+    @ColumnInfo(name = "unit") val unit: String? = null,
+    @ColumnInfo(name = "data_type") val dataType: String? = null,
+    @ColumnInfo(name = "data_source") val dataSource: JsonElement? = null,
+    @ColumnInfo(name = "show_order") val showOrder: Long? = null,
+    @ColumnInfo(name = "version") val version: String? = null
+    // String aliasName;
+    // Boolean isMultiple = false;
+    // Boolean isRegion = false;
+)

+ 21 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/InfosConfigEntity.kt

@@ -0,0 +1,21 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.google.gson.JsonElement
+
+/**
+ * 信息配置 表
+ */
+@Entity(tableName = "infos_config")
+data class InfosConfigEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "name") val name: String?,               // 对象类型名称
+    @ColumnInfo(name = "obj_type") val objType: String?,        // 对象类型(space|equipment)
+    @ColumnInfo(name = "class_code") val classCode: String?,    // 对象class_code
+    @ColumnInfo(name = "major_code") val majorCode: String?,    // 专业代码(类型为设备时)
+    @ColumnInfo(name = "system_code") val systemCode: String?,  // 系统代码(类型为设备时)
+    @ColumnInfo(name = "project_id") val projectId: String?,    // 项目id
+    @ColumnInfo(name = "infos") val infos: JsonElement? = null  // 对象类型的信息详情点配置
+)

+ 18 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/M2dEquipEntity.kt

@@ -0,0 +1,18 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+/**
+ * 正向建模设备 表
+ */
+@Entity(tableName = "m2d_equip")
+data class M2dEquipEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "name") val name: String,               // 设备名称
+    @ColumnInfo(name = "major_code") val majorCode: String?,   // 专业编码
+    @ColumnInfo(name = "system_code") val systemCode: String?, // 系统编码
+    @ColumnInfo(name = "class_code") val classCode: String?,   // 类型代码
+    @ColumnInfo(name = "project_id") val projectId: String?,   // 项目id
+)

+ 20 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/MajorEntity.kt

@@ -0,0 +1,20 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+/**
+ * 专业字典表(远程无对应表)
+ */
+@Entity(tableName = "major")
+data class MajorEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "label") val label: String,             // 专业标签
+    @ColumnInfo(name = "code") val code: String,               // 专业编码
+    @ColumnInfo(name = "type") val type: String,               // 专业类型
+    @ColumnInfo(name = "order_num") val orderNum: Int,         // 序号
+    @ColumnInfo(name = "dict_type_id") val dictTypeId: String, // 字典类型id
+    @ColumnInfo(name = "valid") var valid: Int?,               // 有效标识: 1 正常 0 删除
+    @ColumnInfo(name = "remark") var remark: String?,          // 备注
+)

+ 22 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/PipeConfigEntity.kt

@@ -0,0 +1,22 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+/**
+ * 管道配置 表
+ */
+@Entity(tableName = "pipe_config")
+data class PipeConfigEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "project_id") val projectId: String?,             // 项目id
+    @ColumnInfo(name = "class_code_from") val classCodeFrom: String?,    // from 端设备对象class_code
+    @ColumnInfo(name = "class_code_to") val classCodeTo: String?,        //  to  端设备对象class_code
+    @ColumnInfo(name = "pipe_type") val pipeType: String?,               // 管道类型(数据字典定义)
+    @ColumnInfo(name = "pipe_sub_type") val pipeSubType: String?,        // 管道用途(业务定义补充描述类型)
+    @ColumnInfo(name = "pipe_direction") val pipeDirection: Int?,        // 管道方向(1:正向from->to;-1:反向to->from;0:无方向)
+    @ColumnInfo(name = "pipe_description") val pipeDescription: String?, // 描述信息
+//    val classCodeFromName: String?,
+//    val classCodeToName: String?,
+)

+ 24 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/RelConfigEntity.kt

@@ -0,0 +1,24 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import java.io.Serializable
+
+/**
+ * 关系配置 表
+ */
+@Entity(tableName = "rel_config")
+data class RelConfigEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "project_id") val projectId: String?,           // 项目id
+    @ColumnInfo(name = "obj_type_from") val objTypeFrom: String?,      // from 端对象类型(space|equipment)
+    @ColumnInfo(name = "obj_type_to") val objTypeTo: String?,          //  to  端对象类型(space|equipment)
+    @ColumnInfo(name = "class_code_from") val classCodeFrom: String?,  // from 端对象class_code
+    @ColumnInfo(name = "class_code_to") val classCodeTo: String?,      //  to  端对象class_code
+    @ColumnInfo(name = "graph_code") val graphCode: String?,           // 关系的图类型编码
+    @ColumnInfo(name = "graph_name") val graphName: String?,           // 关系的图类型名称
+    @ColumnInfo(name = "rel_code") val relCode: String?,               // 关系的边类型编码
+    @ColumnInfo(name = "rel_name") val relName: String?,               // 关系的边类型名称
+    @ColumnInfo(name = "direction") val direction: String?,            // 关系方向(fixed|optional|none)
+): Serializable

+ 25 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/RelationDictEntity.kt

@@ -0,0 +1,25 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+/**
+ * 关系字典表(关系定义)(远程无对应表)
+ */
+@Entity(tableName = "relation_dict")
+data class RelationDictEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "code") val code: String,                  // 关系编码
+    @ColumnInfo(name = "name") val name: String,                  // 关系名
+    @ColumnInfo(name = "graph_code") val graphCode: String,       // 图编码
+    @ColumnInfo(name = "directional") val directional: Int?,      // 方向
+    @ColumnInfo(name = "target_Objs") val targetObjs: String?,    // 目标对象
+    @ColumnInfo(name = "attribute") val attribute: String?,       // 属性
+    @ColumnInfo(name = "fromObjType") val fromObjType: String?,
+    @ColumnInfo(name = "toObjType") val toObjType: String?,
+    @ColumnInfo(name = "remark") val remark: String?,
+    @ColumnInfo(name = "valid") var valid: Int?,                   // 有效标识, // 1 正常 0 删除
+    //@ColumnInfo(name = "before_cal_rels") val beforeCalRels: String?,
+    //@ColumnInfo(name = "calRules") val calRules: String?,
+)

+ 26 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/dict/SystemEntity.kt

@@ -0,0 +1,26 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.dict
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+/**
+ * 系统字典表(远程无对应表)
+ */
+@Entity(tableName = "system")
+data class SystemEntity(
+    @PrimaryKey val id: String,
+    @ColumnInfo(name = "code") val code: String,                     // 系统编码
+    @ColumnInfo(name = "name") val name: String,                     // 系统名称
+    @ColumnInfo(name = "alias_code") val aliasCode: String?,         // 编码别名
+    @ColumnInfo(name = "alias_name") val aliasName: String?,         // 名称别名
+    @ColumnInfo(name = "project_id") val projectId: String?,         // 项目 id
+    @ColumnInfo(name = "obj_type") val objType: String,              // 对象类型 "system"
+    @ColumnInfo(name = "group_code") val groupCode: String?,         // 集团编码
+    @ColumnInfo(name = "major_code") val majorCode: String?,         // 专业编码
+    @ColumnInfo(name = "system_code") val systemCode: String?,       // 系统编码
+    @ColumnInfo(name = "parent_code") val parentCode: String?,       // 父编码
+    @ColumnInfo(name = "equipment_code") val equipmentCode: String?, // 设备编码
+    @ColumnInfo(name = "version") val version: String?,              // 版本
+    @ColumnInfo(name = "valid") var valid: Int?,                     // 有效标识, // 1 正常 0 删除
+)

+ 29 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/FileEntity.kt

@@ -0,0 +1,29 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.task
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.ys.bdtp.adm.mvvm.model.db.entity.BaseEntity
+
+/**
+ * 文件表
+ */
+@Entity(tableName = "file")
+data class FileEntity(
+    @PrimaryKey @ColumnInfo(name = "id") override val id: String,
+    @ColumnInfo(name = "project_id") override val projectId: String,
+    @ColumnInfo(name = "building_id") override val buildingId: String,
+    @ColumnInfo(name = "floor_id") override val floorId: String,
+    @ColumnInfo(name = "state") override var state: Int = -1,
+    @ColumnInfo(name = "valid") override var valid: Int = 1,
+    @ColumnInfo(name = "ts") override val ts: Long = 0L,
+    @ColumnInfo(name = "biz_type") val bizType: String? = "",            // 业务类型(object:对象附件|problem_arch:空间问题附件|problem_equip:设备问题附件)
+    @ColumnInfo(name = "file_path") val filePath: String? = "",          // 文件存储路径
+    @ColumnInfo(name = "file_type") val fileType: String? = "",          // 文件类型(photo|video|file|...)
+    @ColumnInfo(name = "client_path") val clientPath: String? = "",      // app端文件存储路径
+    @ColumnInfo(name = "ref_obj_id") val refObjId: String? = "",         // 关联的对象id
+    @ColumnInfo(name = "ref_info_code") val refInfoCode: String? = "",   // 关联的对象信息点code
+    @ColumnInfo(name = "remark") val remark: String? = "",               // 描述
+    @ColumnInfo(name = "order_num") val orderNum: Int? = -1,             // 文件附件(照片)的排序序号
+    @ColumnInfo(name = "file_id") val fileId: String? = "",              // 文件服务中存储的id
+) : BaseEntity

+ 28 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/JobSpaceEntity.kt

@@ -0,0 +1,28 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.task
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.ys.bdtp.adm.mvvm.model.db.entity.BaseEntity
+import com.google.gson.JsonElement
+
+/**
+ * 工作空间表
+ */
+@Entity(tableName = "job_space")
+data class JobSpaceEntity(
+    @PrimaryKey @ColumnInfo(name = "id") override val id: String,
+    @ColumnInfo(name = "project_id") override val projectId: String?,
+    @ColumnInfo(name = "building_id") override val buildingId: String?,
+    @ColumnInfo(name = "floor_id") override val floorId: String?,
+    @ColumnInfo(name = "state") override var state: Int = -1,
+    @ColumnInfo(name = "valid") override var valid: Int = 1,
+    @ColumnInfo(name = "ts") override val ts: Long = 0L,
+    @ColumnInfo(name = "space_id") val spaceId: 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") var archState: Int?,             // 建筑结构核查任务状态(0:待核查;1:核查中;2:核查完毕)
+    @ColumnInfo(name = "equip_state") var equipState: Int?,           // 设备勘测任务状态(0:待勘测;1:勘测中;2:勘测完毕)
+    @ColumnInfo(name = "outline") val outline: JsonElement? = null    // 空间边界,模型更新空间变化时,用来做匹配计算
+) : BaseEntity

+ 95 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/ObjectEntity.kt

@@ -0,0 +1,95 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.task
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.ys.bdtp.adm.mvvm.model.db.entity.BaseEntity
+import com.google.gson.JsonElement
+
+/**
+ * 对象表
+ * 建筑,楼层,空间,设备
+ */
+
+@Entity(tableName = "object")
+data class ObjectEntity(
+    @PrimaryKey @ColumnInfo(name = "id") override val id: String,
+    @ColumnInfo(name = "project_id") override val projectId: String?,
+    @ColumnInfo(name = "building_id") override val buildingId: String?,
+    @ColumnInfo(name = "floor_id") override val floorId: String?,
+    @ColumnInfo(name = "state") override var state: Int = -1,
+    @ColumnInfo(name = "valid") override var valid: Int = 1,
+    @ColumnInfo(name = "ts") override val ts: Long = 0L,
+    @ColumnInfo(name = "name") val name: String? = "",
+    @ColumnInfo(name = "obj_type") val objType: String? = "",                   // 对象类型
+    @ColumnInfo(name = "class_code") var classCode: String? = "",               // 对象类型编码
+    @ColumnInfo(name = "local_id") var localId: String? = "",                   // 对象位置编码
+    @ColumnInfo(name = "local_name") var localName: String? = "",               // 对象位置名称
+    @ColumnInfo(name = "group_code") val groupCode: String? = "",               // 集团编码
+    @ColumnInfo(name = "grouping") val grouping: Int = 1,                       // 1 表示单个对象,2 表示对象组
+    @ColumnInfo(name = "client_device") val clientDevice: String? = "",         // 标识客户端设备
+    @ColumnInfo(name = "client_id") val clientId: String? = "",                 // 客户端生成id
+    @ColumnInfo(name = "delivery_state") val deliveryState: Int? = null,        // BDTP交付状态: 1 已交付, 0 待交付
+    @ColumnInfo(name = "d2m_state") val d2mState: Int? = null,                  // 逆向数据的数模同步状态(0:未同步;1:已同步)
+    @ColumnInfo(name = "virtual_codes") val virtualCodes: JsonElement? = null,  // 虚点清单: Json 数据格式
+    @ColumnInfo(name = "infos") var infos: JsonElement? = null,                 // 信息点数据: Json 数据格式
+    @ColumnInfo(name = "floor_map") var floorMap: String? = "",                 // 楼层地图
+    @ColumnInfo(name = "container_id") var containerId: String? = "",           // 无模型设备的上级设备id
+    @ColumnInfo(name = "bim_id") var bimId: String? = ""                        // 无模型设备的上级设备id
+) : BaseEntity
+
+/*
+
+data class Infos(
+    val bimId: String,
+    val bimLocation: String,
+    val codeType: Int,
+    val height: Int,
+    val modelId: String,
+//    val outline: List<List<List<Outline>>>,
+    val schemeId: String,
+    val state: String,
+    val RoomLocalName: String,
+    var unit: String,
+    val group: String,
+    val label: String,
+    var options: ArrayList<Options>,
+    var dataType: String,
+    var inputType: String,
+    val code: String,
+    val floorMap: String
+)
+
+data class Options(val name: String, val code: String)
+
+data class InfosForObj(
+    val floorMap: String,
+    val state: String,
+    val height: Int,
+    val outline: ArrayList<ArrayList<ArrayList<PointZ>>>
+)
+
+data class InfosforBuild(
+    val floorMap: String,
+    val state: String,
+    val height: Int,
+    val floorSequenceID: Int,
+)
+
+data class InfosforFloor(
+    val digitalDeliveryID: String,
+    val bimIdPre: String,
+    val floorElevation: Double,
+)
+
+data class InfosforSpace(
+    val digitalDeliveryID: String,
+)
+
+data class InfosforEq(
+    val location: Pointz2,
+    var zRegion: String,
+    var equipCheck: Any,
+    var digitalDeliveryID: String,
+)
+*/

+ 34 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/PipeEntity.kt

@@ -0,0 +1,34 @@
+package com.framework.mvvm.model.db.entity.task
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.ys.bdtp.adm.mvvm.model.db.entity.BaseEntity
+import com.google.gson.JsonElement
+
+/**
+ * 管道表
+ */
+@Entity(tableName = "pipe")
+data class PipeEntity(
+    @PrimaryKey @ColumnInfo(name = "id") override val id: String,
+    @ColumnInfo(name = "floor_id") override val floorId: String? = "",
+    @ColumnInfo(name = "project_id") override val projectId: String? = "",
+    @ColumnInfo(name = "building_id") override val buildingId: String? = "",
+    @ColumnInfo(name = "valid") override var valid: Int = 1,
+    @ColumnInfo(name = "state") override var state: Int = -1,
+    @ColumnInfo(name = "ts") override val ts: Long = 0L,
+    @ColumnInfo(name = "obj_from") val objFrom: String? = "",                // 管道的from端对象
+    @ColumnInfo(name = "type_from") val typeFrom: String? = "",              // from端对象类型(equipment:设备;pipe:管道)
+    @ColumnInfo(name = "obj_to") val objTo: String? = "",                    // 管道的to端对象
+    @ColumnInfo(name = "type_to") val typeTo: String? = "",                  // to端对象类型(equipment:设备;pipe:管道)
+    @ColumnInfo(name = "direction") val direction: Int? = null,              // 管道方向(1:正向from->to;-1:反向to->from;0:无方向
+    @ColumnInfo(name = "pipe_type") val pipeType: String? = "",              // 管道的数据字典类型(OTLAPL: 液体管道|OTAAPL: 气体管道)'
+    @ColumnInfo(name = "pipe_sub_type") val pipeSubType: String? = "",       // 管道用途
+    @ColumnInfo(name = "route") val route: JsonElement? = null,              // 管道路由(坐标列表格式:[{x:1,y:1,z:1}])
+    @ColumnInfo(name = "infos") val infos: JsonElement? = null,              // 管道的信息点
+    @ColumnInfo(name = "d2m_state") val d2mState: String? = null,            // 逆向数据的数模同步状态(0:未同步;1:已同步)
+    @ColumnInfo(name = "delivery_state") val deliveryState: String? = null,  // 交付BDTP状态:1已交付,0待交付
+    var objFromLocalId: String? = "",
+    var objToLocalId: String? = "",
+) : BaseEntity

+ 27 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/ProblemArchEntity.kt

@@ -0,0 +1,27 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.task
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.ys.bdtp.adm.mvvm.model.db.entity.BaseEntity
+import com.google.gson.JsonElement
+
+/**
+ * 结构问题  表
+ */
+@Entity(tableName = "problem_arch")
+data class ProblemArchEntity(
+    @PrimaryKey @ColumnInfo(name = "id") override val id: String,
+    @ColumnInfo(name = "floor_id") override val floorId: String,
+    @ColumnInfo(name = "project_id") override val projectId: String,
+    @ColumnInfo(name = "building_id") override val buildingId: String,
+    @ColumnInfo(name = "state") override var state: Int = -1,
+    @ColumnInfo(name = "valid") override var valid: Int = 1,
+    @ColumnInfo(name = "ts") override val ts: Long = 0L,
+    @ColumnInfo(name = "geom_type") val geomType: String? = "",        // 问题记录的几何类型(point|line|polygon)
+    @ColumnInfo(name = "work_id") val workId: String? = "",            // 交付工作流程id
+    @ColumnInfo(name = "problem_type") val problemType: String? = "",  // 问题类型
+    @ColumnInfo(name = "problem_state") var problemState: Int? = null, // 建筑结构核查任务状态(0:删除;1:有效;2:已解决)
+    @ColumnInfo(name = "message") val message: String? = "",           // 问题描述
+    @ColumnInfo(name = "geom") val geom: JsonElement? = null,          // 问题记录的几何数据(Json)
+) : BaseEntity

+ 25 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/ProblemEquipEntity.kt

@@ -0,0 +1,25 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.task
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.ys.bdtp.adm.mvvm.model.db.entity.BaseEntity
+
+/**
+ * 设备问题 表
+ */
+@Entity(tableName = "problem_equip")
+data class ProblemEquipEntity(
+    @PrimaryKey @ColumnInfo(name = "id") override val id: String,
+    @ColumnInfo(name = "floor_id") override val floorId: String,
+    @ColumnInfo(name = "project_id") override val projectId: String,
+    @ColumnInfo(name = "building_id") override val buildingId: String,
+    @ColumnInfo(name = "state") override var state: Int = -1,
+    @ColumnInfo(name = "valid") override var valid: Int = 1,
+    @ColumnInfo(name = "ts") override val ts: Long = 0L,
+    @ColumnInfo(name = "equip_id") val equipId: String,                  // 设备id
+    @ColumnInfo(name = "work_id") val workId: String? = null,            // 交付工作流程id
+    @ColumnInfo(name = "problem_type") val problemType: String? = null,  // 问题类型
+    @ColumnInfo(name = "problem_state") val problemState: Int? = null,   // 建筑结构核查任务状态(0:删除;1:有效;2:已解决)
+    @ColumnInfo(name = "message") val message: String? = null,           // 问题描述
+) : BaseEntity

+ 25 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/QrCodeEntity.kt

@@ -0,0 +1,25 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.task
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.ys.bdtp.adm.mvvm.model.db.entity.BaseEntity
+import com.google.gson.JsonElement
+
+/**
+ * 二维码表
+ */
+@Entity(tableName = "qr_code")
+data class QrCodeEntity(
+    @PrimaryKey @ColumnInfo(name = "id") override val id: String,
+    @ColumnInfo(name = "project_id") override val projectId: String,
+    @ColumnInfo(name = "building_id") override val buildingId: String,
+    @ColumnInfo(name = "floor_id") override val floorId: String,
+    @ColumnInfo(name = "state") override var state: Int = -1,
+    @ColumnInfo(name = "valid") override var valid: Int = 1,
+    @ColumnInfo(name = "ts") override val ts: Long = 0L,
+    @ColumnInfo(name = "qr_code") val qrCode: String = "",              // 二维码数据值
+    @ColumnInfo(name = "obj_id") val objId: String = "",                // 二维码对应的对象id
+    @ColumnInfo(name = "remark") val remark: String? = "",              // 描述信息
+    @ColumnInfo(name = "location") val location: JsonElement? = null,   // 位置坐标({x:1,y:1,z:1})
+) : BaseEntity

+ 33 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/RelationEntity.kt

@@ -0,0 +1,33 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.task
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.ys.bdtp.adm.mvvm.model.db.entity.BaseEntity
+
+/**
+ * 关系(业务)表
+ */
+@Entity(tableName = "relation")
+data class RelationEntity(
+    @PrimaryKey @ColumnInfo(name = "id") override val id: String,
+    @ColumnInfo(name = "project_id") override val projectId: String? = null,
+    @ColumnInfo(name = "building_id") override val buildingId: String? = null,
+    @ColumnInfo(name = "floor_id") override val floorId: String? = null,
+    @ColumnInfo(name = "state") override var state: Int = -1,
+    @ColumnInfo(name = "valid") override var valid: Int = 1,
+    @ColumnInfo(name = "ts") override val ts: Long = 0L,
+    @ColumnInfo(name = "group_code") val groupCode: String? = null,         // 集团代码
+    @ColumnInfo(name = "graph_id") val graphId: String? = null,             // 图id
+    @ColumnInfo(name = "graph_code") val graphCode: String? = null,         // 图编码
+    @ColumnInfo(name = "rel_code") val relCode: String? = null,             // 关系编码
+    @ColumnInfo(name = "rel_value") val relValue: String? = null,           // 关系值
+    @ColumnInfo(name = "obj_from") val objFrom: String? = null,             // 关系源对象
+    @ColumnInfo(name = "obj_to") val objTo: String? = null,                 // 关系目标对象
+    @ColumnInfo(name = "client_id") val clientId: String? = null,           // 客户端生成id
+    @ColumnInfo(name = "client_device") val clientDevice: String? = null,   // 标识客户端设备
+    @ColumnInfo(name = "delivery_state") val deliveryState: Int = -1,       // BDTP交付状态: 1 已交付, 0 待交付
+    @ColumnInfo(name = "d2m_state") val d2mState: Int = -1,                 // 逆向数据的数模同步状态(0:未同步;1:已同步)
+    var objFromLocalId: String? = null,
+    var objToLocalId: String? = null,
+) : BaseEntity

+ 26 - 0
app/src/main/java/com/ys/bdtp/adm/mvvm/model/db/entity/task/ServeAreaEntity.kt

@@ -0,0 +1,26 @@
+package com.ys.bdtp.adm.mvvm.model.db.entity.task
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import com.ys.bdtp.adm.mvvm.model.db.entity.BaseEntity
+import com.google.gson.JsonElement
+
+/**
+ * 描述设备的服务区域
+ */
+@Entity(tableName = "serve_area")
+data class ServeAreaEntity(
+    @PrimaryKey @ColumnInfo(name = "id") override val id: String,
+    @ColumnInfo(name = "project_id") override val projectId: String,
+    @ColumnInfo(name = "building_id") override val buildingId: String,
+    @ColumnInfo(name = "floor_id") override val floorId: String,
+    @ColumnInfo(name = "state") override var state: Int = -1,
+    @ColumnInfo(name = "valid") override var valid: Int = 1,
+    @ColumnInfo(name = "ts") override val ts: Long = 0L,
+    @ColumnInfo(name = "obj_id") var objId: String? = "",            // 服务该区域的设备id
+    @ColumnInfo(name = "geom_type") var geomType: String? = "",      // 服务区域的几何类型(polygon:多边形|circle:圆形|ellipse:椭圆)
+    @ColumnInfo(name = "geom") var geom: JsonElement? = null,        // 服务区域的轮廓几何信息(polygon对应xy坐标数组, circle和ellipse对应对象(圆心半径))
+    @ColumnInfo(name = "serve_type") var serveType: String? = "",    // 服务的类型,照明回路等,暂时为空
+    @ColumnInfo(name = "remark") var remark: String? = "",           // 描述信息
+) : BaseEntity