diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt
index 893e68040b..891208987a 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt
@@ -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 =
+ ("全程 " + " $mileage " + " 公里 "
+ + ",总用时 " + " $duration " + " 分钟")
+ 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?) //轨迹路线集合
: 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
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt
index dd3e816f4d..b378fea9e1 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiFragment.kt
@@ -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(),
}
}
- private var servedOrdersFragment: WeakReference? = null
+ private var taskTabFragment: WeakReference? = null
private var personalDialogFragment: WeakReference? = null
private var loginService: LoginService? = null
@@ -126,10 +124,10 @@ class TaxiFragment : BaseTaxiTabFragment(),
}
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(),
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(),
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(),
}
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() {
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/OrderDebugView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt
similarity index 94%
rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/OrderDebugView.kt
rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt
index 2ce91eb17b..e336ea75a2 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/OrderDebugView.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt
@@ -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 {
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt
similarity index 61%
rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt
rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt
index 42625b9a1c..647ad81b88 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt
@@ -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 =
- ("全程 " + " $mileage " + " 公里 "
- + ",总用时 " + " $duration " + " 分钟")
- 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(" " + order.bookingUserPhone + "" +
- " | " +
- "" + order.passengerSize + "人" + "",Html.FROM_HTML_MODE_LEGACY)
+ taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg, null)
+ orderPhoneAndNum.text = Html.fromHtml(
+ " " + order.bookingUserPhone + "" +
+ " | " +
+ "" + order.passengerSize + "人" + "",
+ 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
) + "")
}
- 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(),
("里程 " + "" + dis + "" + " " + disUnit + ""
+ ",剩余 " + "" + min + "" + " 分钟")
- 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 =
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt
similarity index 97%
rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt
rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt
index eebcaf0ea0..0e025303c0 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt
@@ -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(){
+class TaxiCurrentTaskViewModel : BaseViewModel(){
private var mInAndWaitServiceDisposable: Disposable? = null //进行中、待服务订单列表轮询
@@ -83,7 +84,7 @@ class TaxiUnmannedViewModel : BaseViewModel(){
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(){
sendUiState {
copy(
taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(mCurrentTaskAndOrder,
- TaxiModel.getCurUntruthTask())
+ TaxiModel.getCurUntruthTask()
+ )
)
}
}
@@ -257,7 +259,8 @@ class TaxiUnmannedViewModel : BaseViewModel(){
sendUiState {
copy(
taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(null,
- TaxiModel.getCurUntruthTask())
+ TaxiModel.getCurUntruthTask()
+ )
)
}
}
@@ -339,7 +342,7 @@ class TaxiUnmannedViewModel : BaseViewModel(){
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(){
+ ", 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?) {
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt
similarity index 63%
rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt
rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt
index e725ac4ac4..c9a38bb0f5 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt
@@ -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 = 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(" " + order.bookingUserPhone + "" +
- " | " +
- "" + order.passengerSize + "人" + "",Html.FROM_HTML_MODE_LEGACY)
+ orderPhoneAndNum.text = HtmlCompat.fromHtml(
+ " " + order.bookingUserPhone + "" +
+ " | " +
+ "" + order.passengerSize + "人" + "",
+ 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
}
diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt
similarity index 74%
rename from OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt
rename to OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt
index 6d84cce10c..eebd6b5c69 100644
--- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt
+++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt
@@ -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 = ArrayList()
- private var beingTaskFragment: TaxiBeingTaskFragment? = null
- private var reserveOrdersFragment: TaxiReserveOrderFragment? = null
+ private val mFragments: MutableList = 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)
}
}
diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_being_order.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/task_fragment_current.xml
similarity index 100%
rename from OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_being_order.xml
rename to OCH/taxi/unmanned-driver/src/main/res/layout/task_fragment_current.xml
diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_panel.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_panel.xml
index 871a362fc3..702787973d 100644
--- a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_panel.xml
+++ b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_panel.xml
@@ -15,7 +15,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
-