[fea]
[taxi 展示当前所在站点]
This commit is contained in:
yangyakun
2024-12-24 17:16:10 +08:00
parent 93ac33eb69
commit c0c42e76f8
4 changed files with 202 additions and 122 deletions

View File

@@ -273,11 +273,11 @@ object OrderModel {
?.observeOn(AndroidSchedulers.mainThread()) ?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<Boolean> { ?.subscribe(object : Observer<Boolean> {
override fun onSubscribe(d: Disposable) { override fun onSubscribe(d: Disposable) {
d(TAG, "onSubscribe") d(TAG, "driveToNextStation onSubscribe")
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
d(TAG, "onError${e.printStackTrace()}") d(TAG, "driveToNextStation onError${e.printStackTrace()}")
if (e is DataException) { if (e is DataException) {
} }
@@ -297,6 +297,7 @@ object OrderModel {
} }
override fun onNext(data: Boolean) { override fun onNext(data: Boolean) {
d(TAG, "driveToNextStation onComplete")
if (data) { if (data) {
LineModel.leaveStationSuccess() LineModel.leaveStationSuccess()
isArrivedStation = false isArrivedStation = false

View File

@@ -9,6 +9,9 @@ import com.mogo.och.data.taxi.TaxiOrderStatusEnum
import com.mogo.och.unmanned.taxi.utils.order.OrderListener import com.mogo.och.unmanned.taxi.utils.order.OrderListener
import com.mogo.och.unmanned.taxi.utils.order.OrderModel import com.mogo.och.unmanned.taxi.utils.order.OrderModel
/**
* 自动探查
*/
class OchAutomaticExplorationView @JvmOverloads constructor( class OchAutomaticExplorationView @JvmOverloads constructor(
context: Context, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,

View File

@@ -17,6 +17,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.hmi.ui.widget.ItinerarySummaryDialog import com.mogo.eagle.core.function.hmi.ui.widget.ItinerarySummaryDialog
import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.network.utils.GsonUtil
import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
import com.mogo.eagle.core.utilcode.util.ClickUtils import com.mogo.eagle.core.utilcode.util.ClickUtils
@@ -29,6 +30,7 @@ import com.mogo.och.common.module.map.ICommonNaviChangedCallback
import com.mogo.och.common.module.map.MapMakerManager import com.mogo.och.common.module.map.MapMakerManager
import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.FlowBus import com.mogo.och.common.module.utils.FlowBus
import com.mogo.och.common.module.utils.OchPhoneUtil
import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.common.module.wigets.CommonSlideView import com.mogo.och.common.module.wigets.CommonSlideView
@@ -50,28 +52,55 @@ import com.mogo.och.unmanned.taxi.ui.task.TaskWithOrderUIState
import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel
import com.mogo.och.unmanned.taxi.ui.task.cancleorder.CancleOrderView import com.mogo.och.unmanned.taxi.ui.task.cancleorder.CancleOrderView
import com.mogo.och.unmanned.taxi.utils.TaskUtils import com.mogo.och.unmanned.taxi.utils.TaskUtils
//演练单标识
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.aciv_task_type_exercise import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.aciv_task_type_exercise
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.aciv_task_type_order // 距离目的地距离和剩余时间
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_distance_end import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_distance_end
// 完成服务
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_end_order import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_end_order
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_order_phone // 跳过乘客端验证
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_submit_task import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_submit_task
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.cancelOrder // 取消虚拟单
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.cancelTask import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.cancelTask
// 开始服务
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.commonSlideViewStartServer import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.commonSlideViewStartServer
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.gourp_order import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.gourp_order
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.group_itinerary_info // 前往出车点、前往送架、等待乘客、前往接驾
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.include_empty
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.naviToEnd
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.naviToStart
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.prepareTaskCountdownTv
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.taskStatus import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.taskStatus
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.endStationName // 用户手机号
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.startStationName import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_order_phone
// 用户人数
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.orderPhoneAndNum import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.orderPhoneAndNum
// 运营单标识
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.aciv_task_type_order
// 取消订单
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.cancelOrder
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.currentTaskStation
// 展示站点信息
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.group_itinerary_info
// 没有任务的情况下展示的
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.include_empty
// 导航到终点
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.naviToEnd
// 导航到起点
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.naviToStart
// 拉取任务倒计时
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.prepareTaskCountdownTv
// 终点名称
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.endStationName
// 起始站点名称
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.startStationName
// 途径点展示
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.pathwayPoint import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.pathwayPoint
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.trajectoryType // 途径站点标识
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.v_bg_route_point_station_name import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.v_bg_route_point_station_name
// 自主算路标识
import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.trajectoryType
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineViewCallback, class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineViewCallback,
@@ -117,9 +146,6 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
viewModel?.uiStateFlow?.map { it.taskWithOrderUIState }?.collect { taskAndOrderUiState -> viewModel?.uiStateFlow?.map { it.taskWithOrderUIState }?.collect { taskAndOrderUiState ->
d(TAG, "uiStateFlow-initViewModelObserver: $taskAndOrderUiState") d(TAG, "uiStateFlow-initViewModelObserver: $taskAndOrderUiState")
when (taskAndOrderUiState) { when (taskAndOrderUiState) {
is TaskWithOrderUIState.Init -> {
}
// 开始接单后 需要将车开到最近的一个站点就位,然后才能开启 无人化 流程 // 开始接单后 需要将车开到最近的一个站点就位,然后才能开启 无人化 流程
is TaskWithOrderUIState.TaskDriveToNearestStationTask -> { is TaskWithOrderUIState.TaskDriveToNearestStationTask -> {
if (taskAndOrderUiState.driveToNearestStationTask != null) { if (taskAndOrderUiState.driveToNearestStationTask != null) {
@@ -163,13 +189,100 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
} }
// 1、无订单 无任务
// 2、标定单
// 3、虚拟单
// 4、运营单
// 5、倒计时获取虚拟任务
override fun onAttachedToWindow() {
super.onAttachedToWindow()
viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(ItineraryCurrentModel::class.java)
}
viewModel?.setDistanceCallback(this)
initOnClickListener()
initTaskDebugViewListener()
initViewModelObserver()
showEmptyView()
}
private fun initOnClickListener() {
CallerLogger.d(TAG,"initOnClickListener")
naviToStart.setOnClickListener(this)
naviToEnd.setOnClickListener(this)
cancelTask.setOnClickListener(this)
cancelOrder.setOnClickListener(this)
taskStatus.setOnClickListener(this)
commonSlideViewStartServer.setSlideListener(object :CommonSlideView.SlideListener{
override fun slideEnd() {
d(TAG, taskStatus.text.toString())
startOrEndService()
}
})
actv_submit_task.onClick {
startOrEndService()
}
actv_end_order.onClick {
startOrEndService()
}
}
override fun onClick(v: View?) {
if (!ClickUtils.isFastClick()) {
i(TAG, "view点击过快")
return
}
when (v?.id) {
cancelOrder.id -> {
val currentWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
if (currentWithOrder?.order != null) {
context?.let {
CancleOrderView.showDialog(it)
}
}
}
naviToStart.id,
naviToEnd.id -> {
showNaviToEndStationFragment()
}
cancelTask.id -> {
val builder = CommonDialogStatus.Builder()
val closeLineConfirmDialog = builder
.title(ResourcesUtils.getString(R.string.common_dialog_title))
.tips(ResourcesUtils.getString(R.string.taxi_dialog_cancle_task))
.confirmStr(ResourcesUtils.getString(R.string.common_dialog_confirm))
.cancelStr(ResourcesUtils.getString(R.string.common_dialog_cancel))
.status(CommonDialogStatus.Status.ask)
.build(context)
closeLineConfirmDialog.setClickListener(object : CommonDialogStatus.ClickListener {
override fun confirm() {
viewModel?.cancleTask()
}
override fun cancel() {
closeLineConfirmDialog.dismiss()
}
})
closeLineConfirmDialog.show()
}
}
}
/** /**
* 更新拉取任务倒计时 * 更新拉取任务倒计时
*/ */
private fun updatePrepareTaskDelayUI(millisInFuture: Long, isStart: Boolean) { private fun updatePrepareTaskDelayUI(millisInFuture: Long, isStart: Boolean) {
CallerLogger.d(TAG,"updatePrepareTaskDelayUI")
DebugView.printInfoMsg("距离任务获取还有 ${DateTimeUtil.second2MMSS(millisInFuture / 1000)}") DebugView.printInfoMsg("距离任务获取还有 ${DateTimeUtil.second2MMSS(millisInFuture / 1000)}")
if (!isStart) { if (!isStart) {
prepareTaskCountdownTv.visibility = View.GONE prepareTaskCountdownTv.visibility = View.GONE
currentTaskStation.visibility = View.GONE
mPrepareTasCountDownTimer?.cancel() mPrepareTasCountDownTimer?.cancel()
mPrepareTasCountDownTimer = null mPrepareTasCountDownTimer = null
return return
@@ -177,31 +290,37 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
if (mPrepareTasCountDownTimer != null) { if (mPrepareTasCountDownTimer != null) {
prepareTaskCountdownTv.visibility = View.GONE prepareTaskCountdownTv.visibility = View.GONE
currentTaskStation.visibility = View.GONE
mPrepareTasCountDownTimer?.cancel() mPrepareTasCountDownTimer?.cancel()
mPrepareTasCountDownTimer = null mPrepareTasCountDownTimer = null
} }
mPrepareTasCountDownTimer = object : CountDownTimer(millisInFuture, 1000L) {// 倒计时后开启自驾 mPrepareTasCountDownTimer = object : CountDownTimer(millisInFuture, 1000L) {// 倒计时后开启自驾
override fun onTick(millisUntilFinished: Long) { override fun onTick(millisUntilFinished: Long) {
DebugView.printInfoMsg("距离任务获取还有 ${DateTimeUtil.second2MMSS(millisUntilFinished / 1000)}") DebugView.printInfoMsg("距离任务获取还有 ${DateTimeUtil.second2MMSS(millisUntilFinished / 1000)}")
// 倒计时 // 倒计时
UiThreadHandler.post { UiThreadHandler.post {
prepareTaskCountdownTv.visibility = View.VISIBLE prepareTaskCountdownTv.visibility = View.VISIBLE
prepareTaskCountdownTv.text = prepareTaskCountdownTv.text = "距离任务获取还有 ${DateTimeUtil.second2MMSS(millisUntilFinished / 1000)}"
"距离任务获取还有 ${DateTimeUtil.second2MMSS(millisUntilFinished / 1000)}" val taskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
if(taskWithOrder?.currentStatus == TaskStatusEnum.CompleteTask.code){
currentTaskStation.visibility = View.VISIBLE
currentTaskStation.text = taskWithOrder.endSite?.siteName?:""
} }
} }
override fun onFinish() {
//倒计时结束了...
UiThreadHandler.post {
prepareTaskCountdownTv.visibility = View.INVISIBLE
}
mPrepareTasCountDownTimer?.cancel()
}
} }
override fun onFinish() {
//倒计时结束了...
UiThreadHandler.post {
prepareTaskCountdownTv.visibility = View.INVISIBLE
currentTaskStation.visibility = View.INVISIBLE
}
mPrepareTasCountDownTimer?.cancel()
}
}
mPrepareTasCountDownTimer?.start() mPrepareTasCountDownTimer?.start()
} }
@@ -209,6 +328,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
* 更新当前任务和订单信息 * 更新当前任务和订单信息
*/ */
private fun updateViewByCurrentTaskWithOrder(taskAndOrder: QueryCurrentTaskRespBean.Result?) { private fun updateViewByCurrentTaskWithOrder(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
CallerLogger.d(TAG,"updateViewByCurrentTaskWithOrder")
if (taskAndOrder == null) return if (taskAndOrder == null) return
/** /**
* 根据任务类型判断任务显示, * 根据任务类型判断任务显示,
@@ -263,6 +383,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
// 第一个特殊任务 也是虚拟任务 // 第一个特殊任务 也是虚拟任务
private fun updateViewByDriveToNearestStationTask(driveToNearestStationTask: StartServiceRespBean.Result?) { private fun updateViewByDriveToNearestStationTask(driveToNearestStationTask: StartServiceRespBean.Result?) {
CallerLogger.d(TAG,"updateViewByDriveToNearestStationTask 标定单")
if (driveToNearestStationTask == null) return if (driveToNearestStationTask == null) return
initContainerView(true) initContainerView(true)
// DriverToNearestStationTask 任务更新 // DriverToNearestStationTask 任务更新
@@ -292,11 +413,13 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun showEmptyView() { private fun showEmptyView() {
CallerLogger.d(TAG,"showEmptyView")
gourp_order.visibility = GONE gourp_order.visibility = GONE
aciv_task_type_exercise.visibility = GONE aciv_task_type_exercise.visibility = GONE
group_itinerary_info.visibility = GONE group_itinerary_info.visibility = GONE
include_empty.visibility = VISIBLE include_empty.visibility = VISIBLE
prepareTaskCountdownTv.visibility = GONE prepareTaskCountdownTv.visibility = GONE
currentTaskStation.visibility = View.GONE
cancelTask.visibility = View.GONE cancelTask.visibility = View.GONE
actv_end_order.visibility = GONE actv_end_order.visibility = GONE
@@ -305,28 +428,8 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun initOnClickListener() {
naviToStart.setOnClickListener(this)
naviToEnd.setOnClickListener(this)
cancelTask.setOnClickListener(this)
cancelOrder.setOnClickListener(this)
taskStatus.setOnClickListener(this)
commonSlideViewStartServer.setSlideListener(object :CommonSlideView.SlideListener{
override fun slideEnd() {
d(TAG, taskStatus.text.toString())
startOrEndService()
}
})
actv_submit_task.onClick {
startOrEndService()
}
actv_end_order.onClick {
startOrEndService()
}
}
private fun initTaskDebugViewListener() { private fun initTaskDebugViewListener() {
CallerLogger.d(TAG,"initTaskDebugViewListener")
fragment?.let { fr-> fragment?.let { fr->
aciv_task_type_exercise.setOnLongClickListener { aciv_task_type_exercise.setOnLongClickListener {
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_DEBUG_VIEW) FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_DEBUG_VIEW)
@@ -342,6 +445,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun startOrEndService() { private fun startOrEndService() {
CallerLogger.d(TAG,"startOrEndService")
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
if (currentTaskWithOrder?.order == null) return if (currentTaskWithOrder?.order == null) return
val order = currentTaskWithOrder.order val order = currentTaskWithOrder.order
@@ -364,6 +468,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun closeOrderDialog() { private fun closeOrderDialog() {
CallerLogger.d(TAG,"closeOrderDialog")
val builder = CommonDialogStatus.Builder() val builder = CommonDialogStatus.Builder()
val closeOrderDialog = builder val closeOrderDialog = builder
.title(ResourcesUtils.getString(R.string.dialog_order_close_title)) .title(ResourcesUtils.getString(R.string.dialog_order_close_title))
@@ -384,67 +489,13 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
override fun onAttachedToWindow() {
super.onAttachedToWindow()
viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(ItineraryCurrentModel::class.java)
}
viewModel?.setDistanceCallback(this)
initOnClickListener()
showEmptyView()
initTaskDebugViewListener()
initViewModelObserver()
}
override fun onClick(v: View?) {
if (!ClickUtils.isFastClick()) {
i(TAG, "view点击过快")
return
}
when (v?.id) {
cancelOrder.id -> {
val currentWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
if (currentWithOrder?.order != null) {
context?.let {
CancleOrderView.showDialog(it)
}
}
}
naviToStart.id,
naviToEnd.id -> {
showNaviToEndStationFragment()
}
cancelTask.id -> {
val builder = CommonDialogStatus.Builder()
val closeLineConfirmDialog = builder
.title(ResourcesUtils.getString(R.string.common_dialog_title))
.tips(ResourcesUtils.getString(R.string.taxi_dialog_cancle_task))
.confirmStr(ResourcesUtils.getString(R.string.common_dialog_confirm))
.cancelStr(ResourcesUtils.getString(R.string.common_dialog_cancel))
.status(CommonDialogStatus.Status.ask)
.build(context)
closeLineConfirmDialog.setClickListener(object : CommonDialogStatus.ClickListener {
override fun confirm() {
viewModel?.cancleTask()
}
override fun cancel() {
closeLineConfirmDialog.dismiss()
}
})
closeLineConfirmDialog.show()
}
}
}
/** /**
* 显示/隐藏 前往任务目的地的导航 * 显示/隐藏 前往任务目的地的导航
* *
* @param isShow * @param isShow
*/ */
private fun showNaviToEndStationFragment() { private fun showNaviToEndStationFragment() {
CallerLogger.d(TAG,"showNaviToEndStationFragment")
fragment?.let { fragment?.let {
TaxiTaskModel.startNaviToEndStation(true); TaxiTaskModel.startNaviToEndStation(true);
} }
@@ -456,6 +507,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
* @param hasCurrentTask * @param hasCurrentTask
*/ */
private fun initContainerView(hasCurrentTask: Boolean) { private fun initContainerView(hasCurrentTask: Boolean) {
CallerLogger.d(TAG,"initContainerView")
d( d(
TAG, TAG,
"hasCurrentTask = $hasCurrentTask" "hasCurrentTask = $hasCurrentTask"
@@ -463,11 +515,13 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
if (hasCurrentTask) { if (hasCurrentTask) {
include_empty.visibility = View.GONE include_empty.visibility = View.GONE
prepareTaskCountdownTv.visibility = View.GONE prepareTaskCountdownTv.visibility = View.GONE
currentTaskStation.visibility = View.GONE
} else { } else {
// 空页面 // 空页面
include_empty.visibility = View.VISIBLE include_empty.visibility = View.VISIBLE
// 倒计时 // 倒计时
prepareTaskCountdownTv.visibility = View.GONE prepareTaskCountdownTv.visibility = View.GONE
currentTaskStation.visibility = View.GONE
// 行程信息 // 行程信息
group_itinerary_info.visibility = View.GONE group_itinerary_info.visibility = View.GONE
// 订单信息 // 订单信息
@@ -489,10 +543,12 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun removeAllMapMarker() { private fun removeAllMapMarker() {
CallerLogger.d(TAG,"removeAllMapMarker")
MapMakerManager.removeAllMapMarkerByOwner(TYPE_MARKER_TAXI_ORDER) MapMakerManager.removeAllMapMarkerByOwner(TYPE_MARKER_TAXI_ORDER)
} }
private fun updateNextTaskFragment(result: QueryCurrentTaskRespBean.Result?) { private fun updateNextTaskFragment(result: QueryCurrentTaskRespBean.Result?) {
CallerLogger.d(TAG,"updateNextTaskFragment")
fragment?.let { fragment?.let {
FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_TASK_WITH_ORDER_CHANGED) FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_TASK_WITH_ORDER_CHANGED)
.post(it.lifecycleScope, result) .post(it.lifecycleScope, result)
@@ -514,6 +570,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun updateOrderUI(order: OrderDetail) { private fun updateOrderUI(order: OrderDetail) {
CallerLogger.d(TAG,"updateOrderUI")
gourp_order.visibility = View.VISIBLE gourp_order.visibility = View.VISIBLE
cancelOrder.visibility = if (order.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code cancelOrder.visibility = if (order.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code
) View.GONE else View.VISIBLE ) View.GONE else View.VISIBLE
@@ -538,17 +595,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
order.passengerSize order.passengerSize
) )
var tempPhone = order.bookingUserPhone actv_order_phone.text = OchPhoneUtil.getPhoneWithoutMiddle(order.bookingUserPhone)
tempPhone.let {
if (it.length > 8) {
//截取电话号码前三位
val phoneNumPre = it.substring(0, 3)
//截取电话号码后四位
val phoneNumFix = it.substring(7)
tempPhone = "$phoneNumPre****$phoneNumFix"
}
}
actv_order_phone.text = tempPhone
orderPhoneAndNum.text = "${ order.passengerSize}" orderPhoneAndNum.text = "${ order.passengerSize}"
@@ -629,7 +676,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
//展示虚拟订单 //展示虚拟订单
private fun updateVirtualTaskUI(taskAndOrder: QueryCurrentTaskRespBean.Result?) { private fun updateVirtualTaskUI(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
CallerLogger.d(TAG,"updateVirtualTaskUI")
if (taskAndOrder == null) return if (taskAndOrder == null) return
val startSite = taskAndOrder.startSite // 起点 val startSite = taskAndOrder.startSite // 起点
@@ -642,6 +689,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
include_empty.visibility = View.GONE include_empty.visibility = View.GONE
// 倒计时 // 倒计时
prepareTaskCountdownTv.visibility = View.GONE prepareTaskCountdownTv.visibility = View.GONE
currentTaskStation.visibility = View.GONE
// 行程信息 // 行程信息
group_itinerary_info.visibility = View.VISIBLE group_itinerary_info.visibility = View.VISIBLE
// 订单信息 // 订单信息
@@ -676,6 +724,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun updatePathwayPoint(taskType: Int, endSiteName: String?) { private fun updatePathwayPoint(taskType: Int, endSiteName: String?) {
CallerLogger.d(TAG,"updatePathwayPoint")
if (TextUtils.isEmpty(endSiteName)) return if (TextUtils.isEmpty(endSiteName)) return
pathwayPoint.visibility = if (taskType == TaskTypeEnum.ToOrderStartTask.code) pathwayPoint.visibility = if (taskType == TaskTypeEnum.ToOrderStartTask.code)
View.VISIBLE else View.GONE View.VISIBLE else View.GONE
@@ -683,6 +732,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun updateMapMarkers(taskAndOrder: QueryCurrentTaskRespBean.Result?) { private fun updateMapMarkers(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
CallerLogger.d(TAG,"updateMapMarkers")
if (taskAndOrder?.startSite != null if (taskAndOrder?.startSite != null
&& taskAndOrder.endSite != null && taskAndOrder.endSite != null
) { ) {
@@ -755,6 +805,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
isAdd: Boolean, uuid: String, isAdd: Boolean, uuid: String,
lat: Double, lon: Double, resourceId: Int lat: Double, lon: Double, resourceId: Int
) { ) {
CallerLogger.d(TAG,"setOrRemoveMapMaker")
if (isAdd) { if (isAdd) {
MapMakerManager.addMapMaker(TYPE_MARKER_TAXI_ORDER, uuid, lat, lon, resourceId) MapMakerManager.addMapMaker(TYPE_MARKER_TAXI_ORDER, uuid, lat, lon, resourceId)
} else { } else {
@@ -766,6 +817,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
* 根据任务状态计算剩余历程和时间 * 根据任务状态计算剩余历程和时间
*/ */
private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) { private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) {
CallerLogger.d(TAG,"updateRemainDistanceAndTime")
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return
d(TAG, "updateRemainDistanceAndTime ${currentTaskWithOrder.currentStatus}") d(TAG, "updateRemainDistanceAndTime ${currentTaskWithOrder.currentStatus}")
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) { if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) {
@@ -786,6 +838,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun startNaviToStation(isVoicePlay: Boolean, stationLat: Double, stationLng: Double) { private fun startNaviToStation(isVoicePlay: Boolean, stationLat: Double, stationLng: Double) {
CallerLogger.d(TAG,"startNaviToStation")
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
val gcJ02Location = OchLocationManager.getGCJ02Location() val gcJ02Location = OchLocationManager.getGCJ02Location()
val mCurLatitude = gcJ02Location.latitude val mCurLatitude = gcJ02Location.latitude
@@ -799,6 +852,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun showDialog(){ private fun showDialog(){
CallerLogger.d(TAG,"showDialog")
if(dialog==null&&context!=null){ if(dialog==null&&context!=null){
} }
@@ -816,6 +870,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun dismissDialog(){ private fun dismissDialog(){
CallerLogger.d(TAG,"dismissDialog")
dialog?.let { dialog?.let {
if(it.isShowing){ if(it.isShowing){
it.dismiss() it.dismiss()
@@ -825,6 +880,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
private fun hideNaviBtns() { private fun hideNaviBtns() {
CallerLogger.d(TAG,"hideNaviBtns")
naviToStart.visibility = View.GONE naviToStart.visibility = View.GONE
naviToEnd.visibility = View.GONE naviToEnd.visibility = View.GONE
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
@@ -838,10 +894,12 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) { override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) {
CallerLogger.d(TAG,"onCurrentNaviDistAndTimeChanged")
actv_distance_end.text = TaskUtils.getCurrentTaskDistance(meters.toLong())+" "+TaskUtils.getCurrentTaskTime(timeInSecond) actv_distance_end.text = TaskUtils.getCurrentTaskDistance(meters.toLong())+" "+TaskUtils.getCurrentTaskTime(timeInSecond)
} }
override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) { override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) {
CallerLogger.d(TAG,"reInitNaviAmap")
d(TAG, "isPlay = $isPlay, isRestart=$isRestart") d(TAG, "isPlay = $isPlay, isRestart=$isRestart")
if (!isRestart) { if (!isRestart) {
fragment?.let { fragment?.let {
@@ -875,6 +933,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
fun onNaviToEndStationByAMap(isShow: Boolean) { fun onNaviToEndStationByAMap(isShow: Boolean) {
CallerLogger.d(TAG,"onNaviToEndStationByAMap")
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return
fragment?.let { fragment?.let {
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code)
@@ -894,6 +953,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
} }
override fun onStartTaskFail() { override fun onStartTaskFail() {
CallerLogger.d(TAG,"onStartTaskFail")
commonSlideViewStartServer.reset() commonSlideViewStartServer.reset()
} }

View File

@@ -25,8 +25,8 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="@dimen/dp_53" android:layout_marginEnd="@dimen/dp_53"
android:src="@drawable/taxi_task_close" android:src="@drawable/taxi_task_close"
android:layout_width="wrap_content" android:layout_width="@dimen/dp_46"
android:layout_height="wrap_content"/> android:layout_height="@dimen/dp_46"/>
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_order_phone" android:id="@+id/actv_order_phone"
@@ -315,9 +315,25 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/common_B3FFFFFF" android:textColor="@color/common_B3FFFFFF"
android:textSize="@dimen/dp_30" android:textSize="@dimen/dp_30"
android:layout_marginTop="50dp" android:layout_marginTop="@dimen/dp_50"
android:text="距离任务获取还有 12"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone" android:visibility="gone"
app:layout_constraintTop_toBottomOf="@+id/include_empty" /> app:layout_constraintTop_toBottomOf="@+id/include_empty" />
<TextView
android:id="@+id/currentTaskStation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/common_cccccc"
android:textSize="@dimen/dp_32"
android:layout_marginTop="@dimen/dp_20"
tools:text="当前站点"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@+id/prepareTaskCountdownTv" />
</merge> </merge>