From d465b4e875d9b9c2133f75d6d879d433aeda5947 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Tue, 14 Nov 2023 18:33:00 +0800 Subject: [PATCH] =?UTF-8?q?[6.2.0]=E6=B6=88=E6=81=AF=E7=9B=92=E5=AD=90?= =?UTF-8?q?=E5=8F=B8=E6=9C=BA=E7=AB=AFFM=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/msgbox/MsgBoxConfig.kt | 58 +++-- .../eagle/core/function/msgbox/MsgFmData.kt | 164 ++++++++++++++ .../hmi/ui/msgbox/DriverMsgBoxBubbleView.kt | 18 +- .../hmi/ui/msgbox/DriverMsgBoxListView.kt | 17 +- .../adapter/DriverMsgBoxBubbleAdapter.kt | 37 +++- .../msgbox/adapter/DriverMsgBoxListAdapter.kt | 205 +++++++++++++++++- .../drawable-xhdpi/icon_fm_reduce_normal.png | Bin 0 -> 15020 bytes .../drawable-xhdpi/icon_fm_reduce_open.png | Bin 0 -> 3179 bytes .../drawable-xhdpi/icon_fm_relieve_normal.png | Bin 0 -> 14882 bytes .../drawable-xhdpi/icon_fm_relieve_open.png | Bin 0 -> 2981 bytes .../drawable-xhdpi/icon_fm_stop_normal.png | Bin 0 -> 16104 bytes .../res/drawable-xhdpi/icon_fm_stop_open.png | Bin 0 -> 3278 bytes .../drawable-xhdpi/icon_fm_warning_normal.png | Bin 0 -> 17096 bytes .../drawable-xhdpi/icon_fm_warning_open.png | Bin 0 -> 3350 bytes .../src/main/res/layout/item_msg_box_fm.xml | 195 ++++++++++++++++- .../res/layout/item_msg_box_ipc_report.xml | 3 +- .../main/res/layout/item_msg_bubble_fm.xml | 69 +++++- .../mogo/eagle/core/data/msgbox/FMInfoMsg.kt | 4 +- ...llerFaultManagementStateListenerManager.kt | 5 +- 19 files changed, 722 insertions(+), 53 deletions(-) create mode 100644 core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgFmData.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_reduce_normal.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_reduce_open.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_relieve_normal.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_relieve_open.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_stop_normal.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_stop_open.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_warning_normal.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_warning_open.png diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgBoxConfig.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgBoxConfig.kt index 241ad69f8c..c5bd83db69 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgBoxConfig.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgBoxConfig.kt @@ -8,38 +8,36 @@ import com.mogo.eagle.core.utilcode.util.SPUtils * @description 消息盒子配置 * @since: 2022/12/1 */ -class MsgBoxConfig { +object MsgBoxConfig { - companion object{ - //当前用户的Tab选择记录 - private const val userRecord = "USER_RECORD" + //当前用户的Tab选择记录 + private const val userRecord = "USER_RECORD" - /** - * 获取当前用户Tab选择记录 - */ - fun getUserRecord(): Int{ - return SPUtils.getInstance().getInt(userRecord,0) - } - - /** - * 设置当前用户Tab选择记录 - */ - fun setUserRecord(record: Int){ - SPUtils.getInstance().put(userRecord,record) - } - - //通知消息缓存列表 - @JvmField - var noticeList: ArrayList = ArrayList() - //车辆系统信息缓存列表 - @JvmField - var systemInfoList: ArrayList = ArrayList() - //录包信息缓存列表 - @JvmField - var recordBagList: ArrayList = ArrayList() - //播放小智语音消息时的未播放消息缓存列表 - @JvmField - var unPlayList: ArrayList = ArrayList() + /** + * 获取当前用户Tab选择记录 + */ + fun getUserRecord(): Int{ + return SPUtils.getInstance().getInt(userRecord,0) } + /** + * 设置当前用户Tab选择记录 + */ + fun setUserRecord(record: Int){ + SPUtils.getInstance().put(userRecord,record) + } + + //通知消息缓存列表 + @JvmField + var noticeList: ArrayList = ArrayList() + //车辆系统信息缓存列表 + @JvmField + var systemInfoList: ArrayList = ArrayList() + //录包信息缓存列表 + @JvmField + var recordBagList: ArrayList = ArrayList() + //播放小智语音消息时的未播放消息缓存列表 + @JvmField + var unPlayList: ArrayList = ArrayList() + } \ 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/MsgFmData.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgFmData.kt new file mode 100644 index 0000000000..055e8eeb3c --- /dev/null +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/msgbox/MsgFmData.kt @@ -0,0 +1,164 @@ +package com.mogo.eagle.core.function.msgbox + +import com.zhjt.mogo.adas.data.bean.MogoReport + +/** + * FM信息对照表 + */ +class MsgFmData{ + /** + * 当出现多个建议操作时,按照整车下电重启、请求人工驾驶接管、请求平行驾驶接管、系统重启、联系硬件工程师、联系运维工程师、联系软件工程师优先级递减的顺序,只展示最高优先级的内容 + */ + enum class FaultAction( + val faultType: String,//故障处理类别 + val faultAction: String,//故障处理行为定义 + val faultActionCode: String,//故障处理行为标识 + val faultActionDesc: String,//故障处理行为描述 + val faultLevel: Int//故障处理级别 + ){ + //请求平行驾驶接管 + FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER("恢复策略","请求平行驾驶接管","FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER","如planing出站时,规划失败",5), + //请求人工驾驶接管 + FM_ACT_NEED_MANNUAL_DERVING("恢复策略","请求人工驾驶接管","FM_ACT_NEED_MANNUAL_DERVING","如planing规划失败,且存在弱网判断",6), + //系统重启 + FM_ACT_NEED_RESTART_SYSTEM("恢复策略","系统重启","FM_ACT_NEED_RESTART_SYSTEM","如检测到出现多个节点奔溃",4), + //整车下电重启 + FM_ACT_MUST_VEHICLE_POWER_RESET("恢复策略","整车下电重启","FM_ACT_MUST_VEHICLE_POWER_RESET","如底盘无数据,需要下电重启",7), + //请联系硬件工程师 + FM_ACT_CONTACT_HARDWARE_ENGINEER("人工处理","请联系硬件工程师","FM_ACT_CONTACT_HARDWARE_ENGINEER","硬件接线,域控启动等故障",3), + //请联系运维工程师 + FM_ACT_CONTACT_OPERATIONS_ENGINEER("人工处理","请联系运维工程师","FM_ACT_CONTACT_OPERATIONS_ENGINEER","系统配置不对,网络等故障",2), + //请联系软件工程师 + FM_ACT_CONTACT_SOFTWARE_ENGINEER("人工处理","请联系软件工程师","FM_ACT_CONTACT_SOFTWARE_ENGINEER","节点挂掉,无法启动等故障",1); + + companion object{ + + //获取故障建议操作级别 + fun getFaultLevel(faultActionCode: String): Int{ + return when(faultActionCode){ + //请求平行驾驶接管 + FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultActionCode -> FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultLevel + //请求人工驾驶接管 + FM_ACT_NEED_MANNUAL_DERVING.faultActionCode -> FM_ACT_NEED_MANNUAL_DERVING.faultLevel + //系统重启 + FM_ACT_NEED_RESTART_SYSTEM.faultActionCode -> FM_ACT_NEED_RESTART_SYSTEM.faultLevel + //整车下电重启 + FM_ACT_MUST_VEHICLE_POWER_RESET.faultActionCode -> FM_ACT_MUST_VEHICLE_POWER_RESET.faultLevel + //请联系硬件工程师 + FM_ACT_CONTACT_HARDWARE_ENGINEER.faultActionCode -> FM_ACT_CONTACT_HARDWARE_ENGINEER.faultLevel + //请联系运维工程师 + FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultActionCode ->FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultLevel + //请联系软件工程师 + FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultActionCode -> FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultLevel + else -> 0 + } + } + + //获取故障建议操作 + fun getFaultAction(faultActionLevel: Int): String{ + return when(faultActionLevel){ + //请求平行驾驶接管 + FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultLevel -> FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultAction + //请求人工驾驶接管 + FM_ACT_NEED_MANNUAL_DERVING.faultLevel -> FM_ACT_NEED_MANNUAL_DERVING.faultAction + //系统重启 + FM_ACT_NEED_RESTART_SYSTEM.faultLevel -> FM_ACT_NEED_RESTART_SYSTEM.faultAction + //整车下电重启 + FM_ACT_MUST_VEHICLE_POWER_RESET.faultLevel -> FM_ACT_MUST_VEHICLE_POWER_RESET.faultAction + //请联系硬件工程师 + FM_ACT_CONTACT_HARDWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_HARDWARE_ENGINEER.faultAction + //请联系运维工程师 + FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultLevel ->FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultAction + //请联系软件工程师 + FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultAction + else -> "暂无" + } + } + + //获取故障建议操作Code值 + fun getFaultActionCode(faultActionLevel: Int): String{ + return when(faultActionLevel){ + //请求平行驾驶接管 + FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultLevel -> FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultActionCode + //请求人工驾驶接管 + FM_ACT_NEED_MANNUAL_DERVING.faultLevel -> FM_ACT_NEED_MANNUAL_DERVING.faultActionCode + //系统重启 + FM_ACT_NEED_RESTART_SYSTEM.faultLevel -> FM_ACT_NEED_RESTART_SYSTEM.faultActionCode + //整车下电重启 + FM_ACT_MUST_VEHICLE_POWER_RESET.faultLevel -> FM_ACT_MUST_VEHICLE_POWER_RESET.faultActionCode + //请联系硬件工程师 + FM_ACT_CONTACT_HARDWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_HARDWARE_ENGINEER.faultActionCode + //请联系运维工程师 + FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultLevel ->FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultActionCode + //请联系软件工程师 + FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultActionCode + else -> "" + } + } + + + } + + } + + enum class FaultResult( + val resultType: String,//影响类别 + val resultDefine: String,//故障影响定义 + val resultCode: String,//故障影响的标识 + val resultDesc: String//后果对应的处理描述 + ){ + //无法作业 + FM_RST_FUNCTION_LOST("功能影响","无法作业","FM_RST_FUNCTION_LOST","需要禁止作业,如扫盘故障,清扫车无法清扫作业"), + //无法开放运营 + FM_RST_FORBID_OPEN_WORK("功能影响","无法开放运营","FM_RST_FORBID_OPEN_WORK","需要禁止运营,如安全带故障,可以自驾,不能载人"), + //无法平行驾驶 + FM_RST_FORBID_PARALLEL_DERVING("驾驶影响","无法平行驾驶","FM_RST_FORBID_PARALLEL_DERVING","需要禁止平行驾驶"), + //无法自动驾驶 + FM_RST_FORBID_AUTOPILOT_DERVING("驾驶影响","无法自动驾驶","FM_RST_FORBID_AUTOPILOT_DERVING","需要禁止自驾"), + //无法手动驾驶 + FM_RST_FORBID_MANNUAL_DERVING("驾驶影响","无法手动驾驶","FM_RST_FORBID_MANNUAL_DERVING","需要禁止行车,如底盘存在故障,需要通知出来"), + //失控,无法策略停车 + FM_RST_OUT_OF_CONTROL("安全影响","失控,无法策略停车","FM_RST_OUT_OF_CONTROL","需要立即紧急通知到人,车辆失控,如驾驶中controller挂掉,发送102重启"); + + companion object{ + //获取结果原因描述 + fun getResultDefine(resultCode: String): String{ + return when(resultCode){ + //无法作业 + FM_RST_FUNCTION_LOST.resultCode -> FM_RST_FUNCTION_LOST.resultDefine + //无法开放运营 + FM_RST_FORBID_OPEN_WORK.resultCode -> FM_RST_FORBID_OPEN_WORK.resultDefine + //无法平行驾驶 + FM_RST_FORBID_PARALLEL_DERVING.resultCode -> FM_RST_FORBID_PARALLEL_DERVING.resultDefine + //无法自动驾驶 + FM_RST_FORBID_AUTOPILOT_DERVING.resultCode -> FM_RST_FORBID_AUTOPILOT_DERVING.resultDefine + //无法手动驾驶 + FM_RST_FORBID_MANNUAL_DERVING.resultCode -> FM_RST_FORBID_MANNUAL_DERVING.resultDefine + //失控,无法策略停车 + FM_RST_OUT_OF_CONTROL.resultCode -> FM_RST_OUT_OF_CONTROL.resultDefine + else -> "暂无" + } + } + } + + } + + companion object{ + + @JvmStatic + fun getFmPolicyName(policyCode: String?): String{ + return when(policyCode){ + "FM_DP_NO_ACTION" -> "报告" + "FM_DP_ONLY_WARNING" -> "警示" + "FM_DP_SPEED_LIMIT1" -> "一级降速" + "FM_DP_SPEED_LIMIT2" -> "二级降速" + "FM_DP_SPEED_LIMIT3" -> "三级降速" + "FM_DP_PNC_CHOOSE_STOP" -> "择机靠边停车" + "FM_DP_COMFORTABLE_STOP" -> "立刻舒适停车" + "FM_DP_EMERGENCY_STOP" -> "就地紧急停车" + else -> "暂无" + } + } + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt index 388499ef71..ab023e3c79 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt @@ -9,6 +9,7 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.LinearLayoutManager import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.enums.DataSourceType +import com.mogo.eagle.core.data.msgbox.FMInfoMsg import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxCountDownBean import com.mogo.eagle.core.data.msgbox.MsgCategory @@ -21,6 +22,7 @@ import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.msgbox.adapter.DriverMsgBoxBubbleAdapter import com.mogo.eagle.core.function.msgbox.MsgBoxConfig +import com.mogo.eagle.core.utilcode.util.SoundPoolUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import kotlinx.android.synthetic.main.layout_driver_msg_box_bubble.view.* @@ -98,7 +100,21 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor( //todo 过滤MAP系统异常报警 } else if(category == MsgCategory.FM_INFO){ CallerMsgBoxEventListenerManager.invokeUpdateTipListener(true) - showData(msgBoxBean) + //属于停车警示(包括择机靠边停车、立即舒适停车、就地紧急停车)时,需要弹出消息气泡并伴有提示音 + val fmInfoMsg = msgBoxBean.bean as FMInfoMsg + if(fmInfoMsg.policyCode == "FM_DP_PNC_CHOOSE_STOP" //择机靠边停车 + || fmInfoMsg.policyCode == "FM_DP_COMFORTABLE_STOP" //立刻舒适停车 + || fmInfoMsg.policyCode == "FM_DP_EMERGENCY_STOP" //就地紧急停车 + ){ + //语音提示 + try { + SoundPoolUtils.getSoundPool().playSoundWithRedId(context,R.raw.weak_net_tips) + }catch (e: Exception){ + e.printStackTrace() + } + //展示消息 + showData(msgBoxBean) + } } else{ if(msgBoxBean.sourceType == DataSourceType.SUMMARY){ //在一次订单中汇总消息只展示一次 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxListView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxListView.kt index 2106591153..ca4e1d1adb 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxListView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxListView.kt @@ -46,7 +46,7 @@ class DriverMsgBoxListView @JvmOverloads constructor( } private val TAG = "DriverMsgBoxListView" private var noticeList: ArrayList ?= null //通知消息列表 - private var fmList: ArrayList ?= null //FM信息消息列表 + private var fmList: ArrayList ?= ArrayList() //FM信息消息列表 private var ipcReportList: ArrayList ?= null //车辆系统信息消息列表 private var badCaseList: ArrayList ?= null//录包消息列表 private var driverMsgBoxListAdapter: DriverMsgBoxListAdapter ?=null @@ -232,6 +232,7 @@ class DriverMsgBoxListView @JvmOverloads constructor( override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) { UiThreadHandler.post({ when (category) { + //通知 MsgCategory.NOTICE -> { if(msgBoxList.sourceType == DataSourceType.SUMMARY){ //在一次订单中汇总消息只展示一次 @@ -249,18 +250,28 @@ class DriverMsgBoxListView @JvmOverloads constructor( } } } + //FM信息 + MsgCategory.FM_INFO -> { + fmList?.add(0,msgBoxList) + if(MsgBoxConfig.getUserRecord() == 1){ + fmList?.let { driverMsgBoxListAdapter?.setData(it) } + } + } + //系统信息 MsgCategory.SYS_INFO -> { ipcReportList?.add(0,msgBoxList) - if(MsgBoxConfig.getUserRecord() == 1){ + if(MsgBoxConfig.getUserRecord() == 2){ ipcReportList?.let { driverMsgBoxListAdapter?.setData(it) } } } + //录包 MsgCategory.RECORD_BAG -> { badCaseList?.add(0,msgBoxList) - if(MsgBoxConfig.getUserRecord() == 2){ + if(MsgBoxConfig.getUserRecord() == 3){ badCaseList?.let { driverMsgBoxListAdapter?.setData(it) } } } + else -> {} } },UiThreadHandler.MODE.QUEUE) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt index 0a3f3c3b84..96f6000687 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt @@ -19,6 +19,8 @@ import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.msgbox.MsgBoxConfig +import com.mogo.eagle.core.function.msgbox.MsgFmData import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform import com.mogo.eagle.core.utilcode.util.TimeUtils @@ -138,6 +140,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A holder.tvOperationDoorContent.text = operationDoorMsg.content } } + //系统信息消息 is BubbleReportHolder -> { data?.let { val msgBoxBean = it[position].msgBoxBean @@ -154,6 +157,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A } } } + //云公告消息 is BubbleNoticeHolder -> { data?.let { val msgBoxBean = it[position].msgBoxBean.bean @@ -193,6 +197,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A } } } + //V2X消息 is BubbleV2XHolder -> { data?.let { val msgBoxBean = it[position].msgBoxBean @@ -211,6 +216,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A } } } + //汇总消息 is BubbleSummaryHolder -> { data?.let { val summaryMsg = it[position].msgBoxBean.bean as V2XMsg @@ -218,10 +224,35 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A holder.tvSummaryContent.text = summaryMsg.content } } + //FM信息 is BubbleFmHolder ->{ data?.let { val fmMsg = it[position].msgBoxBean.bean as FMInfoMsg - + holder.tvBubbleFmFault.text = MsgFmData.getFmPolicyName(fmMsg.policyCode) + if(fmMsg.policyTime == null){ + holder.tvBubbleFmTime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat()) + }else{ + holder.tvBubbleFmTime.text = TimeUtils.millis2String(fmMsg.policyTime!!,getHourMinFormat()) + } + if(fmMsg.fmInfoList?.size == 0){ + holder.tvBubbleFmFaultAction.text = "建议操作:暂无" + }else{ + var curFaultLevel = 0 //默认级别,遍历数组找出级别最高的(level数越小大,级别越高) + fmMsg.fmInfoList?.forEach { faultInfo -> + if(faultInfo.faultActionCount>0){ + faultInfo.faultActionList.forEach {actionCode -> + //获取建议操作级别,得到建议操作级别最高的操作 + if(MsgFmData.FaultAction.getFaultLevel(actionCode) > curFaultLevel){ + curFaultLevel = MsgFmData.FaultAction.getFaultLevel(actionCode) + } + } + } + } + val faultAction = MsgFmData.FaultAction.getFaultAction(curFaultLevel) + //当出现多个建议操作时,按照整车下电重启、请求人工驾驶接管、请求平行驾驶接管、系统重启、联系硬件工程师、 + // 联系运维工程师、联系软件工程师优先级递减的顺序,只展示最高优先级的内容 + holder.tvBubbleFmFaultAction.text = "${faultAction}(${MsgFmData.FaultAction.getFaultActionCode(curFaultLevel)})" + } } } } @@ -335,7 +366,9 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A //FM消息 class BubbleFmHolder(itemView: View): RecyclerView.ViewHolder(itemView){ - + var tvBubbleFmFault: TextView = itemView.findViewById(R.id.tvBubbleFmFault) + var tvBubbleFmFaultAction: TextView = itemView.findViewById(R.id.tvBubbleFmFaultAction) + var tvBubbleFmTime: TextView = itemView.findViewById(R.id.tvBubbleFmTime) } fun setChangeListener(listener: ChangeViewListener){ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt index 3154d33766..0fd316e508 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt @@ -18,6 +18,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.msgbox.MsgFmData import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable @@ -138,7 +139,195 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : //FM信息 is FmInfoHolder -> { data?.let { - + val fmInfoMsg = it[position].bean as FMInfoMsg + //时间显示 + holder.tvFmTimeOpen.text = + "时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}" + holder.tvFmTimeNormal.text = + "时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}" + holder.tvFmTime.text = + fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1,getHourMinFormat()) } + //不同级别的Icon显示 + if(fmInfoMsg.policyCode == "FM_DP_ONLY_WARNING"){ + //警示 + holder.ivFmImageNormal.setImageDrawable(getDrawable(R.drawable.icon_fm_warning_normal)) + holder.ivFmImageOpen.setImageDrawable(getDrawable(R.drawable.icon_fm_warning_open)) + }else if(fmInfoMsg.policyCode == "FM_DP_SPEED_LIMIT1" + || fmInfoMsg.policyCode == "FM_DP_SPEED_LIMIT2" + || fmInfoMsg.policyCode == "FM_DP_SPEED_LIMIT3"){ + //降速行驶 + holder.ivFmImageNormal.setImageDrawable(getDrawable(R.drawable.icon_fm_reduce_normal)) + holder.ivFmImageOpen.setImageDrawable(getDrawable(R.drawable.icon_fm_reduce_open)) + }else if(fmInfoMsg.policyCode == "FM_DP_PNC_CHOOSE_STOP" + || fmInfoMsg.policyCode == "FM_DP_COMFORTABLE_STOP" + || fmInfoMsg.policyCode == "FM_DP_EMERGENCY_STOP"){ + //安全停车 + holder.ivFmImageNormal.setImageDrawable(getDrawable(R.drawable.icon_fm_stop_normal)) + holder.ivFmImageOpen.setImageDrawable(getDrawable(R.drawable.icon_fm_stop_open)) + } + //Title + holder.tvFmTitleNormal.text = MsgFmData.getFmPolicyName(fmInfoMsg.policyCode) + holder.tvFmTitleOpen.text = MsgFmData.getFmPolicyName(fmInfoMsg.policyCode) + //建议操作 + if(fmInfoMsg.fmInfoList.isNullOrEmpty()){ + //建议操作暂无 + holder.tvFmActionOpen.text = "建议操作:暂无" + holder.tvFmActionNormal.text = "建议操作:暂无" + }else{ + val receiveFaultLevel = ArrayList() + fmInfoMsg.fmInfoList!!.forEach { info -> + if(info.faultActionCount != 0){ + info.faultActionList.forEach { action -> + //如果不包含此故障Level,则进行添加 + if(!receiveFaultLevel.contains(MsgFmData.FaultAction.getFaultLevel(action))){ + receiveFaultLevel.add(MsgFmData.FaultAction.getFaultLevel(action)) + } + } + } + } + //对faultLevel集合进行排序,按照顺序输出建议操作 + if(receiveFaultLevel.size > 0){ + val faultActionStr: StringBuilder = StringBuilder() + faultActionStr.append("建议操作:") + receiveFaultLevel.sorted() + receiveFaultLevel.forEach {level-> + faultActionStr.append(MsgFmData.FaultAction.getFaultAction(level)) + faultActionStr.append("(") + faultActionStr.append(MsgFmData.FaultAction.getFaultActionCode(level)) + faultActionStr.append(")") + } + holder.tvFmActionOpen.text = faultActionStr.toString() + holder.tvFmActionNormal.text = faultActionStr.toString() + }else{ + holder.tvFmActionOpen.text = "建议操作:暂无" + holder.tvFmActionNormal.text = "建议操作:暂无" + } + } + //故障策略 + holder.tvFmFaultOpen.text = "故障策略:${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})" + //故障原因 + if(fmInfoMsg.fmInfoList.isNullOrEmpty()){ + holder.tvFmReasonOpen.text = "故障原因:暂无" + }else{ + val fmFaultReason = StringBuilder() + fmFaultReason.append("故障原因:") + for((index,info) in fmInfoMsg.fmInfoList!!.withIndex()){ + fmFaultReason.append(info.faultName) + fmFaultReason.append("(") + fmFaultReason.append(info.faultId) + fmFaultReason.append(")") + if(index!=(fmInfoMsg.fmInfoList!!.size-1)){ + fmFaultReason.append("/") + } + } + holder.tvFmReasonOpen.text = fmFaultReason.toString() + } + //故障后果 + if(fmInfoMsg.fmInfoList.isNullOrEmpty()){ + holder.tvFmResultOpen.text = "故障后果:暂无" + }else{ + val fmFaultResult = StringBuilder() + fmFaultResult.append("故障后果:") + fmInfoMsg.fmInfoList!!.forEach { info-> + if(info.faultResultCount != 0){ + info.faultResultList.forEach { result-> + fmFaultResult.append(MsgFmData.FaultResult.getResultDefine(result)) + fmFaultResult.append("(") + fmFaultResult.append(result) + fmFaultResult.append(")") + fmFaultResult.append("/") + } + } + } + if(fmFaultResult.endsWith("/")){ + holder.tvFmResultOpen.text = fmFaultResult.deleteCharAt(fmFaultResult.lastIndex).toString() + }else{ + holder.tvFmResultOpen.text = "故障后果:暂无" + } + } + //对布局进行展开折叠操作 + if(fmInfoMsg.isShow){ + holder.tvFmStatusSelect.setCompoundDrawablesWithIntrinsicBounds( + getDrawable(R.drawable.icon_msg_close), + null, + null, + null + ) + holder.tvFmStatusSelect.text = "折叠" + holder.ivFmImageNormal.visibility = View.GONE + holder.tvFmTitleNormal.visibility = View.GONE + holder.tvFmTimeNormal.visibility = View.GONE + holder.tvFmActionNormal.visibility = View.GONE + holder.ivFmImageOpen.visibility = View.VISIBLE + holder.tvFmTitleOpen.visibility = View.VISIBLE + holder.tvFmTimeOpen.visibility = View.VISIBLE + holder.tvFmActionOpen.visibility = View.VISIBLE + holder.tvFmFaultOpen.visibility = View.VISIBLE + holder.tvFmReasonOpen.visibility = View.VISIBLE + holder.tvFmResultOpen.visibility = View.VISIBLE + }else{ + holder.tvFmStatusSelect.setCompoundDrawablesWithIntrinsicBounds( + getDrawable(R.drawable.icon_msg_open), + null, + null, + null + ) + holder.tvFmStatusSelect.text = "展开" + holder.ivFmImageNormal.visibility = View.VISIBLE + holder.tvFmTitleNormal.visibility = View.VISIBLE + holder.tvFmTimeNormal.visibility = View.VISIBLE + holder.tvFmActionNormal.visibility = View.VISIBLE + holder.ivFmImageOpen.visibility = View.GONE + holder.tvFmTitleOpen.visibility = View.GONE + holder.tvFmTimeOpen.visibility = View.GONE + holder.tvFmActionOpen.visibility = View.GONE + holder.tvFmFaultOpen.visibility = View.GONE + holder.tvFmReasonOpen.visibility = View.GONE + holder.tvFmResultOpen.visibility = View.GONE + } + holder.tvFmStatusSelect.setOnClickListener{ + if(!fmInfoMsg.isShow){ + fmInfoMsg.isShow = true + holder.tvFmStatusSelect.setCompoundDrawablesWithIntrinsicBounds( + getDrawable(R.drawable.icon_msg_close), + null, + null, + null + ) + holder.tvFmStatusSelect.text = "折叠" + holder.ivFmImageNormal.visibility = View.GONE + holder.tvFmTitleNormal.visibility = View.GONE + holder.tvFmTimeNormal.visibility = View.GONE + holder.tvFmActionNormal.visibility = View.GONE + holder.ivFmImageOpen.visibility = View.VISIBLE + holder.tvFmTitleOpen.visibility = View.VISIBLE + holder.tvFmTimeOpen.visibility = View.VISIBLE + holder.tvFmActionOpen.visibility = View.VISIBLE + holder.tvFmFaultOpen.visibility = View.VISIBLE + holder.tvFmReasonOpen.visibility = View.VISIBLE + holder.tvFmResultOpen.visibility = View.VISIBLE + }else{ + fmInfoMsg.isShow = false + holder.tvFmStatusSelect.setCompoundDrawablesWithIntrinsicBounds( + getDrawable(R.drawable.icon_msg_open), + null, + null, + null + ) + holder.tvFmStatusSelect.text = "展开" + holder.ivFmImageNormal.visibility = View.VISIBLE + holder.tvFmTitleNormal.visibility = View.VISIBLE + holder.tvFmTimeNormal.visibility = View.VISIBLE + holder.tvFmActionNormal.visibility = View.VISIBLE + holder.ivFmImageOpen.visibility = View.GONE + holder.tvFmTitleOpen.visibility = View.GONE + holder.tvFmTimeOpen.visibility = View.GONE + holder.tvFmActionOpen.visibility = View.GONE + holder.tvFmFaultOpen.visibility = View.GONE + holder.tvFmReasonOpen.visibility = View.GONE + holder.tvFmResultOpen.visibility = View.GONE + } + } } } //系统信息 @@ -468,7 +657,19 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : //FM信息 class FmInfoHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ - + var ivFmImageNormal: ImageView = itemView.findViewById(R.id.ivFmImageNormal) //故障级别图标 + var tvFmTitleNormal: TextView = itemView.findViewById(R.id.tvFmTitleNormal) //标题展示故障策略 + var tvFmTimeNormal: TextView = itemView.findViewById(R.id.tvFmTimeNormal) //时间 + var tvFmStatusSelect: TextView = itemView.findViewById(R.id.tvFmStatusSelect) //展开折叠按钮 + var tvFmActionNormal: TextView = itemView.findViewById(R.id.tvFmActionNormal) //建议操作 + var tvFmTime: TextView = itemView.findViewById(R.id.tvFmTime) //时间 + var ivFmImageOpen: ImageView = itemView.findViewById(R.id.ivFmImageOpen) //展开时图标 + var tvFmTitleOpen: TextView = itemView.findViewById(R.id.tvFmTitleOpen) //标题文案为故障策略 + var tvFmTimeOpen: TextView = itemView.findViewById(R.id.tvFmTimeOpen) //发生时间 + var tvFmActionOpen: TextView = itemView.findViewById(R.id.tvFmActionOpen) //建议操作 + var tvFmFaultOpen: TextView = itemView.findViewById(R.id.tvFmFaultOpen) //故障策略 + var tvFmReasonOpen: TextView = itemView.findViewById(R.id.tvFmReasonOpen) //故障原因 + var tvFmResultOpen: TextView = itemView.findViewById(R.id.tvFmResultOpen) //后果 } //车辆系统信息 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_reduce_normal.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_reduce_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa73fb5496c7bce5ddfa7d4e424f7173e6bb46d GIT binary patch literal 15020 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 RRVn}g002ovPDHLkV1foI$LRn7 literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_relieve_normal.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_relieve_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..a43850983a4fa06884d0566bba8a97963d251492 GIT binary patch literal 14882 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 U#9_U!6aWAK07*qoM6N<$g6v~pv;Y7A literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_relieve_open.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_relieve_open.png new file mode 100644 index 0000000000000000000000000000000000000000..05861988662f24db77fe6c25b5d979d0f3cb9d7d GIT binary patch literal 2981 zcmV;W3tIGvP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91ET97b1ONa40RR91EC2ui0Q_#}qW}O44@pEpR9Fe6nQM$)RTano``kOP zK4AJFj>V!GVjC1N+Ljg+R4kRG7O}PU5hPKg#t#*$w17b*q#|h*d8i-!(5fKN8XD|JT{;^xS!r7EZG7-h1t}*ZQrs_u1#%djsCW zm8NNE{yAo*Ddwg%bkfwMw2nzo0aDgIAw@S^-PGwS0h1=vj z$Z`##I#`64U9nAY2#cUr+c;(H?@3au4<-D%x+H8qQ~zfK+_XBKRZp>kPA@k{BY|qr z#{?bW1zik)?WfAXvdYb2`{{z87I5pTw6g-Nq=WgnVLJD$S*?B%l6}i?gcYd9Qmm3(WvL}rW5t3eW(<$ zsQR5#Z<9o}N4k>L>0_Dgx$Ni~T%yE&@u=f|QN`>KIq6;fdt-bn!?$ zl8=~SX7*n0*Bcrp)3{x#3Ftr$(y-JV_az^keb>u_jrP=+EkfN_UmkAEoHc$93#`m? z^8F2}gCR9YSrK}q;@~sDx2<@ZJWrxXLvYJ z=?ocq$p8=QRp6ubm2TgYIM93m>BeAw@$)K*nSPovT0W$k?xd6ZSo$m- zw3P`nC{LOL8hG^WG9|aH56h~cVlf4A7WztAduz;Sbn1KaH!oIj+rxX&aqii;?UB7` z{Xz$xeCZfAJky6;7Q7vErk1n4%ph#LaQ^6~2+T*9XLYcD1>xY9R0CH2e1NrOlb{W- z5&S@JElUdZlqF^O_y4TomIwFZ6PHcE?N_zo#&ySV!$SuU$aCwbCSuN%GXAx%j_3Y6 zfL(h}VEmXST+-Qwqy3zm^5$bz^l2;-QSO1To3$w}bD)P4#@dk;!DK)a1zj}u>Y=($ zH6(=5k}F$}KXVjU&lrdAe!R_`d~e<;e4k&?X1ucrS9F%}lP$-v`MK9|<@?(4u8ubJ z9IRr+Zx5lTkH=b>>7@_%pK zYzvuOSI`RZx(}4`p0}}Mg3Nc(zcC41MX*`jolwwa*`?4U@`+N8kttpTF5%{v2e5s2 z%>eAC<2=h;tnEzZyytgU@Zk%`qK(_McqYHtQ^Qw(y4#MvtGK^ykaLYe73UWHQLHBk^INjB?yFEjYDz?XTe6_Ob=D>4koDzh1}x zcn|#Wv2J|+$`1SHa9%stvd*R9d?iM;fwLBi+IDZnc0FKIGVo38;LsjdC}vyjTuvpu z)27YM*jH)B*H-Pve-6~M?9!lRnYG~6o;bFQLr3cdzyC-L%YN}Hmap4~k4>A1%g=9? zHS`{*18sQj5%*)@0%d9NU&kIigdK@~m}9EfTQm+x8)ksD%k${DkJHvR>^k0rFaPW{ zJo2}GJ2@<~)K{%N`u@o+*!uDj3t-`l(fHQ2@4zQ#j>o5`@fA-u39oHCPf$5_BBcAZ z`={t1WF)I;msh5e zul3gP=+<6bHnk0(nLa8@Kx7l_-*;DW&+iVSRvH78nmNuvx9@f2Fgah~u{LbZO_c6R z|H4P=TjE*gW5vl1NU zHrT%NIR5w#o;GE{^6|-E6g)9Q{Bx8m@)XvDE3&3Oc{MFhXL0{+%cGQE%7=rO%=cJ+ zmg$X0FA)kv0rB@#d)zUIFmS?(ot?bh6inKrt-*KAz%6D8kh5V5MFhE&!1fDgo?*#L zcczaKW_}JioFQ@zFv8LD6NxVEBUr8)nP>DG52efOG|{BkY2#V>7(T zEZ4D=lMf96a_56;IdW&3V}0EgEZWDa?POuL(}X7jmp?7VtSZyP%(rdmNP#RREcLEx zg_&RdcZ9A|VqZvWHc^>V5opnPlq)0o)`)G(lFy5COs6nkPgU7uIGJtP_aa$#)hJtp zheMYOR5t)iP`!h9V!)EzfD8#h4%{f~A(@Rjl1oo8zPu)5zrhCeavPefQoO{#Q=uqQ zdkC;49!h?%N^1TuROC4c7O5 zax;I>uHr{jDtVT3CkjHD6l^RGBbf(cG8vSP0?=4&`#cTDt45+FBf(1Nl)zFb-^7PX z9c$@$oP)@bgF2)G*%;^L@|fjfzd=V%bm<1uo*iZzWD42muv?<2Q2jyJ+>&BCBU|Sg zDuSEy7=T5u4Ejx_OsXF@(#kZ%GboQZ!3~Nw( zF@ig!YLgenO(uDE{gnhu{h{E(Q`Kh%?3TWs&gKi#B0h!Z5vW5(hAg=%lHvd?p zbOX!U)5$3H8m>17>?ZhhX!;6f@|9vP_f{t#a@pUu`s+3Ww7+fH?&cJIQP_k>`8xX+ b{<{4?0F@psq()(700000NkvXXu0mjfob9rJ literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_stop_normal.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_stop_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..59bed6db0c9d5e29f9ffc6b1e71ca531e58f23cf GIT binary patch literal 16104 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 literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_stop_open.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_stop_open.png new file mode 100644 index 0000000000000000000000000000000000000000..f283766bd6aea01ea0975a1815c5a8a9ed35e948 GIT binary patch literal 3278 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 D`Vkql literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_warning_open.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fm_warning_open.png new file mode 100644 index 0000000000000000000000000000000000000000..a111e4e0dbf0d199c3d975d7d966bca0a3ac57c1 GIT binary patch literal 3350 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 literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_fm.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_fm.xml index f1d2d9d1dd..38b1ee322d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_fm.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_fm.xml @@ -1,17 +1,198 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_ipc_report.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_ipc_report.xml index 29e1165bfb..f7db385e5b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_ipc_report.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_ipc_report.xml @@ -138,10 +138,11 @@ - + - \ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/FMInfoMsg.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/FMInfoMsg.kt index 199b6848b7..eefaac14f4 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/FMInfoMsg.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/FMInfoMsg.kt @@ -8,7 +8,9 @@ import java.io.Serializable */ data class FMInfoMsg( var fmInfoList: List?, - var policyCode: String? + var policyCode: String?, + var policyTime: Long?, + var isShow: Boolean ) : Serializable /** diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerFaultManagementStateListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerFaultManagementStateListenerManager.kt index 42cf25a0c8..8c32cd2886 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerFaultManagementStateListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerFaultManagementStateListenerManager.kt @@ -32,6 +32,7 @@ object CallerFaultManagementStateListenerManager : CallerBase() + val policyTime = fmInfo.time if (fmFilterInfoMsg?.cacheFilterList != null) { if (fmFilterInfoMsg.cacheFilterList?.size == list.size) { //判断两个集合重复 true:return @@ -54,7 +55,7 @@ object CallerFaultManagementStateListenerManager : CallerBase