[Taxi无人化] refactor: 抽取task相关;
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.mogo.och.taxi.bean
|
||||
|
||||
import android.text.Spanned
|
||||
import androidx.core.text.HtmlCompat
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
|
||||
/**
|
||||
@@ -44,8 +46,10 @@ data class OrderDetail(
|
||||
}
|
||||
}
|
||||
|
||||
data class Site(var siteId: Long, var siteName: String, var gcjLat: Double, var gcjLon: Double,
|
||||
var wgs84Lon: Double, var wgs84Lat: Double) {
|
||||
data class Site(
|
||||
var siteId: Long, var siteName: String, var gcjLat: Double, var gcjLon: Double,
|
||||
var wgs84Lon: Double, var wgs84Lat: Double
|
||||
) {
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
if (javaClass != other?.javaClass) return false
|
||||
@@ -69,6 +73,16 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() {
|
||||
var startSite: Site?, var endSite: Site?,
|
||||
var order: OrderDetail?
|
||||
) {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun getCurrentTaskTotalAndDurationHtml(mileage: Float, duration: Int): Spanned {
|
||||
val strHtml =
|
||||
("<font color=\"#CAD6FF\">全程 </font>" + "<font color=\"#FFFFFF\"> $mileage </font>" + "<font color=\"#CAD6FF\"> 公里 </font>"
|
||||
+ "<font color=\"#CAD6FF\">,总用时 </font>" + "<font color=\"#FFFFFF\"> $duration </font>" + "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
}
|
||||
|
||||
// servingStatus = 0 //暂停接单 = 1 //开始接单
|
||||
//taskType = 1 //虚拟任务 = 2 //接驾任务 = 3 //送驾任务
|
||||
//currentStatus 0:空闲 1:获取任务 2:开始任务 3:到达目的地
|
||||
@@ -95,8 +109,8 @@ data class StartTaskReqBean(var sn: String, var lineId: Long)
|
||||
|
||||
data class ArriveSiteReqBean(var sn: String, var siteId: Long)
|
||||
data class PrepareTaskReqBean(var sn: String, var siteId: Long)
|
||||
data class PrepareTaskRespBean(var data: Result?): BaseData(){ //taskType 1:虚拟任务 2:接驾任务3:送驾任务
|
||||
data class Result(
|
||||
data class PrepareTaskRespBean(var data: Result?) : BaseData() { //taskType 1:虚拟任务 2:接驾任务3:送驾任务
|
||||
data class Result(
|
||||
var lineId: Long, var cityCode: Int, var taskType: Int,
|
||||
var startSite: Site, var endSite: Site
|
||||
)
|
||||
@@ -106,18 +120,18 @@ data class JumpPassengerCheckReqBean(var sn: String, var orderNo: String)
|
||||
data class CancelOrderReqBean(var sn: String, var orderNo: String, var cancelType: Int)
|
||||
data class OrderCompletedReqBean(var sn: String, var orderNo: String)
|
||||
data class QueryCarOrderByNoReqBean(var sn: String, var orderNo: String)
|
||||
data class QueryCarOrderByNoRespBean(var data: Result): BaseData(){
|
||||
data class QueryCarOrderByNoRespBean(var data: Result) : BaseData() {
|
||||
data class Result(
|
||||
var sn: String, var orderNo: String, var orderStatus: Int,
|
||||
var bookingUserPhone: String, var businessType: String,
|
||||
var mileage: Float,var duration: Float,var passengerSize: Int
|
||||
var mileage: Float, var duration: Float, var passengerSize: Int
|
||||
)
|
||||
}
|
||||
|
||||
data class ContrailListRespBean(var data: MutableList<Result>?) //轨迹路线集合
|
||||
: BaseData() {
|
||||
data class Result(
|
||||
var lineId: Long,var lineName: String, var csvFileUrl: String, var csvFileMd5: String,
|
||||
var lineId: Long, var lineName: String, var csvFileUrl: String, var csvFileMd5: String,
|
||||
var txtFileUrl: String, var txtFileMd5: String, var contrailSaveTime: Long,
|
||||
var csvFileUrlDPQP: String, var csvFileMd5DPQP: String, var txtFileUrlDPQP: String,
|
||||
var txtFileMd5DPQP: String, var contrailSaveTimeDPQP: Long
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
package com.mogo.och.taxi.ui.base
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.fragment.app.FragmentTransaction
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.commons.module.status.MogoStatusManager
|
||||
@@ -21,7 +19,7 @@ import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
|
||||
import com.mogo.och.taxi.model.TaxiModel
|
||||
import com.mogo.och.taxi.network.LoginBusImpl
|
||||
import com.mogo.och.taxi.ui.TaxiPersonalDialogFragment
|
||||
import com.mogo.och.taxi.ui.TaxiServerOrdersFragment
|
||||
import com.mogo.och.taxi.ui.TaxiTaskTabFragment
|
||||
import com.mogo.och.taxi.utils.TPRouteDataTestUtils
|
||||
import kotlinx.android.synthetic.main.taxi_base_fragment.module_mogo_och_operation_status
|
||||
import kotlinx.android.synthetic.main.taxi_base_fragment.taxi_driver_role_tv
|
||||
@@ -48,7 +46,7 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
}
|
||||
}
|
||||
|
||||
private var servedOrdersFragment: WeakReference<TaxiServerOrdersFragment>? = null
|
||||
private var taskTabFragment: WeakReference<TaxiTaskTabFragment>? = null
|
||||
private var personalDialogFragment: WeakReference<TaxiPersonalDialogFragment>? = null
|
||||
private var loginService: LoginService? = null
|
||||
|
||||
@@ -126,10 +124,10 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
}
|
||||
|
||||
private fun initFragment() {
|
||||
servedOrdersFragment = WeakReference(TaxiServerOrdersFragment.newInstance())
|
||||
taskTabFragment = WeakReference(TaxiTaskTabFragment.newInstance())
|
||||
val transaction: FragmentTransaction = childFragmentManager.beginTransaction()
|
||||
//默认显示OCHTaxiServerOrdersFragment
|
||||
servedOrdersFragment?.get()?.let {
|
||||
taskTabFragment?.get()?.let {
|
||||
transaction.add(R.id.fragment_container, it).show(
|
||||
it
|
||||
)
|
||||
@@ -143,14 +141,13 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
|
||||
override fun onChangeOperationStatus() {
|
||||
super.onChangeOperationStatus()
|
||||
if (null == servedOrdersFragment || servedOrdersFragment!!.get() == null) return
|
||||
servedOrdersFragment!!.get()!!.onChangeOperationStatus()
|
||||
if (null == taskTabFragment || taskTabFragment!!.get() == null) return
|
||||
taskTabFragment!!.get()!!.onOperationStatusChanged()
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun updateReserveOrderChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
if (null == servedOrdersFragment || servedOrdersFragment!!.get() == null) return
|
||||
servedOrdersFragment!!.get()!!.updateOrderChanged(taskAndOrder)
|
||||
fun updateNextTaskFragment(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
if (null == taskTabFragment || taskTabFragment!!.get() == null) return
|
||||
taskTabFragment!!.get()!!.updateOrderChanged(taskAndOrder)
|
||||
}
|
||||
|
||||
fun switchVRFlatMode(isVRMode: Boolean) {
|
||||
@@ -211,8 +208,8 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
|
||||
fun onNaviToEnd(isAmap: Boolean, isShow: Boolean) {
|
||||
if (isAmap) {
|
||||
if (null == servedOrdersFragment || servedOrdersFragment!!.get() == null) return
|
||||
servedOrdersFragment!!.get()!!.onNaviToEndAMap(isShow)
|
||||
if (null == taskTabFragment || taskTabFragment!!.get() == null) return
|
||||
taskTabFragment!!.get()!!.onNaviToEndAMap(isShow)
|
||||
} else if (isShow) { //使用routing数据
|
||||
showRoutingToStationFragment(true)
|
||||
} else {
|
||||
@@ -247,8 +244,8 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
}
|
||||
|
||||
fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) {
|
||||
if (null == servedOrdersFragment || servedOrdersFragment!!.get() == null) return
|
||||
servedOrdersFragment!!.get()!!.onCurrentOrderDistToEndChanged(meters, timeInSecond)
|
||||
if (null == taskTabFragment || taskTabFragment!!.get() == null) return
|
||||
taskTabFragment!!.get()!!.onCurrentOrderDistToEndChanged(meters, timeInSecond)
|
||||
}
|
||||
|
||||
private fun testRouteInfoUpload() {
|
||||
|
||||
@@ -8,7 +8,6 @@ import android.widget.LinearLayout
|
||||
import com.mogo.eagle.core.network.utils.GsonUtil
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.model.TaxiModel
|
||||
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderDebugContainer
|
||||
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderInfo
|
||||
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderToStartLines
|
||||
import kotlinx.android.synthetic.main.taxi_debug_order.view.taskEndSite
|
||||
@@ -22,14 +21,14 @@ import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_sto
|
||||
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_traj_md5
|
||||
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_traj_md5_dpqp
|
||||
|
||||
class OrderDebugView @JvmOverloads constructor(
|
||||
class DebugView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0,
|
||||
defStyleRes: Int = 0
|
||||
) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) {
|
||||
companion object {
|
||||
const val TAG = "OrderDebugView"
|
||||
const val TAG = "DebugView"
|
||||
}
|
||||
|
||||
init {
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.och.taxi.ui
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.os.Build
|
||||
@@ -9,6 +8,7 @@ import android.os.Bundle
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.text.HtmlCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.amap.api.navi.model.NaviLatLng
|
||||
@@ -16,8 +16,6 @@ import com.mogo.commons.mvp.BaseFragment
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getState
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getOverlayManager
|
||||
import com.mogo.eagle.core.network.utils.GsonUtil
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
@@ -25,14 +23,10 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.map.overlay.core.Level
|
||||
import com.mogo.map.overlay.point.Point
|
||||
import com.mogo.och.common.module.map.AmapNaviToDestinationModel
|
||||
import com.mogo.och.common.module.map.ICommonNaviChangedCallback
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil
|
||||
import com.mogo.och.common.module.utils.OCHThreadPoolManager
|
||||
import com.mogo.och.common.module.voice.VoiceNotice.showNotice
|
||||
import com.mogo.och.common.module.wigets.OCHCommitDialog
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.bean.OrderDetail
|
||||
@@ -45,26 +39,26 @@ import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_END_MAP_MAKER
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_START_MAP_MAKER
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_ORDER
|
||||
import com.mogo.och.taxi.model.TaxiModel
|
||||
import com.mogo.och.taxi.model.TaxiUnmannedViewModel
|
||||
import com.mogo.och.taxi.ui.base.TaxiFragment
|
||||
import com.mogo.och.taxi.ui.task.TaxiCurrentTaskViewModel
|
||||
import com.mogo.och.taxi.ui.unmanned.TaskAndOrderUiState
|
||||
import com.mogo.och.taxi.ui.unmanned.UnmannedIntent
|
||||
import com.mogo.och.taxi.utils.MapMakerManager
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.cancelOrder
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.endPoint
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.endStationName
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.mBeingOrderLayout
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToStart
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.noTaskData
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.orderPhoneAndNum
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.startPoint
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.startStationName
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.taskClickBtn
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.taskOtherInfo
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.taskStatus
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv
|
||||
import kotlinx.android.synthetic.main.taxi_no_data_common_view.noOrderDataTv
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.cancelOrder
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.endPoint
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.endStationName
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.mBeingOrderLayout
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.naviToEnd
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.naviToStart
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.noTaskData
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.orderPhoneAndNum
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.startPoint
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.startStationName
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.taskClickBtn
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.taskOtherInfo
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.taskStatus
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.taskTypeTv
|
||||
import kotlinx.coroutines.flow.map
|
||||
import java.util.Calendar
|
||||
import kotlin.math.ceil
|
||||
@@ -74,155 +68,141 @@ import kotlin.math.roundToInt
|
||||
* @author: wangmingjun
|
||||
* @date: 2023/7/24
|
||||
*/
|
||||
class TaxiBeingTaskFragment : BaseFragment(),
|
||||
class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
View.OnClickListener, ICommonNaviChangedCallback {
|
||||
|
||||
private lateinit var mViewModel : TaxiUnmannedViewModel
|
||||
private lateinit var mViewModel: TaxiCurrentTaskViewModel
|
||||
private var mCurrentTaskWithOrder: QueryCurrentTaskRespBean.Result? = null
|
||||
|
||||
@Volatile
|
||||
private var mTtsLessThan200Tip = 0 //离终点200米提示播报
|
||||
private var mCurrentTaskAndOrder: QueryCurrentTaskRespBean.Result? = null
|
||||
private var mCurrentUntruthTask: StartServiceRespBean.Result? = null
|
||||
// 开始接单后 需要将车开到最近的一个站点就位,然后才能开启 无人化 流程
|
||||
private var mDriveToNearestStationTask: StartServiceRespBean.Result? = null
|
||||
|
||||
companion object {
|
||||
const val TAG = "TaxiBeingTaskFragment"
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private var mActivity: Activity? = null
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
const val TAG = "TaxiCurrentTaskFragment"
|
||||
|
||||
private var mTaxiFragment: TaxiFragment? = null
|
||||
fun newInstance(
|
||||
activity: Activity?,
|
||||
taxiFragment: TaxiFragment?
|
||||
): TaxiBeingTaskFragment {
|
||||
mActivity = activity
|
||||
fun newInstance(taxiFragment: TaxiFragment?): TaxiCurrentTaskFragment {
|
||||
mTaxiFragment = taxiFragment
|
||||
val args = Bundle()
|
||||
val fragment = TaxiBeingTaskFragment()
|
||||
val fragment = TaxiCurrentTaskFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.unmanned_being_order
|
||||
return R.layout.task_fragment_current
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return "TaxiBeingTaskFragment"
|
||||
return "TaxiCurrentTaskFragment"
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
d("viewModel ==", "TaxiBeingTaskFragment onCreate")
|
||||
mViewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory())[TaxiUnmannedViewModel::class.java]
|
||||
mViewModel = ViewModelProvider(
|
||||
this,
|
||||
ViewModelProvider.NewInstanceFactory()
|
||||
)[TaxiCurrentTaskViewModel::class.java]
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
override fun initViews() {
|
||||
initNaviView()
|
||||
isHaveBeingOrder(false)
|
||||
initOnClickListener()
|
||||
//任意模式下调试信息都打开
|
||||
initOrderTestBar()
|
||||
|
||||
initData()
|
||||
initContainerView(false)
|
||||
initTaskDebugViewListener()
|
||||
initViewModelObserver()
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun initData() {
|
||||
/**
|
||||
* 是否有正在进行的订单,进行UI显示
|
||||
*
|
||||
* @param being
|
||||
*/
|
||||
private fun initContainerView(hasCurrentTask: Boolean) {
|
||||
d(
|
||||
M_TAXI + TAG,
|
||||
"hasCurrentTask = $hasCurrentTask"
|
||||
)
|
||||
try {
|
||||
if (hasCurrentTask) {
|
||||
noTaskData.visibility = View.GONE
|
||||
mBeingOrderLayout.visibility = View.VISIBLE
|
||||
} else {
|
||||
noTaskData.visibility = View.VISIBLE
|
||||
noOrderDataTv.text = "暂无进行中订单"
|
||||
mBeingOrderLayout.visibility = View.GONE
|
||||
}
|
||||
} catch (e: NullPointerException) { //可能会出现订单信息已经轮询回来,但进行中页面控件还未初始化完成的情况
|
||||
TaxiModel.clearCurrentOCHOrder()
|
||||
}
|
||||
}
|
||||
|
||||
private fun initOnClickListener() {
|
||||
naviToStart.setOnClickListener(this)
|
||||
naviToEnd.setOnClickListener(this)
|
||||
|
||||
cancelOrder.setOnClickListener(this)
|
||||
taskStatus.setOnClickListener(this)
|
||||
taskClickBtn.setOnClickListener(this)
|
||||
}
|
||||
|
||||
private fun initTaskDebugViewListener() {
|
||||
taskStatus.setOnLongClickListener {
|
||||
mTaxiFragment?.clickOrderDebugView()
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
private fun initViewModelObserver() {
|
||||
mViewModel.sendUiIntent(UnmannedIntent.StartTaskOrOrderLooper)
|
||||
|
||||
//监听返回的数据状态
|
||||
lifecycleScope.launchWhenStarted {
|
||||
mViewModel.uiStateFlow.map {it.taskAndOrderUiState}.collect {taskAndOrderUiState ->
|
||||
d(TAG,"uiStateFlow-taskAndOrderUiState: $taskAndOrderUiState")
|
||||
when(taskAndOrderUiState){
|
||||
is TaskAndOrderUiState.INIT -> {
|
||||
mViewModel.uiStateFlow.map { it.taskAndOrderUiState }.collect { taskAndOrderUiState ->
|
||||
d(TAG, "uiStateFlow-initViewModelObserver: $taskAndOrderUiState")
|
||||
when (taskAndOrderUiState) {
|
||||
is TaskAndOrderUiState.INIT -> {
|
||||
}
|
||||
|
||||
is TaskAndOrderUiState.TASKANDORDER -> {
|
||||
mDriveToNearestStationTask = taskAndOrderUiState.untruthTask
|
||||
mCurrentTaskWithOrder = taskAndOrderUiState.taskAndOrder
|
||||
|
||||
if ((taskAndOrderUiState.untruthTask == null
|
||||
&& mCurrentTaskWithOrder != null
|
||||
&& mCurrentTaskWithOrder!!.endSite == null)
|
||||
|| mCurrentTaskWithOrder == null
|
||||
) {
|
||||
initContainerView(false)
|
||||
removeAllMapMarker()
|
||||
return@collect
|
||||
}
|
||||
|
||||
is TaskAndOrderUiState.TASKANDORDER -> {
|
||||
|
||||
mCurrentUntruthTask = taskAndOrderUiState.untruthTask
|
||||
mCurrentTaskAndOrder = taskAndOrderUiState.taskAndOrder
|
||||
|
||||
if ((taskAndOrderUiState.untruthTask == null && mCurrentTaskAndOrder != null
|
||||
&& mCurrentTaskAndOrder!!.endSite == null) || mCurrentTaskAndOrder == null){
|
||||
isHaveBeingOrder(false)
|
||||
removeAllMapMarker()
|
||||
return@collect
|
||||
}
|
||||
|
||||
if (taskAndOrderUiState.untruthTask != null){
|
||||
updateUntruthTask(taskAndOrderUiState.untruthTask)
|
||||
}else{
|
||||
updateReserveOrderChanged(taskAndOrderUiState.taskAndOrder)
|
||||
updateCurrentTaskAndOrderStatusChanged(taskAndOrderUiState.taskAndOrder)
|
||||
}
|
||||
}
|
||||
|
||||
is TaskAndOrderUiState.UPDATEORDERMILEANDDUR -> {
|
||||
updateOrderTotalMilAndDur(taskAndOrderUiState.mileage,taskAndOrderUiState.duration)
|
||||
if (taskAndOrderUiState.untruthTask != null) {
|
||||
updateDriveToNearestStationTaskView(taskAndOrderUiState.untruthTask)
|
||||
} else {
|
||||
updateNextTaskFragment(taskAndOrderUiState.taskAndOrder)
|
||||
updateCurrentTaskAndOrderStatusChanged(taskAndOrderUiState.taskAndOrder)
|
||||
}
|
||||
}
|
||||
|
||||
is TaskAndOrderUiState.UPDATEORDERMILEANDDUR -> {
|
||||
taskOtherInfo.text =
|
||||
QueryCurrentTaskRespBean.Result.getCurrentTaskTotalAndDurationHtml(
|
||||
taskAndOrderUiState.mileage,
|
||||
taskAndOrderUiState.duration
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun updateOrderTotalMilAndDur(mileage: Float, duration: Int) {
|
||||
val strHtml2 =
|
||||
("<font color=\"#CAD6FF\">全程 </font>" + "<font color=\"#FFFFFF\"> $mileage </font>" + "<font color=\"#CAD6FF\"> 公里 </font>"
|
||||
+ "<font color=\"#CAD6FF\">,总用时 </font>" + "<font color=\"#FFFFFF\"> $duration </font>" + "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun updateReserveOrderChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
mTaxiFragment?.let {
|
||||
it.updateReserveOrderChanged(taskAndOrder)
|
||||
}
|
||||
}
|
||||
|
||||
fun onChangeOperationStatus(){
|
||||
mViewModel.sendUiIntent(UnmannedIntent.StartOrPauseReceivingOrder)
|
||||
}
|
||||
|
||||
private fun updateUntruthTask(untruthTask: StartServiceRespBean.Result?) {
|
||||
if (untruthTask == null) return
|
||||
isHaveBeingOrder(true)
|
||||
updateUntruthTaskView()
|
||||
updateUntruthTaskUIData(untruthTask.siteName)
|
||||
updateUntruthTaskOtherInfo()
|
||||
}
|
||||
|
||||
private fun updateUntruthTaskOtherInfo() {
|
||||
if (mCurrentUntruthTask != null){
|
||||
startNaviToStation(false, mCurrentUntruthTask!!.gcjLat,
|
||||
mCurrentUntruthTask!!.gcjLon)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateUntruthTaskUIData(siteName: String) {
|
||||
taskStatus.text = resources.getString(R.string.task_start_to_virtual_site)
|
||||
startStationName.text = resources.getString(R.string.task_current_loc)
|
||||
endStationName.text = siteName
|
||||
setPointBlueGreen()
|
||||
}
|
||||
|
||||
private fun setPointBlueGreen(){
|
||||
startPoint.setImageResource(R.drawable.taxi_driver_circle_blue_big)
|
||||
endPoint.setImageResource(R.drawable.taxi_driver_circle_green_big)
|
||||
}
|
||||
|
||||
private fun setPointGreenBlue(){
|
||||
startPoint.setImageResource(R.drawable.taxi_driver_circle_green_big)
|
||||
endPoint.setImageResource(R.drawable.taxi_driver_circle_blue_big)
|
||||
}
|
||||
|
||||
private fun updateUntruthTaskView() {
|
||||
taskStatus.visibility = View.VISIBLE
|
||||
private fun updateDriveToNearestStationTaskView(driveToNearestStationTask: StartServiceRespBean.Result?) {
|
||||
if (driveToNearestStationTask == null) return
|
||||
initContainerView(true)
|
||||
// DriverToNearestStationTask 更新
|
||||
taskStatus.visibility = View.VISIBLE
|
||||
taskTypeTv.visibility = View.GONE
|
||||
cancelOrder.visibility = View.GONE
|
||||
orderPhoneAndNum.visibility = View.GONE
|
||||
@@ -231,37 +211,63 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
taskClickBtn.visibility = View.GONE
|
||||
naviToStart.visibility = View.GONE
|
||||
naviToEnd.visibility = View.VISIBLE
|
||||
taskOtherInfo.visibility = View.VISIBLE
|
||||
taskOtherInfo.visibility = View.VISIBLE
|
||||
|
||||
// 更新任务状态,起点,终点
|
||||
taskStatus.text = resources.getString(R.string.task_start_to_virtual_site)
|
||||
startStationName.text = resources.getString(R.string.task_current_loc)
|
||||
endStationName.text = driveToNearestStationTask.siteName
|
||||
updateStartAndEndStationPointByStatus(true)
|
||||
|
||||
// 使用高德获取导航数据
|
||||
if (mDriveToNearestStationTask != null) {
|
||||
startNaviToStation(
|
||||
false, mDriveToNearestStationTask!!.gcjLat,
|
||||
mDriveToNearestStationTask!!.gcjLon
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun initOnClickListener() {
|
||||
cancelOrder.setOnClickListener(this)
|
||||
taskStatus.setOnClickListener(this)
|
||||
taskClickBtn.setOnClickListener(this)
|
||||
private fun updateStartAndEndStationPointByStatus(isGoingToStation: Boolean) {
|
||||
if (isGoingToStation) {// 即将到达的站点
|
||||
startPoint.setImageResource(R.drawable.taxi_driver_circle_blue_big)
|
||||
endPoint.setImageResource(R.drawable.taxi_driver_circle_green_big)
|
||||
} else {// 到达站点 或 已经经过的站点
|
||||
startPoint.setImageResource(R.drawable.taxi_driver_circle_green_big)
|
||||
endPoint.setImageResource(R.drawable.taxi_driver_circle_blue_big)
|
||||
}
|
||||
}
|
||||
|
||||
private fun initNaviView() {
|
||||
naviToStart.setOnClickListener(this)
|
||||
naviToEnd.setOnClickListener(this)
|
||||
private fun updateNextTaskFragment(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
mTaxiFragment?.let {
|
||||
it.updateNextTaskFragment(taskAndOrder)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateRemainDistanceAndTime(isVoicePlay: Boolean){
|
||||
fun onOperationStatusChanged() {
|
||||
mViewModel.sendUiIntent(UnmannedIntent.StartOrPauseReceivingOrder)
|
||||
}
|
||||
|
||||
private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) {
|
||||
//根据任务状态计算剩余历程和时间
|
||||
if (mCurrentTaskAndOrder == null) return
|
||||
|
||||
if (mCurrentTaskAndOrder!!.endSite != null
|
||||
&& mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.StartTask.code){
|
||||
|
||||
startNaviToStation(isVoicePlay,mCurrentTaskAndOrder!!.endSite!!.gcjLat,
|
||||
mCurrentTaskAndOrder!!.endSite!!.gcjLon)
|
||||
if (mCurrentTaskWithOrder == null) return
|
||||
if (mCurrentTaskWithOrder!!.endSite != null
|
||||
&& mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code
|
||||
) {
|
||||
startNaviToStation(
|
||||
isVoicePlay, mCurrentTaskWithOrder!!.endSite!!.gcjLat,
|
||||
mCurrentTaskWithOrder!!.endSite!!.gcjLon
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
if (mCurrentTaskAndOrder!!.startSite != null
|
||||
&& mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.GetTask.code){ //演练任务和送驾任务
|
||||
|
||||
startNaviToStation(isVoicePlay,mCurrentTaskAndOrder!!.startSite!!.gcjLat,
|
||||
mCurrentTaskAndOrder!!.startSite!!.gcjLon)
|
||||
if (mCurrentTaskWithOrder!!.startSite != null
|
||||
&& mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.GetTask.code
|
||||
) { //演练任务和送驾任务
|
||||
startNaviToStation(
|
||||
isVoicePlay, mCurrentTaskWithOrder!!.startSite!!.gcjLat,
|
||||
mCurrentTaskWithOrder!!.startSite!!.gcjLon
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,13 +279,14 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
fun updateCurrentTaskAndOrderStatusChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
if (taskAndOrder == null) return
|
||||
if ((taskAndOrder.endSite == null || taskAndOrder.currentStatus == TaskStatusEnum.CompleteTask.code)
|
||||
&& taskAndOrder.order == null){
|
||||
isHaveBeingOrder(false)
|
||||
&& taskAndOrder.order == null
|
||||
) {
|
||||
initContainerView(false)
|
||||
removeAllMapMarker()
|
||||
return
|
||||
}
|
||||
|
||||
isHaveBeingOrder(true)
|
||||
initContainerView(true)
|
||||
/**
|
||||
* 根据任务类型判断任务显示,
|
||||
* 虚拟单, 显示在进行中 前往上车点
|
||||
@@ -292,30 +299,33 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
val endSite = taskAndOrder.endSite //进行的任务
|
||||
val currentStatus = taskAndOrder.currentStatus // 任务的状态
|
||||
|
||||
updateUIShowStatus(taskType,currentStatus,order)
|
||||
updateUIShowStatus(taskType, currentStatus, order)
|
||||
|
||||
when (taskType) {
|
||||
|
||||
TaskTypeEnum.VirtualTask.code -> {// 演练任务
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code){
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) {
|
||||
updateOrderUI(order)
|
||||
return
|
||||
}
|
||||
if (startSite == null || endSite == null) return
|
||||
|
||||
taskStatus.text = resources.getString(R.string.task_start_end_site)
|
||||
taskTypeTv.background = resources.getDrawable(R.drawable.task_unreal_type_btn_bg,null)
|
||||
taskTypeTv.background =
|
||||
resources.getDrawable(R.drawable.task_unreal_type_btn_bg, null)
|
||||
taskTypeTv.text = resources.getString(R.string.task_exercise)
|
||||
startStationName.text = startSite.siteName
|
||||
endStationName.text = endSite.siteName
|
||||
setPointBlueGreen()
|
||||
updateStartAndEndStationPointByStatus(true)
|
||||
}
|
||||
TaskTypeEnum.ToOrderEndTask.code,TaskTypeEnum.ToOrderStartTask.code -> {// 送驾/接驾任务任务
|
||||
|
||||
TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 送驾/接驾任务任务
|
||||
if (order == null) return
|
||||
updateOrderUI(order)
|
||||
}
|
||||
|
||||
TaskTypeEnum.None.code -> {
|
||||
if (order != null){
|
||||
if (order != null) {
|
||||
updateOrderUI(order)
|
||||
}
|
||||
}
|
||||
@@ -327,22 +337,23 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
private fun updateMapMarkers() {
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.startSite != null
|
||||
&& mCurrentTaskAndOrder!!.endSite != null ) {
|
||||
when(mCurrentTaskAndOrder!!.currentStatus){
|
||||
if (mCurrentTaskWithOrder != null && mCurrentTaskWithOrder!!.startSite != null
|
||||
&& mCurrentTaskWithOrder!!.endSite != null
|
||||
) {
|
||||
when (mCurrentTaskWithOrder!!.currentStatus) {
|
||||
TaskStatusEnum.GetTask.code -> {
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_START_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lon,
|
||||
mCurrentTaskWithOrder!!.startSite!!.wgs84Lat,
|
||||
mCurrentTaskWithOrder!!.startSite!!.wgs84Lon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_END_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lon,
|
||||
mCurrentTaskWithOrder!!.endSite!!.wgs84Lat,
|
||||
mCurrentTaskWithOrder!!.endSite!!.wgs84Lon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
@@ -351,15 +362,15 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_START_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lon,
|
||||
mCurrentTaskWithOrder!!.startSite!!.wgs84Lat,
|
||||
mCurrentTaskWithOrder!!.startSite!!.wgs84Lon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
setOrRemoveMapMaker(
|
||||
true,
|
||||
TAXI_END_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lon,
|
||||
mCurrentTaskWithOrder!!.endSite!!.wgs84Lat,
|
||||
mCurrentTaskWithOrder!!.endSite!!.wgs84Lon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
@@ -368,47 +379,48 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_START_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.startSite!!.wgs84Lon,
|
||||
mCurrentTaskWithOrder!!.startSite!!.wgs84Lat,
|
||||
mCurrentTaskWithOrder!!.startSite!!.wgs84Lon,
|
||||
R.raw.star_marker
|
||||
)
|
||||
setOrRemoveMapMaker(
|
||||
false,
|
||||
TAXI_END_MAP_MAKER,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lat,
|
||||
mCurrentTaskAndOrder!!.endSite!!.wgs84Lon,
|
||||
mCurrentTaskWithOrder!!.endSite!!.wgs84Lat,
|
||||
mCurrentTaskWithOrder!!.endSite!!.wgs84Lon,
|
||||
R.raw.end_marker
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}else{
|
||||
d(M_TAXI + TAG,"CurrentTaskAndOrder == "+GsonUtil.jsonFromObject(mCurrentTaskAndOrder))
|
||||
} else {
|
||||
d(
|
||||
M_TAXI + TAG,
|
||||
"CurrentTaskAndOrder == " + GsonUtil.jsonFromObject(mCurrentTaskWithOrder)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private fun updateOrderUI(order: OrderDetail) {
|
||||
|
||||
taskTypeTv.text = resources.getString(R.string.task_order)
|
||||
taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg,null)
|
||||
orderPhoneAndNum.text = Html.fromHtml("<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
|
||||
"<font color=\"#6473B2\"> | </font>" +
|
||||
"<font color=\"#FFFFFF\">" + order.passengerSize + "人" + "</font>",Html.FROM_HTML_MODE_LEGACY)
|
||||
taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg, null)
|
||||
orderPhoneAndNum.text = Html.fromHtml(
|
||||
"<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
|
||||
"<font color=\"#6473B2\"> | </font>" +
|
||||
"<font color=\"#FFFFFF\">" + order.passengerSize + "人" + "</font>",
|
||||
Html.FROM_HTML_MODE_LEGACY
|
||||
)
|
||||
startStationName.text = order.orderStartSite?.siteName
|
||||
endStationName.text = order.orderEndSite?.siteName
|
||||
|
||||
when(order.orderStatus){
|
||||
|
||||
when (order.orderStatus) {
|
||||
TaxiOrderStatusEnum.None.code -> { //无
|
||||
isHaveBeingOrder(false)
|
||||
initContainerView(false)
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.ArriveAtEnd.code -> { //到达目的地
|
||||
taskStatus.text = resources.getString(R.string.task_start_end_site)
|
||||
setPointBlueGreen()
|
||||
updateStartAndEndStationPointByStatus(true)
|
||||
updateOrderBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_server_end),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
@@ -420,7 +432,7 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd.code -> { //送驾中
|
||||
taskStatus.text = resources.getString(R.string.task_start_end_site)
|
||||
setPointBlueGreen()
|
||||
updateStartAndEndStationPointByStatus(true)
|
||||
updateOrderBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_close),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
@@ -429,26 +441,25 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
)
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.UserArriveAtStart.code,TaxiOrderStatusEnum.ArriveAtStart.code -> {
|
||||
TaxiOrderStatusEnum.UserArriveAtStart.code, TaxiOrderStatusEnum.ArriveAtStart.code -> {
|
||||
//乘客到达上车点,验证成功 ; 到达乘客上车点
|
||||
setPointGreenBlue()
|
||||
updateStartAndEndStationPointByStatus(false)
|
||||
taskStatus.text = resources.getString(R.string.arrived_start_site)
|
||||
updateOrderBottomBtn(
|
||||
if (order.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.code)
|
||||
getString(R.string.module_och_taxi_order_server_start)
|
||||
else getString(R.string.module_och_taxi_order_server_start_wait_check),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
true
|
||||
)
|
||||
|
||||
if (order.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.code)
|
||||
getString(R.string.module_och_taxi_order_server_start)
|
||||
else getString(R.string.module_och_taxi_order_server_start_wait_check),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
true
|
||||
)
|
||||
updateOtherInfo()
|
||||
hideNavi()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.OnTheWayToStart.code -> { //前往上车地点
|
||||
taskStatus.text = resources.getString(R.string.task_start_start_site)
|
||||
setPointGreenBlue()
|
||||
updateStartAndEndStationPointByStatus(false)
|
||||
updateOrderBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_server_start),
|
||||
Color.parseColor("#4DFFFFFF"),
|
||||
@@ -456,7 +467,6 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
false
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -484,16 +494,17 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
DateTimeUtil.MM_dd_HH_mm
|
||||
) + "</big></font>")
|
||||
}
|
||||
taskOtherInfo.text = Html.fromHtml(strHtml13,Html.FROM_HTML_MODE_LEGACY)
|
||||
taskOtherInfo.text = Html.fromHtml(strHtml13, Html.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
|
||||
private fun updateUIShowStatus(taskType: Int, currentStatus: Int, order: OrderDetail?) {
|
||||
when (taskType) {
|
||||
TaskTypeEnum.None.code ->{
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code){
|
||||
TaskTypeEnum.None.code -> {
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) {
|
||||
handleOrderView(order)
|
||||
}
|
||||
}
|
||||
|
||||
TaskTypeEnum.VirtualTask.code -> { //演练任务
|
||||
cancelOrder.visibility = View.GONE
|
||||
orderPhoneAndNum.visibility = View.GONE
|
||||
@@ -501,10 +512,13 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
// currentStatus 0:空闲 1:获取任务 2:开始任务 3:到达目的地
|
||||
naviToStart.visibility = View.GONE
|
||||
taskTypeTv.visibility = View.VISIBLE
|
||||
naviToEnd.visibility = if (currentStatus >= TaskStatusEnum.StartTask.code) View.VISIBLE else View.GONE
|
||||
taskOtherInfo.visibility = if (currentStatus == TaskStatusEnum.GetTask.code) View.GONE else View.VISIBLE
|
||||
naviToEnd.visibility =
|
||||
if (currentStatus >= TaskStatusEnum.StartTask.code) View.VISIBLE else View.GONE
|
||||
taskOtherInfo.visibility =
|
||||
if (currentStatus == TaskStatusEnum.GetTask.code) View.GONE else View.VISIBLE
|
||||
}
|
||||
TaskTypeEnum.ToOrderEndTask.code,TaskTypeEnum.ToOrderStartTask.code -> {// 运营单(接驾任务、送驾任务)
|
||||
|
||||
TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 运营单(接驾任务、送驾任务)
|
||||
if (order == null) return
|
||||
handleOrderView(order)
|
||||
}
|
||||
@@ -520,10 +534,12 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
// orderStatus: 0 订单创建(为派单), 10 已派上司机(司机去往上车点), 20 司机到达上车点,
|
||||
// 30 乘客到达上车点, 40 服务中(去往目的地), 50 到达目的地, 60 已完成, 70 已取消
|
||||
naviToStart.visibility = if (order.orderStatus
|
||||
== TaxiOrderStatusEnum.OnTheWayToStart.code) View.VISIBLE else View.GONE
|
||||
== TaxiOrderStatusEnum.OnTheWayToStart.code
|
||||
) View.VISIBLE else View.GONE
|
||||
|
||||
naviToEnd.visibility = if (order.orderStatus
|
||||
== TaxiOrderStatusEnum.OnTheWayToEnd.code) View.VISIBLE else View.GONE
|
||||
== TaxiOrderStatusEnum.OnTheWayToEnd.code
|
||||
) View.VISIBLE else View.GONE
|
||||
|
||||
taskOtherInfo.visibility = View.VISIBLE
|
||||
}
|
||||
@@ -535,6 +551,7 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(false)
|
||||
mTaxiFragment?.showRoutingToStationFragment(false)
|
||||
requireParentFragment()
|
||||
}
|
||||
|
||||
private fun startNaviToStation(isVoicePlay: Boolean, stationLat: Double, stationLng: Double) {
|
||||
@@ -557,11 +574,10 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
* @param meters m
|
||||
* @param timeInSecond 秒
|
||||
*/
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun updateDistanceAndTime(meters: Long, timeInSecond: Long) {
|
||||
// CallerLogger.INSTANCE.d(M_TAXI + TAG,"meters = "+meters+"timeInSecond ="+timeInSecond);
|
||||
if (mCurrentTaskAndOrder == null) return
|
||||
if (mCurrentTaskAndOrder!!.endSite == null && mCurrentUntruthTask == null) return
|
||||
if (mCurrentTaskWithOrder == null) return
|
||||
if (mCurrentTaskWithOrder!!.endSite == null && mDriveToNearestStationTask == null) return
|
||||
|
||||
var dis = "0"
|
||||
var disUnit = "公里"
|
||||
@@ -579,13 +595,12 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
("<font color=\"#CAD6FF\">里程 </font>" + "<b><font color=\"#FFFFFF\">" + dis + "</font></b>" + "<font color=\"#CAD6FF\"> " + disUnit + "</font>"
|
||||
+ "<font color=\"#CAD6FF\">,剩余 </font>" + "<b><font color=\"#FFFFFF\">" + min + "</font></b>" + "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
|
||||
taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY)
|
||||
taskOtherInfo.text = HtmlCompat.fromHtml(strHtml2, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
|
||||
private fun speekVoice200mTipsOnce() {
|
||||
mTtsLessThan200Tip = 1
|
||||
showNotice(resources.getString(R.string.module_och_taxi_order_arrive_end_200m_tip))
|
||||
}
|
||||
// private fun speekVoice200mTipsOnce() {
|
||||
// showNotice(resources.getString(R.string.module_och_taxi_order_arrive_end_200m_tip))
|
||||
// }
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
@@ -593,13 +608,13 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
private fun startOrEndService() {
|
||||
if (mCurrentTaskAndOrder == null || mCurrentTaskAndOrder!!.order == null) return
|
||||
val order = mCurrentTaskAndOrder!!.order
|
||||
if (mCurrentTaskWithOrder == null || mCurrentTaskWithOrder!!.order == null) return
|
||||
val order = mCurrentTaskWithOrder!!.order
|
||||
if (TaxiOrderStatusEnum.ArriveAtStart.code == order!!.orderStatus) { //到达乘客上车点,司机可跳过乘客屏认证
|
||||
mViewModel.sendUiIntent(UnmannedIntent.JumpPassengerCheckDone)
|
||||
} else if (TaxiOrderStatusEnum.UserArriveAtStart.code == order.orderStatus){
|
||||
} else if (TaxiOrderStatusEnum.UserArriveAtStart.code == order.orderStatus) {
|
||||
mViewModel.sendUiIntent(UnmannedIntent.StartTask)
|
||||
}else if (TaxiOrderStatusEnum.ArriveAtEnd.code == order.orderStatus) { //点击了完成服务,结束订单并更新订单信息
|
||||
} else if (TaxiOrderStatusEnum.ArriveAtEnd.code == order.orderStatus) { //点击了完成服务,结束订单并更新订单信息
|
||||
mViewModel.sendUiIntent(UnmannedIntent.JourneyCompleted)
|
||||
} else if (TaxiOrderStatusEnum.OnTheWayToEnd.code == order.orderStatus) { //前往目的地过程中可提前结束行程
|
||||
//自驾中提示,接管后才能结束
|
||||
@@ -633,42 +648,20 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
closeOrderDialog.show()
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否有正在进行的订单,进行UI显示
|
||||
*
|
||||
* @param being
|
||||
*/
|
||||
private fun isHaveBeingOrder(being: Boolean) {
|
||||
d(
|
||||
M_TAXI + TAG,
|
||||
"isHaveBeingOrder = $being"
|
||||
)
|
||||
try {
|
||||
if (being) {
|
||||
noTaskData.visibility = View.GONE
|
||||
mBeingOrderLayout.visibility = View.VISIBLE
|
||||
} else {
|
||||
noTaskData.visibility = View.VISIBLE
|
||||
noOrderDataTv.text = "暂无进行中订单"
|
||||
mBeingOrderLayout.visibility = View.GONE
|
||||
}
|
||||
|
||||
} catch (e: NullPointerException) { //可能会出现订单信息已经轮询回来,但进行中页面控件还未初始化完成的情况
|
||||
TaxiModel.clearCurrentOCHOrder()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
if (v.id == taskClickBtn.id) {
|
||||
d(M_TAXI + TAG, taskStatus.text.toString())
|
||||
startOrEndService()
|
||||
} else if (v.id == cancelOrder.id) {
|
||||
if (mCurrentTaskAndOrder!!.order != null){
|
||||
TaxiOrderCancelDialog(mActivity,mCurrentTaskAndOrder!!.order!!.orderStatus
|
||||
) {
|
||||
mViewModel.sendUiIntent(UnmannedIntent.CancelOrder(it))
|
||||
if (mCurrentTaskWithOrder!!.order != null) {
|
||||
activity?.also {
|
||||
TaxiOrderCancelDialog(
|
||||
it, mCurrentTaskWithOrder!!.order!!.orderStatus
|
||||
) {
|
||||
mViewModel.sendUiIntent(UnmannedIntent.CancelOrder(it))
|
||||
}.show()
|
||||
}
|
||||
.show()
|
||||
}
|
||||
} else if (v.id == naviToStart.id || v.id == naviToEnd.id) {
|
||||
showNaviToEndStationFragment(true)
|
||||
@@ -684,15 +677,6 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
mTaxiFragment?.startNaviToEndStation(isShow)
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单流转debug START
|
||||
*/
|
||||
private fun initOrderTestBar() {
|
||||
taskStatus.setOnLongClickListener {
|
||||
mTaxiFragment?.clickOrderDebugView()
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) {
|
||||
@@ -712,15 +696,15 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
updateRemainDistanceAndTime(false)
|
||||
}, 2000)
|
||||
UiThreadHandler.postDelayed({
|
||||
if (mCurrentTaskAndOrder != null &&
|
||||
mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.GetTask.code
|
||||
if (mCurrentTaskWithOrder != null &&
|
||||
mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.GetTask.code
|
||||
) {
|
||||
if (naviToStart.visibility == View.GONE) {
|
||||
naviToStart.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
if (mCurrentTaskAndOrder != null &&
|
||||
mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.StartTask.code
|
||||
if (mCurrentTaskWithOrder != null &&
|
||||
mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code
|
||||
) {
|
||||
if (naviToEnd.visibility == View.GONE) {
|
||||
naviToEnd.visibility = View.VISIBLE
|
||||
@@ -730,15 +714,15 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
fun onNaviToEndAmap(isShow: Boolean) {
|
||||
if (mCurrentTaskAndOrder == null) return
|
||||
if (mCurrentTaskWithOrder == null) return
|
||||
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(
|
||||
if (mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.StartTask.code)
|
||||
if (mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code)
|
||||
isShow else true
|
||||
)
|
||||
|
||||
updateRemainDistanceAndTime(
|
||||
if (mCurrentTaskAndOrder!!.currentStatus == TaskStatusEnum.StartTask.code)
|
||||
if (mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.StartTask.code)
|
||||
isShow else true
|
||||
)
|
||||
}
|
||||
@@ -749,12 +733,14 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
* @param uuid
|
||||
* @param station
|
||||
*/
|
||||
private fun setOrRemoveMapMaker(isAdd: Boolean, uuid: String,
|
||||
lat: Double, lon: Double, resourceId: Int) {
|
||||
private fun setOrRemoveMapMaker(
|
||||
isAdd: Boolean, uuid: String,
|
||||
lat: Double, lon: Double, resourceId: Int
|
||||
) {
|
||||
if (isAdd) {
|
||||
MapMakerManager.addMapMaker(TYPE_MARKER_TAXI_ORDER,uuid,lat, lon, resourceId)
|
||||
MapMakerManager.addMapMaker(TYPE_MARKER_TAXI_ORDER, uuid, lat, lon, resourceId)
|
||||
} else {
|
||||
MapMakerManager.removeMapMaker(uuid,lat,lon)
|
||||
MapMakerManager.removeMapMaker(uuid, lat, lon)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -762,7 +748,12 @@ class TaxiBeingTaskFragment : BaseFragment(),
|
||||
MapMakerManager.removeAllMapMarkerByOwner(TYPE_MARKER_TAXI_ORDER)
|
||||
}
|
||||
|
||||
private fun updateOrderBottomBtn(txt: String?, txtColorId: Int, bgColorId: Int, isClickable: Boolean) {
|
||||
private fun updateOrderBottomBtn(
|
||||
txt: String?,
|
||||
txtColorId: Int,
|
||||
bgColorId: Int,
|
||||
isClickable: Boolean
|
||||
) {
|
||||
taskClickBtn.text = txt
|
||||
taskClickBtn.setTextColor(txtColorId)
|
||||
val background =
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.taxi.model
|
||||
package com.mogo.och.taxi.ui.task
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
@@ -31,6 +31,7 @@ import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst
|
||||
import com.mogo.och.taxi.constant.TaxtServingStatusManager
|
||||
import com.mogo.och.taxi.constant.TaxtServingStatusManager.isOpeningOrderStatus
|
||||
import com.mogo.och.taxi.model.TaxiModel
|
||||
import com.mogo.och.taxi.network.CarServiceManager
|
||||
import com.mogo.och.taxi.network.CarServiceManager.cancelOrder
|
||||
import com.mogo.och.taxi.network.CarServiceManager.contrailList
|
||||
@@ -48,7 +49,7 @@ import java.util.concurrent.TimeUnit
|
||||
* @author: wangmingjun
|
||||
* @date: 2023/7/26
|
||||
*/
|
||||
class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
|
||||
private var mInAndWaitServiceDisposable: Disposable? = null //进行中、待服务订单列表轮询
|
||||
|
||||
@@ -83,7 +84,7 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
is UnmannedIntent.CloseOrderByDriver -> {
|
||||
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null){
|
||||
val site = mCurrentTaskAndOrder!!.order!!.orderEndSite
|
||||
TaxiModel.arriveSite(site!!.siteId,true)
|
||||
TaxiModel.arriveSite(site!!.siteId, true)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,7 +238,8 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
sendUiState {
|
||||
copy(
|
||||
taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(mCurrentTaskAndOrder,
|
||||
TaxiModel.getCurUntruthTask())
|
||||
TaxiModel.getCurUntruthTask()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -257,7 +259,8 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
sendUiState {
|
||||
copy(
|
||||
taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(null,
|
||||
TaxiModel.getCurUntruthTask())
|
||||
TaxiModel.getCurUntruthTask()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -339,7 +342,7 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
|
||||
if (result.currentStatus <= TaskStatusEnum.StartTask.code){//任务执行中, 去加载下轨迹
|
||||
d(TAG, "queryCurrentTaskOnce1 = by lineId query Contrail" )
|
||||
TaxiModel.queryTaskContrail(Array(1) {result.lineId})
|
||||
TaxiModel.queryTaskContrail(Array(1) { result.lineId })
|
||||
}
|
||||
|
||||
if (result.taskType <= TaskTypeEnum.ToOrderStartTask.code
|
||||
@@ -447,7 +450,7 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
+ ", isOpeningOrderStatus = ${isOpeningOrderStatus()}")
|
||||
if (data?.data == null || data.code != 0) return
|
||||
//去下载轨迹, 下发给工控机下载
|
||||
TaxiModel.queryTaskContrail(Array(1) {data.data!!.lineId})
|
||||
TaxiModel.queryTaskContrail(Array(1) { data.data!!.lineId })
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
@@ -4,33 +4,31 @@ import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.text.HtmlCompat
|
||||
import com.mogo.commons.mvp.BaseFragment
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.bean.OrderDetail
|
||||
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
|
||||
import com.mogo.och.taxi.constant.TaskTypeEnum
|
||||
import com.mogo.och.taxi.ui.base.TaxiFragment
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.endStationName
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.mBeingOrderLayout
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.naviToEnd
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.naviToStart
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.noTaskData
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.orderPhoneAndNum
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.startStationName
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.taskClickBtn
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.taskOtherInfo
|
||||
import kotlinx.android.synthetic.main.unmanned_being_order.taskTypeTv
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.endStationName
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.mBeingOrderLayout
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToStart
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.noTaskData
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.orderPhoneAndNum
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.startStationName
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.taskClickBtn
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.taskOtherInfo
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2023/7/24
|
||||
*/
|
||||
class TaxiReserveOrderFragment : BaseFragment() {
|
||||
class TaxiNextTaskFragment : BaseFragment() {
|
||||
private val mData: MutableList<QueryCurrentTaskRespBean.Result> = ArrayList()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@@ -38,34 +36,32 @@ class TaxiReserveOrderFragment : BaseFragment() {
|
||||
}
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.unmanned_being_order
|
||||
return R.layout.task_fragment_current
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return "TaxiReserveOrderFragment"
|
||||
return "TaxiNextTaskFragment"
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
showNoOrderView()
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) {
|
||||
if (model?.order == null) {
|
||||
showNoOrderView()
|
||||
return
|
||||
}
|
||||
|
||||
if (model.taskType == TaskTypeEnum.VirtualTask.code){
|
||||
if (model.taskType == TaskTypeEnum.VirtualTask.code) {
|
||||
val order = model.order
|
||||
updateOrderUI(order!!)
|
||||
}else{
|
||||
} else {
|
||||
showNoOrderView()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun updateOrderUI(order: OrderDetail) {
|
||||
showOrderView()
|
||||
@@ -73,9 +69,12 @@ class TaxiReserveOrderFragment : BaseFragment() {
|
||||
naviToStart.visibility = View.GONE
|
||||
naviToEnd.visibility = View.GONE
|
||||
|
||||
orderPhoneAndNum.text = Html.fromHtml("<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
|
||||
"<font color=\"#6473B2\"> | </font>" +
|
||||
"<font color=\"#FFFFFF\">" + order.passengerSize + "人" + "</font>",Html.FROM_HTML_MODE_LEGACY)
|
||||
orderPhoneAndNum.text = HtmlCompat.fromHtml(
|
||||
"<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
|
||||
"<font color=\"#6473B2\"> | </font>" +
|
||||
"<font color=\"#FFFFFF\">" + order.passengerSize + "人" + "</font>",
|
||||
HtmlCompat.FROM_HTML_MODE_LEGACY
|
||||
)
|
||||
|
||||
|
||||
order.orderStartSite?.let {
|
||||
@@ -86,7 +85,7 @@ class TaxiReserveOrderFragment : BaseFragment() {
|
||||
}
|
||||
|
||||
taskTypeTv.text = resources.getString(R.string.task_order)
|
||||
taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg,null)
|
||||
taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg, null)
|
||||
|
||||
updateOrderBottomBtn(
|
||||
getString(R.string.waiting_server),
|
||||
@@ -96,7 +95,12 @@ class TaxiReserveOrderFragment : BaseFragment() {
|
||||
)
|
||||
}
|
||||
|
||||
private fun updateOrderBottomBtn(txt: String?, txtColorId: Int, bgColorId: Int, isClickable: Boolean) {
|
||||
private fun updateOrderBottomBtn(
|
||||
txt: String?,
|
||||
txtColorId: Int,
|
||||
bgColorId: Int,
|
||||
isClickable: Boolean
|
||||
) {
|
||||
taskClickBtn.text = txt
|
||||
taskClickBtn.setTextColor(txtColorId)
|
||||
val background =
|
||||
@@ -117,18 +121,19 @@ class TaxiReserveOrderFragment : BaseFragment() {
|
||||
|
||||
companion object {
|
||||
|
||||
const val TAG = "TaxiReserveOrderFragment"
|
||||
const val TAG = "TaxiNextTaskFragment"
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private var mTaxiFragment: TaxiFragment? = null
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private var mActivity: Activity? = null
|
||||
fun newInstance(
|
||||
activity: Activity?,
|
||||
): TaxiReserveOrderFragment {
|
||||
): TaxiNextTaskFragment {
|
||||
mActivity = activity
|
||||
val args = Bundle()
|
||||
val fragment = TaxiReserveOrderFragment()
|
||||
val fragment = TaxiNextTaskFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
@@ -3,12 +3,10 @@ package com.mogo.och.taxi.ui
|
||||
import android.annotation.SuppressLint
|
||||
import android.graphics.Color
|
||||
import android.graphics.Typeface
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentPagerAdapter
|
||||
@@ -27,18 +25,36 @@ import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2023/7/25
|
||||
* @desc: 司机端任务fragment 容器,展示了“进行中”和“待服务”的任务信息
|
||||
* 任务:可以理解为对应的是一个自动驾驶任务
|
||||
* 任务类型:演练任务 / 接驾任务 / 送驾任务
|
||||
* 订单:是面向C端小程序的一个概念,用户下单后产生的是一个订单,后端会将一个订单分解成 接驾任务和送驾任务 并派发到
|
||||
* 车端来执行
|
||||
* 任务和订单的对应:1.如果是一个演练任务,是后端自动生成的,没有和C端订单挂钩
|
||||
* 2.如果是一个接驾任务 或 送驾任务,是和一个实际的C端订单对应的
|
||||
*/
|
||||
class TaxiServerOrdersFragment : BaseFragment(){
|
||||
class TaxiTaskTabFragment : BaseFragment() {
|
||||
|
||||
companion object {
|
||||
const val TAG = "TaxiTaskTabFragment"
|
||||
fun newInstance(): TaxiTaskTabFragment {
|
||||
val args = Bundle()
|
||||
val fragment = TaxiTaskTabFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
private val mTabTitles = arrayOf("进行中", "待服务")
|
||||
private val fragments: MutableList<Fragment> = ArrayList()
|
||||
private var beingTaskFragment: TaxiBeingTaskFragment? = null
|
||||
private var reserveOrdersFragment: TaxiReserveOrderFragment? = null
|
||||
private val mFragments: MutableList<Fragment> = ArrayList()
|
||||
private var currentTaskFragment: TaxiCurrentTaskFragment? = null
|
||||
private var nextTaskFragment: TaxiNextTaskFragment? = null
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.taxi_server_orders_panel
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return "TaxiServerOrdersFragment"
|
||||
return "TaxiTaskTabFragment"
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
@@ -54,24 +70,25 @@ class TaxiServerOrdersFragment : BaseFragment(){
|
||||
tabView.text = mTabTitles[i]
|
||||
tabView.height = AutoSizeUtils.dp2px(context, 120f)
|
||||
tab.customView = tabView
|
||||
|
||||
if (0 == i) {
|
||||
module_och_taxi_tab.addTab(tab, true)
|
||||
changeTabLayoutTabUI(tab, true)
|
||||
beingTaskFragment = TaxiBeingTaskFragment.newInstance(
|
||||
activity,
|
||||
currentTaskFragment = TaxiCurrentTaskFragment.newInstance(
|
||||
parentFragment as TaxiFragment?
|
||||
)
|
||||
fragments.add(beingTaskFragment!!)
|
||||
mFragments.add(currentTaskFragment!!)
|
||||
} else if (1 == i) {
|
||||
module_och_taxi_tab.addTab(tab)
|
||||
changeTabLayoutTabUI(tab, false)
|
||||
reserveOrdersFragment = TaxiReserveOrderFragment.newInstance(
|
||||
nextTaskFragment = TaxiNextTaskFragment.newInstance(
|
||||
activity
|
||||
)
|
||||
fragments.add(reserveOrdersFragment!!)
|
||||
mFragments.add(nextTaskFragment!!)
|
||||
}
|
||||
}
|
||||
d(SceneConstant.M_TAXI + TAG, "activity=$activity")
|
||||
|
||||
module_och_taxi_tab.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||
module_och_taxi_view_pager.currentItem = tab.position
|
||||
@@ -138,11 +155,11 @@ class TaxiServerOrdersFragment : BaseFragment(){
|
||||
SceneConstant.M_TAXI + TAG,
|
||||
"getItem=$position"
|
||||
)
|
||||
return fragments[position]
|
||||
return mFragments[position]
|
||||
}
|
||||
|
||||
override fun getCount(): Int {
|
||||
return fragments.size
|
||||
return mFragments.size
|
||||
}
|
||||
|
||||
override fun getPageTitle(position: Int): CharSequence {
|
||||
@@ -155,33 +172,22 @@ class TaxiServerOrdersFragment : BaseFragment(){
|
||||
}
|
||||
|
||||
fun onNaviToEndAMap(isShow: Boolean) {
|
||||
if (null == beingTaskFragment) return
|
||||
beingTaskFragment!!.onNaviToEndAmap(isShow)
|
||||
if (null == currentTaskFragment) return
|
||||
currentTaskFragment!!.onNaviToEndAmap(isShow)
|
||||
}
|
||||
|
||||
fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) {
|
||||
if (null == beingTaskFragment) return
|
||||
beingTaskFragment!!.updateDistanceAndTime(meters, timeInSecond)
|
||||
if (null == currentTaskFragment) return
|
||||
currentTaskFragment!!.updateDistanceAndTime(meters, timeInSecond)
|
||||
}
|
||||
|
||||
fun onChangeOperationStatus(){
|
||||
if (null == beingTaskFragment) return
|
||||
beingTaskFragment!!.onChangeOperationStatus()
|
||||
fun onOperationStatusChanged() {
|
||||
if (null == currentTaskFragment) return
|
||||
currentTaskFragment!!.onOperationStatusChanged()
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?){
|
||||
if (null == reserveOrdersFragment) return
|
||||
reserveOrdersFragment!!.updateOrderChanged(model)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "TaxiServerOrdersFragment"
|
||||
fun newInstance(): TaxiServerOrdersFragment {
|
||||
val args = Bundle()
|
||||
val fragment = TaxiServerOrdersFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) {
|
||||
if (null == nextTaskFragment) return
|
||||
nextTaskFragment!!.updateOrderChanged(model)
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.mogo.och.taxi.ui.debug.OrderDebugView
|
||||
<com.mogo.och.taxi.ui.debug.DebugView
|
||||
android:id="@+id/orderDebugView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
Reference in New Issue
Block a user