[6.6.0]数据闭环

This commit is contained in:
xuxinchao
2024-08-15 10:22:00 +08:00
parent 92f6f4dc99
commit 4e95a07d54
29 changed files with 1581 additions and 0 deletions

View File

@@ -0,0 +1,154 @@
package com.mogo.eagle.core.function.takeover
import android.content.Context
import android.os.Looper
import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo
import com.mogo.eagle.core.function.takeover.db.RecordDb
import com.mogo.eagle.core.function.takeover.db.RecordInfo
import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope
import com.mogo.eagle.core.utilcode.util.Utils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
/**
* 接管记录数据库操作管理
*/
object RecordManager {
private val scope by lazy {
Utils.getApp().lifeCycleScope
}
/**
* 插入接管记录数据
* @param context 上下文
* @param takeOverRecordInfo 接管数据实体
*/
fun insertRecord(context: Context,takeOverRecordInfo: TakeOverRecordInfo){
takeOverRecordInfo.let {
val recordInfo = RecordInfo(null,it.address,it.faultStartTime,it.level1Id,
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
if (Thread.currentThread() == Looper.getMainLooper().thread){
scope.launch{
withContext(Dispatchers.IO){
realInsertRecord(context,recordInfo)
}
}
}else{
realInsertRecord(context,recordInfo)
}
}
}
/**
* 插入接管记录数据
* @param context 上下文
* @param recordInfo 接管数据实体
*/
private fun realInsertRecord(context: Context,recordInfo: RecordInfo){
RecordDb.getDb(context)
.recordDao()
.insertRecord(recordInfo)
}
/**
* 修改接管记录数据
* @param context 上下文
* @param takeOverRecordInfo 接管数据实体
*/
fun updateRecord(context: Context,takeOverRecordInfo: TakeOverRecordInfo){
takeOverRecordInfo.let{
val recordInfo = RecordInfo(null,it.address,it.faultStartTime,it.level1Id,
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
if (Thread.currentThread() == Looper.getMainLooper().thread){
scope.launch{
withContext(Dispatchers.IO){
realUpdateRecord(context,recordInfo)
}
}
}else{
realUpdateRecord(context,recordInfo)
}
}
}
/**
* 修改接管记录数据
* @param context 上下文
* @param recordInfo 接管数据实体
*/
private fun realUpdateRecord(context: Context,recordInfo: RecordInfo){
RecordDb.getDb(context)
.recordDao()
.updateRecord(recordInfo)
}
/**
* 删除接管记录
* @param context 上下文
* @param recordInfo 接管数据实体
*/
fun deleteRecord(context: Context, takeOverRecordInfo: TakeOverRecordInfo) {
takeOverRecordInfo.let{
val recordInfo = RecordInfo(null,it.address,it.faultStartTime,it.level1Id,
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
if (Thread.currentThread() == Looper.getMainLooper().thread){
scope.launch {
withContext(Dispatchers.IO) {
realDeleteRecord(context, recordInfo)
}
}
}else{
realDeleteRecord(context, recordInfo)
}
}
}
/**
* 删除接管记录
* @param context 上下文
* @param recordInfo 接管数据实体
*/
private fun realDeleteRecord(context: Context, recordInfo: RecordInfo){
RecordDb.getDb(context)
.recordDao()
.deleteRecord(recordInfo)
}
/**
* 获取接管记录列表
*/
suspend fun getAllRecord(context: Context): List<RecordInfo>{
return RecordDb.getDb(context)
.recordDao()
.getAllRecord()
}
/**
* 删除所有接管数据
* @param context 上下文
*/
fun deleteAllRecord(context: Context){
if (Thread.currentThread() == Looper.getMainLooper().thread){
scope.launch {
withContext(Dispatchers.IO) {
realDeleteAllRecord(context)
}
}
}else{
realDeleteAllRecord(context)
}
}
/**
* 删除所有接管数据
* @param context 上下文
*/
private fun realDeleteAllRecord(context: Context){
RecordDb.getDb(context)
.recordDao()
.deleteAllRecord()
}
}

View File

@@ -0,0 +1,55 @@
package com.mogo.eagle.core.function.takeover
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo
import com.mogo.eagle.core.function.api.datacenter.takeover.ITakeOverProvider
@Route(path = MogoServicePaths.PATH_TAKE_OVER_PROVIDER)
class TakeOverRecordProvider: ITakeOverProvider {
override val functionName: String
get() = "TakeOverRecordProvider"
override fun init(context: Context?) {
}
override fun onDestroy() {
}
override fun insertRecord(context: Context, takeOverRecordInfo: TakeOverRecordInfo) {
RecordManager.insertRecord(context,takeOverRecordInfo)
}
override fun updateRecord(context: Context, takeOverRecordInfo: TakeOverRecordInfo) {
RecordManager.updateRecord(context,takeOverRecordInfo)
}
override fun deleteRecord(context: Context, takeOverRecordInfo: TakeOverRecordInfo) {
RecordManager.deleteRecord(context,takeOverRecordInfo)
}
override fun deleteAllRecord(context: Context) {
RecordManager.deleteAllRecord(context)
}
override suspend fun getAllRecord(context: Context): List<TakeOverRecordInfo> {
val list = RecordManager.getAllRecord(context)
return if(list.isEmpty()){
emptyList()
}else{
val recordInfoList = mutableListOf<TakeOverRecordInfo>()
list.forEach {
recordInfoList.add(
TakeOverRecordInfo(it.faultStartTime,it.address,it.level1Id,
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
)
}
recordInfoList
}
}
}

View File

@@ -0,0 +1,30 @@
package com.mogo.eagle.core.function.takeover.db
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import androidx.room.Update
/**
* 接管记录实体类数据库操作
*/
@Dao
interface RecordDao {
//插入数据
@Insert
fun insertRecord(info: RecordInfo)
//修改数据
@Update
fun updateRecord(info: RecordInfo)
//删除数据
@Delete
fun deleteRecord(info: RecordInfo)
//查询数据
@Query("SELECT * FROM take_over_record")
suspend fun getAllRecord(): List<RecordInfo>
//清空数据
@Query("DELETE FROM take_over_record")
fun deleteAllRecord()
}

View File

@@ -0,0 +1,32 @@
package com.mogo.eagle.core.function.takeover.db
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
/**
* 接管记录数据库
*/
@Database(entities = [RecordInfo::class], version = 1, exportSchema = false)
abstract class RecordDb: RoomDatabase() {
abstract fun recordDao(): RecordDao
companion object {
private const val RECORD_DB_NAME = "take_over.db"
private var db: RecordDb? = null
@JvmStatic
fun getDb(context: Context): RecordDb {
if (db == null) {
db = Room.databaseBuilder(context.applicationContext, RecordDb::class.java, RECORD_DB_NAME)
.fallbackToDestructiveMigration()
.build()
}
return db!!
}
}
}

View File

@@ -0,0 +1,39 @@
package com.mogo.eagle.core.function.takeover.db
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
/**
* 接管记录实体类
*/
@Entity(tableName = "take_over_record")
data class RecordInfo(
//自增主键
@PrimaryKey(autoGenerate = true)
var id: Int ?= null,
//故障地点
@ColumnInfo
val address: String,
//故障开始时间 yyyy-MM-dd HH:mm:ss
@ColumnInfo
val faultStartTime: String,
//一级分类ID
@ColumnInfo
var level1Id: Int,
//二级分类ID
@ColumnInfo
var level2Id: Int,
//三级分类ID
@ColumnInfo
var level3Id: Int,
//行驶路线
@ColumnInfo
val lineName: String,
//上报描述
@ColumnInfo
var reportNote: String,
//上传状态 false:未上传,可编辑 true:已上传,不可编辑
@ColumnInfo
var reportStatus: Boolean
)