[Taxi无人化] refactor: 抽取task相关;

This commit is contained in:
aibingbing
2023-08-23 14:08:29 +08:00
committed by zhongchao
parent fabbd2c1f1
commit 9238df3db8
9 changed files with 121 additions and 98 deletions

View File

@@ -1,5 +1,7 @@
package com.mogo.och.taxi.bean package com.mogo.och.taxi.bean
import android.text.Spanned
import androidx.core.text.HtmlCompat
import com.mogo.eagle.core.data.BaseData 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, data class Site(
var wgs84Lon: Double, var wgs84Lat: Double) { var siteId: Long, var siteName: String, var gcjLat: Double, var gcjLon: Double,
var wgs84Lon: Double, var wgs84Lat: Double
) {
override fun equals(other: Any?): Boolean { override fun equals(other: Any?): Boolean {
if (this === other) return true if (this === other) return true
if (javaClass != other?.javaClass) return false if (javaClass != other?.javaClass) return false
@@ -69,6 +73,16 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() {
var startSite: Site?, var endSite: Site?, var startSite: Site?, var endSite: Site?,
var order: OrderDetail? 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 //开始接单 // servingStatus = 0 //暂停接单 = 1 //开始接单
//taskType = 1 //虚拟任务 = 2 //接驾任务 = 3 //送驾任务 //taskType = 1 //虚拟任务 = 2 //接驾任务 = 3 //送驾任务
//currentStatus 0空闲 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 ArriveSiteReqBean(var sn: String, var siteId: Long)
data class PrepareTaskReqBean(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 PrepareTaskRespBean(var data: Result?) : BaseData() { //taskType 1:虚拟任务 2:接驾任务3:送驾任务
data class Result( data class Result(
var lineId: Long, var cityCode: Int, var taskType: Int, var lineId: Long, var cityCode: Int, var taskType: Int,
var startSite: Site, var endSite: Site 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 CancelOrderReqBean(var sn: String, var orderNo: String, var cancelType: Int)
data class OrderCompletedReqBean(var sn: String, var orderNo: String) data class OrderCompletedReqBean(var sn: String, var orderNo: String)
data class QueryCarOrderByNoReqBean(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( data class Result(
var sn: String, var orderNo: String, var orderStatus: Int, var sn: String, var orderNo: String, var orderStatus: Int,
var bookingUserPhone: String, var businessType: String, 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>?) //轨迹路线集合 data class ContrailListRespBean(var data: MutableList<Result>?) //轨迹路线集合
: BaseData() { : BaseData() {
data class Result( 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 txtFileUrl: String, var txtFileMd5: String, var contrailSaveTime: Long,
var csvFileUrlDPQP: String, var csvFileMd5DPQP: String, var txtFileUrlDPQP: String, var csvFileUrlDPQP: String, var csvFileMd5DPQP: String, var txtFileUrlDPQP: String,
var txtFileMd5DPQP: String, var contrailSaveTimeDPQP: Long var txtFileMd5DPQP: String, var contrailSaveTimeDPQP: Long

View File

@@ -1,12 +1,10 @@
package com.mogo.och.taxi.ui.base package com.mogo.och.taxi.ui.base
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.annotation.RequiresApi
import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.FragmentTransaction
import com.alibaba.android.arouter.launcher.ARouter import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.commons.module.status.MogoStatusManager 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.model.TaxiModel
import com.mogo.och.taxi.network.LoginBusImpl import com.mogo.och.taxi.network.LoginBusImpl
import com.mogo.och.taxi.ui.TaxiPersonalDialogFragment 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 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.module_mogo_och_operation_status
import kotlinx.android.synthetic.main.taxi_base_fragment.taxi_driver_role_tv 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 personalDialogFragment: WeakReference<TaxiPersonalDialogFragment>? = null
private var loginService: LoginService? = null private var loginService: LoginService? = null
@@ -126,10 +124,10 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
} }
private fun initFragment() { private fun initFragment() {
servedOrdersFragment = WeakReference(TaxiServerOrdersFragment.newInstance()) taskTabFragment = WeakReference(TaxiTaskTabFragment.newInstance())
val transaction: FragmentTransaction = childFragmentManager.beginTransaction() val transaction: FragmentTransaction = childFragmentManager.beginTransaction()
//默认显示OCHTaxiServerOrdersFragment //默认显示OCHTaxiServerOrdersFragment
servedOrdersFragment?.get()?.let { taskTabFragment?.get()?.let {
transaction.add(R.id.fragment_container, it).show( transaction.add(R.id.fragment_container, it).show(
it it
) )
@@ -143,14 +141,13 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
override fun onChangeOperationStatus() { override fun onChangeOperationStatus() {
super.onChangeOperationStatus() super.onChangeOperationStatus()
if (null == servedOrdersFragment || servedOrdersFragment!!.get() == null) return if (null == taskTabFragment || taskTabFragment!!.get() == null) return
servedOrdersFragment!!.get()!!.onChangeOperationStatus() taskTabFragment!!.get()!!.onOperationStatusChanged()
} }
@RequiresApi(Build.VERSION_CODES.N) fun updateNextTaskFragment(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
fun updateReserveOrderChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) { if (null == taskTabFragment || taskTabFragment!!.get() == null) return
if (null == servedOrdersFragment || servedOrdersFragment!!.get() == null) return taskTabFragment!!.get()!!.updateOrderChanged(taskAndOrder)
servedOrdersFragment!!.get()!!.updateOrderChanged(taskAndOrder)
} }
fun switchVRFlatMode(isVRMode: Boolean) { fun switchVRFlatMode(isVRMode: Boolean) {
@@ -211,8 +208,8 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
fun onNaviToEnd(isAmap: Boolean, isShow: Boolean) { fun onNaviToEnd(isAmap: Boolean, isShow: Boolean) {
if (isAmap) { if (isAmap) {
if (null == servedOrdersFragment || servedOrdersFragment!!.get() == null) return if (null == taskTabFragment || taskTabFragment!!.get() == null) return
servedOrdersFragment!!.get()!!.onNaviToEndAMap(isShow) taskTabFragment!!.get()!!.onNaviToEndAMap(isShow)
} else if (isShow) { //使用routing数据 } else if (isShow) { //使用routing数据
showRoutingToStationFragment(true) showRoutingToStationFragment(true)
} else { } else {
@@ -247,8 +244,8 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
} }
fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) { fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) {
if (null == servedOrdersFragment || servedOrdersFragment!!.get() == null) return if (null == taskTabFragment || taskTabFragment!!.get() == null) return
servedOrdersFragment!!.get()!!.onCurrentOrderDistToEndChanged(meters, timeInSecond) taskTabFragment!!.get()!!.onCurrentOrderDistToEndChanged(meters, timeInSecond)
} }
private fun testRouteInfoUpload() { private fun testRouteInfoUpload() {

View File

@@ -8,7 +8,6 @@ import android.widget.LinearLayout
import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.network.utils.GsonUtil
import com.mogo.och.taxi.R import com.mogo.och.taxi.R
import com.mogo.och.taxi.model.TaxiModel 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.orderInfo
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderToStartLines import kotlinx.android.synthetic.main.taxi_debug_order.view.orderToStartLines
import kotlinx.android.synthetic.main.taxi_debug_order.view.taskEndSite 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
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_traj_md5_dpqp 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, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyleAttr: Int = 0, defStyleAttr: Int = 0,
defStyleRes: Int = 0 defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) { ) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) {
companion object { companion object {
const val TAG = "OrderDebugView" const val TAG = "DebugView"
} }
init { init {

View File

@@ -1,7 +1,6 @@
package com.mogo.och.taxi.ui package com.mogo.och.taxi.ui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.GradientDrawable import android.graphics.drawable.GradientDrawable
import android.os.Build import android.os.Build

View File

@@ -1,4 +1,4 @@
package com.mogo.och.taxi.model package com.mogo.och.taxi.ui.task
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context 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.TaxiUnmannedConst
import com.mogo.och.taxi.constant.TaxtServingStatusManager import com.mogo.och.taxi.constant.TaxtServingStatusManager
import com.mogo.och.taxi.constant.TaxtServingStatusManager.isOpeningOrderStatus 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
import com.mogo.och.taxi.network.CarServiceManager.cancelOrder import com.mogo.och.taxi.network.CarServiceManager.cancelOrder
import com.mogo.och.taxi.network.CarServiceManager.contrailList import com.mogo.och.taxi.network.CarServiceManager.contrailList
@@ -48,7 +49,7 @@ import java.util.concurrent.TimeUnit
* @author: wangmingjun * @author: wangmingjun
* @date: 2023/7/26 * @date: 2023/7/26
*/ */
class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
private var mInAndWaitServiceDisposable: Disposable? = null //进行中、待服务订单列表轮询 private var mInAndWaitServiceDisposable: Disposable? = null //进行中、待服务订单列表轮询
@@ -83,7 +84,7 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
is UnmannedIntent.CloseOrderByDriver -> { is UnmannedIntent.CloseOrderByDriver -> {
if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null){ if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null){
val site = mCurrentTaskAndOrder!!.order!!.orderEndSite 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 { sendUiState {
copy( copy(
taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(mCurrentTaskAndOrder, taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(mCurrentTaskAndOrder,
TaxiModel.getCurUntruthTask()) TaxiModel.getCurUntruthTask()
)
) )
} }
} }
@@ -257,7 +259,8 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
sendUiState { sendUiState {
copy( copy(
taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(null, taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(null,
TaxiModel.getCurUntruthTask()) TaxiModel.getCurUntruthTask()
)
) )
} }
} }
@@ -339,7 +342,7 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
if (result.currentStatus <= TaskStatusEnum.StartTask.code){//任务执行中, 去加载下轨迹 if (result.currentStatus <= TaskStatusEnum.StartTask.code){//任务执行中, 去加载下轨迹
d(TAG, "queryCurrentTaskOnce1 = by lineId query Contrail" ) 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 if (result.taskType <= TaskTypeEnum.ToOrderStartTask.code
@@ -447,7 +450,7 @@ class TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
+ ", isOpeningOrderStatus = ${isOpeningOrderStatus()}") + ", isOpeningOrderStatus = ${isOpeningOrderStatus()}")
if (data?.data == null || data.code != 0) return 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?) { override fun onFail(code: Int, msg: String?) {

View File

@@ -4,33 +4,31 @@ import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.graphics.Color import android.graphics.Color
import android.graphics.drawable.GradientDrawable import android.graphics.drawable.GradientDrawable
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.Html
import android.view.View import android.view.View
import androidx.annotation.RequiresApi import androidx.core.text.HtmlCompat
import com.mogo.commons.mvp.BaseFragment import com.mogo.commons.mvp.BaseFragment
import com.mogo.och.taxi.R import com.mogo.och.taxi.R
import com.mogo.och.taxi.bean.OrderDetail import com.mogo.och.taxi.bean.OrderDetail
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
import com.mogo.och.taxi.constant.TaskTypeEnum import com.mogo.och.taxi.constant.TaskTypeEnum
import com.mogo.och.taxi.ui.base.TaxiFragment import com.mogo.och.taxi.ui.base.TaxiFragment
import kotlinx.android.synthetic.main.unmanned_being_order.endStationName import kotlinx.android.synthetic.main.task_fragment_current.endStationName
import kotlinx.android.synthetic.main.unmanned_being_order.mBeingOrderLayout import kotlinx.android.synthetic.main.task_fragment_current.mBeingOrderLayout
import kotlinx.android.synthetic.main.unmanned_being_order.naviToEnd import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd
import kotlinx.android.synthetic.main.unmanned_being_order.naviToStart import kotlinx.android.synthetic.main.task_fragment_current.naviToStart
import kotlinx.android.synthetic.main.unmanned_being_order.noTaskData import kotlinx.android.synthetic.main.task_fragment_current.noTaskData
import kotlinx.android.synthetic.main.unmanned_being_order.orderPhoneAndNum import kotlinx.android.synthetic.main.task_fragment_current.orderPhoneAndNum
import kotlinx.android.synthetic.main.unmanned_being_order.startStationName import kotlinx.android.synthetic.main.task_fragment_current.startStationName
import kotlinx.android.synthetic.main.unmanned_being_order.taskClickBtn import kotlinx.android.synthetic.main.task_fragment_current.taskClickBtn
import kotlinx.android.synthetic.main.unmanned_being_order.taskOtherInfo import kotlinx.android.synthetic.main.task_fragment_current.taskOtherInfo
import kotlinx.android.synthetic.main.unmanned_being_order.taskTypeTv import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv
/** /**
* @author: wangmingjun * @author: wangmingjun
* @date: 2023/7/24 * @date: 2023/7/24
*/ */
class TaxiReserveOrderFragment : BaseFragment() { class TaxiNextTaskFragment : BaseFragment() {
private val mData: MutableList<QueryCurrentTaskRespBean.Result> = ArrayList() private val mData: MutableList<QueryCurrentTaskRespBean.Result> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@@ -38,34 +36,32 @@ class TaxiReserveOrderFragment : BaseFragment() {
} }
override fun getLayoutId(): Int { override fun getLayoutId(): Int {
return R.layout.unmanned_being_order return R.layout.task_fragment_current
} }
override fun getTagName(): String { override fun getTagName(): String {
return "TaxiReserveOrderFragment" return "TaxiNextTaskFragment"
} }
override fun initViews() { override fun initViews() {
showNoOrderView() showNoOrderView()
} }
@RequiresApi(Build.VERSION_CODES.N)
fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) { fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) {
if (model?.order == null) { if (model?.order == null) {
showNoOrderView() showNoOrderView()
return return
} }
if (model.taskType == TaskTypeEnum.VirtualTask.code){ if (model.taskType == TaskTypeEnum.VirtualTask.code) {
val order = model.order val order = model.order
updateOrderUI(order!!) updateOrderUI(order!!)
}else{ } else {
showNoOrderView() showNoOrderView()
} }
} }
@RequiresApi(Build.VERSION_CODES.N)
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
private fun updateOrderUI(order: OrderDetail) { private fun updateOrderUI(order: OrderDetail) {
showOrderView() showOrderView()
@@ -73,9 +69,12 @@ class TaxiReserveOrderFragment : BaseFragment() {
naviToStart.visibility = View.GONE naviToStart.visibility = View.GONE
naviToEnd.visibility = View.GONE naviToEnd.visibility = View.GONE
orderPhoneAndNum.text = Html.fromHtml("<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" + orderPhoneAndNum.text = HtmlCompat.fromHtml(
"<font color=\"#6473B2\"> | </font>" + "<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
"<font color=\"#FFFFFF\">" + order.passengerSize + "" + "</font>",Html.FROM_HTML_MODE_LEGACY) "<font color=\"#6473B2\"> | </font>" +
"<font color=\"#FFFFFF\">" + order.passengerSize + "" + "</font>",
HtmlCompat.FROM_HTML_MODE_LEGACY
)
order.orderStartSite?.let { order.orderStartSite?.let {
@@ -86,7 +85,7 @@ class TaxiReserveOrderFragment : BaseFragment() {
} }
taskTypeTv.text = resources.getString(R.string.task_order) 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( updateOrderBottomBtn(
getString(R.string.waiting_server), 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.text = txt
taskClickBtn.setTextColor(txtColorId) taskClickBtn.setTextColor(txtColorId)
val background = val background =
@@ -117,18 +121,19 @@ class TaxiReserveOrderFragment : BaseFragment() {
companion object { companion object {
const val TAG = "TaxiReserveOrderFragment" const val TAG = "TaxiNextTaskFragment"
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
private var mTaxiFragment: TaxiFragment? = null private var mTaxiFragment: TaxiFragment? = null
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
private var mActivity: Activity? = null private var mActivity: Activity? = null
fun newInstance( fun newInstance(
activity: Activity?, activity: Activity?,
): TaxiReserveOrderFragment { ): TaxiNextTaskFragment {
mActivity = activity mActivity = activity
val args = Bundle() val args = Bundle()
val fragment = TaxiReserveOrderFragment() val fragment = TaxiNextTaskFragment()
fragment.arguments = args fragment.arguments = args
return fragment return fragment
} }

View File

@@ -3,12 +3,10 @@ package com.mogo.och.taxi.ui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.graphics.Color import android.graphics.Color
import android.graphics.Typeface import android.graphics.Typeface
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
import android.widget.TextView import android.widget.TextView
import androidx.annotation.RequiresApi
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter import androidx.fragment.app.FragmentPagerAdapter
@@ -27,18 +25,36 @@ import me.jessyan.autosize.utils.AutoSizeUtils
/** /**
* @author: wangmingjun * @author: wangmingjun
* @date: 2023/7/25 * @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 mTabTitles = arrayOf("进行中", "待服务")
private val fragments: MutableList<Fragment> = ArrayList() private val mFragments: MutableList<Fragment> = ArrayList()
private var beingTaskFragment: TaxiBeingTaskFragment? = null private var currentTaskFragment: TaxiCurrentTaskFragment? = null
private var reserveOrdersFragment: TaxiReserveOrderFragment? = null private var nextTaskFragment: TaxiNextTaskFragment? = null
override fun getLayoutId(): Int { override fun getLayoutId(): Int {
return R.layout.taxi_server_orders_panel return R.layout.taxi_server_orders_panel
} }
override fun getTagName(): String { override fun getTagName(): String {
return "TaxiServerOrdersFragment" return "TaxiTaskTabFragment"
} }
override fun initViews() { override fun initViews() {
@@ -54,24 +70,25 @@ class TaxiServerOrdersFragment : BaseFragment(){
tabView.text = mTabTitles[i] tabView.text = mTabTitles[i]
tabView.height = AutoSizeUtils.dp2px(context, 120f) tabView.height = AutoSizeUtils.dp2px(context, 120f)
tab.customView = tabView tab.customView = tabView
if (0 == i) { if (0 == i) {
module_och_taxi_tab.addTab(tab, true) module_och_taxi_tab.addTab(tab, true)
changeTabLayoutTabUI(tab, true) changeTabLayoutTabUI(tab, true)
beingTaskFragment = TaxiBeingTaskFragment.newInstance( currentTaskFragment = TaxiCurrentTaskFragment.newInstance(
activity,
parentFragment as TaxiFragment? parentFragment as TaxiFragment?
) )
fragments.add(beingTaskFragment!!) mFragments.add(currentTaskFragment!!)
} else if (1 == i) { } else if (1 == i) {
module_och_taxi_tab.addTab(tab) module_och_taxi_tab.addTab(tab)
changeTabLayoutTabUI(tab, false) changeTabLayoutTabUI(tab, false)
reserveOrdersFragment = TaxiReserveOrderFragment.newInstance( nextTaskFragment = TaxiNextTaskFragment.newInstance(
activity activity
) )
fragments.add(reserveOrdersFragment!!) mFragments.add(nextTaskFragment!!)
} }
} }
d(SceneConstant.M_TAXI + TAG, "activity=$activity") d(SceneConstant.M_TAXI + TAG, "activity=$activity")
module_och_taxi_tab.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { module_och_taxi_tab.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) { override fun onTabSelected(tab: TabLayout.Tab) {
module_och_taxi_view_pager.currentItem = tab.position module_och_taxi_view_pager.currentItem = tab.position
@@ -138,11 +155,11 @@ class TaxiServerOrdersFragment : BaseFragment(){
SceneConstant.M_TAXI + TAG, SceneConstant.M_TAXI + TAG,
"getItem=$position" "getItem=$position"
) )
return fragments[position] return mFragments[position]
} }
override fun getCount(): Int { override fun getCount(): Int {
return fragments.size return mFragments.size
} }
override fun getPageTitle(position: Int): CharSequence { override fun getPageTitle(position: Int): CharSequence {
@@ -155,33 +172,22 @@ class TaxiServerOrdersFragment : BaseFragment(){
} }
fun onNaviToEndAMap(isShow: Boolean) { fun onNaviToEndAMap(isShow: Boolean) {
if (null == beingTaskFragment) return if (null == currentTaskFragment) return
beingTaskFragment!!.onNaviToEndAmap(isShow) currentTaskFragment!!.onNaviToEndAmap(isShow)
} }
fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) { fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) {
if (null == beingTaskFragment) return if (null == currentTaskFragment) return
beingTaskFragment!!.updateDistanceAndTime(meters, timeInSecond) currentTaskFragment!!.updateDistanceAndTime(meters, timeInSecond)
} }
fun onChangeOperationStatus(){ fun onOperationStatusChanged() {
if (null == beingTaskFragment) return if (null == currentTaskFragment) return
beingTaskFragment!!.onChangeOperationStatus() currentTaskFragment!!.onOperationStatusChanged()
} }
@RequiresApi(Build.VERSION_CODES.N) fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) {
fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?){ if (null == nextTaskFragment) return
if (null == reserveOrdersFragment) return nextTaskFragment!!.updateOrderChanged(model)
reserveOrdersFragment!!.updateOrderChanged(model)
}
companion object {
const val TAG = "TaxiServerOrdersFragment"
fun newInstance(): TaxiServerOrdersFragment {
val args = Bundle()
val fragment = TaxiServerOrdersFragment()
fragment.arguments = args
return fragment
}
} }
} }

View File

@@ -15,7 +15,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="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:id="@+id/orderDebugView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"