diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/ReasonManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/ReasonManager.kt new file mode 100644 index 0000000000..b723022b3c --- /dev/null +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/ReasonManager.kt @@ -0,0 +1,131 @@ +package com.mogo.eagle.core.function.takeover + +import android.content.Context +import android.os.Looper +import com.mogo.eagle.core.data.deva.report.CategoryInfo +import com.mogo.eagle.core.function.takeover.db.ReasonDb +import com.mogo.eagle.core.function.takeover.db.ReasonInfo +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 ReasonManager { + + private val scope by lazy { + Utils.getApp().lifeCycleScope + } + + /** + * 插入故障、接管原因数据 + * @param context 上下文 + * @param categoryInfo 原因实体 + */ + fun insertReason(context: Context, categoryInfo: CategoryInfo){ + categoryInfo.let { + val reasonInfo = ReasonInfo(System.currentTimeMillis(),it.id,it.name,it.level,it.parentId,it.parentName,it.desc,it.terminalType) + if (Thread.currentThread() == Looper.getMainLooper().thread){ + scope.launch{ + withContext(Dispatchers.IO){ + realInsertReason(context,reasonInfo) + } + } + }else{ + realInsertReason(context,reasonInfo) + } + } + } + + /** + * 插入故障、接管原因数据 + * @param context 上下文 + * @param reasonInfo 原因实体 + */ + private fun realInsertReason(context: Context,reasonInfo: ReasonInfo){ + ReasonDb.getDb(context) + .reasonDao() + .insertReason(reasonInfo) + } + + /** + * 修改故障、接管原因数据 + */ + fun updateReason(context: Context,categoryInfo: CategoryInfo){ + categoryInfo.let { + val info = ReasonInfo(System.currentTimeMillis(),it.id,it.name,it.level,it.parentId,it.parentName,it.desc,it.terminalType) + if (Thread.currentThread() == Looper.getMainLooper().thread){ + scope.launch{ + withContext(Dispatchers.IO){ + realUpdateReason(context,info) + } + } + }else{ + realUpdateReason(context,info) + } + } + } + + /** + * 修改故障、接管原因数据 + */ + private fun realUpdateReason(context: Context,reasonInfo: ReasonInfo){ + ReasonDb.getDb(context) + .reasonDao() + .updateReason(reasonInfo) + } + + /** + * 删除故障、接管原因数据 + */ + fun deleteReason(context: Context,categoryInfo: CategoryInfo){ + categoryInfo.let { + val info = ReasonInfo(System.currentTimeMillis(),it.id,it.name,it.level,it.parentId,it.parentName,it.desc,it.terminalType) + if (Thread.currentThread() == Looper.getMainLooper().thread){ + scope.launch { + withContext(Dispatchers.IO) { + realDeleteReason(context, info) + } + } + }else{ + realDeleteReason(context, info) + } + } + } + + /** + * 删除故障、接管原因数据 + */ + private fun realDeleteReason(context: Context,reasonInfo: ReasonInfo){ + ReasonDb.getDb(context) + .reasonDao().deleteReason(reasonInfo) + } + + /** + * 获取故障、接管原因数据 + */ + suspend fun getAllRecord(context: Context,parentId: Int,parentName: String): MutableList{ + return ReasonDb.getDb(context) + .reasonDao().getAllReason(parentId, parentName) + } + + fun deleteAllReason(context: Context,parentId: Int,parentName: String){ + if (Thread.currentThread() == Looper.getMainLooper().thread){ + scope.launch { + withContext(Dispatchers.IO) { + realDeleteAllReason(context, parentId, parentName) + } + } + }else{ + realDeleteAllReason(context, parentId, parentName) + } + } + + private fun realDeleteAllReason(context: Context,parentId: Int,parentName: String){ + ReasonDb.getDb(context).reasonDao().deleteAllReason(parentId, parentName) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/TakeOverRecordProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/TakeOverRecordProvider.kt index ed765ea0e3..5e98f90e23 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/TakeOverRecordProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/TakeOverRecordProvider.kt @@ -3,6 +3,7 @@ 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.CategoryInfo import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo import com.mogo.eagle.core.function.api.datacenter.takeover.ITakeOverProvider @@ -48,4 +49,29 @@ class TakeOverRecordProvider: ITakeOverProvider { return recordInfoList } + override fun insertReason(context: Context, categoryInfo: CategoryInfo) { + ReasonManager.insertReason(context, categoryInfo) + } + + override fun updateReason(context: Context, categoryInfo: CategoryInfo) { + ReasonManager.updateReason(context, categoryInfo) + } + + override fun deleteReason(context: Context, categoryInfo: CategoryInfo) { + ReasonManager.deleteReason(context, categoryInfo) + } + + override suspend fun getAllReason(context: Context,parentId: Int,parentName: String): MutableList { + val list = ReasonManager.getAllRecord(context,parentId, parentName) + val categoryInfoList = mutableListOf() + list.forEach { + categoryInfoList.add(CategoryInfo(it.id,it.name,it.desc,it.level,it.terminalType,it.parentId,it.parentName)) + } + return categoryInfoList + } + + override fun deleteAllReason(context: Context, parentId: Int, parentName: String) { + ReasonManager.deleteAllReason(context, parentId, parentName) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/db/ReasonDao.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/db/ReasonDao.kt new file mode 100644 index 0000000000..febb9459c5 --- /dev/null +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/db/ReasonDao.kt @@ -0,0 +1,29 @@ +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 ReasonDao { + //插入数据 + @Insert + fun insertReason(reason: ReasonInfo) + //修改数据 + @Update + fun updateReason(reason: ReasonInfo) + //删除数据 + @Delete + fun deleteReason(reason: ReasonInfo) + //查询数据 + @Query("SELECT * FROM take_over_reason WHERE parentId = :parentId OR parentName = :parentName") + suspend fun getAllReason(parentId: Int,parentName: String): MutableList + //清空子数据 + @Query("DELETE FROM take_over_reason WHERE parentId = :parentId OR parentName = :parentName") + fun deleteAllReason(parentId: Int,parentName: String) +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/db/ReasonDb.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/db/ReasonDb.kt new file mode 100644 index 0000000000..8bdbe9914b --- /dev/null +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/db/ReasonDb.kt @@ -0,0 +1,33 @@ +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 = [ReasonInfo::class], version = 1, exportSchema = false) +abstract class ReasonDb: RoomDatabase() { + + abstract fun reasonDao(): ReasonDao + + companion object{ + private const val RECORD_DB_NAME = "fault_reason.db" + + private var db: ReasonDb ?= null + + @JvmStatic + fun getDb(context: Context): ReasonDb{ + if (db == null) { + db = Room.databaseBuilder(context.applicationContext, ReasonDb::class.java, RECORD_DB_NAME) + .fallbackToDestructiveMigration() + .build() + } + return db!! + } + + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/db/ReasonInfo.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/db/ReasonInfo.kt new file mode 100644 index 0000000000..779549dd02 --- /dev/null +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/takeover/db/ReasonInfo.kt @@ -0,0 +1,37 @@ +package com.mogo.eagle.core.function.takeover.db + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import java.time.LocalDateTime + +/** + * 接管、故障原因 + */ +@Entity(tableName = "take_over_reason") +data class ReasonInfo( + //自增ID主键 + @PrimaryKey(autoGenerate = false) + val time: Long, + //id + @ColumnInfo + val id: Int, + //名称 + @ColumnInfo + val name: String, + //级别 + @ColumnInfo + val level: Int, + //父级ID + @ColumnInfo + val parentId: Int, + //父级名称 + @ColumnInfo + val parentName: String, + //描述 + @ColumnInfo + val desc: String, + //适用终端 枚举: 1,2,3 枚举备注: 1 :小程序 2 :APP 3 :全部 + @ColumnInfo + val terminalType: Int +) \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/report/CategoryInfo.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/report/CategoryInfo.kt index 0813b99018..46416a3f3a 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/report/CategoryInfo.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/report/CategoryInfo.kt @@ -10,4 +10,5 @@ package com.mogo.eagle.core.data.deva.report * @param parentId 父级 */ data class CategoryInfo(val id: Int,val name: String,val desc: String, - val level: Int, val terminalType: Int,val parentId: Int) \ No newline at end of file + val level: Int, val terminalType: Int, + val parentId: Int,val parentName: String) \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/takeover/ITakeOverProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/takeover/ITakeOverProvider.kt index 6b631e3b8a..5c313c7b2c 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/takeover/ITakeOverProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/takeover/ITakeOverProvider.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.api.datacenter.takeover import android.content.Context +import com.mogo.eagle.core.data.deva.report.CategoryInfo import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider @@ -34,4 +35,28 @@ interface ITakeOverProvider: IMoGoFunctionServerProvider { */ suspend fun getAllRecord(context: Context): MutableList + /** + * 插入接管原因 + */ + fun insertReason(context: Context,categoryInfo: CategoryInfo) + + /** + * 修改接管原因 + */ + fun updateReason(context: Context,categoryInfo: CategoryInfo) + + /** + * 删除接管原因 + */ + fun deleteReason(context: Context,categoryInfo: CategoryInfo) + + /** + * 获取接管原因列表 + */ + suspend fun getAllReason(context: Context,parentId: Int,parentName: String): MutableList + + /** + * 清空子数据 + */ + fun deleteAllReason(context: Context,parentId: Int,parentName: String) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/takeover/CallerTakeOverManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/takeover/CallerTakeOverManager.kt index da9b5e1dd9..2376823a6b 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/takeover/CallerTakeOverManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/takeover/CallerTakeOverManager.kt @@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.call.takeover import android.content.Context import com.mogo.eagle.core.data.constants.MogoServicePaths +import com.mogo.eagle.core.data.deva.report.CategoryInfo import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo import com.mogo.eagle.core.function.api.datacenter.takeover.ITakeOverProvider import com.mogo.eagle.core.function.call.base.CallerBase @@ -52,4 +53,39 @@ object CallerTakeOverManager { return providerApi.getAllRecord(context) } + /** + * 插入接管原因 + */ + fun insertReason(context: Context,categoryInfo: CategoryInfo){ + providerApi.insertReason(context, categoryInfo) + } + + /** + * 修改接管原因 + */ + fun updateReason(context: Context,categoryInfo: CategoryInfo){ + providerApi.updateReason(context, categoryInfo) + } + + /** + * 删除接管原因 + */ + fun deleteReason(context: Context,categoryInfo: CategoryInfo){ + providerApi.deleteReason(context, categoryInfo) + } + + /** + * 获取接管原因列表 + */ + suspend fun getAllReason(context: Context,parentId: Int,parentName: String): MutableList{ + return providerApi.getAllReason(context,parentId, parentName) + } + + /** + * 清空子数据 + */ + fun deleteAllReason(context: Context,parentId: Int,parentName: String){ + providerApi.deleteAllReason(context, parentId, parentName) + } + } \ No newline at end of file