[6.4.0][Fix]解决FM数据存数据库后反序列化崩溃的问题
This commit is contained in:
@@ -16,6 +16,8 @@ import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ProcessUtils
|
||||
import com.mogo.eagle.core.utilcode.util.SPUtils
|
||||
import com.mogo.eagle.core.utilcode.util.Utils
|
||||
import com.zhjt.mogo.adas.utils.ByteUtil
|
||||
import fault_management.FmInfo
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -118,7 +120,9 @@ object DataManager {
|
||||
private fun realSaveMsg(msg: MsgBoxBean) {
|
||||
val type = msg.type
|
||||
msg.timestamp = System.currentTimeMillis()
|
||||
msg.bean2Json = GsonUtils.toJson(msg.bean)
|
||||
if (msg.pbStr.isEmpty()) {
|
||||
msg.bean2Json = GsonUtils.toJson(msg.bean)
|
||||
}
|
||||
when (type) {
|
||||
MsgBoxType.V2X -> {
|
||||
// 汇总消息不存数据库
|
||||
@@ -129,39 +133,47 @@ object DataManager {
|
||||
}
|
||||
CallerMsgBoxListenerManager.invokeListener(MsgCategory.NOTICE, msg)
|
||||
}
|
||||
|
||||
MsgBoxType.FMINFO -> {
|
||||
synchronized(this) {
|
||||
fmInfoList.add(msg)
|
||||
}
|
||||
CallerMsgBoxListenerManager.invokeListener(MsgCategory.FM_INFO, msg)
|
||||
}
|
||||
|
||||
MsgBoxType.VOICE -> {
|
||||
CallerMsgBoxListenerManager.invokeListener(MsgCategory.VOICE_INFO, msg)
|
||||
}
|
||||
|
||||
MsgBoxType.AUTOPILOT -> {// 不存数据库
|
||||
CallerMsgBoxListenerManager.invokeListener(MsgCategory.NOTICE, msg)
|
||||
}
|
||||
|
||||
MsgBoxType.SSMINFO -> {// 不存数据库
|
||||
CallerMsgBoxListenerManager.invokeListener(MsgCategory.SYS_INFO, msg)
|
||||
}
|
||||
|
||||
MsgBoxType.OBU, MsgBoxType.NOTICE, MsgBoxType.OPERATION -> {
|
||||
synchronized(this) {
|
||||
notifyList.add(msg)
|
||||
}
|
||||
CallerMsgBoxListenerManager.invokeListener(MsgCategory.NOTICE, msg)
|
||||
}
|
||||
|
||||
MsgBoxType.REPORT -> {
|
||||
synchronized(this) {
|
||||
sysInfoList.add(msg)
|
||||
}
|
||||
CallerMsgBoxListenerManager.invokeListener(MsgCategory.SYS_INFO, msg)
|
||||
}
|
||||
|
||||
MsgBoxType.RECORD -> {
|
||||
synchronized(this) {
|
||||
recordBagList.add(msg)
|
||||
}
|
||||
CallerMsgBoxListenerManager.invokeListener(MsgCategory.RECORD_BAG, msg)
|
||||
}
|
||||
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
@@ -273,6 +285,7 @@ object DataManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MsgBoxType.OBU.ordinal -> {
|
||||
return@map MsgBoxBean(
|
||||
MsgBoxType.OBU,
|
||||
@@ -284,6 +297,7 @@ object DataManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MsgBoxType.OPERATION.ordinal -> {
|
||||
return@map MsgBoxBean(
|
||||
MsgBoxType.OPERATION,
|
||||
@@ -295,6 +309,7 @@ object DataManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MsgBoxType.REPORT.ordinal -> {
|
||||
return@map MsgBoxBean(
|
||||
MsgBoxType.REPORT,
|
||||
@@ -306,6 +321,7 @@ object DataManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MsgBoxType.RECORD.ordinal -> {
|
||||
return@map MsgBoxBean(
|
||||
MsgBoxType.RECORD,
|
||||
@@ -317,6 +333,7 @@ object DataManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MsgBoxType.NOTICE.ordinal -> {
|
||||
return@map MsgBoxBean(
|
||||
MsgBoxType.NOTICE,
|
||||
@@ -328,6 +345,7 @@ object DataManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else -> {
|
||||
return@map null
|
||||
}
|
||||
@@ -373,7 +391,7 @@ object DataManager {
|
||||
|
||||
if (fmInfoList.isNotEmpty()) {
|
||||
fmInfoList.forEach {
|
||||
msgInfoList.add(MsgBoxInfo(it.bean2Json, it.type.ordinal, it.timestamp))
|
||||
msgInfoList.add(MsgBoxInfo(it.pbStr, it.type.ordinal, it.timestamp))
|
||||
}
|
||||
fmInfoList.clear()
|
||||
}
|
||||
@@ -402,8 +420,19 @@ object DataManager {
|
||||
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
|
||||
val bytes = ByteUtil.hexToByteArr(boxInfo.bean2Json)
|
||||
if (bytes == null) {
|
||||
MsgBoxBean(
|
||||
MsgBoxType.FMINFO,
|
||||
FMInfoMsg(null, "", 0, false)
|
||||
)
|
||||
} else {
|
||||
MsgBoxBean(
|
||||
MsgBoxType.FMINFO,
|
||||
FMInfoMsg(FmInfo.FaultResultMsg.parseFrom(bytes).infosList, "", 0, false)
|
||||
).apply {
|
||||
timestamp = boxInfo.timeStamp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user