From 62fbe08b3bb54f716eb92ba8d453ced1934a6fbc Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 1 Mar 2023 16:55:57 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[charter=20m1]=E5=8F=B8=E6=9C=BA=E7=AB=AF?= =?UTF-8?q?=E5=9F=8B=E7=82=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/charter/CharterAnalyticsManager.java | 146 ++++++++++++++++++ .../charter/bean/QueryCurrentOrderResponse.kt | 18 ++- .../och/charter/fragment/DriverM1Fragment.kt | 2 +- .../charter/model/DriverM1LooperManager.kt | 9 +- .../mogo/och/charter/model/DriverM1Model.kt | 72 ++++----- .../charter/presenter/DriverM1Presenter.kt | 2 +- .../res/layout/fragment_driver_m1.xml | 6 +- .../mogo/och/charter/constant/CharterConst.kt | 22 +-- 8 files changed, 212 insertions(+), 65 deletions(-) create mode 100644 OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterAnalyticsManager.java diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterAnalyticsManager.java b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterAnalyticsManager.java new file mode 100644 index 0000000000..79cc939b0c --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterAnalyticsManager.java @@ -0,0 +1,146 @@ +package com.magic.mogo.och.charter; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; + +import android.text.TextUtils; + +import com.magic.mogo.och.charter.constant.CharterConst; +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; +import com.mogo.commons.debug.DebugConfig; +import com.mogo.commons.utils.MogoAnalyticUtils; +import com.mogo.eagle.core.data.app.AppConfigInfo; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.util.DateTimeUtils; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; + +import java.util.HashMap; + +/** + * @author: wangmingjun + * @date: 2023/3/1 + */ +public class CharterAnalyticsManager { + + private static final class SingletonHolder { + private static final CharterAnalyticsManager INSTANCE = new CharterAnalyticsManager(); + } + + public static CharterAnalyticsManager getInstance() { + return CharterAnalyticsManager.SingletonHolder.INSTANCE; + } + + private String mStartAutopilotKey; + private HashMap mStartAutopilotParams = new HashMap<>(); + + private Runnable startAutopilotRunnable = () -> { + // 15s内未开启,上报失败埋点 + triggerStartAutopilotFailureEvent("", "15s后app等待超时"); + }; + + public void triggerStartAutopilotFailureEventByAdas(String failCode, String failMsg){ + removeWaitingCallback(); + triggerStartAutopilotFailureEvent(failCode, failMsg); + } + + private void triggerStartAutopilotFailureEvent(String failCode, String failMsg){ + if (mStartAutopilotParams.isEmpty()) return; + + CallerLogger.INSTANCE.e( M_BUS + "triggerStartAutopilotFailureEvent", failMsg ); + + if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_FAILURE_CODE, failCode); + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_FAILURE_MSG, failMsg); + } + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_RESULT + , CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); + + MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + + clearStartAutopilotParams();//清空参数数据,防止误传 + } + + private void removeWaitingCallback() { + if (startAutopilotRunnable != null && + UiThreadHandler.getsUiHandler().hasCallbacks(startAutopilotRunnable)) { + UiThreadHandler.removeCallbacks(startAutopilotRunnable); + } + } + + public void clearStartAutopilotFailureMSG(){ + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_FAILURE_CODE, ""); + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_FAILURE_MSG, ""); + } + + private void clearStartAutopilotParams(){ + mStartAutopilotParams.clear(); + } + + /** + * 触发'开启自动驾驶'埋点流程 + * 开启自动驾驶,15s内成功则发送成功埋点,否则发送失败埋点 + * @param restart false(点击'滑动出发'启动)/true(接管后点击'自动驾驶'按钮启动) + * @param send 是否直接发送埋点(15s内开启成功则直接发送成功埋点) + */ + public void triggerStartAutopilotEvent( + boolean restart, boolean send, String startName, String endName, int lineId) { + mStartAutopilotKey = restart ? + CharterConst.EVENT_KEY_RESTART_AUTOPILOT : CharterConst.EVENT_KEY_START_SERVICE; + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + String plateNum = AppConfigInfo.INSTANCE.getPlateNumber(); + String dateTime = DateTimeUtils.getTimeText( + System.currentTimeMillis(), DateTimeUtils.yyyy_MM_dd_HH_mm_ss); + + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_SN, sn); + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum); + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_ENV_ONLINE, + DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false); + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_TIME, dateTime); + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_NAME, startName); + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_END_NAME, endName); + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_LINE_ID, lineId); + + if (send) { + if (mStartAutopilotParams.isEmpty()) return; + // 开启成功,上报埋点 + clearStartAutopilotFailureMSG(); + removeWaitingCallback(); + mStartAutopilotParams.put(CharterConst.EVENT_PARAM_START_RESULT, true); + MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + + clearStartAutopilotParams();//清空参数数据,防止误传 + } else { + UiThreadHandler.postDelayed(startAutopilotRunnable, CharterConst.LOOP_PERIOD_15S); + } + } + + /** + * 触发"无法开启自驾已知异常"埋点 + * @param startName + * @param endName + * @param lineId + */ + public void triggerUnableStartAPReasonEvent(String startName, String endName, int lineId, + String reason) { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + String plateNum = AppConfigInfo.INSTANCE.getPlateNumber(); + String dateTime = DateTimeUtils.getTimeText( + System.currentTimeMillis(), DateTimeUtils.yyyy_MM_dd_HH_mm_ss); + + HashMap params = new HashMap<>(); + + params.put(CharterConst.EVENT_PARAM_SN, sn); + params.put(CharterConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum); + params.put(CharterConst.EVENT_PARAM_ENV_ONLINE, + DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false); + params.put(CharterConst.EVENT_PARAM_TIME, dateTime); + params.put(CharterConst.EVENT_PARAM_START_NAME, startName); + params.put(CharterConst.EVENT_PARAM_END_NAME, endName); + params.put(CharterConst.EVENT_PARAM_LINE_ID, lineId); + params.put(CharterConst.EVENT_PARAM_UNABLE_START_REASON, reason); + MogoAnalyticUtils.INSTANCE.track(CharterConst.EVENT_KEY_AP_UNABLE_START_REASON, params); + } +} diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt index 92955a1bef..7a31d03450 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt @@ -22,6 +22,22 @@ data class QueryCurrentOrderResponse(var data: Result):BaseData(){ //线路id , var startTime: Long, var endTime: Long, var passengerPhone: String - ) + ){ + override fun equals(o: Any?): Boolean { + if (this === o) return true + if (o == null || javaClass != o.javaClass) return false + val result = o as Result + return orderNo == result.orderNo + && sn == result.sn + && lineId == result.lineId + && startSiteId == result.startSiteId + && startSiteName == result.startSiteName + && siteId == result.siteId + && siteName == result.siteName + && wgs84Lon == result.wgs84Lon + && wgs84Lon == result.wgs84Lon + && passengerPhone == result.passengerPhone + } + } } diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt index e19618b23b..dc732edb94 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt @@ -154,8 +154,8 @@ class DriverM1Fragment : CharterBaseFragment=1 代表是重试 每次到站/路线结束清空置为0 @@ -112,8 +112,8 @@ class DriverM1Model { }) - fun init() { - mContext = AbsMogoApplication.getApp() + fun init(context: Context) { + mContext = context // 定位监听 CallerChassisLocationGCJ02ListenerManager.addListener(TAG, mMapLocationListener) CallerChassisLocationGCJ02ListenerManager.setListenerHz(TAG,2) @@ -295,6 +295,7 @@ class DriverM1Model { pushOperationalToMsgBox(obj.pushTimeStamp, obj.message ,OCHSocketMessageManager.OPERATION_ORDER_TYPE) sendMsgToClient(DPOrderClosedMsg()) + queryCurrentServiceStatus() } override fun target(): Class { @@ -395,7 +396,7 @@ class DriverM1Model { triggerUnableStartAPReasonEvent() return } - triggerStartServiceEvent(true, false) + triggerStartServiceEvent(false, false) val parameters = initAutopilotControlParameters() if (null == parameters) { d(SceneConstant.M_CHARTER_D + TAG, "行程日志-AutopilotControlParameters is empty.") @@ -429,7 +430,7 @@ class DriverM1Model { } fun isHaveOrder(): Boolean { - return mCurrentOrder == null + return mCurrentOrder != null } // 登出 @@ -437,28 +438,28 @@ class DriverM1Model { loginService!!.loginOut(mLatitude, mLongitude) } - fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) { -// if (stationList == null || backgroundCurrentStationIndex >= stationList.size - 1) { -// return -// } -// val currentStation: BusStationBean = stationList[backgroundCurrentStationIndex] -// val nextStation: BusStationBean = stationList[backgroundCurrentStationIndex + 1] -// BusAnalyticsManager.getInstance().triggerStartAutopilotEvent( -// isRestart, send, -// currentStation.getName(), nextStation.getName(), currentLineId -// ) + private fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) { + if (mCurrentOrder == null) { + return + } + mCurrentOrder?.lineId?.let { + CharterAnalyticsManager.getInstance().triggerStartAutopilotEvent( + isRestart, send, + mCurrentOrder?.startSiteName, mCurrentOrder?.siteName, it + ) + } } - fun triggerUnableStartAPReasonEvent() { -// if (stationList == null || backgroundCurrentStationIndex >= stationList.size - 1) { -// return -// } -// val currentStation: BusStationBean = stationList[backgroundCurrentStationIndex] -// val nextStation: BusStationBean = stationList[backgroundCurrentStationIndex + 1] -// BusAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( -// currentStation.getName(), nextStation.getName(), currentLineId, -// OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason -// ) + private fun triggerUnableStartAPReasonEvent() { + if (mCurrentOrder == null) { + return + } + mCurrentOrder?.lineId?.let { + CharterAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( + mCurrentOrder?.startSiteName, mCurrentOrder?.siteName, it, + OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + ) + } } fun getCurrentStationIndex(): Int { @@ -485,7 +486,7 @@ class DriverM1Model { } private fun initAutopilotControlParameters(): AutopilotControlParameters? { - if ( mCurrentOrder == null || mCurrentResult == null) return null + if ( mCurrentOrder == null || mCurrentRoute == null) return null var parameters = AutopilotControlParameters() parameters.routeID = mCurrentOrder?.lineId!! parameters.routeName = mCurrentOrder?.lineName!! @@ -501,12 +502,12 @@ class DriverM1Model { if (parameters.autoPilotLine == null) { parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( mCurrentOrder!!.lineId.toLong(), - mCurrentResult!!.csvFileUrl, mCurrentResult!!.csvFileMd5, - mCurrentResult!!.txtFileUrl, mCurrentResult!!.txtFileMd5, - mCurrentResult!!.contrailSaveTime, mCurrentResult!!.carModel, - mCurrentResult!!.csvFileUrlDPQP, mCurrentResult!!.csvFileMd5DPQP, - mCurrentResult!!.txtFileUrlDPQP, mCurrentResult!!.txtFileMd5DPQP, - mCurrentResult!!.contrailSaveTimeDPQP!! + mCurrentRoute!!.csvFileUrl, mCurrentRoute!!.csvFileMd5, + mCurrentRoute!!.txtFileUrl, mCurrentRoute!!.txtFileMd5, + mCurrentRoute!!.contrailSaveTime, mCurrentRoute!!.carModel, + mCurrentRoute!!.csvFileUrlDPQP, mCurrentRoute!!.csvFileMd5DPQP, + mCurrentRoute!!.txtFileUrlDPQP, mCurrentRoute!!.txtFileMd5DPQP, + mCurrentRoute!!.contrailSaveTimeDPQP!! ) } return parameters @@ -587,10 +588,11 @@ class DriverM1Model { DriverM1ServiceManager.queryCurrentOrder(mContext ,object: OchCommonServiceCallback{ override fun onSuccess(data: QueryCurrentOrderResponse?) { - if (data == null || data.code != 0 || mCurrentOrder === data.data){ + if (data == null || data.code != 0 || data.data.equals(mCurrentOrder)){ isArrivedStation = false return } + d(SceneConstant.M_CHARTER_D + TAG, "queryCurrentOrder order =" + GsonUtils.toJson(data.data)) mCurrentOrder = data.data @@ -672,7 +674,7 @@ class DriverM1Model { if (data == null || data.code != 0) return d(SceneConstant.M_CHARTER_D + TAG, "checkoutContrail-==" + GsonUtils.toJson(data.data)) - mCurrentResult = data.data + mCurrentRoute = data.data } override fun onFail(code: Int, msg: String?) { diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt index 3be5cf11ad..2ab69ed419 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt @@ -35,7 +35,7 @@ class DriverM1Presenter(view: DriverM1Fragment?) : private var mCurrentAutopilotStatus : Int = -1 init { - DriverM1Model.get().init() + DriverM1Model.get().init(context) registerListener() } diff --git a/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml b/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml index dc40998949..9a7e9c2293 100644 --- a/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml +++ b/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml @@ -146,13 +146,13 @@ @@ -198,7 +198,7 @@ android:id="@+id/group_stations_panel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:visibility="gone" + android:visibility="visible" app:constraint_referenced_ids="driverm1_line_name,driverm1_order_count_down ,cur_station_title,cur_station_title1,line1,line2,driverm1StationName1Tv, driverm1StationName2Tv,driverm1nextCircleIv,driverm1CircleIvBg,driverm1ArrowBg diff --git a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt index cc3137bb8f..6c86a3c865 100644 --- a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt +++ b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt @@ -9,17 +9,6 @@ class CharterConst { // OCH arouter 路由path const val PATH = "/driver/api" - // 测试用的广播 - const val BROADCAST_TEST_BUS_CONTROL_TYPE_EXTRA_KEY = "sceneType" - // 无状态 - const val STATION_STATUS_IDLE = 0 - // 已过站(历史站) - const val STATION_STATUS_LEAVING = 1 - // 到站(当前站) - const val STATION_STATUS_STOPPED = 2 - // 未到站(未到站) - const val STATION_STATUS_ARRIVING = 3 - // 上报心跳轮询ms const val LOOP_PERIOD_60S = 60 * 1000L // 开始服务启动自动驾驶等待时间(埋点上传) @@ -32,15 +21,10 @@ class CharterConst { // 尝试下发给MEC轨迹最多10次 const val LOOP_SEND_TRAJ_TIMES = 10 - //起点UUID - const val BUS_START_MAP_MAKER = "bus_start_map_maker"; - //终点UUID - const val BUS_END_MAP_MAKER = "bus_end_map_maker"; - // 埋点key:接管后点击'自动驾驶'按钮启动 - const val EVENT_KEY_RESTART_AUTOPILOT = "event_key_och_bus_restart_autopilot" + const val EVENT_KEY_RESTART_AUTOPILOT = "event_key_och_charter_restart_autopilot" // 埋点key:开始服务开启自动驾驶(成功/失败) - const val EVENT_KEY_START_SERVICE = "event_key_och_bus_start_service" + const val EVENT_KEY_START_SERVICE = "event_key_och_charter_start_service" const val EVENT_PARAM_SN = "sn" const val EVENT_PARAM_TIME = "time" const val EVENT_PARAM_START_NAME = "start_name" @@ -52,7 +36,7 @@ class CharterConst { const val EVENT_PARAM_PLATE_NUM = "plate_number" // 车牌号 const val EVENT_PARAM_ENV_ONLINE = "env_online" // 是否线上环境:true/false // 埋点key:开启自动驾驶前已识别的异常,会导致无法开启自驾 - const val EVENT_KEY_AP_UNABLE_START_REASON = "event_key_och_bus_ap_unable_start_reason" + const val EVENT_KEY_AP_UNABLE_START_REASON = "event_key_och_charter_ap_unable_start_reason" const val EVENT_PARAM_UNABLE_START_REASON = "unable_start_reason"; /** From c462ce404cdec17adc44d3025c23c2e579f4a69b Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 1 Mar 2023 19:15:50 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[charter=20m1]=E5=8F=B8=E6=9C=BA=E7=AB=AF?= =?UTF-8?q?=E5=80=92=E8=AE=A1=E6=97=B6=EF=BC=8CUI=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/charter/fragment/DriverM1Fragment.kt | 4 ++ .../charter/model/DriverM1LooperManager.kt | 2 +- .../mogo/och/charter/model/DriverM1Model.kt | 58 ++++++------------- .../charter/presenter/DriverM1Presenter.kt | 21 +++++-- .../res/layout/fragment_driver_m1.xml | 6 +- .../mogo/och/charter/constant/CharterConst.kt | 5 +- 6 files changed, 42 insertions(+), 54 deletions(-) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt index dc732edb94..b4181f2fc7 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt @@ -176,6 +176,10 @@ class DriverM1Fragment : CharterBaseFragment aLong + 1 } .subscribeOn(Schedulers.io()) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index 673e89f986..acc44fc703 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -2,7 +2,6 @@ package com.magic.mogo.och.charter.model import android.content.Context import android.net.ConnectivityManager -import android.os.Handler import com.alibaba.android.arouter.launcher.ARouter import com.alibaba.android.arouter.utils.TextUtils import com.amap.api.maps.model.LatLng @@ -19,7 +18,6 @@ import com.magic.mogo.och.charter.callback.IDriverM1ControllerStatusCallback import com.magic.mogo.och.charter.constant.CharterConst 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.eagle.core.data.BaseData @@ -60,8 +58,6 @@ import java.io.IOException */ class DriverM1Model { - private var backgroundCurrentStationIndex = 0 //A->B 此处值是A站点索引 - var mLongitude = 0.0 var mLatitude = 0.0 private var mContext: Context? = null @@ -69,11 +65,7 @@ class DriverM1Model { private var isArrivedStation: Boolean = false // 运营类型 - private val MSG_QUERY_BUS_STATION: Int = 1001 - private val QUERY_BUS_STATION_DELAY: Long = 5000 - - // 运营类型 - private val VEHICLE_TYPE = 10 + private val VEHICLE_TYPE : Int = 10 private var mControllerStatusCallback //Model->Presenter:VR mode等 : IDriverM1ControllerStatusCallback? = null @@ -104,14 +96,6 @@ class DriverM1Model { } } - private val handler = Handler(Handler.Callback { msg -> - if (msg.what == MSG_QUERY_BUS_STATION) { - return@Callback true - } - false - }) - - fun init(context: Context) { mContext = context // 定位监听 @@ -317,15 +301,14 @@ class DriverM1Model { startFailedCode: String, startFailedMessage: String ) { -// BusAnalyticsManager.getInstance() -// .triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage) -// if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode) { -// e( -// SceneConstant.M_CHARTER_D + TAG, -// "mAdasStartFailureListener = $startFailedMessage" -// ) + CharterAnalyticsManager.getInstance() + .triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage) + if (mControllerStatusCallback != null) { + + d(SceneConstant.M_CHARTER_D + TAG, + "mAdasStartFailureListener = $startFailedMessage") mControllerStatusCallback?.onStartAdasFailure() -// } + } } } @@ -413,13 +396,6 @@ class DriverM1Model { } - /** - * 延时查询站点信心 - */ - fun queryBusStationDelay() { - handler.sendEmptyMessageDelayed(MSG_QUERY_BUS_STATION, QUERY_BUS_STATION_DELAY) - } - /** * 在踩刹车、控制方向盘等操作后,会停止自动驾驶,重启自动驾驶的话相当于重新设置自动驾驶目的地 */ @@ -438,7 +414,7 @@ class DriverM1Model { loginService!!.loginOut(mLatitude, mLongitude) } - private fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) { + fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) { if (mCurrentOrder == null) { return } @@ -462,10 +438,6 @@ class DriverM1Model { } } - fun getCurrentStationIndex(): Int { - return backgroundCurrentStationIndex - } - /** * 将业务订单信息保存,鹰眼可取用 */ @@ -490,7 +462,7 @@ class DriverM1Model { var parameters = AutopilotControlParameters() parameters.routeID = mCurrentOrder?.lineId!! parameters.routeName = mCurrentOrder?.lineName!! -// parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.getName()) + parameters.startName = PinYinUtil.getPinYinHeadChar(mCurrentOrder?.startSiteName) parameters.endName = PinYinUtil.getPinYinHeadChar(mCurrentOrder?.siteName) parameters.startLatLon = AutopilotControlParameters.AutoPilotLonLat( mLatitude, @@ -565,15 +537,16 @@ class DriverM1Model { d(SceneConstant.M_CHARTER_D + TAG, "queryCurrentServiceStatus success = " + GsonUtils.toJson(data.data)) - if (data.data.businessStatus == 2){ + if (data.data.businessStatus == 2){//订单为空,则是要换车状态 if (TextUtils.isEmpty(data.data.orderNo)){//还未换车,显示还车状态 mOrderCallback?.updateReturnCarStatus(false) startOrStopCheckCountDown(false) - }else{ // 去查询订单 + }else{ // 订单不为空,有服务中订单,去查询订单 mOrderCallback?.updateReturnCarStatus(true) queryCurrentOrder() } - }else{ + }else{ //车辆无订单,闲置状态 + clearAutopilotControlParameters() startOrStopCheckCountDown(false) } } @@ -601,6 +574,8 @@ class DriverM1Model { checkoutContrail() // 倒计时校验开始 startOrStopCheckCountDown(true) + //鹰眼存参数 + updateAutopilotControlParameters() } override fun onFail(code: Int, msg: String?) { @@ -658,6 +633,7 @@ class DriverM1Model { } override fun onFail(code: Int, msg: String?) { + ToastUtilsOch.toastRequestError(mContext,msg) d(SceneConstant.M_CHARTER_D + TAG, "changeDest-onFail== $msg .") } }) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt index 2ab69ed419..9c08013c0a 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt @@ -1,6 +1,8 @@ package com.magic.mogo.och.charter.presenter import androidx.lifecycle.LifecycleOwner +import com.magic.mogo.och.charter.CharterAnalyticsManager +import com.magic.mogo.och.charter.R import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse import com.magic.mogo.och.charter.callback.ChangeDestCallback import com.magic.mogo.och.charter.callback.DriverM1OrderCallback @@ -116,6 +118,11 @@ class DriverM1Presenter(view: DriverM1Fragment?) : DriverM1Model.get().changeDest() } + fun carReturnTip(){ //提前 5分钟 提醒 + DriverM1Model.get().pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp() + ,context.getString(R.string.last_5_minutes)) + } + override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) { DriverM1Model.get().onAutopilotArriveAtStation() } @@ -126,21 +133,21 @@ class DriverM1Presenter(view: DriverM1Fragment?) : mView?.onAutopilotStatusChanged(status) mCurrentAutopilotStatus = status -// when(status){ -// + when(status){ + // IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> { // // // } -// IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING ->{ -// -// } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING ->{ + DriverM1Model.get().triggerStartServiceEvent(false,true) + } // IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE ->{ // // } // IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING ->{ // // } -// } + } } override fun onStartAutopilotFailure( @@ -160,12 +167,14 @@ class DriverM1Presenter(view: DriverM1Fragment?) : } override fun startOpenAutopilot() { + mCurrentAutopilotStatus = -1 ThreadUtils.runOnUiThread { mView?.startAutopilotAnimation() } } override fun onStartAdasFailure() { + mCurrentAutopilotStatus = -1 ThreadUtils.runOnUiThread { mView?.stopAnimAndUpdateBtnStatus() } diff --git a/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml b/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml index 9a7e9c2293..db8169df70 100644 --- a/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml +++ b/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml @@ -166,9 +166,9 @@ @@ -198,7 +198,7 @@ android:id="@+id/group_stations_panel" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:visibility="visible" + android:visibility="gone" app:constraint_referenced_ids="driverm1_line_name,driverm1_order_count_down ,cur_station_title,cur_station_title1,line1,line2,driverm1StationName1Tv, driverm1StationName2Tv,driverm1nextCircleIv,driverm1CircleIvBg,driverm1ArrowBg diff --git a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt index 6c86a3c865..98a787fb52 100644 --- a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt +++ b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt @@ -37,12 +37,11 @@ class CharterConst { const val EVENT_PARAM_ENV_ONLINE = "env_online" // 是否线上环境:true/false // 埋点key:开启自动驾驶前已识别的异常,会导致无法开启自驾 const val EVENT_KEY_AP_UNABLE_START_REASON = "event_key_och_charter_ap_unable_start_reason" - const val EVENT_PARAM_UNABLE_START_REASON = "unable_start_reason"; + const val EVENT_PARAM_UNABLE_START_REASON = "unable_start_reason" /** * 订单起终点Marker类型 */ - const val TYPE_MARKER_BUS_ORDER = "TYPE_MARKER_BUS_ORDER" const val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L @@ -50,7 +49,7 @@ class CharterConst { const val ARRIVE_AT_END_STATION_DISTANCE = 10 // 轮询 - const val LOOP_5M = 3 * 1000L + const val LOOP_3M = 5 * 60 * 1000L const val LOOP_2S = 2 * 1000L const val LOOP_1S = 1 * 1000L const val LOOP_DELAY_500 = 500L From de9f23cf20ec2d26724f6ff0026020cd7b7aea97 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Wed, 1 Mar 2023 19:25:58 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[Opt3.0]=E9=BB=98=E8=AE=A4=E4=B8=8D?= =?UTF-8?q?=E7=BB=98=E5=88=B6=E8=B5=B7=E3=80=81=E7=BB=88=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/view/OverMapView.kt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index ba19fa3bb6..0db745b464 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -352,14 +352,17 @@ class OverMapView @JvmOverloads constructor( .icon(BitmapDescriptorFactory.fromResource(if (compassDrawable != -1) compassDrawable else R.drawable.amap_custom_corner)) .anchor(0.5f, 0.5f) ) - mStartMarker = mAMap!!.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(if (startPointDrawable != -1) startPointDrawable else R.drawable.module_small_map_view_dir_start)) - ) - mEndMarker = mAMap!!.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(if (endPointDrawable != -1) endPointDrawable else R.drawable.module_small_map_view_dir_end)) - ) + if (startPointDrawable != -1) { + mStartMarker = mAMap!!.addMarker( + MarkerOptions() + .icon(BitmapDescriptorFactory.fromResource(startPointDrawable))) + } + if (endPointDrawable != -1) { + mEndMarker = mAMap!!.addMarker( + MarkerOptions() + .icon(BitmapDescriptorFactory.fromResource(endPointDrawable)) + ) + } } fun handlePlanningData(locationList: List?) { From 06d347c4ef33360a8adad87eb27c17dd1f655ef1 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Wed, 1 Mar 2023 19:39:14 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[Opt3.0]=E5=85=A8=E8=A7=88=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E9=BB=98=E8=AE=A4=E4=B8=8D=E7=BB=98=E5=88=B6=E8=B5=B7?= =?UTF-8?q?=E3=80=81=E7=BB=88=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/view/OverMapView.kt | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index 0db745b464..f7d42bc526 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -355,7 +355,8 @@ class OverMapView @JvmOverloads constructor( if (startPointDrawable != -1) { mStartMarker = mAMap!!.addMarker( MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(startPointDrawable))) + .icon(BitmapDescriptorFactory.fromResource(startPointDrawable)) + ) } if (endPointDrawable != -1) { mEndMarker = mAMap!!.addMarker( @@ -608,20 +609,16 @@ class OverMapView @JvmOverloads constructor( * 绘制起始点、终点 */ private fun drawStartAndEndMarker(coordinates: List) { - if (mStartMarker != null) { - mStartMarker!!.isVisible = false - } - if (mEndMarker != null) { - mEndMarker!!.isVisible = false - } + mStartMarker?.isVisible = false + mEndMarker?.isVisible = false if (coordinates.size > 2) { // 设置开始结束Marker位置 val startLatLng = coordinates[0] val endLatLng = coordinates[coordinates.size - 1] - mStartMarker!!.position = startLatLng - mEndMarker!!.position = endLatLng - mStartMarker!!.isVisible = true - mEndMarker!!.isVisible = true + mStartMarker?.position = startLatLng + mEndMarker?.position = endLatLng + mStartMarker?.isVisible = true + mEndMarker?.isVisible = true } }