Merge branch 'dev_robotaxi-d_240807_6.6.0' of gitlab.zhidaoauto.com:SCA/L4HA/AndroidApp/MoGoEagleEye into dev_robotaxi-d_240807_6.6.0
This commit is contained in:
@@ -27,7 +27,7 @@ object RecordManager {
|
||||
*/
|
||||
fun insertRecord(context: Context,takeOverRecordInfo: TakeOverRecordInfo){
|
||||
takeOverRecordInfo.let {
|
||||
val recordInfo = RecordInfo(null,it.address,it.faultStartTime,it.level1Id,
|
||||
val recordInfo = RecordInfo(it.faultStartTime,it.address,it.level1Id,
|
||||
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
|
||||
if (Thread.currentThread() == Looper.getMainLooper().thread){
|
||||
scope.launch{
|
||||
@@ -59,7 +59,7 @@ object RecordManager {
|
||||
*/
|
||||
fun updateRecord(context: Context,takeOverRecordInfo: TakeOverRecordInfo){
|
||||
takeOverRecordInfo.let{
|
||||
val recordInfo = RecordInfo(null,it.address,it.faultStartTime,it.level1Id,
|
||||
val recordInfo = RecordInfo(it.faultStartTime,it.address,it.level1Id,
|
||||
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
|
||||
if (Thread.currentThread() == Looper.getMainLooper().thread){
|
||||
scope.launch{
|
||||
@@ -91,7 +91,7 @@ object RecordManager {
|
||||
*/
|
||||
fun deleteRecord(context: Context, takeOverRecordInfo: TakeOverRecordInfo) {
|
||||
takeOverRecordInfo.let{
|
||||
val recordInfo = RecordInfo(null,it.address,it.faultStartTime,it.level1Id,
|
||||
val recordInfo = RecordInfo(it.faultStartTime,it.address,it.level1Id,
|
||||
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
|
||||
if (Thread.currentThread() == Looper.getMainLooper().thread){
|
||||
scope.launch {
|
||||
|
||||
@@ -9,15 +9,12 @@ import androidx.room.PrimaryKey
|
||||
*/
|
||||
@Entity(tableName = "take_over_record")
|
||||
data class RecordInfo(
|
||||
//自增主键
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
var id: Int ?= null,
|
||||
//故障开始时间 主键
|
||||
@PrimaryKey(autoGenerate = false)
|
||||
val faultStartTime: Long,
|
||||
//故障地点
|
||||
@ColumnInfo
|
||||
val address: String,
|
||||
//故障开始时间 yyyy-MM-dd HH:mm:ss
|
||||
@ColumnInfo
|
||||
val faultStartTime: String,
|
||||
//一级分类ID
|
||||
@ColumnInfo
|
||||
var level1Id: Int,
|
||||
|
||||
@@ -291,6 +291,16 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 受channel业务影响的功能,需要更新,todo 建议有流程
|
||||
* AppIdentityModeUtils.getMisChannelCode
|
||||
*/
|
||||
override fun updateAppChannel() {
|
||||
bizConfigCenter.updateChannelRole() //功能开关配置更新
|
||||
traceManager.syncConfig() //同步信息至ms
|
||||
BindingCarManager.queryAppUpgrade() //更新App升级信息
|
||||
}
|
||||
|
||||
private fun initMatrix() {
|
||||
val builder: Matrix.Builder = Matrix.Builder(AbsMogoApplication.getApp())
|
||||
builder.pluginListener(object : PluginListener {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.zhjt.mogo_core_function_devatools.badcase
|
||||
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
@@ -74,6 +75,8 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
|
||||
private var record: AutoPilotRecord? = null
|
||||
|
||||
private var recordKey: Long = 0 //主动录制bag包key
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private var reportTypeWindow: ReportTypeWindow ?= null
|
||||
|
||||
fun init(context: Context) {
|
||||
CallerAutopilotRecordListenerManager.addListener(TAG, this)
|
||||
@@ -191,18 +194,19 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
|
||||
view.setOnClickListener{
|
||||
if (ClickUtils.isFastClick()){
|
||||
if (NetworkUtils.isConnected()){
|
||||
//TODO 更改dockerVersion是否为空
|
||||
if (BadCaseConfig.dockerVersion == null){
|
||||
if (BadCaseConfig.dockerVersion != null){
|
||||
if(ProjectUtils.isSaas()){
|
||||
//660版本数据闭环增加统一上报问题入口(仅限于saas渠道)
|
||||
//TODO 已存在WIndow再次点击会再次创建WIndow
|
||||
val reportTypeWindow = ReportTypeWindow(activity)
|
||||
reportTypeWindow.setClickListener(object: ReportTypeWindow.ClickListener{
|
||||
override fun closeWindow() {
|
||||
reportTypeWindow.hideFloatWindow()
|
||||
}
|
||||
})
|
||||
reportTypeWindow.showFloatWindow()
|
||||
if(reportTypeWindow == null){
|
||||
reportTypeWindow = ReportTypeWindow(activity)
|
||||
reportTypeWindow?.setClickListener(object: ReportTypeWindow.ClickListener{
|
||||
override fun closeWindow() {
|
||||
reportTypeWindow?.hideFloatWindow()
|
||||
reportTypeWindow = null
|
||||
}
|
||||
})
|
||||
reportTypeWindow?.showFloatWindow()
|
||||
}
|
||||
}else{
|
||||
//展示工单上报弹窗
|
||||
val workOrderWindow = WorkOrderWindow(activity)
|
||||
|
||||
@@ -20,6 +20,8 @@ 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.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.deva.report.WorkOrderReportInfo
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.getMisChannelCode
|
||||
import com.zhjt.mogo_core_function_devatools.trace.TraceManager
|
||||
import com.zhjt.mogo_core_function_devatools.upgrade.IPCUpgradeManager.Companion.ipcUpgradeManager
|
||||
import com.zhjt.mogo_core_function_devatools.upgrade.ObuUpgradeAppNetWorkManager
|
||||
@@ -228,7 +230,7 @@ object BindingCarManager : IMoGoAutopilotCarConfigListener, IMoGoCloudListener {
|
||||
}
|
||||
CallerLogger.d(M_DEVA + "UPGRADE", "---- 3 ----[mac: $macAddress]")
|
||||
UpgradeAppNetWorkManager.instance
|
||||
?.getAppUpgradeInfo(mContext, macAddress, role.toString() + "")
|
||||
?.getAppUpgradeInfo(mContext, macAddress, AppIdentityModeUtils.getMisChannelCode(FunctionBuildConfig.appIdentityMode).toString() + "")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_ST
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigListenerManager
|
||||
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.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.SPUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
@@ -35,6 +37,8 @@ class FuncConfigCenter : IMogoOnMessageListener<FuncConfig>, IMoGoAutopilotCarCo
|
||||
|
||||
private var mContext: Context? = null
|
||||
private val funcConfigNetWorkModel = FuncConfigNetWorkModel()
|
||||
@Volatile
|
||||
private var macAddress:String? = null
|
||||
|
||||
fun init(context: Context) {
|
||||
mContext = context
|
||||
@@ -48,15 +52,26 @@ class FuncConfigCenter : IMogoOnMessageListener<FuncConfig>, IMoGoAutopilotCarCo
|
||||
refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java))
|
||||
}
|
||||
|
||||
fun updateChannelRole(){
|
||||
macAddress?.let {
|
||||
refresh(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) {
|
||||
if (!carConfigResp.macAddress.isNullOrEmpty()) {
|
||||
UiThreadHandler.post {
|
||||
funcConfigNetWorkModel.requestFuncConfig(carConfigResp.macAddress, {
|
||||
SPUtils.getInstance("biz_config").put("config", GsonUtils.toJson(it))
|
||||
refreshConfig(it) }, {})
|
||||
}
|
||||
macAddress = carConfigResp.macAddress
|
||||
refresh(carConfigResp.macAddress)
|
||||
} else {
|
||||
ToastUtils.showLong("未获取到域控mac信息")
|
||||
CallerLogger.i("$M_DEVA$TAG","未获取到域控mac信息")
|
||||
}
|
||||
}
|
||||
|
||||
private fun refresh(macAddress: String){
|
||||
UiThreadHandler.post {
|
||||
funcConfigNetWorkModel.requestFuncConfig(macAddress, {
|
||||
SPUtils.getInstance("biz_config").put("config", GsonUtils.toJson(it))
|
||||
refreshConfig(it) }, {})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.graphics.PixelFormat
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.util.DisplayMetrics
|
||||
@@ -27,28 +29,44 @@ import androidx.constraintlayout.widget.Group
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.amap.api.services.core.LatLonPoint
|
||||
import com.amap.api.services.geocoder.GeocodeResult
|
||||
import com.amap.api.services.geocoder.GeocodeSearch
|
||||
import com.amap.api.services.geocoder.RegeocodeQuery
|
||||
import com.amap.api.services.geocoder.RegeocodeResult
|
||||
import com.iflytek.cloud.ErrorCode
|
||||
import com.iflytek.cloud.InitListener
|
||||
import com.iflytek.cloud.RecognizerListener
|
||||
import com.iflytek.cloud.RecognizerResult
|
||||
import com.iflytek.cloud.SpeechError
|
||||
import com.iflytek.cloud.SpeechRecognizer
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.data.deva.report.CategoryInfo
|
||||
import com.mogo.eagle.core.data.deva.report.PadAddProblemReq
|
||||
import com.mogo.eagle.core.data.deva.report.PadProblemInfo
|
||||
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
|
||||
import com.mogo.eagle.core.function.api.order.IOrderListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager
|
||||
import com.mogo.eagle.core.utilcode.util.BarUtils
|
||||
import com.mogo.eagle.core.utilcode.util.JsonParser
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.tts.base.SpeechUtils
|
||||
import com.zhjt.mogo_core_function_devatools.R
|
||||
import com.zhjt.mogo_core_function_devatools.workorder.adapter.OrderReasonAdapter
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlin.math.absoluteValue
|
||||
|
||||
/**
|
||||
* 故障原因编辑窗口
|
||||
*/
|
||||
class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener{
|
||||
class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
IMoGoDevaToolsListener, IOrderListener {
|
||||
|
||||
companion object{
|
||||
const val TAG = "FaultReasonWindow"
|
||||
@@ -93,6 +111,15 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener{
|
||||
|
||||
private lateinit var orderReasonAdapter: OrderReasonAdapter
|
||||
|
||||
private var address: String = "" //故障地点
|
||||
private var faultCodeList = ArrayList<String>() //故障码列表
|
||||
private var level1Id: Int = 0 //一级分类ID
|
||||
private var level2Id: Int = 0 //二级分类ID
|
||||
private var level3Id: Int = 0 //三级分类ID
|
||||
private var lineName: String = "" //行驶路线
|
||||
private var reportNote: String = "" //上报描述
|
||||
private val reportType: Int = 2 //上报方式:0:小程序 1:司机屏 2:云端上报
|
||||
|
||||
init {
|
||||
initFloatWindow()
|
||||
}
|
||||
@@ -158,6 +185,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener{
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun initEvent(){
|
||||
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||
CallerOrderListenerManager.addListener(TAG,this)
|
||||
val iconDown = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_expand)
|
||||
iconDown?.setBounds(0, 0, iconDown.minimumWidth, iconDown.minimumHeight)
|
||||
val iconUp = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_retract)
|
||||
@@ -268,7 +297,30 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener{
|
||||
}
|
||||
//上报
|
||||
tvFaultReport.setOnClickListener{
|
||||
//TODO
|
||||
CallerOrderListenerManager.invokeOrderLineUpdate("测试")
|
||||
|
||||
val geocodeSearch = GeocodeSearch(mActivity)
|
||||
geocodeSearch.setOnGeocodeSearchListener(object: GeocodeSearch.OnGeocodeSearchListener {
|
||||
override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult?, p1: Int) {
|
||||
regeocodeResult?.regeocodeAddress?.formatAddress?.let {
|
||||
address = it
|
||||
}
|
||||
val padProblemList= ArrayList<PadProblemInfo>()
|
||||
val padProblemInfo = PadProblemInfo(address,faultCodeList,millis2String(workOrderOccurrenceTime),level1Id,
|
||||
level2Id,level3Id,lineName,reportNote,reportType,
|
||||
SharedPrefsMgr.getInstance().getString("och_account",""))
|
||||
padProblemList.add(padProblemInfo)
|
||||
val padAddProblemReq = PadAddProblemReq(padProblemList,AppConfigInfo.plateNumber)
|
||||
CallerDevaToolsManager.problemPadAdd(padAddProblemReq)
|
||||
}
|
||||
|
||||
override fun onGeocodeSearched(p0: GeocodeResult?, p1: Int) {
|
||||
|
||||
}
|
||||
})
|
||||
val latLon = LatLonPoint(CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude, CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude)
|
||||
val q = RegeocodeQuery(latLon,200f,GeocodeSearch.AMAP)
|
||||
geocodeSearch.getFromLocationAsyn(q)
|
||||
}
|
||||
//取消
|
||||
tvFaultCancel.setOnClickListener {
|
||||
@@ -306,6 +358,10 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化监听器。
|
||||
*/
|
||||
|
||||
/**
|
||||
* 初始化监听器。
|
||||
*/
|
||||
@@ -315,6 +371,10 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 听写监听器。
|
||||
*/
|
||||
|
||||
/**
|
||||
* 听写监听器。
|
||||
*/
|
||||
@@ -353,6 +413,10 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示结果
|
||||
*/
|
||||
|
||||
/**
|
||||
* 显示结果
|
||||
*/
|
||||
@@ -416,10 +480,11 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener{
|
||||
}
|
||||
|
||||
fun hideFloatWindow() {
|
||||
CallerDevaToolsListenerManager.removeListener(TAG)
|
||||
CallerOrderListenerManager.removeListener(TAG)
|
||||
if (mFloatLayout.parent != null){
|
||||
mWindowManager!!.removeView(mFloatLayout)
|
||||
}
|
||||
CallerDevaToolsListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
fun setClickListener(clickListener: ClickListener) {
|
||||
@@ -430,4 +495,42 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener{
|
||||
fun closeWindow()
|
||||
}
|
||||
|
||||
/**
|
||||
* 故障上报成功
|
||||
*/
|
||||
override fun problemPadAddSuccess() {
|
||||
super.problemPadAddSuccess()
|
||||
//显示上报成功页面,短暂停留关闭弹窗
|
||||
ThreadUtils.runOnUiThread {
|
||||
rvFaultList.visibility = View.GONE
|
||||
tvUploadSuccess.visibility = View.VISIBLE
|
||||
faultReasonGroup.visibility = View.GONE
|
||||
val successHandler = Handler(Looper.getMainLooper())
|
||||
successHandler.postDelayed({
|
||||
hideFloatWindow()
|
||||
},1500)
|
||||
}
|
||||
}
|
||||
|
||||
override fun problemPadAddError(msg: String) {
|
||||
super.problemPadAddError(msg)
|
||||
ToastUtils.showShort("故障原因上报失败$msg")
|
||||
}
|
||||
|
||||
override fun getCategoriesSuccess(list: List<CategoryInfo>) {
|
||||
super.getCategoriesSuccess(list)
|
||||
}
|
||||
|
||||
override fun getCategoriesError(msg: String) {
|
||||
super.getCategoriesError(msg)
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单路线名称变化监听
|
||||
* @param lineName 路线名称
|
||||
*/
|
||||
override fun onOrderLineUpdate(lineName: String) {
|
||||
this.lineName = lineName
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,6 +4,8 @@ import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.graphics.PixelFormat
|
||||
import android.os.CountDownTimer
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.SystemClock
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.Gravity
|
||||
@@ -125,11 +127,17 @@ class ReportTypeWindow constructor(activity: Activity) {
|
||||
BadCaseConfig.type, Random(SystemClock.elapsedRealtime()).nextInt().absoluteValue,
|
||||
BadCaseConfig.totalDuration, BadCaseConfig.previousDuration)
|
||||
if(response){
|
||||
ToastUtils.showShort("主动录包命令下发成功")
|
||||
//已发起录包
|
||||
reportTypeGroup.visibility = View.GONE
|
||||
tvReportSuccess.visibility = View.VISIBLE
|
||||
tvReportSuccess.text = mActivity.resources.getString(R.string.record_success)
|
||||
val successHandler = Handler(Looper.getMainLooper())
|
||||
successHandler.postDelayed({
|
||||
clickListener?.closeWindow()
|
||||
},1500)
|
||||
}else{
|
||||
ToastUtils.showShort("主动录包命令下发失败")
|
||||
}
|
||||
clickListener?.closeWindow()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -139,7 +147,7 @@ class ReportTypeWindow constructor(activity: Activity) {
|
||||
val metrics = DisplayMetrics()
|
||||
// 默认固定位置,靠屏幕右边缘的中间
|
||||
mWindowManager!!.defaultDisplay.getMetrics(metrics)
|
||||
mWindowParams!!.x = metrics.widthPixels-2257
|
||||
mWindowParams!!.x = metrics.widthPixels-2258
|
||||
mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight()-420
|
||||
mWindowManager!!.addView(mFloatLayout, mWindowParams)
|
||||
}
|
||||
|
||||
@@ -33,7 +33,11 @@ import com.iflytek.cloud.RecognizerListener
|
||||
import com.iflytek.cloud.RecognizerResult
|
||||
import com.iflytek.cloud.SpeechError
|
||||
import com.iflytek.cloud.SpeechRecognizer
|
||||
import com.mogo.eagle.core.data.deva.report.CategoryInfo
|
||||
import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo
|
||||
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
|
||||
import com.mogo.eagle.core.function.call.takeover.CallerTakeOverManager
|
||||
import com.mogo.eagle.core.utilcode.util.BarUtils
|
||||
import com.mogo.eagle.core.utilcode.util.JsonParser
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
@@ -48,7 +52,8 @@ import kotlin.math.absoluteValue
|
||||
/**
|
||||
* 接管原因编辑窗口
|
||||
*/
|
||||
class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListener {
|
||||
class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
IMoGoDevaToolsListener {
|
||||
|
||||
companion object{
|
||||
const val TAG = "TakeOverReasonWindow"
|
||||
@@ -81,13 +86,14 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
private lateinit var tbTakeOverReason: ToggleButton
|
||||
private lateinit var etNoteInput: AppCompatEditText
|
||||
private lateinit var ivNoteAudio: ImageView
|
||||
private lateinit var tvTakeOverReport: TextView
|
||||
private lateinit var tvTakeOverSave: TextView
|
||||
private lateinit var tvTakeOverCancel: TextView
|
||||
private lateinit var rvTakeOverList: RecyclerView
|
||||
private lateinit var tvUploadSuccess: AppCompatTextView
|
||||
private lateinit var takeOverReasonGroup: Group
|
||||
|
||||
private lateinit var orderReasonAdapter: OrderReasonAdapter
|
||||
private lateinit var mTakeOverRecordInfo: TakeOverRecordInfo
|
||||
|
||||
init {
|
||||
initFloatWindow()
|
||||
@@ -121,7 +127,7 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
tbTakeOverReason = mFloatLayout.findViewById(R.id.tbTakeOverReason)
|
||||
etNoteInput = mFloatLayout.findViewById(R.id.etNoteInput)
|
||||
ivNoteAudio = mFloatLayout.findViewById(R.id.ivNoteAudio)
|
||||
tvTakeOverReport = mFloatLayout.findViewById(R.id.tvTakeOverReport)
|
||||
tvTakeOverSave = mFloatLayout.findViewById(R.id.tvTakeOverSave)
|
||||
tvTakeOverCancel = mFloatLayout.findViewById(R.id.tvTakeOverCancel)
|
||||
rvTakeOverList = mFloatLayout.findViewById(R.id.rvTakeOverList)
|
||||
tvUploadSuccess = mFloatLayout.findViewById(R.id.tvUploadSuccess)
|
||||
@@ -150,6 +156,7 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun initEvent(){
|
||||
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||
val iconDown = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_expand)
|
||||
iconDown?.setBounds(0, 0, iconDown.minimumWidth, iconDown.minimumHeight)
|
||||
val iconUp = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_retract)
|
||||
@@ -245,8 +252,11 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
setAudio(audioStatus)
|
||||
}
|
||||
//上报
|
||||
tvTakeOverReport.setOnClickListener{
|
||||
//TODO
|
||||
tvTakeOverSave.setOnClickListener{
|
||||
mTakeOverRecordInfo.reportNote = etNoteInput.text.toString()
|
||||
CallerTakeOverManager.updateRecord(mActivity,mTakeOverRecordInfo)
|
||||
clickListener?.onSaveReason()
|
||||
hideFloatWindow()
|
||||
}
|
||||
//取消
|
||||
tvTakeOverCancel.setOnClickListener {
|
||||
@@ -379,7 +389,7 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
return true
|
||||
}
|
||||
|
||||
fun showFloatWindow() {
|
||||
fun showFloatWindow(takeOverRecordInfo: TakeOverRecordInfo) {
|
||||
if (mFloatLayout.parent == null) {
|
||||
val metrics = DisplayMetrics()
|
||||
// 默认固定位置,靠屏幕右边缘的中间
|
||||
@@ -387,9 +397,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
mWindowParams!!.x = metrics.widthPixels-890
|
||||
mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight()-1140
|
||||
mWindowManager!!.addView(mFloatLayout, mWindowParams)
|
||||
|
||||
|
||||
}
|
||||
mTakeOverRecordInfo = takeOverRecordInfo
|
||||
}
|
||||
|
||||
fun hideFloatWindow() {
|
||||
@@ -404,7 +413,15 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
}
|
||||
|
||||
interface ClickListener {
|
||||
fun closeWindow()
|
||||
fun onSaveReason()
|
||||
}
|
||||
|
||||
override fun getCategoriesSuccess(list: List<CategoryInfo>) {
|
||||
super.getCategoriesSuccess(list)
|
||||
}
|
||||
|
||||
override fun getCategoriesError(msg: String) {
|
||||
super.getCategoriesError(msg)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,19 +4,26 @@ import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo
|
||||
import com.mogo.eagle.core.function.call.takeover.CallerTakeOverManager
|
||||
import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils.getYMDFormat
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.Utils
|
||||
import com.zhjt.mogo_core_function_devatools.R
|
||||
import com.zhjt.mogo_core_function_devatools.workorder.adapter.BottomDecoration
|
||||
import com.zhjt.mogo_core_function_devatools.workorder.adapter.TakeOverListAdapter
|
||||
import kotlinx.android.synthetic.main.view_take_over_record.view.ivTakeOverRecordClose
|
||||
import kotlinx.android.synthetic.main.view_take_over_record.view.recordGroup
|
||||
import kotlinx.android.synthetic.main.view_take_over_record.view.rvTakeOverList
|
||||
import kotlinx.android.synthetic.main.view_take_over_record.view.tvDeleteSelect
|
||||
import kotlinx.android.synthetic.main.view_take_over_record.view.tvRecordNoData
|
||||
import kotlinx.android.synthetic.main.view_take_over_record.view.tvTakeOverRecordDate
|
||||
import kotlinx.android.synthetic.main.view_take_over_record.view.tvUpload
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -37,6 +44,10 @@ class TakeOverRecordView @JvmOverloads constructor(
|
||||
const val TAG = "TakeOverRecordView"
|
||||
}
|
||||
|
||||
private val scope by lazy {
|
||||
Utils.getApp().lifeCycleScope
|
||||
}
|
||||
|
||||
private var takeOverListAdapter: TakeOverListAdapter ?= null
|
||||
private var clickListener: ClickListener? = null
|
||||
private val selectedUploadRecord = ArrayList<TakeOverRecordInfo>()
|
||||
@@ -62,7 +73,13 @@ class TakeOverRecordView @JvmOverloads constructor(
|
||||
val activity = context as? FragmentActivity
|
||||
?: throw IllegalStateException("please ensure context is FragmentActivity.")
|
||||
val takeOverReasonWindow = TakeOverReasonWindow(activity)
|
||||
takeOverReasonWindow.showFloatWindow()
|
||||
takeOverReasonWindow.setClickListener(object: TakeOverReasonWindow.ClickListener{
|
||||
override fun onSaveReason() {
|
||||
//刷新列表 TODO 应该局部刷新
|
||||
refreshList()
|
||||
}
|
||||
})
|
||||
takeOverReasonWindow.showFloatWindow(takeOverRecordInfo)
|
||||
}
|
||||
|
||||
override fun onSelectRecord(
|
||||
@@ -83,43 +100,42 @@ class TakeOverRecordView @JvmOverloads constructor(
|
||||
)
|
||||
rvTakeOverList.adapter = takeOverListAdapter
|
||||
|
||||
val list = ArrayList<TakeOverRecordInfo>()
|
||||
|
||||
// GlobalScope.launch(Dispatchers.IO){
|
||||
// list = CallerTakeOverManager.getAllRecord(context)
|
||||
// }
|
||||
|
||||
val takeOverRecordInfoOne = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineNamelineNamelineNamelineNamelineNamelineNamelineNamelineNamelineNamelineName","描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1描述1",false)
|
||||
val takeOverRecordInfoTwo = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineName","描述2",false)
|
||||
val takeOverRecordInfoThree = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineName","描述3",true)
|
||||
val takeOverRecordInfoFour = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineName","描述4",true)
|
||||
val takeOverRecordInfoFive = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineName","描述5",false)
|
||||
val takeOverRecordInfoSix = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineName","描述6",false)
|
||||
val takeOverRecordInfoSeven = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineName","描述7",false)
|
||||
val takeOverRecordInfoEight = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineName","描述8",true)
|
||||
val takeOverRecordInfoNine = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineName","描述9",false)
|
||||
val takeOverRecordInfoTen = TakeOverRecordInfo(System.currentTimeMillis().toString(),"环球贸易中心",1,2,3,"lineName","描述10",true)
|
||||
|
||||
list.add(takeOverRecordInfoOne)
|
||||
list.add(takeOverRecordInfoTwo)
|
||||
list.add(takeOverRecordInfoThree)
|
||||
list.add(takeOverRecordInfoFour)
|
||||
list.add(takeOverRecordInfoFive)
|
||||
list.add(takeOverRecordInfoSix)
|
||||
list.add(takeOverRecordInfoSeven)
|
||||
list.add(takeOverRecordInfoEight)
|
||||
list.add(takeOverRecordInfoNine)
|
||||
list.add(takeOverRecordInfoTen)
|
||||
|
||||
takeOverListAdapter?.setData(list)
|
||||
|
||||
//一键上传
|
||||
tvUpload.setOnClickListener {
|
||||
|
||||
}
|
||||
//删除
|
||||
tvDeleteSelect.setOnClickListener {
|
||||
// CallerTakeOverManager.deleteRecord(context,)
|
||||
if(selectedUploadRecord.isEmpty()){
|
||||
ToastUtils.showShort("请选择需要删除的接管记录")
|
||||
}else{
|
||||
selectedUploadRecord.forEach {
|
||||
CallerTakeOverManager.deleteRecord(context,it)
|
||||
}
|
||||
refreshList()
|
||||
}
|
||||
}
|
||||
refreshList()
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新接管记录列表
|
||||
*/
|
||||
private fun refreshList(){
|
||||
scope.launch(Dispatchers.IO){
|
||||
val recordList= CallerTakeOverManager.getAllRecord(context)
|
||||
ThreadUtils.runOnUiThread {
|
||||
if(recordList.isEmpty()){
|
||||
tvRecordNoData.visibility = View.VISIBLE
|
||||
recordGroup.visibility = View.GONE
|
||||
}else{
|
||||
tvRecordNoData.visibility = View.GONE
|
||||
recordGroup.visibility = View.VISIBLE
|
||||
//更新列表
|
||||
takeOverListAdapter?.setData(recordList)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ class WorkOrderManager{
|
||||
CallerDevaToolsListenerManager.invokeProblemPadAddSuccess()
|
||||
},
|
||||
onError = {
|
||||
CallerDevaToolsListenerManager.invokeProblemPadAddError()
|
||||
CallerDevaToolsListenerManager.invokeProblemPadAddError(it)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ class WorkOrderNetWorkModel {
|
||||
onSuccess.invoke("")
|
||||
}
|
||||
onError{
|
||||
onError.invoke("")
|
||||
onError.invoke(it.message+"")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.zhjt.mogo_core_function_devatools.R
|
||||
|
||||
@@ -35,11 +36,10 @@ class TakeOverListAdapter(private val context: Context): RecyclerView.Adapter<Ta
|
||||
override fun onBindViewHolder(holder: TakeOverRecordHolder, position: Int) {
|
||||
data?.let {
|
||||
val recordEntity = it[position]
|
||||
holder.cbRecordSelect.isClickable = !recordEntity.reportStatus
|
||||
holder.cbRecordSelect.setOnCheckedChangeListener { _, isChecked ->
|
||||
clickListener?.onSelectRecord(recordEntity,isChecked)
|
||||
}
|
||||
holder.tvFaultStartTime.text = recordEntity.faultStartTime
|
||||
holder.tvFaultStartTime.text = TimeUtils.millis2String(recordEntity.faultStartTime)
|
||||
holder.tvLineName.text = recordEntity.lineName
|
||||
holder.tvTakeOverReason.text = recordEntity.reportNote
|
||||
if(recordEntity.reportStatus){
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
@@ -266,7 +266,7 @@
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@drawable/report_button_bg"
|
||||
android:text="@string/take_over_report"
|
||||
android:text="@string/fault_report"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="@dimen/sp_27"
|
||||
android:textStyle="bold"
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
android:textSize="@dimen/sp_26"
|
||||
android:textColor="@color/white"
|
||||
app:drawableTopCompat="@drawable/icon_report_success"
|
||||
android:layout_marginTop="@dimen/dp_59"
|
||||
android:layout_marginTop="@dimen/dp_79"
|
||||
android:drawablePadding="@dimen/dp_22"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
@@ -201,13 +201,13 @@
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvTakeOverReport"
|
||||
android:id="@+id/tvTakeOverSave"
|
||||
android:layout_width="@dimen/dp_380"
|
||||
android:layout_height="@dimen/dp_80"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:background="@drawable/report_button_bg"
|
||||
android:text="@string/take_over_report"
|
||||
android:text="@string/take_over_save"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="@dimen/sp_27"
|
||||
android:textStyle="bold"
|
||||
|
||||
@@ -92,6 +92,30 @@
|
||||
android:gravity="center"
|
||||
/>
|
||||
|
||||
<androidx.constraintlayout.widget.Group
|
||||
android:id="@+id/recordGroup"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:constraint_referenced_ids="tvTakeOverRecordDate,
|
||||
rvTakeOverList,tvUpload,tvDeleteSelect"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tvRecordNoData"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_652"
|
||||
app:drawableTopCompat="@drawable/icon_record_no_data"
|
||||
android:text="@string/take_over_record_no_data"
|
||||
android:drawablePadding="@dimen/dp_33"
|
||||
android:textColor="#CAD6FF"
|
||||
android:textSize="@dimen/sp_34"
|
||||
android:gravity="center_horizontal"
|
||||
/>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -61,7 +61,9 @@
|
||||
<string name="fault_note_supplement">(选填)</string>
|
||||
<string name="take_over_note_input">手动输入</string>
|
||||
<string name="take_over_note_audio">补充描述语音输入</string>
|
||||
<string name="take_over_report">上报</string>
|
||||
<string name="fault_report">上报</string>
|
||||
<string name="take_over_save">保存</string>
|
||||
<string name="take_over_cancel">取消</string>
|
||||
<string name="take_over_record_no_data">暂无接管记录</string>
|
||||
|
||||
</resources>
|
||||
Reference in New Issue
Block a user