[fea]
[虚拟单手动到站]
This commit is contained in:
yangyakun
2025-02-10 19:08:22 +08:00
parent e40e7919eb
commit ba1f25bff9
8 changed files with 79 additions and 6 deletions

View File

@@ -5,6 +5,8 @@ import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.och.bridge.autopilot.location.OchLocationManager
import com.mogo.och.bridge.distance.TrajectoryAndDistanceManager
import com.mogo.och.common.module.biz.birdge.BridgeService
import com.mogo.och.common.module.constant.OchCommonConst
@@ -25,6 +27,17 @@ class BridgeProvider : BridgeService {
TrajectoryAndDistanceManager.setStationPoint(startLocation,endLocation,lineId)
}
override fun distance2Point(gcjLat: Double, gcjLon: Double): Float {
OchLocationManager.getGCJ02Location().let {
return CoordinateUtils.calculateLineDistance(
it.longitude,
it.latitude,
gcjLon,
gcjLat
)
}
}
override fun init(context: Context?) {
this.context = context

View File

@@ -23,4 +23,8 @@ object BridgeManager {
bridgeService?.setDistanceStation(startLocation,endLocation,lineId)
}
fun distance2Point(gcjLat: Double, gcjLon: Double):Float{
return bridgeService?.distance2Point(gcjLat,gcjLon)?:0f
}
}

View File

@@ -7,4 +7,7 @@ interface BridgeService : IProvider {
fun setDistanceStation(startLocation: MogoLocation?, endLocation: MogoLocation?, lineId: Long?)
fun distance2Point(gcjLat: Double, gcjLon: Double): Float
}

View File

@@ -56,14 +56,17 @@
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/common_dialog_content_new"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
tools:text="@string/cache_offline_map_content"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:gravity="center"
android:layout_marginStart="@dimen/dp_120"
android:layout_marginEnd="@dimen/dp_120"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/common_dialog_title_new" />
<androidx.appcompat.widget.AppCompatTextView

View File

@@ -193,6 +193,10 @@ object TaxiTaskModel {
return mCurrentTaskWithOrder
}
fun getCalibrationOrder(): StartServiceRespBean.Result? {
return mDriveToNearestStationTask
}
fun getCurrentOrderTrajectoryList(): MutableList<TrajectoryListRespBean.Result> {
return mTaskTrajectoryList
}

View File

@@ -19,7 +19,6 @@ import com.mogo.och.data.taxi.TaxiOrderStatusEnum
import com.mogo.och.bridge.autopilot.line.LineManager
import com.mogo.och.bridge.autopilot.location.OchLocationManager
import com.mogo.och.common.module.biz.birdge.BridgeManager
import com.mogo.och.common.module.biz.login.EnumOpenOrderStatus
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.utils.ToastUtilsOch
@@ -539,9 +538,26 @@ class ItineraryCurrentModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
TaxiTaskModel.mockArriveAtNearestStation()
}
fun arriveVirtualOrderView() {
val endSite = TaxiTaskModel.getCurrentTaskWithOrder()?.endSite
if(endSite!=null){
val distance = BridgeManager.distance2Point(endSite.gcjLat,endSite.gcjLon)
if(TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE <= distance){
viewCallback?.askArrivedEndStationView()
}else{
arriveVirtaulOrderImm()
}
}
}
fun arriveVirtaulOrderImm(){
TaxiTaskModel.mockArriveAtEndStation()
}
interface SwtichLineViewCallback {
fun onStartTaskFail()
fun askArrivedEndStationView()
}
}

View File

@@ -245,8 +245,14 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
viewModelSwitch?.switchSite()
}
actv_arriver_station.onClick {
// 标定单到站
viewModel?.arriveCalibrationSite()
if (TaxiTaskModel.getCalibrationOrder()!=null) {
// 标定单到站
viewModel?.arriveCalibrationSite()
}else{
if(TaxiTaskModel.getCurrentTaskWithOrder()!=null&&TaxiTaskModel.getCurrentTaskWithOrder()?.order==null){
viewModel?.arriveVirtualOrderView()
}
}
}
}
@@ -745,6 +751,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
aciv_task_type_exercise.setImageResource(R.drawable.taxi_task_exercise)
cancelTask.visibility = VISIBLE
actv_arriver_station.visibility = VISIBLE
startStationName.text = startSite.siteName
endStationName.text = endSite.siteName
@@ -990,4 +997,25 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
commonSlideViewStartServer.reset()
}
override fun askArrivedEndStationView() {
d(TAG,"closeOrderDialog")
val builder = CommonDialogStatus.Builder()
val closeOrderDialog = builder
.title(ResourcesUtils.getString(R.string.dialog_virtual_arrive_title))
.tips(ResourcesUtils.getString(R.string.dialog_virtual_arrive_content))
.confirmStr(ResourcesUtils.getString(R.string.dialog_order_close_confirm))
.cancelStr(ResourcesUtils.getString(R.string.dialog_order_close_cancel))
.build(context)
closeOrderDialog.setClickListener(object : CommonDialogStatus.ClickListener {
override fun confirm() {
viewModel?.arriveVirtaulOrderImm()
}
override fun cancel() {
closeOrderDialog.dismiss()
}
})
closeOrderDialog.show()
}
}

View File

@@ -29,6 +29,8 @@
<string name="dialog_order_close_confirm">确认</string>
<string name="dialog_order_close_cancel">取消</string>
<string name="dialog_virtual_arrive_title">是否手动到站?</string>
<string name="dialog_virtual_arrive_content">检测到当前位置距离站点较远,请确认是否手动触发到站?</string>
<string name="module_och_taxi_auto_disable_tip">自动驾驶状态为0不可用</string>