diff --git a/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java b/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java index e4ac8afcd6..29d93ff0ea 100644 --- a/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/bus/driver/src/jinlvvan/java/com/mogo/och/bus/model/OrderModel.java @@ -62,7 +62,7 @@ import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.manager.distancemamager.ITrajectoryListener; import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index a500888d16..912d062d9d 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -31,7 +31,7 @@ import com.mogo.och.bus.util.BusTrajectoryManager; import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; import com.mogo.och.common.module.biz.callback.ILoginCallback; import com.mogo.och.common.module.biz.constant.LoginStatusManager; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.voice.VoiceNotice; import java.util.ArrayList; diff --git a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index 0348fab89c..e197de6b11 100644 --- a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -16,7 +16,6 @@ import com.magic.mogo.och.charter.manager.CharterAnalyticsManager import com.magic.mogo.och.charter.manager.CharterTrajectoryManager import com.magic.mogo.och.charter.net.DriverM1ServiceManager import com.mogo.aicloud.services.socket.IMogoOnMessageListener -import com.mogo.commons.AbsMogoApplication import com.mogo.commons.module.intent.IMogoIntentListener import com.mogo.commons.module.intent.IntentManager import com.mogo.commons.voice.AIAssist @@ -56,14 +55,10 @@ import com.mogo.och.common.module.manager.CharterSendTripInfoManager import com.mogo.och.common.module.manager.CharterSendTripInfoManager.ARRIVE_STATION import com.mogo.och.common.module.manager.CharterSendTripInfoManager.END_TRIP import com.mogo.och.common.module.manager.CharterSendTripInfoManager.START_TRIP -import com.mogo.och.common.module.manager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager import com.mogo.och.common.module.utils.* import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.data.bean.* -import io.reactivex.exceptions.UndeliverableException -import io.reactivex.functions.Consumer -import io.reactivex.plugins.RxJavaPlugins -import java.io.IOException /** * @author: wangmingjun diff --git a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt index 9350749c85..9b1a7c84b2 100644 --- a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt +++ b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt @@ -22,7 +22,7 @@ import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean import com.mogo.och.common.module.biz.callback.ILoginCallback import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.OPERATION_ROAD_SIDE_TYPE import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin -import com.mogo.och.common.module.manager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager import com.mogo.och.common.module.manager.StopSideStatusManager import com.mogo.och.common.module.utils.DateTimeUtil import mogo.telematics.pad.MessagePad diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt index ed21b9ba9d..692b642f2b 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt @@ -41,7 +41,7 @@ import com.mogo.och.common.module.biz.constant.TaxiLoginStatusEnum import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.manager.CharterSendTripInfoManager import com.mogo.och.common.module.manager.CharterSendTripInfoManager.LEAVE_STATION -import com.mogo.och.common.module.manager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.PinYinUtil @@ -964,7 +964,7 @@ object CharterPassengerModel { // 清理轨迹 cleanRoutePoints() // 到站结束自驾 - CallerAutoPilotControlManager.cancelAutoPilot() + CallerAutoPilotControlManager.cancelAutoPilot4Passenger() // 结束路距计算 到达目的站点 endCalculateDistanceLoop() // 到站置距离位0 diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/presenter/BusPassengerPresenter.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/presenter/BusPassengerPresenter.kt index acfac46059..50f6138ea2 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/presenter/BusPassengerPresenter.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/presenter/BusPassengerPresenter.kt @@ -32,7 +32,7 @@ import com.mogo.och.charter.passenger.ui.MainFragment import com.mogo.och.charter.passenger.ui.overmapview.MakerWithSiteName import com.mogo.och.charter.passenger.ui.overmapview.MakerWithSiteNamewithCheck import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.manager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager import com.mogo.och.common.module.manager.StopSideStatusManager import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt index fe0e21da28..e110fa20ec 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt @@ -25,5 +25,8 @@ class OchCommonConst { const val LOGINSERVICE = "/ochbiz/common/login" const val BUSINESS_STRING = 100 + + // 自动驾驶自动规划的最大距离 + const val AUTOMATIC_PLANNING_MAX_DISTANCE = 15 } } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java similarity index 92% rename from OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java index 0c8b505082..bb7491b45d 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/autopilotmanager/OCHAdasAbilityManager.java @@ -1,4 +1,4 @@ -package com.mogo.och.common.module.manager; +package com.mogo.och.common.module.manager.autopilotmanager; import android.content.Context; @@ -59,8 +59,11 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo return "未知异常"; }else { StringBuilder stringBuilder = new StringBuilder(); - for (UnableAutopilotReason unableAutopilotReason : unableAutopilotReasons) { - stringBuilder.append(unableAutopilotReason.toString()).append("\n"); + for (int i = 0; i < unableAutopilotReasons.size(); i++) { + stringBuilder.append(unableAutopilotReasons.get(i)); + if(i = + CoordinateCalculateRouteUtil.getNearestPointInfo( + preCarLocationIndexInTrajectory, + mRoutePoints!!.size - 1, + mRoutePoints!!, + currentPoint, + 2 + ) + if(carLocationInfo.first<=OchCommonConst.AUTOMATIC_PLANNING_MAX_DISTANCE){ + return ""// 可以启动自驾 + }else{ + mRoutePoints?.let { + // 判断距离线段的距离 垂足的距离 + val nextPoint:MogoLocation + val prePoint:MogoLocation + if(carLocationInfo.second==true){ + if(carLocationInfo.first>0){ + nextPoint = it[carLocationInfo.first] + prePoint = it[carLocationInfo.first-1] + } else { + // 距离第一个点大于15m 过远 + return "距离第一个轨迹点超过15m:${carLocationInfo.first}米" + } + }else{ + if (carLocationInfo.first + 1 < it.size) { + nextPoint = it[carLocationInfo.first + 1] + prePoint = it[carLocationInfo.first] + }else{ + nextPoint = it[carLocationInfo.first ] + prePoint = it[carLocationInfo.first-1] + } + } + val pointToLine = LocationUtils.pointToLine( + prePoint.longitude, + prePoint.latitude, + nextPoint.longitude, + nextPoint.latitude, + currentPoint.longitude, + currentPoint.latitude + ) + if(pointToLine<=OchCommonConst.AUTOMATIC_PLANNING_MAX_DISTANCE){ + return "" + }else{ + return "距离轨迹线的距离大于15m,无法启动自驾" + } + } + } + } + } + return "未能计算出车辆距离轨迹或站点的距离" + } + } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java index 8374af2924..e081d76001 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java @@ -150,4 +150,21 @@ public class DateTimeUtil { return stringBuffer.toString(); } + + public static String second2MMSS(Long second) { + if (second == null || second < 0) { + return "00:00"; + } + long m = (long) Math.floor((second % 3600) / 60.0);// 向上取整 + long s = second % 60; + StringBuilder stringBuffer = new StringBuilder(); + if (m > 0) { + stringBuffer.append(m < 10 ? ("0" + m) : m).append(":"); + }else { + stringBuffer.append("00:"); + } + stringBuffer.append(s < 10 ? ("0" + s) : s); + return stringBuffer.toString(); + + } } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index 58bf85296e..59562c4738 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -69,7 +69,7 @@ import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.DateTimeUtil; import com.mogo.och.common.module.utils.NumberFormatUtil; diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index d7e93dd771..057d2948b9 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -31,9 +31,8 @@ import com.mogo.och.bus.util.BusTrajectoryManager; import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; import com.mogo.och.common.module.biz.callback.ILoginCallback; import com.mogo.och.common.module.biz.constant.LoginStatusManager; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.voice.VoiceNotice; -import com.mogo.och.data.manager.cache.CacheDataManager; import org.jetbrains.annotations.NotNull; diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java index 8a455a177d..91673ddac4 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java @@ -1,9 +1,6 @@ package com.mogo.och.sweepercloud.fragment; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER; - import android.os.Bundle; -import android.os.Parcelable; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; @@ -16,7 +13,6 @@ import androidx.constraintlayout.widget.Group; import androidx.fragment.app.FragmentTransaction; import com.amap.api.maps.model.LatLng; -import com.elegant.network.utils.GsonUtil; import com.google.protobuf.TextFormat; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.IView; @@ -33,7 +29,6 @@ import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView; import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView; import com.mogo.eagle.core.function.view.MapBizView; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener; import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; @@ -42,9 +37,8 @@ import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.listener.MogoMapListenerHandler; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.VisualAngleMode; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; -import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.sweepercloud.R; import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean; import com.mogo.och.sweepercloud.callback.ISweeperTaskDataToFragmentCallback; diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java index 33d42c9a6d..d28a75a76f 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java @@ -29,7 +29,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCleanSyste import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCloudTaskListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.NumberFormatUtil; import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean; diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java index c454c5e66f..ef59d0863f 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java @@ -6,7 +6,7 @@ import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCleanSystemListenerManager; import com.mogo.eagle.core.utilcode.util.ThreadUtils; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean; import com.mogo.och.sweepercloud.callback.ISweeperControllerStatusCallback; import com.mogo.och.sweepercloud.callback.ISweeperCloudTaskCallback; diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java index 1811d9923c..08006c5490 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperTaskModel.java @@ -33,7 +33,7 @@ import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManag import com.mogo.och.common.module.biz.common.socketmessage.data.OCHOperationalMessage; import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.NumberFormatUtil; import com.mogo.och.common.module.utils.PinYinUtil; diff --git a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java index 723f8619b6..1a2bf393d3 100644 --- a/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java +++ b/OCH/sweeper/sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java @@ -20,7 +20,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCleanSystemListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.ThreadUtils; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.NumberFormatUtil; import com.mogo.och.sweeper.bean.SweeperMainTaskBean; diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index b47e691371..e641b10b75 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -49,7 +49,7 @@ import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.manager.distancemamager.IDistanceListener; import com.mogo.och.common.module.manager.distancemamager.ITrajectoryListener; import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager; diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index 18db1efb9f..112190771e 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -19,7 +19,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; import com.mogo.och.common.module.biz.callback.ILoginCallback; import com.mogo.och.common.module.biz.constant.LoginStatusManager; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.common.module.voice.VoiceNotice; import com.mogo.och.taxi.bean.OrderQueryRespBean; import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean; @@ -37,8 +37,6 @@ import org.jetbrains.annotations.NotNull; import java.util.List; -import mogo.telematics.pad.MessagePad; - /** * @author congtaowang * @since 2021/1/18 diff --git a/OCH/taxi/driver/src/main/res/layout/taxi_rotting_navi_view.xml b/OCH/taxi/driver/src/main/res/layout/taxi_rotting_navi_view.xml index 0946417950..2afe4b0610 100644 --- a/OCH/taxi/driver/src/main/res/layout/taxi_rotting_navi_view.xml +++ b/OCH/taxi/driver/src/main/res/layout/taxi_rotting_navi_view.xml @@ -8,7 +8,7 @@ app:cardUseCompatPadding="true" app:cardPreventCornerOverlap="false" app:cardBackgroundColor="@android:color/transparent"> - diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt index acf69ba1c8..43721325ec 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt @@ -12,7 +12,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.manager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager import com.mogo.och.common.module.utils.PinYinUtil import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index 0b9acd515d..0527f0798c 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -16,13 +16,12 @@ 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.e import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P -import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.callback.OchAdasStartFailureCallback import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager -import com.mogo.och.common.module.manager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager import com.mogo.och.common.module.manager.distancemamager.IDistanceListener import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager import com.mogo.och.common.module.manager.loopmanager.BizLoopManager @@ -30,7 +29,6 @@ import com.mogo.och.common.module.manager.loopmanager.LoopInfo import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt index 11d638c265..96c060d20b 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt @@ -7,7 +7,7 @@ import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.och.common.module.manager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt index be0509fefd..3f705b6cc8 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/TaxiDriverCarServiceBean.kt @@ -20,5 +20,6 @@ data class UnmannedLogoutReqBean(var sn: String, var loc: GcjLatLon?) data class StartServiceReqBean(var sn: String, var gcjLat: Double, var gcjLon: Double) data class StartServiceRespBean(var data: Result?): BaseData(){ - data class Result(var siteId: Long,var siteName: String,var gcjLat: Double, var gcjLon: Double) + data class Result(var siteId: Long,var siteName: String,var gcjLat: Double, var gcjLon: Double, + var wgs84Lon: Double, var wgs84Lat: Double ) } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt index 14fcfcb8dc..59992d55aa 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/callback/ITaxiTaskWithOrderCallback.kt @@ -12,4 +12,6 @@ interface ITaxiTaskWithOrderCallback { fun onOrderTotalMileAndDurationChanged(mileage: Float, duration: Int) fun onOrderJourneyCompleted() fun onStartAutopilot() + + fun onStartPrepareTask120s(isStart: Boolean) } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java index 17b3fdc1e1..30857c7016 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java @@ -12,7 +12,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; import com.mogo.och.common.module.biz.callback.ILoginCallback; -import com.mogo.och.common.module.manager.OCHAdasAbilityManager; +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager; import com.mogo.och.taxi.callback.ITaxiADASStatusCallback; import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback; import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback; diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt index fd8669a978..af2fac92ce 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/debug/DebugView.kt @@ -4,13 +4,20 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.text.SpannableString +import android.text.Spanned +import android.text.method.ScrollingMovementMethod +import android.text.style.ForegroundColorSpan import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import android.widget.LinearLayout +import android.widget.TextView import androidx.localbroadcastmanager.content.LocalBroadcastManager +import com.mogo.eagle.core.function.main.MainMoGoApplication import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean @@ -28,6 +35,7 @@ import kotlinx.android.synthetic.main.taxi_debug_order.view.currentOrderStopInfo import kotlinx.android.synthetic.main.taxi_debug_order.view.currentOrderTrajectoryInfo import kotlinx.android.synthetic.main.taxi_debug_order.view.currentStatus import kotlinx.android.synthetic.main.taxi_debug_order.view.currentTaskType +import kotlinx.android.synthetic.main.taxi_debug_order.view.debugLogHistoryTextView import kotlinx.android.synthetic.main.taxi_debug_order.view.orderEndSiteInfo import kotlinx.android.synthetic.main.taxi_debug_order.view.orderNo import kotlinx.android.synthetic.main.taxi_debug_order.view.orderPreLoadLines @@ -36,16 +44,54 @@ import kotlinx.android.synthetic.main.taxi_debug_order.view.orderStatus import kotlinx.android.synthetic.main.taxi_debug_order.view.taskEndSite import kotlinx.android.synthetic.main.taxi_debug_order.view.taskStartSite + public class DebugView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0, - defStyleRes: Int = 0 + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0 ) : LinearLayout(context, attrs, defStyleAttr, defStyleRes), ITaxiTaskWithOrderCallback { companion object { const val TAG = "DebugView" const val BROADCAST_ACTION = "com.mogo.och.driver.debugview.show" const val BROADCAST_DATA_SHOW = "isShow" + + private var logHistoryTextView: TextView? = null + fun printInfoMsg(msg: String) { + printMsg("Info $msg", MainMoGoApplication.getApp().getColor(R.color.background_info)) + } + + fun printWarnMsg(msg: String) { + printMsg("Warn $msg", MainMoGoApplication.getApp().getColor(R.color.background_warn)) + } + + fun printErrorMsg(msg: String) { + printMsg("Error $msg", MainMoGoApplication.getApp().getColor(R.color.background_error)) + } + + private fun printMsg(msg: String, textColor: Int) { + logHistoryTextView?.also { + val msg = "${currentDateTimeString()} $msg" + val spannableMsg = SpannableString(msg) + + spannableMsg.setSpan( + ForegroundColorSpan(textColor), 0, msg.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + UiThreadHandler.post({ + it.append("\n") + it.append(spannableMsg) + + val offset: Int = it.lineCount * it.lineHeight + if (offset > it.height) { + it.scrollTo(0, offset - it.height) + } + }, UiThreadHandler.MODE.QUEUE) + } + } + + private fun currentDateTimeString(): String { + return DateTimeUtil.formatCalendarToString( + DateTimeUtil.formatLongToCalendar(System.currentTimeMillis()), + DateTimeUtil.yyyy_MM_dd_HH_mm_ss + ) + } } private val broadcastReceiver = object : BroadcastReceiver() { @@ -59,9 +105,10 @@ public class DebugView @JvmOverloads constructor( init { initBroadcastReceiver() - LayoutInflater.from(context) - .inflate(R.layout.taxi_debug_order, this, true) + LayoutInflater.from(context).inflate(R.layout.taxi_debug_order, this, true) + debugLogHistoryTextView.setMovementMethod(ScrollingMovementMethod.getInstance()) visibility = GONE + logHistoryTextView = debugLogHistoryTextView } private fun initBroadcastReceiver() { @@ -71,11 +118,8 @@ public class DebugView @JvmOverloads constructor( } fun toggleOrderDebugView() { - visibility = - if (visibility == View.VISIBLE) - View.GONE - else - View.VISIBLE + visibility = if (visibility == View.VISIBLE) View.GONE + else View.VISIBLE val data = TaxiTaskModel.getCurrentTaskWithOrder() initViewByData(data) } @@ -100,17 +144,13 @@ public class DebugView @JvmOverloads constructor( private fun initViewByData(data: QueryCurrentTaskRespBean.Result?) { val curContrail = TaxiTaskModel.getCurrentTaskTrajectory() - currentDataTimestamps.text = "【当前数据返回时间】${ - DateTimeUtil.formatCalendarToString( - DateTimeUtil.formatLongToCalendar(System.currentTimeMillis()), - DateTimeUtil.yyyy_MM_dd_HH_mm_ss - ) - }" + currentDataTimestamps.text = "【当前数据返回时间】${currentDateTimeString()}" currentCarStatus.text = - "【当前车辆状态】${data?.servingStatus} / ${if (data?.servingStatus == 1) "开始接单" else "暂停接单"}" - currentTaskType.text = "【当前任务类型】${data?.taskType} / ${TaskTypeEnum.valueOf(data?.taskType ?: -1)?.name}" + "【当前车辆状态】${data?.servingStatus} --> ${if (data?.servingStatus == 1) "开始接单" else "暂停接单"}" + currentTaskType.text = + "【当前任务类型】${data?.taskType} --> ${TaskTypeEnum.valueOf(data?.taskType ?: -1)?.name}" currentStatus.text = - "【当前任务状态】${data?.currentStatus} / ${TaskStatusEnum.valueOf(data?.currentStatus ?: -1)?.name}" + "【当前任务状态】${data?.currentStatus} --> ${TaskStatusEnum.valueOf(data?.currentStatus ?: -1)?.name}" currentLineId.text = "【当前任务lineId】 ${data?.lineId}" taskStartSite.text = "【当前任务起点】${data?.startSite?.siteName} siteId=${data?.startSite?.siteId}" @@ -119,7 +159,7 @@ public class DebugView @JvmOverloads constructor( currentOrder.text = "【订单信息】${if (data?.order == null) "null" else "不为空"}" orderNo.text = "【订单编号】${data?.order?.orderNo}" orderStatus.text = - "【订单状态】${data?.order?.orderStatus} / ${TaxiOrderStatusEnum.valueOf(data?.order?.orderStatus ?: -1)?.name}" + "【订单状态】${data?.order?.orderStatus} --> ${TaxiOrderStatusEnum.valueOf(data?.order?.orderStatus ?: -1)?.name}" orderStartSiteInfo.text = "【订单起点】${data?.order?.orderStartSite?.siteName} siteId=${data?.order?.orderStartSite?.siteId}" orderEndSiteInfo.text = @@ -157,4 +197,8 @@ public class DebugView @JvmOverloads constructor( override fun onStartAutopilot() { } + + override fun onStartPrepareTask120s() { + + } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt index 5ce90e3d41..a80e2adcbf 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaskUiState.kt @@ -1,4 +1,4 @@ -package com.mogo.och.taxi.ui.unmanned +package com.mogo.och.taxi.ui.task import com.mogo.och.taxi.base.IUiState import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean @@ -24,4 +24,6 @@ sealed class TaskWithOrderUIState { TaskWithOrderUIState() data class UpdateTaskTripInfo(val mileage: Float, val duration: Int) : TaskWithOrderUIState() + + data class UpdatePrepareTaskDelay120S(val isStart: Boolean) : TaskWithOrderUIState() } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt index 5cbdab749e..9af8999448 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt @@ -4,6 +4,8 @@ import android.annotation.SuppressLint import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.os.Bundle +import android.os.CountDownTimer +import android.text.TextUtils import android.view.View import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider @@ -24,6 +26,8 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.map.ICommonNaviChangedCallback +import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.common.module.wigets.OCHCommitDialog import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.OrderDetail @@ -34,9 +38,9 @@ import com.mogo.och.taxi.constant.TaskTypeEnum import com.mogo.och.taxi.constant.TaxiOrderStatusEnum import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_END_MAP_MAKER import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_START_MAP_MAKER +import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TIMER_PREPARE_TASK_INTERVAL_120S import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_ORDER import com.mogo.och.taxi.ui.base.TaxiFragment -import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState import com.mogo.och.taxi.utils.MapMakerManager import com.mogo.och.taxi.utils.TaskUtils import kotlinx.android.synthetic.main.task_fragment_current.cancelOrder @@ -47,6 +51,7 @@ import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd import kotlinx.android.synthetic.main.task_fragment_current.naviToStart import kotlinx.android.synthetic.main.task_fragment_current.noTaskData import kotlinx.android.synthetic.main.task_fragment_current.orderPhoneAndNum +import kotlinx.android.synthetic.main.task_fragment_current.pathwayPoint import kotlinx.android.synthetic.main.task_fragment_current.startPoint import kotlinx.android.synthetic.main.task_fragment_current.startStationName import kotlinx.android.synthetic.main.task_fragment_current.taskClickBtn @@ -54,6 +59,7 @@ import kotlinx.android.synthetic.main.task_fragment_current.taskOtherInfo import kotlinx.android.synthetic.main.task_fragment_current.taskStatus import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv import kotlinx.android.synthetic.main.taxi_no_data_common_view.noOrderDataTv +import kotlinx.android.synthetic.main.taxi_no_data_common_view.prepareTaskCountdownTv import kotlinx.coroutines.flow.map /** @@ -65,6 +71,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), private lateinit var mViewModel: TaxiCurrentTaskViewModel + private var mPrepareTasCountDownTimer: CountDownTimer? = null + companion object { const val TAG = M_TAXI + "TaxiCurrentTaskFragment" private var mTaxiFragment: TaxiFragment? = null @@ -157,6 +165,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), if (taskAndOrderUiState.driveToNearestStationTask != null) { updateViewByDriveToNearestStationTask(taskAndOrderUiState.driveToNearestStationTask) } else { + updatePrepareTaskDelay120SUI(false) initContainerView(false) removeAllMapMarker() } @@ -181,11 +190,51 @@ class TaxiCurrentTaskFragment : BaseFragment(), taskAndOrderUiState.duration ) } + + is TaskWithOrderUIState.UpdatePrepareTaskDelay120S -> { + updatePrepareTaskDelay120SUI(taskAndOrderUiState.isStart) + } } } } } + /** + * 更新120s倒计时 + */ + private fun updatePrepareTaskDelay120SUI(isStart: Boolean) { + + if (!isStart){ + prepareTaskCountdownTv.visibility = View.GONE + mPrepareTasCountDownTimer?.cancel() + mPrepareTasCountDownTimer = null + return + } + + prepareTaskCountdownTv.visibility = View.VISIBLE + mPrepareTasCountDownTimer = object : CountDownTimer(TIMER_PREPARE_TASK_INTERVAL_120S, 1000L) {// 5倒计时后开启自驾 + + @SuppressLint("SetTextI18n") + override fun onTick(millisUntilFinished: Long) { + // 倒计时 + UiThreadHandler.post { + prepareTaskCountdownTv.text = + "距离任务获取还有 ${DateTimeUtil.second2MMSS(millisUntilFinished/1000)}" + } + } + + override fun onFinish() { + //倒计时结束了... + UiThreadHandler.post { + prepareTaskCountdownTv.visibility = View.GONE + } + mPrepareTasCountDownTimer?.cancel() + } + } + + mPrepareTasCountDownTimer?.start() + } + private fun updateViewByDriveToNearestStationTask(driveToNearestStationTask: StartServiceRespBean.Result?) { if (driveToNearestStationTask == null) return initContainerView(true) @@ -200,6 +249,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), naviToStart.visibility = View.GONE naviToEnd.visibility = View.VISIBLE taskOtherInfo.visibility = View.VISIBLE + pathwayPoint.visibility = View.GONE // 更新任务状态,起点,终点 taskStatus.text = resources.getString(R.string.task_start_to_virtual_site) @@ -207,6 +257,14 @@ class TaxiCurrentTaskFragment : BaseFragment(), endStationName.text = driveToNearestStationTask.siteName updateStartAndEndStationPointByStatus(true) + setOrRemoveMapMaker( + true, + TAXI_END_MAP_MAKER, + driveToNearestStationTask.wgs84Lat, + driveToNearestStationTask.wgs84Lon, + R.raw.end_marker + ) + // 使用高德获取导航数据 startNaviToStation( false, @@ -296,6 +354,8 @@ class TaxiCurrentTaskFragment : BaseFragment(), TaskTypeEnum.None.code -> { if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) { handleOrderView(order) + updateOrderUI(order) + VoiceNotice.showNotice("已为您接到订单") } } @@ -312,19 +372,12 @@ class TaxiCurrentTaskFragment : BaseFragment(), if (currentStatus >= TaskStatusEnum.StartTask.code) View.VISIBLE else View.GONE taskOtherInfo.visibility = if (currentStatus == TaskStatusEnum.GetTask.code) View.GONE else View.VISIBLE - } - TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 接驾任务 或 送驾任务 - order.also { - handleOrderView(it) - } - } - } + pathwayPoint.visibility = View.GONE - when (taskType) { - TaskTypeEnum.VirtualTask.code -> {// 演练任务 if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) { updateOrderUI(order) + VoiceNotice.showNotice("已为您接到订单") return } if (startSite == null || endSite == null) return @@ -335,24 +388,30 @@ class TaxiCurrentTaskFragment : BaseFragment(), taskTypeTv.text = resources.getString(R.string.task_exercise) startStationName.text = startSite.siteName endStationName.text = endSite.siteName + updatePrepareTaskDelay120SUI(false) updateStartAndEndStationPointByStatus(true) } - TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 送驾/接驾任务任务 - if (order == null) return - updateOrderUI(order) - } - - TaskTypeEnum.None.code -> { - if (order != null) { - updateOrderUI(order) + TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 接驾任务 或 送驾任务 + order?.also { + updatePathwayPoint(taskType,endSite?.siteName) + handleOrderView(it) + updateOrderUI(it) } } } + updateMapMarkers(taskAndOrder) updateRemainDistanceAndTime(false) } + private fun updatePathwayPoint(taskType: Int,endSiteName: String?) { + if (TextUtils.isEmpty(endSiteName)) return + pathwayPoint.visibility = if (taskType == TaskTypeEnum.ToOrderStartTask.code) + View.VISIBLE else View.GONE + pathwayPoint.text = "途径: $endSiteName" + } + private fun updateMapMarkers(taskAndOrder: QueryCurrentTaskRespBean.Result?) { if (taskAndOrder != null && taskAndOrder!!.startSite != null && taskAndOrder!!.endSite != null @@ -418,6 +477,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), } private fun updateOrderUI(order: OrderDetail) { + updatePrepareTaskDelay120SUI(false) taskTypeTv.text = resources.getString(R.string.task_order) taskTypeTv.background = ContextCompat.getDrawable( @@ -546,6 +606,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), override fun onDestroyView() { AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() + updatePrepareTaskDelay120SUI(false) super.onDestroyView() } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt index 51cee6c1a1..5a6f2de027 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt @@ -24,9 +24,7 @@ import com.mogo.och.taxi.constant.TaskStatusEnum import com.mogo.och.taxi.constant.TaxiOrderStatusEnum import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager -import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager.cancelOrder -import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState -import com.mogo.och.taxi.ui.unmanned.UnmannedState +import com.mogo.och.taxi.ui.debug.DebugView import com.mogo.och.taxi.utils.TaxiTrajectoryManager /** @@ -82,8 +80,10 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), fun startOrStopCurrentTaskWithOrderLoop(start: Boolean) { d(TAG, "startOrStopCurrentTaskWithOrderLoop(): isStart=$start") if (start) { + DebugView.printInfoMsg("[查询TaskWithOrder信息] start loop") TaxiTaskModel.startQueryCurrentTaskWithOrderLoop() } else { + DebugView.printInfoMsg("[查询TaskWithOrder信息] stop loop") TaxiTaskModel.stopQueryCurrentTaskWithOrderLoop() } } @@ -91,21 +91,24 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), private fun cancelOrder(cancelType: Int) { val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() currentTaskWithOrder?.order?.also { - TaxiTaskModel.cancelOrder(it.orderNo,cancelType) + TaxiTaskModel.cancelOrder(it.orderNo, cancelType) } } private fun jumpPassengerCheck() { + DebugView.printInfoMsg("[开始服务] 准备发送请求") val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() currentTaskWithOrder?.order?.also { TaxiTaskWithOrderServiceManager.jumpPassengerCheck(AbsMogoApplication.getApp().applicationContext, it.orderNo, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { + DebugView.printInfoMsg("[开始服务] 请求success") d(TAG, "jumpPassengerCheck onSuccess:") } override fun onFail(code: Int, msg: String?) { + DebugView.printInfoMsg("[开始服务] 请求fail, code=$code, msg=$msg") d(TAG, "jumpPassengerCheck onFail: code=$code, msg=$msg") } }) @@ -113,16 +116,19 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } private fun journeyCompleted() { + DebugView.printInfoMsg("[服务完成] 准备发送请求") val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() currentTaskWithOrder?.order?.also { TaxiTaskWithOrderServiceManager.orderCompleted(AbsMogoApplication.getApp().applicationContext, it.orderNo, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { + DebugView.printInfoMsg("[服务完成] 请求success") d(TAG, "journeyCompleted onSuccess") } override fun onFail(code: Int, msg: String?) { + DebugView.printInfoMsg("[服务完成] 请求fail, code=$code, msg=$msg") d(TAG, "journeyCompleted onFail: code=$code, msg=$msg") } }) @@ -167,6 +173,17 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } } + private fun updatePrepareTaskDelay120SUI(isStart: Boolean){ + d(TAG, "UpdatePrepareTaskDelay120SUI = $isStart") + sendUiState { + copy( + taskWithOrderUIState = TaskWithOrderUIState.UpdatePrepareTaskDelay120S( + isStart + ) + ) + } + } + private fun updateDriveToNearestStationTaskUI(driveToNearestStationTask: StartServiceRespBean.Result?) { d(TAG, "updateDriveToNearestStationTaskUI = ${driveToNearestStationTask?.toString()}") sendUiState { @@ -191,12 +208,14 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), override fun onTaskWithOrderDataChanged(result: QueryCurrentTaskRespBean.Result?) { d(TAG, "onTaskWithOrderChanged = result = " + GsonUtil.jsonFromObject(result)) + DebugView.printInfoMsg("[查询TaskWithOrder信息] 更新数据, 刷新UI") updateTaskAndOrderUi(result) } override fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) { d(TAG, "onTaskCompleted: isOrderArrivedAtStart=$isOrderArrivedAtStart, siteId=$siteId") if (isOrderArrivedAtStart) { + TaxiTaskModel.removePrepareTaskDelay120S() TaxiTaskModel.prepareNextTask(siteId) } else { TaxiTaskModel.startPrepareTaskDelay120S(siteId) @@ -208,7 +227,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } override fun onOrderCancel() { - VoiceNotice.showNotice("订单已经取消") + VoiceNotice.showNotice("已取消行程") // updateTaskAndOrderUi(null) } @@ -237,19 +256,28 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), }, TaxiUnmannedConst.START_AUTOPILOT_COUNTDOWN_INTERVAL) // 10s后开启自驾, 状态流转 } + /** + * 开始倒计时120拉取任务 + */ + override fun onStartPrepareTask120s(isStart: Boolean) { + updatePrepareTaskDelay120SUI(isStart) + } + override fun onCarEndServiceSuccess( driveToNearestStationTask: StartServiceRespBean.Result?, currentTaskWithOrder: QueryCurrentTaskRespBean.Result? ) { if (currentTaskWithOrder?.endSite != null && currentTaskWithOrder.startSite != null - && currentTaskWithOrder.currentStatus < TaskStatusEnum.CompleteTask.code) { + && currentTaskWithOrder.currentStatus < TaskStatusEnum.CompleteTask.code + ) { VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦") } else { VoiceNotice.showNotice("暂停接单啦") } // TODO 如果当前有订单就不要刷新 if (currentTaskWithOrder?.startSite != null && - currentTaskWithOrder.endSite != null){ + currentTaskWithOrder.endSite != null + ) { return } updateDriveToNearestStationTaskUI(driveToNearestStationTask) @@ -273,14 +301,6 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), currentTaskWithOrder: QueryCurrentTaskRespBean.Result? ) { VoiceNotice.showNotice("开始接单啦") - currentTaskWithOrder?.apply { - if (endSite != null) { - when { - currentStatus == TaskStatusEnum.CompleteTask.code && order != null -> return - currentStatus < TaskStatusEnum.CompleteTask.code -> return - } - } - } updateDriveToNearestStationTaskUI(driveToNearestStationTask) } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index 7b85c8023e..13249cd386 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -46,13 +46,14 @@ import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.biz.provider.LoginService import com.mogo.och.common.module.callback.OchAdasStartFailureCallback import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager -import com.mogo.och.common.module.manager.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager import com.mogo.och.common.module.manager.distancemamager.IDistanceListener import com.mogo.och.common.module.manager.distancemamager.ITrajectoryListener import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.setStationPoint import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations +import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.bean.PrepareTaskRespBean import com.mogo.och.taxi.bean.QueryCarOrderByNoRespBean import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean @@ -71,6 +72,7 @@ import com.mogo.och.taxi.constant.TaxiOrderStatusEnum import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.BUSINESSTYPE import com.mogo.och.taxi.network.TaxiTaskWithOrderServiceManager +import com.mogo.och.taxi.ui.debug.DebugView import com.mogo.och.taxi.utils.RxJavaUtils import com.mogo.och.taxi.utils.TaxiAnalyticsManager import com.mogo.och.taxi.utils.TaxiTrajectoryManager @@ -134,6 +136,8 @@ object TaxiTaskModel { private val mCurrentTaskRoutePointsGcj: MutableList = ArrayList() + private var mPrepareTaskDelay120SRunnable: Runnable? = null + fun addTaskWithOrderListener(tag: String, listener: ITaxiTaskWithOrderCallback) { if (mTaxiTaskWithOrderCallbackMap.containsKey(tag)) { return @@ -325,6 +329,7 @@ object TaxiTaskModel { override fun onAutopilotSNRequest() {} override fun onAutopilotArriveAtStation(arrivalNotification: ArrivalNotification?) { i(TAG, "onAutopilotArriveAtStation = ${arrivalNotification.toString()}") + DebugView.printInfoMsg("[MAP到站通知] 上报到站,location=${arrivalNotification?.endLocation}") if (arrivalNotification == null || !checkCurrentTaskCondition() || mCurrentTaskWithOrder?.currentStatus == TaskStatusEnum.CompleteTask.code ) { @@ -387,6 +392,7 @@ object TaxiTaskModel { d( TAG, "getWayPointsList.Size = ${globalPathResp.wayPointsList.size}" ) + DebugView.printInfoMsg("[MAP全局规划回调] 回调,getWayPointsList.Size=${globalPathResp.wayPointsList.size}") if (it.size > 0) { // 本地计算全路径长度(实时更新剩余距离,剩余时间,预计到达时间) if (checkCurrentTaskCondition()) { @@ -416,6 +422,7 @@ object TaxiTaskModel { startFailedCode: String, startFailedMessage: String ) { + DebugView.printInfoMsg("[启自驾回调] 执行失败,code=$startFailedCode, msg=$startFailedMessage") TaxiAnalyticsManager.getInstance() .triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage) if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode) { @@ -523,7 +530,8 @@ object TaxiTaskModel { "judgeDriveToNearestStationTaskStation() ${virtualTask.siteName} distance = $distance" ) if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { // 15米内到站 - submitArriveSite(virtualTask.siteId, true) + DebugView.printInfoMsg("[高德定位围栏] 触发围栏,任务类型:DriveToNearestStationTask,围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米") + submitArriveSite(virtualTask.siteId, true, isArrivedNearestStation = true) } } @@ -560,7 +568,9 @@ object TaxiTaskModel { * @siteId : 站点id * @isArriveAtEndSite: true 终点, false 起点 */ - fun submitArriveSite(siteId: Long, isArriveAtEndSite: Boolean) { + fun submitArriveSite(siteId: Long, isArriveAtEndSite: Boolean, + isArrivedNearestStation : Boolean = false) { + DebugView.printInfoMsg("[上报ArriveSite] siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") i(TAG, message = "submitArriveSite: siteId=$siteId isArriveAtEndSite=$isArriveAtEndSite") TaxiTaskWithOrderServiceManager.arriveSite( mContext, @@ -568,8 +578,13 @@ object TaxiTaskModel { object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { if (data == null || data.code != 0) return + DebugView.printInfoMsg("[上报ArriveSite] success siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") d(TAG, "submitArriveSite-onSuccess data=" + GsonUtil.jsonFromObject(data)) mDriveToNearestStationTask = null + if (isArrivedNearestStation){// 播报提醒 + VoiceNotice.showNotice("已到达出车点") + } + if (isArriveAtEndSite) { updateLocalCalculateStation() //到站后不再调用取消自驾. 原因是取消自驾,D档位会溜车 @@ -578,6 +593,7 @@ object TaxiTaskModel { } override fun onFail(code: Int, msg: String?) { + DebugView.printErrorMsg("[上报ArriveSite] failed, code=$code, msg=$msg") d(TAG, "code=$code msg=$msg") } }) @@ -633,10 +649,11 @@ object TaxiTaskModel { AbsMogoApplication.getApp().applicationContext, object : OchCommonServiceCallback { override fun onSuccess(data: QueryCurrentTaskRespBean?) { + //DebugView.printInfoMsg("[查询TaskWithOrder信息] success") if (data?.data == null) { d( TAG, - "queryCurrentTaskOnce onSuccess: data.code != 0 || data === null || data.data === null" + "queryCurrentTaskOnce onSuccess: data == null || data.data == null" ) return } @@ -690,7 +707,9 @@ object TaxiTaskModel { // 主要是解决A-B演练任务同时接到A-B订单状态流转的问题 //注意: 需要去除到达乘客上车点的节点, 这个节点不拉取任务 if (result?.currentStatus == TaskStatusEnum.CompleteTask.code - && !QueryCurrentTaskRespBean.isOrderArriveAtStart(result)) { + && (!QueryCurrentTaskRespBean.isOrderArriveAtStart(result) + || !QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)) + ) { mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value listener.onTaskCompleted( @@ -748,6 +767,7 @@ object TaxiTaskModel { override fun onFail(code: Int, msg: String?) { d(TAG, "queryCurrentTaskOnce onFail: code=$code, msg=$msg") + DebugView.printErrorMsg("[查询TaskWithOrder信息] fail, code=$code, msg=$msg") } }) } @@ -755,15 +775,18 @@ object TaxiTaskModel { /** * 取消订单 进行中/待服务 */ - fun cancelOrder(orderNo: String,cancelType: Int){ + fun cancelOrder(orderNo: String, cancelType: Int) { + DebugView.printInfoMsg("[取消订单] 准备发送请求") TaxiTaskWithOrderServiceManager.cancelOrder(AbsMogoApplication.getApp().applicationContext, orderNo, cancelType, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { + DebugView.printInfoMsg("[取消订单] 请求success") d(TAG, "handleCancelOrder() = onSuccess") } override fun onFail(code: Int, msg: String?) { + DebugView.printErrorMsg("[取消订单] 请求fail, code=$code, msg=$msg") d(TAG, "handleCancelOrder() $code $msg") } }) @@ -836,22 +859,26 @@ object TaxiTaskModel { } fun startTask(lineId: Long) { + DebugView.printInfoMsg("[开始任务] 准备发送请求") TaxiTaskWithOrderServiceManager.startTask( mContext, lineId, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { + DebugView.printInfoMsg("[开始任务] 请求success") startAutoPilot() //自驾开启 d(TAG, "startTask onSuccess: data=${GsonUtil.jsonFromObject(data)}") } override fun onFail(code: Int, msg: String?) { + DebugView.printErrorMsg("[开始任务] 请求fail, code=$code, msg=$msg") d(TAG, "startTask onFail: code=$code, msg=$msg") } }) } fun prepareNextTask(siteId: Long) { + DebugView.printInfoMsg("[PrepareNextTask] 准备发送请求") TaxiTaskWithOrderServiceManager.prepareTask( mContext, siteId, @@ -862,6 +889,7 @@ object TaxiTaskModel { "prepareNextTask onSuccess:${GsonUtil.jsonFromObject(data)}, " + "isCarServingStatus = ${TaxiCarServingStatusManager.isCarServingStatus()}" ) + DebugView.printInfoMsg("[PrepareNextTask] 请求success") if (data?.data == null) return //去下载轨迹, 下发给工控机下载 // queryTaskTrajectoryByLineIds( @@ -871,6 +899,7 @@ object TaxiTaskModel { } override fun onFail(code: Int, msg: String?) { + DebugView.printErrorMsg("[PrepareNextTask] 请求fail, code=$code ,msg=$msg") d(TAG, "prepareNextTask onFail: code=$code ,msg=$msg") if (LoginStatusManager.isLogin() && TaxiCarServingStatusManager.isCarServingStatus()) { startPrepareTaskDelay120S(siteId) @@ -880,15 +909,38 @@ object TaxiTaskModel { } fun startPrepareTaskDelay120S(siteId: Long) { - UiThreadHandler.postDelayed({ - prepareNextTask(siteId) - }, TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S) + removePrepareTaskDelay120S() + + if (mPrepareTaskDelay120SRunnable == null){ + mPrepareTaskDelay120SRunnable = Runnable { + prepareNextTask(siteId) + } + } + + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onStartPrepareTask120s(true) + } + DebugView.printInfoMsg("[PrepareNextTask] 倒计时${TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S/1000}秒后prepareNextTask") + UiThreadHandler.postDelayed(mPrepareTaskDelay120SRunnable, TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S) + } + + fun removePrepareTaskDelay120S() { + if (mPrepareTaskDelay120SRunnable != null){ + DebugView.printInfoMsg("[PrepareNextTask] removeCallbacks prepareNextTask120s") + UiThreadHandler.removeCallbacks(mPrepareTaskDelay120SRunnable) + mTaxiTaskWithOrderCallbackMap.forEach { + val listener = it.value + listener.onStartPrepareTask120s(false) + } + } } /** * 查询当前任务的轨迹 */ fun queryTaskTrajectoryByLineIds(planningLineIds: Array, currentTaskLineId: Long) { + DebugView.printInfoMsg("[查询轨迹信息] 准备发送请求") TaxiTaskWithOrderServiceManager.queryTrajectoryByLindIds( mContext, planningLineIds, @@ -898,6 +950,7 @@ object TaxiTaskModel { TAG, "queryTaskTrajectoryByLineIds onSuccess: ${GsonUtil.jsonFromObject(data?.data)}" ) + DebugView.printInfoMsg("[查询轨迹信息] 请求success") data?.data?.also { mTaskTrajectoryList.addAll(it) mCurrentTaskTrajectory = it.first { currentTaskLineId == it.lineId } @@ -909,6 +962,7 @@ object TaxiTaskModel { } override fun onFail(code: Int, msg: String?) { + DebugView.printErrorMsg("[查询轨迹信息] 请求fail, code=$code, msg=$msg") d(TAG, "queryTaskTrajectoryByLineIds onFail: code=$code, msg=$msg") } }) @@ -920,10 +974,12 @@ object TaxiTaskModel { return } if (TaxiCarServingStatusManager.isCarServingStatus()) {//接单状态下,去结束 + DebugView.printInfoMsg("[暂停接单] 准备发送请求") TaxiTaskWithOrderServiceManager.endService( mContext, object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { + DebugView.printInfoMsg("[暂停接单] 请求success") loginService?.queryLoginStatusByNet() //需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的 mDriveToNearestStationTask = null @@ -935,22 +991,34 @@ object TaxiTaskModel { override fun onError() { mTaxiCarServiceCallback?.onCarEndServiceError() + DebugView.printErrorMsg("[暂停接单] 请求error") } override fun onFail(code: Int, msg: String) { + DebugView.printErrorMsg("[暂停接单] 请求fail, code=$code, msg=$msg") mTaxiCarServiceCallback?.onCarEndServiceFailed(code, msg) } }) } else { //暂停接单状态下,去接单 + DebugView.printInfoMsg("[开始接单] 准备发送请求") TaxiTaskWithOrderServiceManager.startService(mContext, CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().latitude, CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().longitude, object : OchCommonServiceCallback { override fun onSuccess(data: StartServiceRespBean?) { if (data == null) return + DebugView.printInfoMsg("[开始接单] 请求success") d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data)) loginService?.queryLoginStatusByNet() + mCurrentTaskWithOrder?.apply { + if (endSite != null) { + when { + currentStatus == TaskStatusEnum.CompleteTask.code && order != null -> return + currentStatus < TaskStatusEnum.CompleteTask.code -> return + } + } + } mDriveToNearestStationTask = data.data mTaxiCarServiceCallback?.onCarStartServiceSuccess( mDriveToNearestStationTask, @@ -959,10 +1027,12 @@ object TaxiTaskModel { } override fun onFail(code: Int, msg: String) { + DebugView.printErrorMsg("[开始接单] 请求fail, code=$code, msg=$msg") mTaxiCarServiceCallback?.onCarStartServiceFailed(code, msg) } override fun onError() { + DebugView.printErrorMsg("[开始接单] 请求error") mTaxiCarServiceCallback?.onCarStartServiceError() } }) @@ -981,12 +1051,14 @@ object TaxiTaskModel { fun startAutoPilot() { if (!checkCurrentTaskCondition()) { e(TAG, "no order or order is empty.") + DebugView.printErrorMsg("[启自驾] 当前订单不存在或异常!") ToastUtils.showShort("当前订单不存在或异常!") return } if (mCurrentTaskTrajectory == null) { e(TAG, "no order or order is empty.") + DebugView.printErrorMsg("[启自驾] 轨迹信息不存在!") ToastUtils.showShort("轨迹信息不存在!") } @@ -997,6 +1069,7 @@ object TaxiTaskModel { && TextUtils.isEmpty(mCurrentTaskTrajectory!!.csvFileUrlDPQP) ) { ToastUtils.showLong("无发布轨迹, 请发布后重试") + DebugView.printErrorMsg("[启自驾] 无发布轨迹, 请发布后重试") e( TAG, "isPassStartAutopilotCommand = " + FunctionBuildConfig.isPassStartAutopilotCommand @@ -1014,6 +1087,7 @@ object TaxiTaskModel { OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + ", 请稍候重试" ) + DebugView.printErrorMsg("[启自驾] ${OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason}") TaxiAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( mCurrentTaskWithOrder!!.startSite!!.siteName, mCurrentTaskWithOrder!!.endSite!!.siteName, @@ -1032,6 +1106,7 @@ object TaxiTaskModel { return } CallerAutoPilotControlManager.startAutoPilot(parameters) + DebugView.printInfoMsg("[启自驾] 调用成功") d( TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters) @@ -1099,6 +1174,7 @@ object TaxiTaskModel { fun cancelAutopilot() { try { CallerAutoPilotControlManager.cancelAutoPilot() + DebugView.printInfoMsg("[取消自驾] 调用成功") d(TAG, "结束自动驾驶") } catch (e: Exception) { e.printStackTrace() @@ -1141,11 +1217,25 @@ object TaxiTaskModel { //3、刚过站且过站距离在15m内, 提交到站 if (stationAngle > 90) { i(TAG, "judgeEndStation() = 刚过站且在15m内") + DebugView.printInfoMsg( + "[高德定位围栏] 触发围栏,任务类型:${ + TaskTypeEnum.valueOf( + mCurrentTaskWithOrder?.taskType ?: 0 + )?.name + },围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米 刚过站且在15m内" + ) submitArriveSite(endSite.siteId, true) - }else{ + } else { // 4、 没有过站距离小于15m 速度小于0.5(根据M1来的模数 可能要调) if (currentLocation.gnssSpeed < 0.5) { i(TAG, "judgeEndStation() = 没有过站、速度基本为零且在15m内") + DebugView.printInfoMsg( + "[高德定位围栏] 触发围栏,任务类型:${ + TaskTypeEnum.valueOf( + mCurrentTaskWithOrder?.taskType ?: 0 + )?.name + },围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米 没有过站、速度基本为零且在15m内" + ) submitArriveSite(endSite.siteId, true) } } @@ -1209,6 +1299,7 @@ object TaxiTaskModel { ) mCurrentTaskWithOrder = null mDriveToNearestStationTask = null + DebugView.printInfoMsg("[登出] 退出登陆") } //导航去订单终点目的地 @@ -1282,11 +1373,13 @@ object TaxiTaskModel { return } d(TAG, "AutopilotControlParameters is update.") + DebugView.printInfoMsg("[启自驾] updateAutopilotControlParameters调用成功") updateAutopilotControlParameters(parameters) } private fun clearAutopilotControlParameters() { d(TAG, "AutopilotControlParameters is clear.") + DebugView.printInfoMsg("[启自驾] clearAutopilotControlParameters调用成功") updateAutopilotControlParameters(null) } @@ -1303,7 +1396,6 @@ object TaxiTaskModel { ToastUtils.showShort("无任务!") return } -// arriveSite(mCurrentTaskAndOrder?.endSite!!.siteId, true) autopilotArriveAtStation() } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java index 23c3446931..0ce5fc4b14 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java @@ -13,6 +13,7 @@ import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean; import com.mogo.och.taxi.bean.TrajectoryListRespBean; import com.mogo.och.taxi.constant.TaskStatusEnum; import com.mogo.och.taxi.constant.TaxiUnmannedConst; +import com.mogo.och.taxi.ui.debug.DebugView; import com.mogo.och.taxi.ui.task.TaxiTaskModel; import java.util.ArrayList; @@ -163,7 +164,6 @@ public class TaxiTrajectoryManager { final List orderContrails = TaxiTaskModel.INSTANCE.getCurrentOrderTrajectoryList(); if (orderDetail != null && orderContrails != null && orderContrails.size() != 0 ){ - List lineIds = new ArrayList<>(); lineIds.addAll(Arrays.asList(orderDetail.getPlanningLines())); // 接驾 lineIds.add(orderDetail.getOrderLine());//送驾 @@ -249,6 +249,7 @@ public class TaxiTrajectoryManager { if (mSendReqDisposable != null && !mSendReqDisposable.isDisposed()) { return; } + DebugView.Companion.printInfoMsg("[下发轨迹] startTrajectoryReqLoop"); CallerLogger.d(M_TAXI + TAG, "startTrajReqLoop()"); setupAutoPilotLine(); mSendReqDisposable = Observable.interval(TaxiUnmannedConst.LOOP_DELAY, @@ -268,6 +269,7 @@ public class TaxiTrajectoryManager { } private void stopTrajReqLoop() { + DebugView.Companion.printInfoMsg("[下发轨迹] stopTrajectoryReqLoop"); if (mSendReqDisposable != null) { CallerLogger.d(M_TAXI + TAG, "stopTrajReqLoop()"); mSendReqDisposable.dispose(); @@ -278,13 +280,15 @@ public class TaxiTrajectoryManager { private void sendTrajectoryReq() { if (mAutoPilotLine != null) { + DebugView.Companion.printInfoMsg("[下发轨迹] sendTrajectoryDownloadReq, lindId=" + mAutoPilotLine.getLineId() + ", lineName=" + mAutoPilotLine.getLineName()); CallerAutoPilotControlManager.INSTANCE.sendTrajectoryDownloadReq(mAutoPilotLine,COMMON_LOADING); }else { CallerLogger.e(M_TAXI + TAG, "sendTrajectoryReq(): mAutoPilotLine is null!!!"); } if (mPreAutoPilotLine != null){ - CallerAutoPilotControlManager.INSTANCE.sendTrajectoryDownloadReq(mPreAutoPilotLine,PRE_LOADING); + DebugView.Companion.printInfoMsg("[下发轨迹] sendTrajectoryDownloadReq, lindId=" + mPreAutoPilotLine.getLineId() + ", lineName=" + mPreAutoPilotLine.getLineName()); + CallerAutoPilotControlManager.INSTANCE.sendTrajectoryDownloadReq(mPreAutoPilotLine, PRE_LOADING); }else { CallerLogger.e(M_TAXI + TAG, "sendTrajectoryReq(): mPreAutoPilotLine is null!!!"); diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/task_pathway_point_bg.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable/task_pathway_point_bg.xml new file mode 100644 index 0000000000..b19de47c25 --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/drawable/task_pathway_point_bg.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_debug_view_log_history_bg.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_debug_view_log_history_bg.xml new file mode 100644 index 0000000000..3911b44185 --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_debug_view_log_history_bg.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/task_fragment_current.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/task_fragment_current.xml index 80094058e0..2d417d7e9e 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/layout/task_fragment_current.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/task_fragment_current.xml @@ -59,6 +59,24 @@ android:textColor="@android:color/white" android:textSize="@dimen/dp_28" android:text="183XXXX5400 | -人"/> + + + + app:layout_constraintTop_toBottomOf="@+id/pathwayPoint"/> - + android:layout_height="wrap_content"> + + + +