[6.6.0]数据闭环
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
}
|
||||
@@ -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!!
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
)
|
||||
Reference in New Issue
Block a user