diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 5b7a6b9b6a..b7b6b744f1 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -441,6 +441,13 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener { WorkOrderManager.workOrderManager.showTakeOverRecordView(context) } + /** + * 展示AI数据采集页面 + */ + override fun showAiDataCollectView(context: Context) { + BadCaseManager.showAiDataCollectView(context) + } + /** * 启动调用SSM停服命令超时检测 */ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 2f08b6bfa5..dac5762545 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -353,6 +353,27 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis } } + /** + * 展示AI数据采集页面 + */ + fun showAiDataCollectView(context: Context){ + val aiDataCollectView = AIDataCollectView(context) + aiDataCollectView.setOnClickListener(object: AIDataCollectView.ClickListener{ + override fun onClose() { + hideFloat?.invoke() + hideFloat = null + } + }) + context.enqueuePop( + aiDataCollectView, + AutoSizeUtils.dp2px(context, 1046f), + WindowManager.LayoutParams.MATCH_PARENT, + key = "BadCaseManagerView" + ).also { + hideFloat = it + } + } + fun onReceiveBadCaseRecord(msgBoxBean: MsgBoxBean, activity: Activity, countdown: Boolean) { CallerLogger.d("$M_DEVA$TAG", "收到录包结果回调${record}") CallerLogger.d("$M_DEVA$TAG", "开始创建被动录包弹窗,window num=${BadCaseConfig.windowNum}") diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectView.kt new file mode 100644 index 0000000000..7d563665fa --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectView.kt @@ -0,0 +1,278 @@ +package com.zhjt.mogo_core_function_devatools.badcase.biz + +import android.content.Context +import android.util.AttributeSet +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.widget.Toast +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.LinearLayoutManager +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.deva.badcase.AiDataEntity +import com.mogo.eagle.core.data.deva.badcase.BagDescriptionEntity +import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener +import com.mogo.eagle.core.function.api.devatools.badcase.BadCaseNetListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsNetManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA +import com.mogo.eagle.core.utilcode.mogo.toast.TipToast +import com.mogo.eagle.core.utilcode.util.AppStateManager +import com.mogo.eagle.core.utilcode.util.AppUtils +import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils.getYMDFormat +import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.zhjt.mogo_core_function_devatools.R +import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.AiDataCollectAdapter +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig +import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.BadCaseNetManager +import com.zhjt.mogo_core_function_devatools.badcase.repository.store.BadCaseReasonStore +import com.zhjt.mogo_core_function_devatools.workorder.adapter.BottomDecoration +import kotlinx.android.synthetic.main.view_ai_data_collect.view.collectGroup +import kotlinx.android.synthetic.main.view_ai_data_collect.view.ivDataCollectClose +import kotlinx.android.synthetic.main.view_ai_data_collect.view.rvDataCollectList +import kotlinx.android.synthetic.main.view_ai_data_collect.view.tvDataCollectDate +import kotlinx.android.synthetic.main.view_ai_data_collect.view.tvDataCollectNoData +import kotlinx.android.synthetic.main.view_ai_data_collect.view.tvDeleteSelect +import kotlinx.android.synthetic.main.view_ai_data_collect.view.tvUpload +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import me.jessyan.autosize.utils.AutoSizeUtils +import org.json.JSONArray +import org.json.JSONObject +import record_cache.RecordPanelOuterClass + +/** + * AI数据采集View + */ +class AIDataCollectView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), + IMoGoAutopilotRecordListener, BadCaseNetListener { + + companion object { + const val TAG = "AIDataCollectView" + } + + private var clickListener: ClickListener? = null + private var aiDataCollectAdapter: AiDataCollectAdapter?= null + @Volatile + private var recordKey: Long = 0 //录制bag包key + @Volatile + private var recordFileName: String? = null //录制文件包名 + private var bagManagerEntity: BagManagerEntity = BagManagerEntity() + private var collectReason: StringBuilder = StringBuilder() + private var collectList = ArrayList() + + private var aiDataList = ArrayList() + + private val presenter by lazy { + BadCasePresenter() + } + + init { + LayoutInflater.from(context).inflate(R.layout.view_ai_data_collect, this, true) + initView() + } + + private fun initView(){ + //关闭窗口 + ivDataCollectClose.setOnClickListener{ + clickListener?.onClose() + } + //接管记录日期 + tvDataCollectDate.text = millis2String(System.currentTimeMillis(), getYMDFormat()) + val linearLayoutManager = LinearLayoutManager(context) + linearLayoutManager.orientation = LinearLayoutManager.VERTICAL + rvDataCollectList?.layoutManager = linearLayoutManager + aiDataCollectAdapter = AiDataCollectAdapter() + aiDataCollectAdapter?.setListener(object: AiDataCollectAdapter.AiDataClickListener{ + override fun onClick(reason: String, isChecked: Boolean) { + if(isChecked){ + if(!collectList.contains(reason)){ + collectList.add(reason) + } + }else{ + if(collectList.contains(reason)){ + collectList.remove(reason) + } + } + } + }) + rvDataCollectList.addItemDecoration( + BottomDecoration( + AutoSizeUtils.dp2px(context, 194f) + ) + ) + rvDataCollectList?.adapter = aiDataCollectAdapter + //数据请求错误,使用缓存数据 + if(BadCaseReasonStore.getAiDataRecord().isNotEmpty()){ + val result = JSONArray(BadCaseReasonStore.getAiDataRecord()) + if(result.length()>0){ + for(i in 0 until result.length()){ + val jsonObject = result[i] as JSONObject + val id = jsonObject.optInt("id") + val name = jsonObject.optString("name") + val content = jsonObject.optString("content") + val entity = AiDataEntity(id, name, content,false) + aiDataList.add(entity) + } + } + if(aiDataList.isNotEmpty()){ + //刷新列表 + aiDataCollectAdapter?.setData(aiDataList) + tvDataCollectNoData.visibility = View.GONE + collectGroup.visibility = View.VISIBLE + } + } + + //上报 + tvUpload.setOnClickListener { + if(collectList.isEmpty()){ + ToastUtils.showShort("请选择最少一个原因") + return@setOnClickListener + } + collectReason.clear() + for(index in collectList.indices){ + if(index!=0){ + collectReason.append("&") + } + collectReason.append(collectList[index]) + } + //上报到工控机 + CallerAutoPilotControlManager.recordCause(recordKey.toString(),recordFileName,"", + collectReason.toString()) + GlobalScope.launch { + val uploadResult = presenter.upload(mutableMapOf().also { itx -> + itx["carLicense"] = AppConfigInfo.plateNumber //车牌号 + itx["filename"] = recordFileName ?: "" //bag包文件地址 + itx["filesize"] = "0" //bag包文件大小 + itx["key"] = recordKey.toString() //key + itx["reason"] = collectReason.toString() //采集原因 + itx["duration"] = "20" //采集时长,固定为20S + itx["startTime"] = System.currentTimeMillis().toString() //上报时间(时间戳格式) + itx["channel"] = "AI" //渠道 + itx["carSn"] = SharedPrefsMgr.getInstance().sn //SN + itx["userRole"] = "" //采集者角色 + itx["audioUrl"] = "" //音频COS地址 + itx["mapVersion"] = BadCaseConfig.dockerVersion ?: "" //工控机版本 + itx["eyeVersion"] = AppUtils.getAppVersionName() //鹰眼版本 + itx["coordinate"] = + "latitude:${CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude};longitude:${CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude}" //坐标 + + }) + if (uploadResult == null || uploadResult.code != 200) { + TipToast.shortTip("上报失败") + } else { + //上报成功 + ThreadUtils.runOnUiThread { + val customToastView = AppStateManager.currentActivity()?.layoutInflater?.inflate(R.layout.view_custom_toast,null) + val customToast = Toast(context.applicationContext) + customToast.duration = Toast.LENGTH_SHORT + customToast.view = customToastView + customToast.setGravity(Gravity.START,AutoSizeUtils.dp2px(context, 262f),0) + customToast.show() + //取消选择 + for(data in aiDataList){ + data.isChecked = false + } + collectReason.clear() + collectList.clear() + aiDataCollectAdapter?.setData(aiDataList) + } + //将上报BI的结果同步给工控机记录保存 + recordKey.let { + val descReqEntity = BagDescriptionEntity(collectReason.toString(),false,"",true) + bagManagerEntity.reqType = 5 + bagManagerEntity.keyReq = it + bagManagerEntity.descReq = descReqEntity + CallerAutoPilotControlManager.sendBagManagerCmd(bagManagerEntity) + } + } + + } + + } + + //取消 + tvDeleteSelect.setOnClickListener { + clickListener?.onClose() + } + } + + fun setOnClickListener(clickListener: ClickListener) { + this.clickListener = clickListener + } + + interface ClickListener { + fun onClose() + } + + override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { + CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel") + ThreadUtils.runOnUiThread { + recordKey = recordPanel.key + //开始录制 + if(recordPanel.stat == 300){ + BadCaseConfig.recordKeyList.add(recordPanel.key) + val aiDataSet = BadCaseConfig.getAiDataSet() + //保存录包状态 + aiDataSet.add(recordPanel.key.toString()) + BadCaseConfig.setAiDataSet(aiDataSet) + } + if (recordFileName == null) { + recordFileName = recordPanel.filename + } + } + + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + //采集结果回调监听 + CallerAutopilotRecordListenerManager.addListener(TAG, this) + //注册网络接口获取数据监听 + CallerDevaToolsNetManager.addListener(TAG,this) + //获取数据 + BadCaseNetManager.badCaseNetManager.getAiData() + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + //注销采集结果回调监听 + CallerAutopilotRecordListenerManager.removeListener(TAG) + //注销网络接口监听 + CallerDevaToolsNetManager.removeListener(TAG) + } + + override fun onAiDataResponse(list: List) { + ThreadUtils.runOnUiThread { + if(list.isEmpty()){ + tvDataCollectNoData.visibility = View.VISIBLE + collectGroup.visibility = View.GONE + }else{ + tvDataCollectNoData.visibility = View.GONE + collectGroup.visibility = View.VISIBLE + aiDataList = list as ArrayList + //刷新列表 + aiDataCollectAdapter?.setData(list) + } + } + } + + override fun onAiDataError() { + if(BadCaseReasonStore.getAiDataRecord().isEmpty()){ + ToastUtils.showShort("AI数据采集数据请求错误且无缓存数据可用") + } + } + + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt index 5faf9a28f0..86e0a5d304 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt @@ -100,7 +100,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener @SuppressLint("SetTextI18n") private fun initFloatWindow() { mFloatLayout = - LayoutInflater.from(mActivity).inflate(R.layout.view_ai_data_collect, null) as View + LayoutInflater.from(mActivity).inflate(R.layout.window_ai_data_collect, null) as View mFloatLayout.setOnTouchListener(this) tvCollectNum = mFloatLayout.findViewById(R.id.tvCollectNum) tvCollectTime = mFloatLayout.findViewById(R.id.tvCollectTime) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/AiDataCollectAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/AiDataCollectAdapter.kt new file mode 100644 index 0000000000..fe8a6b4263 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/AiDataCollectAdapter.kt @@ -0,0 +1,61 @@ +package com.zhjt.mogo_core_function_devatools.badcase.biz.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.data.deva.badcase.AiDataEntity +import com.zhjt.mogo_core_function_devatools.R + +/** + * AI数据采集适配器 + */ +class AiDataCollectAdapter: RecyclerView.Adapter() { + + private var data:List ?= null + private var clickListener: AiDataClickListener ?= null + + fun setData(data: List){ + this.data = data + notifyDataSetChanged() + } + + fun setListener(listener: AiDataClickListener){ + clickListener = listener + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AiDataHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_ai_data_collect, parent, false) + return AiDataHolder(view) + } + + override fun onBindViewHolder(holder: AiDataHolder, position: Int) { + data?.let { + val entity = it[position] + if(entity.content.isBlank()){ + holder.rbDataSelect.text = entity.name + }else{ + holder.rbDataSelect.text = "${entity.name}:${entity.content}" + } + holder.rbDataSelect.isChecked = entity.isChecked + holder.rbDataSelect.tag = entity + holder.rbDataSelect.setOnCheckedChangeListener { _, isChecked -> + clickListener?.onClick(holder.rbDataSelect.text.toString(),isChecked) + entity.isChecked = isChecked + } + } + } + + override fun getItemCount() = data?.size ?: 0 + + class AiDataHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ + var rbDataSelect: CheckBox = itemView.findViewById(R.id.rb_data_select) + } + + interface AiDataClickListener{ + fun onClick(reason: String,isChecked: Boolean) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/bg_custom_toast.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/bg_custom_toast.png new file mode 100644 index 0000000000..2568d0dd63 Binary files /dev/null and b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/bg_custom_toast.png differ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_data_cancel.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_data_cancel.png new file mode 100644 index 0000000000..e969467bf7 Binary files /dev/null and b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_data_cancel.png differ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_data_report.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_data_report.png new file mode 100644 index 0000000000..7eb5ccb538 Binary files /dev/null and b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_data_report.png differ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_report_success.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_report_success.png new file mode 100644 index 0000000000..e4d5d55d73 Binary files /dev/null and b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_report_success.png differ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_ai_data_collect.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_ai_data_collect.xml new file mode 100644 index 0000000000..c6bef564fa --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_ai_data_collect.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_ai_data_collect.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_ai_data_collect.xml index 9ce6809750..bf2819173e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_ai_data_collect.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_ai_data_collect.xml @@ -1,84 +1,123 @@ - + android:background="@drawable/bg_take_over_record"> + android:id="@+id/viewDataCollectLine" + android:layout_width="@dimen/dp_24" + android:layout_height="@dimen/dp_60" + android:layout_marginStart="@dimen/dp_80" + android:layout_marginTop="@dimen/dp_92" + android:background="@drawable/icon_take_over_label" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - - + + + + + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_custom_toast.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_custom_toast.xml new file mode 100644 index 0000000000..3b41cc8e5a --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_custom_toast.xml @@ -0,0 +1,42 @@ + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/window_ai_data_collect.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/window_ai_data_collect.xml new file mode 100644 index 0000000000..9ce6809750 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/window_ai_data_collect.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml index 1c36489633..b7f06a8256 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml @@ -66,5 +66,6 @@ 取消 暂无内容 不能选则 + 上报 \ 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/bone/toolkit/ToolKitDataManager.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt index 642348482a..f9aebbf218 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt @@ -199,23 +199,8 @@ object ToolKitDataManager : IToolKitItemClickListener, IDataCenterBizListener { } ToolTypeEnum.AI_REPORT.name -> { - (ctx as? FragmentActivity)?.also { - if (NetworkUtils.isConnected()) { - if (BadCaseConfig.dockerVersion != null) { - val aiDataCollectWindow = AIDataCollectWindow(it) - aiDataCollectWindow.setClickListener(object : - AIDataCollectWindow.ClickListener { - override fun closeWindow() { - aiDataCollectWindow.hideFloatWindow() - } - }) - aiDataCollectWindow.showFloatWindow() - } else { - ToastUtils.showShort("工控机连接状态异常") - } - } else { - ToastUtils.showShort("网络异常,请检查网络") - } + ctx?.also { + CallerDevaToolsManager.showAiDataCollectView(it) } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 1097775dc6..61244a3c46 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -209,9 +209,8 @@ 故障发生时间减少 故障发生时间增加 - 消息盒子吐司图标 - 红绿灯信号来源 + 已发起上报 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index e968d741d7..8d1f2c14b0 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -152,6 +152,11 @@ interface IDevaToolsProvider : IProvider { */ fun showTakeOverRecordView(context: Context) + /** + * 展示AI数据采集页面 + */ + fun showAiDataCollectView(context: Context) + /** * 启动调用SSM停服命令超时检测 */ diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt index dee7003e0c..c674221c90 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt @@ -207,6 +207,13 @@ object CallerDevaToolsManager { devaToolsProviderApi?.showTakeOverRecordView(context) } + /** + * 展示AI数据采集页面 + */ + fun showAiDataCollectView(context: Context){ + devaToolsProviderApi?.showAiDataCollectView(context) + } + /** * 启动调用SSM停服命令超时检测 */