[Taxi无人化]refactor: next task 优化;
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
package com.mogo.och.taxi.bean
|
||||
|
||||
import android.text.Spanned
|
||||
import androidx.core.text.HtmlCompat
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
|
||||
/**
|
||||
@@ -73,16 +71,6 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() {
|
||||
var startSite: Site?, var endSite: Site?,
|
||||
var order: OrderDetail?
|
||||
) {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun getCurrentTaskTotalAndDurationHtml(mileage: Float, duration: Int): Spanned {
|
||||
val strHtml =
|
||||
("<font color=\"#CAD6FF\">全程 </font>" + "<font color=\"#FFFFFF\"> $mileage </font>" + "<font color=\"#CAD6FF\"> 公里 </font>"
|
||||
+ "<font color=\"#CAD6FF\">,总用时 </font>" + "<font color=\"#FFFFFF\"> $duration </font>" + "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
}
|
||||
|
||||
// servingStatus = 0 //暂停接单 = 1 //开始接单
|
||||
//taskType = 1 //虚拟任务 = 2 //接驾任务 = 3 //送驾任务
|
||||
//currentStatus 0:空闲 1:获取任务 2:开始任务 3:到达目的地
|
||||
|
||||
@@ -187,7 +187,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
|
||||
is TaskAndOrderUiState.UPDATEORDERMILEANDDUR -> {
|
||||
taskOtherInfo.text =
|
||||
QueryCurrentTaskRespBean.Result.getCurrentTaskTotalAndDurationHtml(
|
||||
TaskUtils.getCurrentTaskTotalAndDurationHtml(
|
||||
taskAndOrderUiState.mileage,
|
||||
taskAndOrderUiState.duration
|
||||
)
|
||||
|
||||
@@ -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.Bundle
|
||||
@@ -12,7 +11,6 @@ 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.task_fragment_current.endStationName
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.mCurrentTaskLayout
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd
|
||||
@@ -29,10 +27,15 @@ import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv
|
||||
* @date: 2023/7/24
|
||||
*/
|
||||
class TaxiNextTaskFragment : BaseFragment() {
|
||||
private val mData: MutableList<QueryCurrentTaskRespBean.Result> = ArrayList()
|
||||
companion object {
|
||||
const val TAG = "TaxiNextTaskFragment"
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
fun newInstance(): TaxiNextTaskFragment {
|
||||
val args = Bundle()
|
||||
val fragment = TaxiNextTaskFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
@@ -40,32 +43,30 @@ class TaxiNextTaskFragment : BaseFragment() {
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return "TaxiNextTaskFragment"
|
||||
return javaClass.simpleName
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
showNoOrderView()
|
||||
showNoTaskView()
|
||||
}
|
||||
|
||||
fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) {
|
||||
fun onTaskDataChanged(model: QueryCurrentTaskRespBean.Result?) {
|
||||
if (model?.order == null) {
|
||||
showNoOrderView()
|
||||
showNoTaskView()
|
||||
return
|
||||
}
|
||||
|
||||
if (model.taskType == TaskTypeEnum.VirtualTask.code) {
|
||||
val order = model.order
|
||||
updateOrderUI(order!!)
|
||||
|
||||
updateTaskUI(order!!)
|
||||
} else {
|
||||
showNoOrderView()
|
||||
showNoTaskView()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun updateOrderUI(order: OrderDetail) {
|
||||
showOrderView()
|
||||
private fun updateTaskUI(order: OrderDetail) {
|
||||
showTaskView()
|
||||
taskOtherInfo.visibility = View.GONE
|
||||
naviToStart.visibility = View.GONE
|
||||
naviToEnd.visibility = View.GONE
|
||||
@@ -77,7 +78,6 @@ class TaxiNextTaskFragment : BaseFragment() {
|
||||
HtmlCompat.FROM_HTML_MODE_LEGACY
|
||||
)
|
||||
|
||||
|
||||
order.orderStartSite?.let {
|
||||
startStationName.text = it.siteName
|
||||
}
|
||||
@@ -88,7 +88,7 @@ class TaxiNextTaskFragment : BaseFragment() {
|
||||
taskTypeTv.text = resources.getString(R.string.task_order)
|
||||
taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg, null)
|
||||
|
||||
updateOrderBottomBtn(
|
||||
updateTaskContainerBottomBtn(
|
||||
getString(R.string.waiting_server),
|
||||
Color.parseColor("#4DFFFFFF"),
|
||||
Color.parseColor("#4D1D5EF3"),
|
||||
@@ -96,7 +96,7 @@ class TaxiNextTaskFragment : BaseFragment() {
|
||||
)
|
||||
}
|
||||
|
||||
private fun updateOrderBottomBtn(
|
||||
private fun updateTaskContainerBottomBtn(
|
||||
txt: String?,
|
||||
txtColorId: Int,
|
||||
bgColorId: Int,
|
||||
@@ -110,33 +110,13 @@ class TaxiNextTaskFragment : BaseFragment() {
|
||||
taskClickBtn.isClickable = isClickable
|
||||
}
|
||||
|
||||
private fun showNoOrderView() {
|
||||
private fun showNoTaskView() {
|
||||
noTaskData.visibility = View.VISIBLE
|
||||
mCurrentTaskLayout.visibility = View.GONE
|
||||
}
|
||||
|
||||
private fun showOrderView() {
|
||||
private fun showTaskView() {
|
||||
noTaskData.visibility = View.GONE
|
||||
mCurrentTaskLayout.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
const val TAG = "TaxiNextTaskFragment"
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private var mTaxiFragment: TaxiFragment? = null
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
private var mActivity: Activity? = null
|
||||
fun newInstance(
|
||||
activity: Activity?,
|
||||
): TaxiNextTaskFragment {
|
||||
mActivity = activity
|
||||
val args = Bundle()
|
||||
val fragment = TaxiNextTaskFragment()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.mogo.och.taxi.ui
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.graphics.Color
|
||||
import android.graphics.Typeface
|
||||
import android.os.Bundle
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentPagerAdapter
|
||||
@@ -32,6 +32,8 @@ import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
* @desc: 司机端任务fragment 容器,展示了“进行中”和“待服务”的任务信息
|
||||
* 任务:可以理解为对应的是一个自动驾驶任务
|
||||
* 任务类型:演练任务 / 接驾任务 / 送驾任务
|
||||
* DriveToNearestStationTask: 一种特殊任务,人工驾驶去最近的站点任务。每次 开启接单 后后端都会返回离当前最近的站点,车辆需要
|
||||
* 开到此站点后才能进入无人化接单的整体流程
|
||||
* 订单:是面向C端小程序的一个概念,用户下单后产生的是一个订单,后端会将一个订单分解成 接驾任务和送驾任务 并派发到
|
||||
* 车端来执行
|
||||
* 任务和订单的对应:1.如果是一个演练任务,是后端自动生成的,没有和C端订单挂钩
|
||||
@@ -41,6 +43,10 @@ class TaxiTaskTabFragment : BaseFragment() {
|
||||
|
||||
companion object {
|
||||
const val TAG = "TaxiTaskTabFragment"
|
||||
const val TAB_POSITION_CURRENT = 0
|
||||
const val TAB_POSITION_NEXT = 1
|
||||
val mTabTitles = arrayOf("进行中", "待服务")
|
||||
|
||||
fun newInstance(): TaxiTaskTabFragment {
|
||||
val args = Bundle()
|
||||
val fragment = TaxiTaskTabFragment()
|
||||
@@ -49,45 +55,43 @@ class TaxiTaskTabFragment : BaseFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
private val mTabTitles = arrayOf("进行中", "待服务")
|
||||
private val mFragments: MutableList<Fragment> = ArrayList()
|
||||
private var currentTaskFragment: TaxiCurrentTaskFragment? = null
|
||||
private var nextTaskFragment: TaxiNextTaskFragment? = null
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.taxi_server_orders_panel
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return "TaxiTaskTabFragment"
|
||||
return this.javaClass.simpleName
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
initOrderTab()
|
||||
initTaskTab()
|
||||
}
|
||||
|
||||
private fun initOrderTab() {
|
||||
for (i in mTabTitles.indices) {
|
||||
private fun initTaskTab() {
|
||||
for (position in mTabTitles.indices) {
|
||||
val tab = module_och_taxi_tab.newTab()
|
||||
tab.view.setBackgroundColor(Color.parseColor("#00000000"))
|
||||
val tabView =
|
||||
View.inflate(activity, R.layout.taxi_tab_item_custom, null) as TextView
|
||||
tabView.text = mTabTitles[i]
|
||||
tabView.text = mTabTitles[position]
|
||||
tabView.height = AutoSizeUtils.dp2px(context, 120f)
|
||||
tab.customView = tabView
|
||||
|
||||
if (0 == i) {
|
||||
if (TAB_POSITION_CURRENT == position) {
|
||||
module_och_taxi_tab.addTab(tab, true)
|
||||
changeTabLayoutTabUI(tab, true)
|
||||
changeTabLayoutUI(tab, true)
|
||||
currentTaskFragment = TaxiCurrentTaskFragment.newInstance(
|
||||
parentFragment as TaxiFragment?
|
||||
)
|
||||
mFragments.add(currentTaskFragment!!)
|
||||
} else if (1 == i) {
|
||||
} else if (TAB_POSITION_NEXT == position) {
|
||||
module_och_taxi_tab.addTab(tab)
|
||||
changeTabLayoutTabUI(tab, false)
|
||||
nextTaskFragment = TaxiNextTaskFragment.newInstance(
|
||||
activity
|
||||
)
|
||||
changeTabLayoutUI(tab, false)
|
||||
nextTaskFragment = TaxiNextTaskFragment.newInstance()
|
||||
mFragments.add(nextTaskFragment!!)
|
||||
}
|
||||
}
|
||||
@@ -96,15 +100,16 @@ class TaxiTaskTabFragment : BaseFragment() {
|
||||
module_och_taxi_tab.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||
module_och_taxi_view_pager.currentItem = tab.position
|
||||
changeTabLayoutTabUI(tab, true)
|
||||
changeTabLayoutUI(tab, true)
|
||||
}
|
||||
|
||||
override fun onTabUnselected(tab: TabLayout.Tab) {
|
||||
changeTabLayoutTabUI(tab, false)
|
||||
changeTabLayoutUI(tab, false)
|
||||
}
|
||||
|
||||
override fun onTabReselected(tab: TabLayout.Tab) {}
|
||||
})
|
||||
|
||||
module_och_taxi_view_pager.addOnPageChangeListener(object : OnPageChangeListener {
|
||||
override fun onPageScrolled(
|
||||
position: Int,
|
||||
@@ -119,37 +124,40 @@ class TaxiTaskTabFragment : BaseFragment() {
|
||||
|
||||
override fun onPageScrollStateChanged(state: Int) {}
|
||||
})
|
||||
module_och_taxi_view_pager.adapter = OrdersFragmentAdapter(
|
||||
|
||||
module_och_taxi_view_pager.adapter = TaskTabFragmentAdapter(
|
||||
childFragmentManager,
|
||||
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
|
||||
)
|
||||
}
|
||||
|
||||
@SuppressLint("UseCompatLoadingForDrawables")
|
||||
private fun changeTabLayoutTabUI(tab: TabLayout.Tab, isSelected: Boolean) {
|
||||
private fun changeTabLayoutUI(tab: TabLayout.Tab, isSelected: Boolean) {
|
||||
val textView = tab.customView!!.findViewById<View>(R.id.tab_title) as TextView
|
||||
if (isSelected) {
|
||||
textView.background = activity?.getDrawable(R.drawable.taxi_driver_tab_item_bg)
|
||||
textView.background =
|
||||
ContextCompat.getDrawable(requireContext(), R.drawable.taxi_driver_tab_item_bg)
|
||||
textView.setTextSize(
|
||||
TypedValue.COMPLEX_UNIT_PX,
|
||||
AutoSizeUtils.dp2px(context, 40f).toFloat()
|
||||
)
|
||||
d(SceneConstant.M_TAXI + TAG, "SelectTv = " + textView.text)
|
||||
textView.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
|
||||
textView.setTextColor(Color.parseColor("#FFFFFF"))
|
||||
|
||||
d(SceneConstant.M_TAXI + TAG, "SelectTv = " + textView.text)
|
||||
} else {
|
||||
textView.background = null
|
||||
textView.setTextSize(
|
||||
TypedValue.COMPLEX_UNIT_PX,
|
||||
AutoSizeUtils.dp2px(getContext(), 36f).toFloat()
|
||||
AutoSizeUtils.dp2px(context, 36f).toFloat()
|
||||
)
|
||||
d(SceneConstant.M_TAXI + TAG, "unSelectTv = " + textView.text)
|
||||
textView.typeface = Typeface.defaultFromStyle(Typeface.NORMAL)
|
||||
textView.setTextColor(Color.parseColor("#CCD4F5"))
|
||||
|
||||
d(SceneConstant.M_TAXI + TAG, "unSelectTv = " + textView.text)
|
||||
}
|
||||
}
|
||||
|
||||
internal inner class OrdersFragmentAdapter(
|
||||
internal inner class TaskTabFragmentAdapter(
|
||||
fragmentManager: FragmentManager,
|
||||
behavior: Int
|
||||
) :
|
||||
@@ -175,31 +183,31 @@ class TaxiTaskTabFragment : BaseFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
fun onNaviToEndAMap(isShow: Boolean) {
|
||||
fun onNaviToEndStationByAMap(isShow: Boolean) {
|
||||
if (null == currentTaskFragment) return
|
||||
currentTaskFragment!!.onNaviToEndAmap(isShow)
|
||||
currentTaskFragment!!.onNaviToEndStationByAmap(isShow)
|
||||
}
|
||||
|
||||
fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) {
|
||||
fun onCurrentTaskTripInfoChanged(meters: Long, timeInSecond: Long) {
|
||||
if (null == currentTaskFragment) return
|
||||
currentTaskFragment!!.updateDistanceAndTime(meters, timeInSecond)
|
||||
currentTaskFragment!!.updateCurrentTaskTripInfo(meters, timeInSecond)
|
||||
}
|
||||
|
||||
fun onOperationStatusChanged() {
|
||||
fun onCarTakeOrderStatusChanged() {
|
||||
if (null == currentTaskFragment) return
|
||||
currentTaskFragment!!.onOperationStatusChanged()
|
||||
currentTaskFragment!!.onCarTakeOrderStatusChanged()
|
||||
}
|
||||
|
||||
fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) {
|
||||
fun onTaskDataChanged(result: QueryCurrentTaskRespBean.Result?) {
|
||||
if (null == nextTaskFragment) return
|
||||
if (model != null && model.taskType == TaskTypeEnum.VirtualTask.code
|
||||
&& model.order != null) {
|
||||
if (result != null && result.taskType == TaskTypeEnum.VirtualTask.code
|
||||
&& result.order != null
|
||||
) {
|
||||
VoiceNotice.showNotice("已为您提前接到下一订单,待完成当前任务后服务")
|
||||
wait_order_num.visibility = View.VISIBLE
|
||||
} else {
|
||||
wait_order_num.visibility = View.GONE
|
||||
}
|
||||
|
||||
nextTaskFragment!!.updateOrderChanged(model)
|
||||
nextTaskFragment!!.onTaskDataChanged(result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,4 +64,11 @@ object TaskUtils {
|
||||
}
|
||||
return HtmlCompat.fromHtml(strHtml13, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user