diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 9b258332b8..40546a04dd 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -10,9 +10,12 @@ import android.os.SystemClock import android.util.DisplayMetrics import android.util.Log import android.view.* -import android.widget.CheckBox +import android.view.animation.Animation +import android.view.animation.ScaleAnimation import android.widget.ImageView import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.iflytek.cloud.ErrorCode import com.iflytek.cloud.InitListener import com.iflytek.cloud.RecognizerListener @@ -25,10 +28,13 @@ import com.mogo.eagle.core.data.deva.badcase.BagDescriptionEntity import com.mogo.eagle.core.data.deva.badcase.BagInfoEntity import com.mogo.eagle.core.data.deva.badcase.BagManagerEntity import com.mogo.eagle.core.data.deva.badcase.RecordCaseEntity +import com.mogo.eagle.core.data.deva.badcase.RecordOptionEntity 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.getChassisLocationWGS84 +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 @@ -46,8 +52,10 @@ import com.zhidao.loglib.upload.UploadManager import com.zhidao.loglib.util.FileUtil import com.zhjt.mogo_core_function_devatools.R import com.zhjt.mogo_core_function_devatools.badcase.BadCaseAnalyticsManager +import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.BadReasonListAdapter import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.mogo_core_function_devatools.badcase.record.RecordManager +import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.BadCaseNetManager import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.json.JSONException @@ -63,7 +71,7 @@ import java.util.* * @since: 2022/7/13 */ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchListener, - IMoGoAutopilotRecordListener { + IMoGoAutopilotRecordListener, BadCaseNetListener { companion object { const val TAG = "InitiativeBadCaseWindow" @@ -79,19 +87,16 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList private lateinit var tvInitiativeTime: TextView private lateinit var tvInitiativeIdentity: TextView - private lateinit var rbOne: CheckBox - private lateinit var rbTwo: CheckBox - private lateinit var rbThree: CheckBox - private lateinit var rbFour: CheckBox - private lateinit var rbFive: CheckBox - private lateinit var rbSix: CheckBox - + private lateinit var viewAudioBg: ImageView private lateinit var viewAudioButton: ImageView private lateinit var tvAudioCountDown: TextView private lateinit var tvInitiativeReport: TextView private lateinit var tvInitiativeCancel: TextView + private lateinit var rvInitiativeList: RecyclerView + private var badReasonListAdapter: BadReasonListAdapter ?= null + private var audioStatus = false private var audioFileName:String?=null //录音文件名称 @@ -144,18 +149,29 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList tvInitiativeTime = mFloatLayout.findViewById(R.id.tvInitiativeTime) tvInitiativeIdentity = mFloatLayout.findViewById(R.id.tvInitiativeIdentity) - rbOne = mFloatLayout.findViewById(R.id.rbOne) - rbTwo = mFloatLayout.findViewById(R.id.rbTwo) - rbThree = mFloatLayout.findViewById(R.id.rbThree) - rbFour = mFloatLayout.findViewById(R.id.rbFour) - rbFive = mFloatLayout.findViewById(R.id.rbFive) - rbSix = mFloatLayout.findViewById(R.id.rbSix) - + viewAudioBg = mFloatLayout.findViewById(R.id.viewAudioBg) viewAudioButton = mFloatLayout.findViewById(R.id.viewAudioButton) tvAudioCountDown = mFloatLayout.findViewById(R.id.tvAudioCountDown) tvInitiativeReport = mFloatLayout.findViewById(R.id.tvInitiativeReport) tvInitiativeCancel = mFloatLayout.findViewById(R.id.tvInitiativeCancel) + + rvInitiativeList = mFloatLayout.findViewById(R.id.rvInitiativeList) + val linearLayoutManager = LinearLayoutManager(mActivity) + linearLayoutManager.orientation = LinearLayoutManager.VERTICAL + rvInitiativeList.layoutManager = linearLayoutManager + badReasonListAdapter = BadReasonListAdapter(mActivity) + badReasonListAdapter?.setListener(object: BadReasonListAdapter.ReasonClickListener{ + override fun onClick(reason: String, isChecked: Boolean) { + if(isChecked){ + uploadReason.append(reason) + }else{ + val index = uploadReason.indexOf(reason) + uploadReason.delete(index,index+reason.length) + } + } + }) + rvInitiativeList.adapter = badReasonListAdapter if(BadCaseConfig.windowNum<1){ BadCaseConfig.windowNum = 1 } @@ -164,38 +180,27 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList tvInitiativeTime.text = "时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}" tvInitiativeIdentity.text = "身份:${BadCaseConfig.identity}" + /** + * 获取录包原因数据 + */ + BadCaseNetManager.badCaseNetManager.getRecordOption(1,AppConfigInfo.iPCMacAddress) +// BadCaseNetManager.badCaseNetManager.getRecordOption(1,"48:b0:2d:3a:9c:8f") + //采集结果回调监听 CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(),this) - viewAudioButton.setOnClickListener { + //主动录包采集原因回调监听 + CallerDevaToolsNetManager.addListener(this.hashCode().toString(),this) + viewAudioBg.setOnClickListener { audioStatus = !audioStatus setAudio(audioStatus) } + //上报 tvInitiativeReport.setOnClickListener { - if(!rbOne.isChecked && !rbTwo.isChecked && !rbThree.isChecked && - !rbFour.isChecked && !rbFive.isChecked && !rbSix.isChecked){ - TipToast.shortTip("请选择至少一个Case") + if(uploadReason.isBlank()){ + ToastUtils.showShort("请选择最少一个原因") return@setOnClickListener } - uploadReason.clear() - if(rbOne.isChecked){ - uploadReason.append("严重画龙 ") - } - if(rbTwo.isChecked){ - uploadReason.append("速度过慢 ") - } - if(rbThree.isChecked){ - uploadReason.append("感知、定位、地图等其他 ") - } - if(rbFour.isChecked){ - uploadReason.append("速度过快 ") - } - if(rbFive.isChecked){ - uploadReason.append("存在碰撞风险 ") - } - if(rbSix.isChecked){ - uploadReason.append("点刹、顿挫") - } if(audioStatus){ audioStatus = false setAudio(false) @@ -207,6 +212,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList } } + //取消 tvInitiativeCancel.setOnClickListener { BadCaseConfig.windowNum-- clickListener?.closeWindow() @@ -219,8 +225,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList it.format = PixelFormat.RGBA_8888 it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE it.gravity = Gravity.START or Gravity.TOP - it.width = 924 - it.height = 668 + it.width = 859 + it.height = 850 it.alpha = 1.0f } } @@ -312,8 +318,15 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList } audioFileName = "Audio_${System.currentTimeMillis()}_BadCase" RecordManager.getInstance().start(audioFileName) - //更改录音按钮背景 - viewAudioButton.setImageResource(R.drawable.icon_bad_case_audio_select) + //开始录音,展示放大缩小动效 + val scaleAnimation = ScaleAnimation( + 1.0f, 0.9f, 1.0f, 0.9f, + Animation.RELATIVE_TO_SELF, 0.9f, Animation.RELATIVE_TO_SELF, 0.9f + ) + scaleAnimation.duration = 1000 + scaleAnimation.repeatCount = -1 + viewAudioButton.startAnimation(scaleAnimation) + tvAudioCountDown.visibility = View.VISIBLE //开始倒计时 if(countDownTimer==null){ @@ -327,8 +340,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList tvAudioCountDown.visibility = View.GONE //结束录音 RecordManager.getInstance().stop() - //更改录音按钮背景 - viewAudioButton.setImageResource(R.drawable.icon_bad_case_audio_normal) + //结束动画 + viewAudioButton.clearAnimation() } } countDownTimer?.start() @@ -482,7 +495,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList val metrics = DisplayMetrics() // 默认固定位置,靠屏幕右边缘的中间 mWindowManager!!.defaultDisplay.getMetrics(metrics) - mWindowParams!!.x = metrics.widthPixels +// mWindowParams!!.x = metrics.widthPixels + mWindowParams!!.x = 0 mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight()-950 mWindowManager!!.addView(mFloatLayout, mWindowParams) //开启录包 @@ -502,7 +516,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList val metrics = DisplayMetrics() // 默认固定位置,靠屏幕右边缘的中间 mWindowManager!!.defaultDisplay.getMetrics(metrics) - mWindowParams!!.x = metrics.widthPixels +// mWindowParams!!.x = metrics.widthPixels + mWindowParams!!.x = 0 mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight()-950 mWindowManager!!.addView(mFloatLayout, mWindowParams) //已经录包无需再次启动录包,只要将录包信息同步到弹窗 @@ -517,6 +532,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList fun hideFloatWindow() { //注销采集结果回调监听 CallerAutopilotRecordListenerManager.removeListener(this.hashCode().toString()) + //注销采集原因回调监听 + CallerDevaToolsNetManager.removeListener(this.hashCode().toString()) if (mFloatLayout.parent != null) mWindowManager!!.removeView(mFloatLayout) } @@ -542,4 +559,10 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList fun closeWindow() } + override fun onInitiativeResponse(list: List) { + if(list.isNotEmpty()){ + badReasonListAdapter?.setData(list) + } + } + } \ 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/PassiveBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt index 043cb6d93f..c2fdb14ac3 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/PassiveBadCaseWindow.kt @@ -101,8 +101,6 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene private lateinit var tvPassiveReport: TextView private lateinit var tvPassiveCancel: TextView - private lateinit var flReasonLayout: FlexboxLayout - // 语音听写对象 private var mIat: SpeechRecognizer? = null @@ -137,7 +135,6 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene tvAudioCountDown = mFloatLayout.findViewById(R.id.tvAudioCountDown) tvPassiveReport = mFloatLayout.findViewById(R.id.tvPassiveReport) tvPassiveCancel = mFloatLayout.findViewById(R.id.tvPassiveCancel) - flReasonLayout = mFloatLayout.findViewById(R.id.flReasonLayout) if(BadCaseConfig.windowNum<1){ BadCaseConfig.windowNum = 1 } @@ -183,8 +180,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene it.format = PixelFormat.RGBA_8888 it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE it.gravity = Gravity.START or Gravity.TOP - it.width = 924 - it.height = 668 + it.width = 859 + it.height = 850 it.alpha = 1.0f } } @@ -291,7 +288,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene //结束录音 RecordManager.getInstance().stop() //更改录音按钮背景 - viewAudioButton.setImageResource(R.drawable.icon_bad_case_audio_normal) + //TODO +// viewAudioButton.setImageResource(R.drawable.icon_bad_case_audio_normal) } } countDownTimer?.start() @@ -452,29 +450,6 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene mWindowManager!!.addView(mFloatLayout, mWindowParams) } - GlobalScope.launch{ - presenter.loadBadCases(true).also { - ThreadUtils.runOnUiThread { - it.iterator().forEach { - val checkBox = CheckBox(mActivity) - checkBox.setTextColor(Color.WHITE) - val lp = FlexboxLayout.LayoutParams(FlexboxLayout.LayoutParams.WRAP_CONTENT, - FlexboxLayout.LayoutParams.WRAP_CONTENT) - checkBox.buttonDrawable = mActivity.resources.getDrawable(R.drawable.badcase_radio_button_style) - checkBox.setPadding(SizeUtils.dp2px(10f), - SizeUtils.dp2px(10f), - SizeUtils.dp2px(10f), - SizeUtils.dp2px(10f)) - checkBox.textSize = AutoSizeUtils.dp2px(mActivity,18f).toFloat() - checkBox.text = it.reason - checkBox.isChecked = it.isChecked - checkBox.setOnCheckedChangeListener(this@PassiveBadCaseWindow) - flReasonLayout.addView(checkBox,lp) - } - } - } - } - } override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BadReasonListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BadReasonListAdapter.kt new file mode 100644 index 0000000000..ecd2983878 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/BadReasonListAdapter.kt @@ -0,0 +1,84 @@ +package com.zhjt.mogo_core_function_devatools.badcase.biz.adapter + +import android.app.Activity +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.google.android.flexbox.FlexboxLayout +import com.mogo.eagle.core.data.deva.badcase.RecordOptionEntity +import com.mogo.eagle.core.utilcode.util.SizeUtils +import com.zhjt.mogo_core_function_devatools.R +import me.jessyan.autosize.utils.AutoSizeUtils + +/** + * 主动录包和被动录包采集原因列表适配器 + */ +class BadReasonListAdapter(activity: Activity): RecyclerView.Adapter() { + + init { + activity.also { this.mActivity = it } + } + + private var data:List ?= null + private var clickListener: ReasonClickListener ?= null + private var mActivity: Activity + + fun setData(data: List){ + this.data = data + notifyDataSetChanged() + } + + fun setListener(listener: ReasonClickListener){ + clickListener = listener + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BadReasonHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_case_reason, parent, false) + return BadReasonHolder(view) + } + + + override fun onBindViewHolder(holder: BadReasonHolder, position: Int) { + data?.let { + val entity = it[position] + holder.tvReasonTitle.text = entity.optionName + if(entity.children.size>0){ + entity.children.forEach { child-> + val checkBox = CheckBox(mActivity) + checkBox.setTextColor(Color.WHITE) + val lp = FlexboxLayout.LayoutParams(FlexboxLayout.LayoutParams.WRAP_CONTENT, + FlexboxLayout.LayoutParams.WRAP_CONTENT) + checkBox.buttonDrawable = mActivity.resources.getDrawable(R.drawable.badcase_radio_button_style) + checkBox.setPadding( + SizeUtils.dp2px(15f), + SizeUtils.dp2px(5f), + SizeUtils.dp2px(15f), + SizeUtils.dp2px(5f)) + checkBox.textSize = AutoSizeUtils.dp2px(mActivity,15f).toFloat() + checkBox.text = child.optionName + checkBox.setOnCheckedChangeListener{ _, isChecked -> + clickListener?.onClick(checkBox.text.toString(),isChecked) + } + holder.flReasonLayout.addView(checkBox,lp) + } + } + } + } + + override fun getItemCount() = data?.size ?: 0 + + class BadReasonHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ + var tvReasonTitle: TextView = itemView.findViewById(R.id.tvReasonTitle) + var flReasonLayout: FlexboxLayout = itemView.findViewById(R.id.flReasonLayout) + } + + interface ReasonClickListener{ + fun onClick(reason: String,isChecked: Boolean) + } + +} \ 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/repository/net/BadCaseNetModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/BadCaseNetModel.kt index c19d296883..be53547ec8 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/BadCaseNetModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/BadCaseNetModel.kt @@ -1,5 +1,6 @@ package com.zhjt.mogo_core_function_devatools.badcase.repository.net +import android.util.Log import com.mogo.commons.constants.HostConst import com.mogo.eagle.core.data.BaseResponse import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA @@ -65,6 +66,9 @@ internal class BadCaseNetModel { .create(BadCaseApi::class.java) } + /** + * 获取AI数据采集配置项数据 + */ fun getAiData(onSuccess: ((String) -> Unit),onError: ((String) -> Unit)){ request>{ loader{ @@ -85,5 +89,28 @@ internal class BadCaseNetModel { } } + /** + * 客户端根据录包类型和车辆 mac 地址查询录包数据 + * @param optionType 选项类型1-主动录包;2-被动录包 + * @param mac 设备mac地址 + */ + fun getRecordOption(optionType: Int,mac: String,onSuccess: ((String) -> Unit),onError: ((String) -> Unit)){ + request>{ + loader { + getNetWorkApi().getRecordOption(optionType, mac) + } + onSuccess{ + if(it.msg == "success"){ + onSuccess.invoke(GsonUtils.toJson(it.result)) + }else{ + onError.invoke(it.msg) + } + } + onError { + it.message?.let { it1 -> onError.invoke(it1) } + } + } + } + } \ 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/repository/net/api/BadCaseApi.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseApi.kt index b0fa9d3805..694cbe0cc1 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseApi.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseApi.kt @@ -2,6 +2,7 @@ package com.zhjt.mogo_core_function_devatools.badcase.repository.net.api import com.mogo.eagle.core.data.BaseResponse import com.mogo.eagle.core.data.deva.badcase.AiDataEntity +import com.mogo.eagle.core.data.deva.badcase.RecordOptionEntity import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.UploadResult import retrofit2.Response @@ -21,4 +22,12 @@ internal interface BadCaseApi { */ @GET("eagleEye-mis/dataGather/select/active") suspend fun getAiData(): BaseResponse> + + /** + * 客户端根据录包类型和车辆 mac 地址查询录包数据 + * @param optionType 选项类型1-主动录包;2-被动录包 + * @param mac 设备mac地址 + */ + @GET("eagleEye-mis/recordPackageOption/client/list") + suspend fun getRecordOption(@Query("optionType") optionType: Int,@Query("mac") mac: String): BaseResponse> } \ 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/repository/net/api/BadCaseNetManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseNetManager.kt index 0a008f9ffb..7d7b8260ad 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseNetManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseNetManager.kt @@ -1,6 +1,8 @@ package com.zhjt.mogo_core_function_devatools.badcase.repository.net.api +import android.util.Log import com.mogo.eagle.core.data.deva.badcase.AiDataEntity +import com.mogo.eagle.core.data.deva.badcase.RecordOptionEntity import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsNetManager import com.zhjt.mogo_core_function_devatools.badcase.repository.net.BadCaseNetModel import org.json.JSONArray @@ -16,6 +18,9 @@ class BadCaseNetManager { private val badCaseNetModel = BadCaseNetModel() + /** + * 获取AI数据采集数据 + */ fun getAiData(){ badCaseNetModel.getAiData( onSuccess = @@ -41,4 +46,52 @@ class BadCaseNetManager { }) } + fun getRecordOption(optionType: Int,mac: String){ + badCaseNetModel.getRecordOption(optionType,mac, + onSuccess = + { + Log.i("xuxinchao","onSuccess="+it) + val list = ArrayList() + val result = JSONArray(it) + if(result.length() > 0){ + for(i in 0 until result.length()){ + val entity = RecordOptionEntity() + val jsonObject = result[i] as JSONObject + val optionName = jsonObject.optString("optionName") + entity.optionName = optionName + val optionCode = jsonObject.optString("optionCode") + entity.optionCode = optionCode + val children = jsonObject.optJSONArray("children") + if (children != null) { + if(children.length() > 0){ + for(index in 0 until children.length()){ + val childJson = children[index] as JSONObject + val child = RecordOptionEntity() + val childOptionNme = childJson.optString("optionName") + val childOptionCode = childJson.optString("optionCode") + child.optionName = childOptionNme + child.optionCode = childOptionCode + entity.children.add(child) + } + } + } + list.add(entity) + } + } + //将结果回调到调用页面 + if(optionType == 1){ + //主动录包 + CallerDevaToolsNetManager.invokeInitiativeResponse(list) + } else if(optionType == 2){ + //被动录包 + CallerDevaToolsNetManager.invokePassiveResponse(list) + } + }, + onError = + { + + } + ) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_audio_bg.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_audio_bg.png index c67751750d..c1ba6e0f4d 100644 Binary files a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_audio_bg.png and b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_audio_bg.png differ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_audio_normal.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_audio_normal.png index cd3fee2a61..7446cf1434 100644 Binary files a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_audio_normal.png and b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_audio_normal.png differ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_num_bg.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_num_bg.png index c65c78d418..9f6a96cb55 100644 Binary files a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_num_bg.png and b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_num_bg.png differ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/ai_collect_title_bg.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/ai_collect_title_bg.xml index 405cfdcfff..10b3a9b148 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/ai_collect_title_bg.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/ai_collect_title_bg.xml @@ -5,5 +5,5 @@ android:endColor="#1B2966" android:angle="0" /> - + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_reason.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_reason.xml new file mode 100644 index 0000000000..f85553b48f --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_reason.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_initiative_bad_case.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_initiative_bad_case.xml index 515ca82ee0..96a89f7004 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_initiative_bad_case.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_initiative_bad_case.xml @@ -2,26 +2,26 @@ @@ -33,9 +33,8 @@ app:layout_constraintLeft_toRightOf="@id/tvInitiativeNum" app:layout_constraintTop_toTopOf="@id/tvInitiativeNum" app:layout_constraintBottom_toBottomOf="@id/tvInitiativeNum" - android:text="时间:14:23:10" android:textColor="#FFFFFFFF" - android:textSize="38dp" + android:textSize="@dimen/sp_34" android:layout_marginStart="@dimen/dp_50" /> @@ -46,131 +45,49 @@ app:layout_constraintTop_toTopOf="@id/tvInitiativeNum" app:layout_constraintBottom_toBottomOf="@id/tvInitiativeNum" app:layout_constraintRight_toRightOf="parent" - android:text="身份:QA" android:textColor="#FFFFFFFF" - android:textSize="38dp" + android:textSize="@dimen/sp_34" android:layout_marginEnd="@dimen/dp_50" /> - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/RecordOptionEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/RecordOptionEntity.kt new file mode 100644 index 0000000000..dcfeb7b682 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/badcase/RecordOptionEntity.kt @@ -0,0 +1,10 @@ +package com.mogo.eagle.core.data.deva.badcase + +/** + * 录包原因数据实体 + */ +class RecordOptionEntity { + var optionName: String = "" //一级列表原因 + var optionCode: String = "" //原因Code + var children: ArrayList = ArrayList() //二级列表 +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/badcase/BadCaseNetListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/badcase/BadCaseNetListener.kt index a973815706..8ee2294155 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/badcase/BadCaseNetListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/badcase/BadCaseNetListener.kt @@ -1,10 +1,21 @@ package com.mogo.eagle.core.function.api.devatools.badcase import com.mogo.eagle.core.data.deva.badcase.AiDataEntity +import com.mogo.eagle.core.data.deva.badcase.RecordOptionEntity interface BadCaseNetListener { /** * AI数据采集数据回调 */ fun onAiDataResponse(list: List){} + + /** + * 主动录包数据回调 + */ + fun onInitiativeResponse(list: List){} + + /** + * 被动录包数据回调 + */ + fun onPassiveResponse(list: List){} } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsNetManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsNetManager.kt index 6176bd97eb..bd980dd414 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsNetManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsNetManager.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.call.devatools import com.mogo.eagle.core.data.deva.badcase.AiDataEntity +import com.mogo.eagle.core.data.deva.badcase.RecordOptionEntity import com.mogo.eagle.core.function.api.devatools.badcase.BadCaseNetListener import com.mogo.eagle.core.function.call.base.CallerBase @@ -16,4 +17,24 @@ object CallerDevaToolsNetManager: CallerBase() { } } + /** + * 主动录包数据回调 + */ + fun invokeInitiativeResponse(list: List){ + M_LISTENERS.forEach{ + val listener = it.value + listener.onInitiativeResponse(list) + } + } + + /** + * 被动录包数据回调 + */ + fun invokePassiveResponse(list: List){ + M_LISTENERS.forEach{ + val listener = it.value + listener.onPassiveResponse(list) + } + } + } \ No newline at end of file