diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/DataManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/DataManager.kt index 397d1222c0..18894c47d6 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/DataManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/DataManager.kt @@ -130,6 +130,9 @@ object DataManager { CallerMsgBoxListenerManager.invokeListener(MsgCategory.NOTICE, msg) } MsgBoxType.FMINFO -> { + synchronized(this) { + fmInfoList.add(msg) + } CallerMsgBoxListenerManager.invokeListener(MsgCategory.FM_INFO, msg) } MsgBoxType.VOICE -> { @@ -250,7 +253,7 @@ object DataManager { } } - private suspend fun getCacheMessages(context: Context): List = + private suspend fun getCacheMessages(context: Context): List = withContext(Dispatchers.IO) { delay(2000) return@withContext MsgBoxDb.getDb(context) @@ -326,7 +329,7 @@ object DataManager { } } else -> { - return@map MsgBoxBean(MsgBoxType.V2X, V2XMsg()) + return@map null } } } @@ -368,6 +371,13 @@ object DataManager { recordBagList.clear() } + if (fmInfoList.isNotEmpty()) { + fmInfoList.forEach { + msgInfoList.add(MsgBoxInfo(it.bean2Json, it.type.ordinal, it.timestamp)) + } + fmInfoList.clear() + } + if (msgInfoList.isNotEmpty()) { MsgBoxDb.getDb(context) .monitorDao() @@ -387,4 +397,14 @@ object DataManager { } } } + + fun queryFMInfoList(context: Context, startTime: Long, endTime: Long): List { + return MsgBoxDb.getDb(context).monitorDao() + .getFMInfoList(MsgBoxType.FMINFO.ordinal, startTime, endTime) + .map { boxInfo -> + MsgBoxBean(MsgBoxType.FMINFO, GsonUtils.fromJson(boxInfo.bean2Json, FMInfoMsg::class.java)).apply { + timestamp = boxInfo.timeStamp + } + } + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgBoxProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgBoxProvider.kt index 106b464eef..41e0b64671 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgBoxProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgBoxProvider.kt @@ -50,6 +50,14 @@ class MsgBoxProvider : IMsgBoxProvider { return DataManager.getRecordBagData() } + override fun queryFMInfoList( + context: Context, + startTime: Long, + endTime: Long + ): List { + return DataManager.queryFMInfoList(context, startTime, endTime) + } + override fun removeRecordInfo(context: Context, msgBoxBean: MsgBoxBean, key: String) { DataManager.removeRecordInfo(key, key) DataManager.delMsgBoxBean(context, msgBoxBean) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/db/MsgBoxDao.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/db/MsgBoxDao.kt index 923e574416..51124004f8 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/db/MsgBoxDao.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/db/MsgBoxDao.kt @@ -16,6 +16,9 @@ interface MsgBoxDao { @Query("SELECT * FROM t_msg_box") fun getAllCachedMessages(): List + @Query("SELECT * FROM t_msg_box WHERE json_obj_type == (:fmType) AND time_stamp >= (:startTime) AND time_stamp <= (:endTime)") + fun getFMInfoList(fmType: Int, startTime: Long, endTime: Long): List + @Query("DELETE FROM t_msg_box") fun deleteMsgTable() } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/msgbox/IMsgBoxProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/msgbox/IMsgBoxProvider.kt index 28ffc983f2..42e55c5e73 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/msgbox/IMsgBoxProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/msgbox/IMsgBoxProvider.kt @@ -26,6 +26,8 @@ interface IMsgBoxProvider: IMoGoFunctionServerProvider { */ fun getCachedRecordBagData(): List + fun queryFMInfoList(context: Context, startTime: Long, endTime: Long): List + fun removeRecordInfo(context: Context, msgBoxBean: MsgBoxBean, key: String) fun getDismissTime(): Long diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/msgbox/CallerMsgBoxManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/msgbox/CallerMsgBoxManager.kt index b453929178..0ee40a2d7e 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/msgbox/CallerMsgBoxManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/msgbox/CallerMsgBoxManager.kt @@ -64,6 +64,13 @@ object CallerMsgBoxManager { return providerApi?.getCachedRecordBagData() } + /** + * 查询一段时间范围内的FM数据集合 + */ + fun queryFMInfoList(context: Context, startTime: Long, endTime: Long): List? { + return providerApi?.queryFMInfoList(context, startTime, endTime) + } + /** * 用户已处理的Bag包需要删除(上传或取消都包含) * key: Bag包的唯一标识key, msgBoxBean: UI展示的那个对象而不是重新new的