[6.0.0]taxi无人化界面处理

This commit is contained in:
wangmingjun
2023-08-01 19:23:47 +08:00
parent f42f18b8fa
commit e8da138457
9 changed files with 120 additions and 125 deletions

View File

@@ -1,8 +1,12 @@
package com.mogo.och.taxi.model
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.taxi.base.BaseViewModel
import com.mogo.och.taxi.base.IUiIntent
import com.mogo.och.taxi.bean.OrderQueryRespBean
import com.mogo.och.taxi.network.TaxiServiceManager
import com.mogo.och.taxi.ui.unmanned.TaskUiState
import com.mogo.och.taxi.ui.unmanned.UnmannedIntent
import com.mogo.och.taxi.ui.unmanned.UnmannedState
@@ -20,9 +24,23 @@ object TaxiUnmannedViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
override fun handleIntent(intent: IUiIntent) {
when(intent) {
UnmannedIntent.GetCurrentTask -> {
}
// UnmannedIntent.GetCurrentTask -> {
// TaxiServiceManager.changeOrderServing("",true,
// object : OchCommonServiceCallback<BaseData> {
// override fun onSuccess(data: BaseData?) {
// sendUiState {
// copy(
// taskUiState = TaskUiState.SUCCESS(data)
// )
// }
// }
//
// override fun onFail(code: Int, msg: String?) {
// TODO("Not yet implemented")
// }
//
// })
// }
is UnmannedIntent.GetNextTask -> {
}

View File

@@ -107,6 +107,14 @@ class TaxiBeingTaskFragment : BaseBindingFragment<UnmannedBeingOrderBinding>({
it.uiIntentFlow.collect { state ->
d(TAG,"uiIntentFlow: $state")
when(state){
is UnmannedIntent.GetNextTask -> {
}
is UnmannedIntent.GetVirtualStation -> {
}
else -> {}
}
}
}
@@ -122,6 +130,8 @@ class TaxiBeingTaskFragment : BaseBindingFragment<UnmannedBeingOrderBinding>({
}
is TaskUiState.SUCCESS -> {
// TODO: 页面刷新
// updateCurrentOrderStatusChanged(state.models)
}
}
}
@@ -181,12 +191,9 @@ class TaxiBeingTaskFragment : BaseBindingFragment<UnmannedBeingOrderBinding>({
|| TaxiOrderStatusEnum.ArriveAtStart.code == order.orderStatus
) {
val currentCale = DateTimeUtils.getCurrentDateTime()
val currentHM = DateTimeUtil.formatCalendarToString(currentCale, DateTimeUtil.HH_mm)
// val currentHM = DateTimeUtil.formatCalendarToString(currentCale, DateTimeUtil.HH_mm)
val currentDay =
DateTimeUtil.formatCalendarToString(currentCale, DateTimeUtil.yyyy_MM_dd)
val strHtml11 = ("<font color=\"#CAD6FF\">已于</font><br>"
+ "<b><font color=\"#FFFFFF\"><big><big>" + currentHM + "</big></big></font></b>"
+ "<font color=\"#CAD6FF\">" + " " + "到达乘客上车地点</font>")
binding.taskStatus.text = "送乘客至"
binding.endStationName.text = order.endSiteAddr
@@ -378,13 +385,9 @@ class TaxiBeingTaskFragment : BaseBindingFragment<UnmannedBeingOrderBinding>({
private fun startOrEndService() {
if (mCurrentOrder == null) return
if (TaxiOrderStatusEnum.ArriveAtStart.code == mCurrentOrder!!.orderStatus) { //到达乘客上车点,司机可跳过乘客屏认证
mViewModel?.let {
it.sendUiIntent(UnmannedIntent.JumpPassengerCheckDone)
}
mViewModel?.sendUiIntent(UnmannedIntent.JumpPassengerCheckDone)
} else if (TaxiOrderStatusEnum.ArriveAtEnd.code == mCurrentOrder!!.orderStatus) { //点击了完成服务,结束订单并更新订单信息
mViewModel?.let {
it.sendUiIntent(UnmannedIntent.JourneyCompleted)
}
mViewModel?.sendUiIntent(UnmannedIntent.JourneyCompleted)
} else if (TaxiOrderStatusEnum.OnTheWayToEnd.code == mCurrentOrder!!.orderStatus) { //前往目的地过程中可提前结束行程
//自驾中提示,接管后才能结束
if (getState()
@@ -407,9 +410,7 @@ class TaxiBeingTaskFragment : BaseBindingFragment<UnmannedBeingOrderBinding>({
.build(requireContext())
closeOrderDialog!!.setClickListener(object : OCHCommitDialog.ClickListener {
override fun confirm() {
mViewModel?.let {
it.sendUiIntent(UnmannedIntent.CloseOrderByDriver)
}
mViewModel?.sendUiIntent(UnmannedIntent.CloseOrderByDriver)
}
override fun cancel() {
@@ -835,7 +836,7 @@ class TaxiBeingTaskFragment : BaseBindingFragment<UnmannedBeingOrderBinding>({
* END
*/
companion object {
const val TAG = "OCHTaxiBeingServerd"
const val TAG = "TaxiBeingTaskFragment"
@SuppressLint("StaticFieldLeak")
private var mActivity: Activity? = null
@SuppressLint("StaticFieldLeak")

View File

@@ -21,7 +21,6 @@ import com.mogo.och.common.module.biz.provider.LoginService
import com.mogo.och.taxi.R
import com.mogo.och.taxi.base.BaseTaxiTabFragment
import com.mogo.och.taxi.bean.OrderQueryRespBean
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.model.TaxiModel
import com.mogo.och.taxi.network.LoginBusImpl
@@ -101,15 +100,6 @@ public class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
transaction.commitAllowingStateLoss()
}
fun showServerFragmentAndUpdate() {
val transaction: FragmentTransaction = childFragmentManager.beginTransaction()
if (serverOrdersFragmentWR == null || serverOrdersFragmentWR!!.get() == null) {
serverOrdersFragmentWR = WeakReference(TaxiServerOrdersFragment.newInstance())
transaction.add(R.id.fragment_container, serverOrdersFragmentWR!!.get()!!)
.show(serverOrdersFragmentWR!!.get()!!)
}
}
override fun createPresenter(): TaxiPresenter {
return TaxiPresenter(this)
}
@@ -186,7 +176,7 @@ public class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
fun onNaviToEnd(isAmap: Boolean, isShow: Boolean) {
if (isAmap) {
if (null == serverOrdersFragmentWR || serverOrdersFragmentWR!!.get() == null) return
serverOrdersFragmentWR!!.get()!!.onNaviToEndAmap(isShow)
serverOrdersFragmentWR!!.get()!!.onNaviToEndAMap(isShow)
} else if (isShow) { //使用rotting数据
showRottingToStationFragment(true)
} else {

View File

@@ -45,13 +45,11 @@ public class TaxiOrderCancelDialog extends AlertDialog implements View.OnClickLi
private ContentAdapter mContentAdapter;
private int mOrderStatus;//1预约单其他为即时单的状态 主要是控制乘客上车 乘客下车这几个选项的显示
private String[] mContentArrays;
private WeakReference<TaxiFragment> mOchTaxiFragmentWeak;
private String mOrderNo;
protected TaxiOrderCancelDialog(TaxiFragment fragment, Context context, String orderNo, int orderStatus) {
super(context,R.style.OrderCancelDialog);
mOrderNo = orderNo;
mOchTaxiFragmentWeak = new WeakReference<>(fragment);
this.mOrderStatus = orderStatus;
contextWeakReference = new WeakReference<>(context);
initReasonArray();
@@ -148,10 +146,12 @@ public class TaxiOrderCancelDialog extends AlertDialog implements View.OnClickLi
public void onClick(View v) {
if (v.getId() == R.id.order_cancel_commit_tv) {//bt commit
if (!TextUtils.isEmpty(mCurrentReason) && TaxiOrderCancelReasons.getType(mCurrentReason) != 0) {
if (1 == mOrderStatus){//预约
mOchTaxiFragmentWeak.get().cancelOrderById(mOrderNo, TaxiOrderCancelReasons.getType(mCurrentReason),mCurrentReason);
}else {//即时
mOchTaxiFragmentWeak.get().cancelCurOrder(TaxiOrderCancelReasons.getType(mCurrentReason),mCurrentReason);
if (1 == mOrderStatus){//
// mOchTaxiFragmentWeak.get().cancelOrderById(mOrderNo, TaxiOrderCancelReasons.getType(mCurrentReason),mCurrentReason);
//todo 取消还未执行的订
}else {//任务
//todo 取消正在执行的任务
// mOchTaxiFragmentWeak.get().cancelCurOrder(TaxiOrderCancelReasons.getType(mCurrentReason),mCurrentReason);
}
dismiss();
}else {

View File

@@ -2,12 +2,20 @@ package com.mogo.och.taxi.ui
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.os.Bundle
import com.mogo.eagle.core.utilcode.util.ToastUtils
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.och.taxi.R
import com.mogo.och.taxi.base.BaseBindingFragment
import com.mogo.och.taxi.bean.OrderQueryRespBean
import com.mogo.och.taxi.databinding.UnmannedBeingOrderBinding
import com.mogo.och.taxi.model.TaxiUnmannedViewModel
import com.mogo.och.taxi.ui.unmanned.OrderUiState
import com.mogo.och.taxi.ui.unmanned.TaskUiState
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.map
/**
* @author: wangmingjun
@@ -16,7 +24,10 @@ import com.mogo.och.taxi.databinding.UnmannedBeingOrderBinding
class TaxiReserveOrderFragment : BaseBindingFragment<UnmannedBeingOrderBinding>({
UnmannedBeingOrderBinding.inflate(it)
}) {
private val mDatas: MutableList<OrderQueryRespBean.Result> = ArrayList()
private val mData: MutableList<OrderQueryRespBean.Result> = ArrayList()
private var mViewModel: TaxiUnmannedViewModel? = null
override fun getLayoutId(): Int {
return R.layout.unmanned_being_order
}
@@ -25,26 +36,46 @@ class TaxiReserveOrderFragment : BaseBindingFragment<UnmannedBeingOrderBinding>(
return "TaxiReserveOrdersFragment"
}
override fun initViews() {
override fun onAttach(context: Context) {
super.onAttach(context)
mViewModel = ViewModelProvider(this)[TaxiUnmannedViewModel::class.java]
}
fun onOrderCancelDone(orderNo: String) {
ToastUtils.showShort("订单取消成功")
override fun initViews() {
initData()
}
private fun initData() {
//监听返回的数据状态
lifecycleScope.launchWhenStarted {
mViewModel?.let{
it.uiStateFlow.map {it.orderUiState}.collect {state ->
CallerLogger.d(TAG, "uiStateFlow: $state")
when(state){
is OrderUiState.INIT -> {
}
is OrderUiState.SUCCESS -> {
// TODO: 页面刷新
}
}
}
}
}
}
companion object {
const val TAG = "TaxiReserveOrderFragment"
@SuppressLint("StaticFieldLeak")
private var mTaxiFragment: TaxiFragment? = null
@SuppressLint("StaticFieldLeak")
private var mActivity: Activity? = null
fun newInstance(
activity: Activity?,
taxiFragment: TaxiFragment?
): TaxiReserveOrderFragment {
mActivity = activity
mTaxiFragment = taxiFragment
val args = Bundle()
val fragment = TaxiReserveOrderFragment()
fragment.arguments = args

View File

@@ -12,73 +12,70 @@ import androidx.annotation.RequiresApi
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.fragment.app.FragmentTransaction
import androidx.viewpager.widget.ViewPager
import androidx.viewpager.widget.ViewPager.OnPageChangeListener
import com.google.android.material.tabs.TabLayout
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.taxi.R
import com.mogo.och.taxi.base.BaseTaxiUIFragment
import com.mogo.och.taxi.base.BaseBindingFragment
import com.mogo.och.taxi.bean.OrderQueryRespBean
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean
import com.mogo.och.taxi.databinding.TaxiServerOrdersPanelBinding
import me.jessyan.autosize.utils.AutoSizeUtils
/**
* @author: wangmingjun
* @date: 2023/7/25
*/
class TaxiServerOrdersFragment : BaseTaxiUIFragment() {
private val mFragmentTransaction: FragmentTransaction? = null
private var mTaxiOrderTab: TabLayout? = null
private var mWaitOrderSum: TextView? = null
private var mTaxiOrderPager: ViewPager? = null
class TaxiServerOrdersFragment : BaseBindingFragment<TaxiServerOrdersPanelBinding>({
TaxiServerOrdersPanelBinding.inflate(it)
}) {
private val mTabTitles = arrayOf("进行中", "待服务")
private val fragments: MutableList<Fragment> = ArrayList()
private var beingServerdOrdersFragment: TaxiBeingTaskFragment? = null
private var beingServedOrdersFragment: TaxiBeingTaskFragment? = null
private var reserveOrdersFragment: TaxiReserveOrderFragment? = null
override fun getLayoutId(): Int {
return R.layout.taxi_server_orders_panel
}
override fun initViews(view: View) {
initOrderTab(view)
override fun getTagName(): String {
return "TaxiServerOrdersFragment"
}
private fun initOrderTab(view: View) {
mWaitOrderSum = view.findViewById<TextView>(R.id.wait_order_num)
mTaxiOrderTab = view.findViewById<TabLayout>(R.id.module_och_taxi_tab)
mTaxiOrderPager = view.findViewById<ViewPager>(R.id.module_och_taxi_view_pager)
override fun initViews() {
initOrderTab()
}
private fun initOrderTab() {
for (i in mTabTitles.indices) {
val tab = mTaxiOrderTab?.newTab()
tab?.view?.setBackgroundColor(Color.parseColor("#00000000"))
val tab = binding.moduleOchTaxiTab.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.height = AutoSizeUtils.dp2px(getContext(), 120f)
tabView.height = AutoSizeUtils.dp2px(context, 120f)
tab?.customView = tabView
if (0 == i) {
mTaxiOrderTab?.addTab(tab!!, true)
changeTabLayoutTabUI(tab!!, true)
beingServerdOrdersFragment = TaxiBeingTaskFragment.newInstance(
binding.moduleOchTaxiTab.addTab(tab, true)
changeTabLayoutTabUI(tab, true)
beingServedOrdersFragment = TaxiBeingTaskFragment.newInstance(
activity,
parentFragment as TaxiFragment?
)
fragments.add(beingServerdOrdersFragment!!)
fragments.add(beingServedOrdersFragment!!)
} else if (1 == i) {
mTaxiOrderTab?.addTab(tab!!)
changeTabLayoutTabUI(tab!!, false)
binding.moduleOchTaxiTab.addTab(tab)
changeTabLayoutTabUI(tab, false)
reserveOrdersFragment = TaxiReserveOrderFragment.newInstance(
activity,
parentFragment as TaxiFragment?
activity
)
fragments.add(reserveOrdersFragment!!)
}
}
d(SceneConstant.M_TAXI + TAG, "activity=" + getActivity())
mTaxiOrderTab?.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
d(SceneConstant.M_TAXI + TAG, "activity=$activity")
binding.moduleOchTaxiTab.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
mTaxiOrderPager?.currentItem = tab.position
binding.moduleOchTaxiViewPager.currentItem = tab.position
changeTabLayoutTabUI(tab, true)
}
@@ -88,7 +85,7 @@ class TaxiServerOrdersFragment : BaseTaxiUIFragment() {
override fun onTabReselected(tab: TabLayout.Tab) {}
})
mTaxiOrderPager?.addOnPageChangeListener(object : OnPageChangeListener {
binding.moduleOchTaxiViewPager.addOnPageChangeListener(object : OnPageChangeListener {
override fun onPageScrolled(
position: Int,
positionOffset: Float,
@@ -97,12 +94,12 @@ class TaxiServerOrdersFragment : BaseTaxiUIFragment() {
}
override fun onPageSelected(position: Int) {
mTaxiOrderTab?.getTabAt(position)!!.select()
binding.moduleOchTaxiTab.getTabAt(position)!!.select()
}
override fun onPageScrollStateChanged(state: Int) {}
})
mTaxiOrderPager?.adapter = OrdersFragmentAdapter(
binding.moduleOchTaxiViewPager.adapter = OrdersFragmentAdapter(
childFragmentManager,
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
)
@@ -160,53 +157,15 @@ class TaxiServerOrdersFragment : BaseTaxiUIFragment() {
@RequiresApi(api = Build.VERSION_CODES.P)
fun updateCurrentOrderStatusChanged(order: OrderQueryRespBean.Result?) {
if (beingServerdOrdersFragment != null) {
mTaxiOrderTab!!.getTabAt(0)!!.select()
beingServerdOrdersFragment!!.updateCurrentOrderStatusChanged(order)
if (beingServedOrdersFragment != null) {
binding.moduleOchTaxiTab.getTabAt(0)?.select()
beingServedOrdersFragment!!.updateCurrentOrderStatusChanged(order)
}
}
fun onOrdersWaitServiceChanged(waitServiceList: List<OrderQueryRespBean.Result>) {
// if (waitServiceList.isEmpty()) {
// mWaitOrderSum!!.visibility = View.GONE
// } else {
// mWaitOrderSum!!.text = waitServiceList.size.toString()
// mWaitOrderSum!!.visibility = View.VISIBLE
// }
// if (null == reserveOrdersFragment) return
// reserveOrdersFragment!!.onOrdersWaitServiceChanged(waitServiceList)
}
fun onOrderCancelDone(orderNo: String?) {
if (null == reserveOrdersFragment) return
reserveOrdersFragment!!.onOrderCancelDone(orderNo!!)
}
fun onCurrentOrderCancelDone() {
if (null == beingServerdOrdersFragment) return
beingServerdOrdersFragment!!.onCurrentOrderCancelDone()
}
@RequiresApi(Build.VERSION_CODES.N)
fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) {
if (null == beingServerdOrdersFragment) return
beingServerdOrdersFragment!!.updateDistanceAndTime(meters, timeInSecond)
}
@RequiresApi(Build.VERSION_CODES.N)
fun onCurrentOrderRouteInfoGot(routeInfo: OrderQueryRouteInfoRespBean.Result?) {
if (null == beingServerdOrdersFragment) return
beingServerdOrdersFragment!!.onCurrentOrderRouteInfoGot(routeInfo)
}
fun updateOrderBottomBtnUI() {
if (null == beingServerdOrdersFragment) return
beingServerdOrdersFragment!!.updateOrderBottomBtnUI()
}
fun onNaviToEndAmap(isShow: Boolean) {
if (null == beingServerdOrdersFragment) return
beingServerdOrdersFragment!!.onNaviToEndAmap(isShow)
fun onNaviToEndAMap(isShow: Boolean) {
if (null == beingServedOrdersFragment) return
beingServedOrdersFragment!!.onNaviToEndAmap(isShow)
}
companion object {

View File

@@ -19,7 +19,3 @@ sealed class OrderUiState{
object INIT : OrderUiState()
data class SUCCESS(val models: List<OrderDetail>) : OrderUiState()
}
sealed class OperationBtnUiState{
}

View File

@@ -4,12 +4,12 @@ project.android.productFlavors {
dimension "product"
manifestPlaceholders = [
CHANNEL_VALUE_HEAD: "TaxiUnmanned",
CHANNEL_VALUE_HEAD: "Taxi",
// Activity的朝向
SCREEN_ORIENTATION:"landscape",
]
// ①标识
buildConfigField 'String', 'APP_IDENTITY_MODE_HEAD', "\"TaxiUnmanned\""
buildConfigField 'String', 'APP_IDENTITY_MODE_HEAD', "\"Taxi\""
// ②连接的工控机IP地址
buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.1.102\""

View File

@@ -1,5 +1,5 @@
ext {
gradle_version = '3.6.1'
gradle_version = '4.2.2'
kotlin_version = '1.5.30'
plugin_version = '10.0.0_mogo'
hook_log_plugin_version = '1.7.2'