diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerGetTrajectoryByLineIdRespBean.java b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerGetTrajectoryByLineIdRespBean.java new file mode 100644 index 0000000000..018333a351 --- /dev/null +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerGetTrajectoryByLineIdRespBean.java @@ -0,0 +1,35 @@ +package com.mogo.och.taxi.passenger.bean; + +import com.mogo.eagle.core.data.BaseData; + +import java.util.List; + +public class TaxiPassengerGetTrajectoryByLineIdRespBean extends BaseData { + public List data; + + public static class TrajectoryInfo { + public long lineId; // line id + public String csvFileUrl = ""; //轨迹文件下载的cos url,默认“” + public String csvFileMd5 = ""; //轨迹文件md5,默认“” + public String txtFileUrl = ""; //打点文件下载的cos url,默认“” + public String txtFileMd5 = ""; //轨迹文件md5,默认“” + public long contrailSaveTime; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖 + public String carModel = ""; //[optional] 车型号(如红旗H9),默认“”,暂不加入校验逻辑、用于人工排查问题 + public String csvFileUrlDPQP = ""; //轨迹文件下载的cos url,默认“” + public String csvFileMd5DPQP = ""; //轨迹文件md5,默认“” + public String txtFileUrlDPQP = ""; //打点文件下载的cos url,默认“” + public String txtFileMd5DPQP = ""; //轨迹文件md5,默认“” + public long contrailSaveTimeDPQP; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖 + } + + public TrajectoryInfo getTrajectoryInfoByLineId(long lineId) { + if (data != null) { + for (TrajectoryInfo l : data) { + if (l != null && l.lineId == lineId) { + return l; + } + } + } + return null; + } +} diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryReqBean.java b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryReqBean.java index 2cac9c0c99..59efb4da9d 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryReqBean.java +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryReqBean.java @@ -6,11 +6,11 @@ package com.mogo.och.taxi.passenger.bean; */ public class TaxiPassengerOrderQueryReqBean { - public String driverSn; + public String sn; public String orderNo; - public TaxiPassengerOrderQueryReqBean(String driverSn, String orderNo) { - this.driverSn = driverSn; + public TaxiPassengerOrderQueryReqBean(String sn, String orderNo) { + this.sn = sn; this.orderNo = orderNo; } } diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java index 6b8ee1e58d..04fdc7b19b 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java @@ -2,88 +2,10 @@ package com.mogo.och.taxi.passenger.bean; import com.mogo.eagle.core.data.BaseData; -import java.util.List; -import java.util.Objects; - /** * Created by pangfan on 2021/8/19 * 查询订单返回数据结构 */ public class TaxiPassengerOrderQueryRespBean extends BaseData { - public Result data; - - public static class Result implements Comparable{ - // 订单no - public String orderNo; - // 订单类型 - public int orderType; //1即时单 2预约单 - // 订单状态 - public int orderStatus; - // 订单运营类型 (9出租车,10小巴) - public int businessType; - // 起始站点id - public int startSiteId; - // 起始站点名称 - public String startSiteAddr; - // 起始站点坐标 - public List startSitePoint; //wgs坐标,用于自动驾驶 [lon,lat] - public List startSiteGcjPoint; //高德坐标,用于本地计算距离 [lon,lat] - // 终点站点id - public int endSiteId; - // 终点站点名称 - public String endSiteAddr; - // 终点站点坐标 - public List endSitePoint; //wgs坐标,用于自动驾驶 [lon,lat] - public List endSiteGcjPoint; //高德坐标,用于计算距离 [lon,lat] - - // 车牌号 - public String carNumber; - //订单创建时间戳 - public long createTime; - //开始服务时间戳:司机点击'开始服务'后订单状态更新成功的时间 - public long startTime; - //预计用车时间:预约单=下单时的预约用车时间;即时单=派单成功的时间+预估的达到上车点的时间 - public long bookingTime; - //乘客手机号 - public String passengerPhone; - //订单多少乘客 - public String passengerNum; - - public long lineId = -1; //路线id,默认-1 - public String csvFileUrl = ""; //轨迹文件下载的cos url,默认“” - public String csvFileMd5 = ""; //轨迹文件md5,默认“” - public String txtFileUrl = ""; //打点文件下载的cos url,默认“” - public String txtFileMd5 = ""; //轨迹文件md5,默认“” - public long contrailSaveTime; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖 - public String carModel = ""; //[optional] 车型号(如红旗H9),默认“”,暂不加入校验逻辑、用于人工排查问题 - public String csvFileUrlDPQP = ""; //轨迹文件下载的cos url,默认“” - public String csvFileMd5DPQP = ""; //轨迹文件md5,默认“” - public String txtFileUrlDPQP = ""; //打点文件下载的cos url,默认“” - public String txtFileMd5DPQP = ""; //轨迹文件md5,默认“” - public long contrailSaveTimeDPQP; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖 - - @Override - public int compareTo(Result o) { - boolean isEqual = this.orderNo.equals(o.orderNo); - return isEqual ? 0 : 1; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Result result = (Result) o; - return Objects.equals(orderNo, result.orderNo) && - orderType == result.orderType && - orderStatus == result.orderStatus && - businessType == result.businessType; - } - - @Override - public int hashCode() { - return Objects.hash(orderNo, orderType, orderStatus, businessType, startSiteId, - startSiteAddr, startSitePoint, startSiteGcjPoint, endSiteId, endSiteAddr, - endSitePoint, endSiteGcjPoint, carNumber, createTime, startTime); - } - } + public TaxiPassengerOrdersInServiceQueryRespBean.OrderBean data; } diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrdersInServiceQueryRespBean.java b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrdersInServiceQueryRespBean.java index 7ac4a9ee6c..aa6b88d15f 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrdersInServiceQueryRespBean.java +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrdersInServiceQueryRespBean.java @@ -3,6 +3,7 @@ package com.mogo.och.taxi.passenger.bean; import com.mogo.eagle.core.data.BaseData; import java.util.List; +import java.util.Objects; /** * Created on 2021/9/8 @@ -12,6 +13,60 @@ public class TaxiPassengerOrdersInServiceQueryRespBean extends BaseData { public Result data; public static class Result { - public List servicing; //服务中订单 + public String sn; // sn + public long lineId = -1; //路线id,默认-1 + public int serviceStatus;//控制接单的状态(0:暂停 1:开始) + public int currentStatus;//车当前状态(0: 空闲 1:加载任务 2:开始任务 3:到站(任务结束)) + public int taskType;//任务类型(1:虚拟任务 2:接驾任务 3:送驾任务) + public SiteBean endSite; + public OrderBean order; + + public TaxiPassengerGetTrajectoryByLineIdRespBean.TrajectoryInfo trajectoryInfoByQuery;//通过line id查询的详细信息 } + + public static class SiteBean { + public int siteId;// site id + public String siteName; // site 名称 + public Double gcjLon;// gcj 经度 + public Double gcjLat;// gcj 纬度 + public Double wgs84Lon;// wgs84 经度 + public Double wgs84Lat;// wgs84 纬度 + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SiteBean siteBean = (SiteBean) o; + return siteId == siteBean.siteId && Objects.equals(siteName, siteBean.siteName) && Objects.equals(gcjLon, siteBean.gcjLon) && Objects.equals(gcjLat, siteBean.gcjLat) && Objects.equals(wgs84Lon, siteBean.wgs84Lon) && Objects.equals(wgs84Lat, siteBean.wgs84Lat); + } + + @Override + public int hashCode() { + return Objects.hash(siteId, siteName, gcjLon, gcjLat, wgs84Lon, wgs84Lat); + } + } + + public static class OrderBean { + public String orderNo;// 订单号 + public int orderStatus;//订单状态 + public String bookingUserPhone;// 用户手机号 + public int passengerSize;//乘客人数 + public SiteBean orderStartSite;//站点-起点 + public SiteBean orderEndSite;//站点-终点 + public List planningLines;//预加载的line + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + OrderBean orderBean = (OrderBean) o; + return orderStatus == orderBean.orderStatus && passengerSize == orderBean.passengerSize && Objects.equals(orderNo, orderBean.orderNo) && Objects.equals(bookingUserPhone, orderBean.bookingUserPhone) && Objects.equals(orderStartSite, orderBean.orderStartSite) && Objects.equals(orderEndSite, orderBean.orderEndSite) && Objects.equals(planningLines, orderBean.planningLines); + } + + @Override + public int hashCode() { + return Objects.hash(orderNo, orderStatus, bookingUserPhone, passengerSize, orderStartSite, orderEndSite, planningLines); + } + } + } diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerStartReqBean.java b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerStartReqBean.java index 741c9c2b69..fe2a0d2b59 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerStartReqBean.java +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerStartReqBean.java @@ -8,16 +8,13 @@ public class TaxiPassengerStartReqBean { public String orderNo; public String sn; - public TaxiPassengerStartReqBean.Result loc; + public Double gcjLat; + public Double gcjLon; - public static class Result { - public Double lat; - public Double lon; - } - - public TaxiPassengerStartReqBean(String sn, String orderNo, TaxiPassengerStartReqBean.Result point) { + public TaxiPassengerStartReqBean(String sn, String orderNo, Double gcjLat, Double gcjLon) { this.sn = sn; this.orderNo = orderNo; - this.loc = point; + this.gcjLat = gcjLat; + this.gcjLon = gcjLon; } } diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.kt index 0136c8658a..9ca8544288 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.kt @@ -1,6 +1,7 @@ package com.mogo.och.taxi.passenger.callback import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean /** * Created on 2021/9/8 @@ -9,7 +10,7 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean */ interface IOCHTaxiPassengerOrderStatusCallback { // 当前进行单状态变更:新到进行中订单、进行中单状态变更 - fun onCurrentOrderStatusChanged(order: TaxiPassengerOrderQueryRespBean.Result?){} + fun onCurrentOrderStatusChanged(order: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean?){} // 当前位置距离上车点的距离(米)、预估时间(秒) fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long,stationDistance:Int){} diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt index c1994b081d..52fb785058 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt @@ -14,6 +14,8 @@ class TaxiPassengerConst { const val TAXI_AVERAGE_SPEED = 38 + // Taxi + const val VEHICLE_TYPE = 9 // 埋点key:接管后点击'自动驾驶'按钮启动 const val EVENT_KEY_RESTART_AUTOPILOT = "event_key_och_taxi_restart_autopilot" diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt index 0e6ed00158..a795ab6c15 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt @@ -13,10 +13,9 @@ 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.utils.PinYinUtil import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean -import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean +import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager import com.mogo.och.taxi.passenger.utils.TaxiPassengerAnalyticsManager @@ -28,9 +27,10 @@ object AutopilotManager : IMoGoAutopilotStatusListener { init { CallerAutoPilotStatusListenerManager.addListener(TAG, this) } + //检测当前订单 private fun checkCurrentOCHOrder(): Boolean { - return TaxiPassengerModel.currentOCHOrder != null && TaxiPassengerModel.currentOCHOrder!!.startSiteGcjPoint != null && TaxiPassengerModel.currentOCHOrder!!.endSiteGcjPoint != null + return TaxiPassengerModel.currentOCHOrder != null && TaxiPassengerModel.currentOCHOrder!!.orderStartSite != null && TaxiPassengerModel.currentOCHOrder!!.orderEndSite != null } @@ -44,10 +44,11 @@ object AutopilotManager : IMoGoAutopilotStatusListener { return } if (TaxiPassengerModel.currentOCHOrder!!.orderStatus == TaxiPassengerOrderStatusEnum.UserArriveAtStart.code) { - startServicePilotDone() + startAutoPilotServiceByPassenger() } - if(CallerAutoPilotStatusListenerManager.getState() - == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + if (CallerAutoPilotStatusListenerManager.getState() + == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING + ) { ToastUtils.showShort("自驾中、请勿重复启动") return } @@ -57,8 +58,8 @@ object AutopilotManager : IMoGoAutopilotStatusListener { ", 请稍候重试" ) TaxiPassengerAnalyticsManager.triggerUnableStartAPReasonEvent( - TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, - TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, + TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName, + TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName, TaxiPassengerModel.currentOCHOrder!!.orderNo, OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason ) @@ -77,10 +78,16 @@ object AutopilotManager : IMoGoAutopilotStatusListener { SceneConstant.M_TAXI_P + TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters) - + " ,startSiteName=" + TaxiPassengerModel.currentOCHOrder!!.startSiteAddr - + " ,endSiteName=" + TaxiPassengerModel.currentOCHOrder!!.endSiteAddr + + " ,startSiteName=" + TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName + + " ,endSiteName=" + TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName + ) + TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent( + false, + false, + TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName, + TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName, + TaxiPassengerModel.currentOCHOrder!!.orderNo ) - TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent(false, false, TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, TaxiPassengerModel.currentOCHOrder!!.orderNo) } private fun initAutopilotControlParameters(): AutopilotControlParameters? { @@ -93,33 +100,37 @@ object AutopilotManager : IMoGoAutopilotStatusListener { return null } val parameters = AutopilotControlParameters() - val startWgsLon = TaxiPassengerModel.currentOCHOrder!!.startSitePoint[0] - val startWgsLat = TaxiPassengerModel.currentOCHOrder!!.startSitePoint[1] - val endWgsLon = TaxiPassengerModel.currentOCHOrder!!.endSitePoint[0] - val endWgsLat = TaxiPassengerModel.currentOCHOrder!!.endSitePoint[1] - parameters.vehicleType = TaxiPassengerModel.currentOCHOrder!!.businessType + val startWgsLon = TaxiPassengerModel.currentOCHOrder!!.orderStartSite.wgs84Lon + val startWgsLat = TaxiPassengerModel.currentOCHOrder!!.orderStartSite.wgs84Lat + val endWgsLon = TaxiPassengerModel.currentOCHOrder!!.orderEndSite.wgs84Lon + val endWgsLat = TaxiPassengerModel.currentOCHOrder!!.orderEndSite.wgs84Lat + parameters.vehicleType = TaxiPassengerConst.VEHICLE_TYPE parameters.startName = - PinYinUtil.getPinYinHeadChar(TaxiPassengerModel.currentOCHOrder!!.startSiteAddr) // 起点名称拼音首字母大写:科学城B区2号门(KXCBQ2HM) + TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName // 起点名称拼音首字母大写:科学城B区2号门(KXCBQ2HM) parameters.endName = - PinYinUtil.getPinYinHeadChar(TaxiPassengerModel.currentOCHOrder!!.endSiteAddr) // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM) + TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM) parameters.startLatLon = AutopilotControlParameters.AutoPilotLonLat(startWgsLat, startWgsLon) parameters.endLatLon = AutopilotControlParameters.AutoPilotLonLat(endWgsLat, endWgsLon) if (parameters.autoPilotLine == null) { - parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( - TaxiPassengerModel.currentOCHOrder!!.lineId, - TaxiPassengerModel.currentOCHOrder!!.csvFileUrl, - TaxiPassengerModel.currentOCHOrder!!.csvFileMd5, - TaxiPassengerModel.currentOCHOrder!!.txtFileUrl, - TaxiPassengerModel.currentOCHOrder!!.txtFileMd5, - TaxiPassengerModel.currentOCHOrder!!.contrailSaveTime, - TaxiPassengerModel.currentOCHOrder!!.carModel, - TaxiPassengerModel.currentOCHOrder!!.csvFileUrlDPQP, - TaxiPassengerModel.currentOCHOrder!!.csvFileMd5DPQP, - TaxiPassengerModel.currentOCHOrder!!.txtFileUrlDPQP, - TaxiPassengerModel.currentOCHOrder!!.txtFileMd5DPQP, - TaxiPassengerModel.currentOCHOrder!!.contrailSaveTimeDPQP - ) + if (TaxiPassengerModel.currentLineId != null + && TaxiPassengerModel.currentTrajectoryInfo != null + ) { + parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( + TaxiPassengerModel.currentLineId!!, + TaxiPassengerModel.currentTrajectoryInfo!!.csvFileUrl, + TaxiPassengerModel.currentTrajectoryInfo!!.csvFileMd5, + TaxiPassengerModel.currentTrajectoryInfo!!.txtFileUrl, + TaxiPassengerModel.currentTrajectoryInfo!!.txtFileMd5, + TaxiPassengerModel.currentTrajectoryInfo!!.contrailSaveTime, + TaxiPassengerModel.currentTrajectoryInfo!!.carModel, + TaxiPassengerModel.currentTrajectoryInfo!!.csvFileUrlDPQP, + TaxiPassengerModel.currentTrajectoryInfo!!.csvFileMd5DPQP, + TaxiPassengerModel.currentTrajectoryInfo!!.txtFileUrlDPQP, + TaxiPassengerModel.currentTrajectoryInfo!!.txtFileMd5DPQP, + TaxiPassengerModel.currentTrajectoryInfo!!.contrailSaveTimeDPQP + ) + } } return parameters } @@ -159,13 +170,14 @@ object AutopilotManager : IMoGoAutopilotStatusListener { TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent( false, true, - TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, - TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, + TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName, + TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName, TaxiPassengerModel.currentOCHOrder!!.orderNo ) //startServicePilotDone() } } + else -> {} } } @@ -173,21 +185,19 @@ object AutopilotManager : IMoGoAutopilotStatusListener { /** * 乘客屏启动自动驾驶成功 */ - fun startServicePilotDone() { + private fun startAutoPilotServiceByPassenger() { if (TaxiPassengerModel.currentOCHOrder == null) return - val result = TaxiPassengerStartReqBean.Result() val currentLocation = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() - result.lat = currentLocation.latitude - result.lon = currentLocation.longitude - TaxiPassengerServiceManager.startServicePilotDone( - TaxiPassengerModel.currentOCHOrder!!.orderNo, result, + TaxiPassengerServiceManager.startAutoPilotServiceByPassenger( + TaxiPassengerModel.currentOCHOrder!!.orderNo, + currentLocation.latitude, + currentLocation.longitude, object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerBaseRespBean) { VoiceNotice.showNotice("坐稳扶好,我们出发咯!", AIAssist.LEVEL2) } + override fun onFail(code: Int, msg: String) {} }) } - - } \ No newline at end of file diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index 33c9c59ef1..e05ce7c4a7 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -12,7 +12,6 @@ import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxEventListener import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager -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 @@ -29,10 +28,10 @@ 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.TaxiPassengerGetTrajectoryByLineIdRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback -import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum.Companion.valueOf @@ -53,13 +52,23 @@ object TaxiPassengerModel { private val TAG = TaxiPassengerModel::class.java.simpleName private const val STARTREADYTOAUTOPILOT = "startReadyToAutopilot" + private const val MINANDWAITSERVICE = "mInAndWaitService" // 获取当前订单 @Volatile - var currentOCHOrder: TaxiPassengerOrderQueryRespBean.Result? = null//当前订单 + var currentOCHOrder: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean? = null//当前订单 - private val mOrderStatusCallbackMap: MutableMap = ConcurrentHashMap() + // 当前line id + @Volatile + var currentLineId: Long? = null + + // 当前的轨迹信息 + @Volatile + var currentTrajectoryInfo: TaxiPassengerGetTrajectoryByLineIdRespBean.TrajectoryInfo? = null + + private val mOrderStatusCallbackMap: MutableMap = + ConcurrentHashMap() fun setOrderStatusCallback(tag: String?, callback: IOCHTaxiPassengerOrderStatusCallback?) { if (tag == null || "" == tag) return @@ -96,9 +105,9 @@ object TaxiPassengerModel { } private fun initListeners() { - // 2021.11.1重构自动驾驶 实现接口 IMoGoAutopilotStatusListener 注册监听 替换IMogoAdasOCHCallback接口 - IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener) + IntentManager.getInstance() + .registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener) AbnormalFactorsLoopManager.startLoopAbnormalFactors(mContext!!) @@ -124,7 +133,10 @@ object TaxiPassengerModel { private fun startOrStopOrderLoop(start: Boolean) { d(M_TAXI_P + TAG, "startOrStopOrderLoop() $start") if (start) { - BizLoopManager.setLoopFunction(MINANDWAITSERVICE,LoopInfo(2, TaxiPassengerModel::queryInAndWaitOrders)) + BizLoopManager.setLoopFunction( + MINANDWAITSERVICE, + LoopInfo(2, TaxiPassengerModel::queryInAndWaitOrders) + ) } else { BizLoopManager.removeLoopFunction(MINANDWAITSERVICE) } @@ -141,24 +153,28 @@ object TaxiPassengerModel { object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerOrdersInServiceQueryRespBean) { if (data.data == null) { - if(currentOCHOrder!=null){ - queryCurOrderStatus() + if (currentOCHOrder != null) { + queryCurrentOrderStatus() } return } //1. 处理进行中订单 - if (data.data.servicing != null && data.data.servicing.isNotEmpty()) { + if (data.data != null) { // 1.1. 当存在进行中单时:对本地currentOrder进行更新 - val currentOrder = data.data.servicing[0] - if(currentOCHOrder==null||currentOCHOrder?.orderStatus!=currentOrder.orderStatus){ + val currentOrder = data.data.order + currentLineId = data.data.lineId + currentTrajectoryInfo = data.data.trajectoryInfoByQuery + if (currentOCHOrder == null + || currentOCHOrder?.orderStatus != currentOrder.orderStatus + ) { currentOCHOrder = currentOrder orderStatusChange() - }else { + } else { currentOCHOrder = currentOrder } - }else{ - if(currentOCHOrder!=null){ - queryCurOrderStatus() + } else { + if (currentOCHOrder != null) { + queryCurrentOrderStatus() } } } @@ -166,24 +182,36 @@ object TaxiPassengerModel { override fun onError() { e(M_TAXI_P + TAG, "queryInAndWaitOrders onError") } + override fun onFail(code: Int, msg: String) { e(M_TAXI_P + TAG, "queryInAndWaitOrders$code$msg") } }) } - //仅用于轮询时查到本地有mCurrentOCHOrder但请求结果无进行中单or orderId不一致是复查本地currentOrder - private fun queryCurOrderStatus() { + /** + * 仅用于轮询时查到本地有mCurrentOCHOrder但请求结果无进行中单or orderId不一致是复查本地currentOrder + */ + private fun queryCurrentOrderStatus() { currentOCHOrder?.orderNo?.let { TaxiPassengerServiceManager.queryOrderById( - mContext!!, it, + mContext!!, + it, object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerOrderQueryRespBean) { - if (data.data != null && currentOCHOrder != null && currentOCHOrder!!.orderNo == data.data.orderNo) { - if (data.data.orderStatus == TaxiPassengerOrderStatusEnum.Cancel.code || data.data.orderStatus == TaxiPassengerOrderStatusEnum.JourneyCompleted.code || data.data.orderStatus == TaxiPassengerOrderStatusEnum.None.code) { + if (data.data != null + && currentOCHOrder != null + && currentOCHOrder!!.orderNo == data.data.orderNo + ) { + if (data.data.orderStatus == TaxiPassengerOrderStatusEnum.Cancel.code + || data.data.orderStatus == TaxiPassengerOrderStatusEnum.JourneyCompleted.code + || data.data.orderStatus == TaxiPassengerOrderStatusEnum.None.code + ) { currentOCHOrder = data.data orderStatusChange() currentOCHOrder = null + currentLineId = null + currentTrajectoryInfo = null } else { currentOCHOrder = data.data orderStatusChange() @@ -199,7 +227,7 @@ object TaxiPassengerModel { // 获取当前订单状态 val curOrderStatus: TaxiPassengerOrderStatusEnum get() { - val order: TaxiPassengerOrderQueryRespBean.Result = + val order: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean = currentOCHOrder ?: return TaxiPassengerOrderStatusEnum.None return valueOf(order.orderStatus) @@ -217,10 +245,15 @@ object TaxiPassengerModel { val lastTime: Double = distance / TaxiPassengerConst.TAXI_AVERAGE_SPEED * 3.6 //秒 for (callback in mOrderStatusCallbackMap.values) { - callback.onCurrentOrderDistToEndChanged(distance.toLong(),lastTime.toLong(),allDistance.toInt()) + callback.onCurrentOrderDistToEndChanged( + distance.toLong(), + lastTime.toLong(), + allDistance.toInt() + ) } } } + private val mNetWorkIntentListener = IMogoIntentListener { intentStr, intent -> d(M_TAXI_P + TAG, "onIntentReceived = %s", intentStr) if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) { @@ -230,11 +263,19 @@ object TaxiPassengerModel { } } - private val mAdasStartFailureListener: OchAdasStartFailureCallback = object : OchAdasStartFailureCallback { - override fun onStartAutopilotFailure(startFailedCode: String, startFailedMessage: String) { - TaxiPassengerAnalyticsManager.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage) + private val mAdasStartFailureListener: OchAdasStartFailureCallback = + object : OchAdasStartFailureCallback { + override fun onStartAutopilotFailure( + startFailedCode: String, + startFailedMessage: String + ) { + TaxiPassengerAnalyticsManager.triggerStartAutopilotFailureEventByAdas( + startFailedCode, + startFailedMessage + ) } } + private val iMsgBoxEventListener: IMsgBoxEventListener = object : IMsgBoxEventListener { override fun onSummaryClickEvent() { if (currentOCHOrder == null) { @@ -251,13 +292,18 @@ object TaxiPassengerModel { if (currentOCHOrder == null) return TaxiPassengerServiceManager.checkPhoneAndUpdateOrderStatus( currentOCHOrder!!.orderNo, - phoneTail, object : OchCommonServiceCallback { + phoneTail, + object : OchCommonServiceCallback { override fun onSuccess(data: TaxiPassengerBaseRespBean) { if (data.code == 0 && currentOCHOrder != null) { - currentOCHOrder!!.orderStatus = TaxiPassengerOrderStatusEnum.UserArriveAtStart.code + currentOCHOrder!!.orderStatus = + TaxiPassengerOrderStatusEnum.UserArriveAtStart.code //乘客验证成功,更新订单状态为 "乘客已上车", 立马弹出乘客开始行程页面,不再等待轮询 orderStatusChange() - VoiceNotice.showNotice("验证成功!关闭车门并佩戴安全带后开启行程吧!", AIAssist.LEVEL2) + VoiceNotice.showNotice( + "验证成功!关闭车门并佩戴安全带后开启行程吧!", + AIAssist.LEVEL2 + ) } } @@ -271,7 +317,7 @@ object TaxiPassengerModel { }) } - fun orderStatusChange(){ + fun orderStatusChange() { orderStatusChangeInner() if (mOrderStatusCallbackMap.isNotEmpty()) { d(M_TAXI_P + TAG, "最新的状态${curOrderStatus}") @@ -285,12 +331,15 @@ object TaxiPassengerModel { when (curOrderStatus) { TaxiPassengerOrderStatusEnum.OnTheWayToStart -> { } + TaxiPassengerOrderStatusEnum.ArriveAtStart -> { } + TaxiPassengerOrderStatusEnum.UserArriveAtStart -> { //开启轮询司机是否已准备好开启自动驾驶的环境 setStation() } + TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> { CallerFuncBizManager.bizProvider.queryV2XEvents() //全览模式的V2X事件轮询开始 //startOrStopQueryOrderRemaining(true) @@ -298,39 +347,47 @@ object TaxiPassengerModel { setStation() CallerOrderListenerManager.invokeOrderStatus(true) } + TaxiPassengerOrderStatusEnum.ArriveAtEnd -> { AutopilotManager.clearAutopilotControlParameters() //startOrStopQueryOrderRemaining(false) CallerOrderListenerManager.invokeOrderStatus(false) - cleanStation() + clearStation() } + TaxiPassengerOrderStatusEnum.JourneyCompleted -> { AutopilotManager.clearAutopilotControlParameters() //startOrStopQueryOrderRemaining(false) - cleanStation() + clearStation() } + TaxiPassengerOrderStatusEnum.Cancel -> { AutopilotManager.clearAutopilotControlParameters() //startOrStopQueryOrderRemaining(false) - cleanStation() + clearStation() } + TaxiPassengerOrderStatusEnum.None -> TODO() } } - fun setStation() { - if (currentOCHOrder != null) { + private fun setStation() { + if (currentOCHOrder != null && currentLineId != null) { val startStation = MogoLocation() - startStation.longitude = currentOCHOrder!!.startSiteGcjPoint[0] - startStation.latitude = currentOCHOrder!!.startSiteGcjPoint[1] + startStation.longitude = currentOCHOrder!!.orderStartSite.gcjLon + startStation.latitude = currentOCHOrder!!.orderStartSite.gcjLat val endStation = MogoLocation() - endStation.longitude = currentOCHOrder!!.endSiteGcjPoint[0] - endStation.latitude = currentOCHOrder!!.endSiteGcjPoint[1] - TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, currentOCHOrder!!.lineId) + endStation.longitude = currentOCHOrder!!.orderEndSite.gcjLon + endStation.latitude = currentOCHOrder!!.orderEndSite.gcjLat + TrajectoryAndDistanceManager.setStationPoint( + startStation, + endStation, + currentLineId + ) } } - fun cleanStation() { + private fun clearStation() { TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) } diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.kt index 084cbe702c..eab97f59a7 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.kt @@ -3,6 +3,7 @@ package com.mogo.och.taxi.passenger.network import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerGetTrajectoryByLineIdRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean @@ -27,20 +28,32 @@ internal interface TaxiPassengerServiceApi { * @return */ @Headers("Content-type:application/json;charset=UTF-8") - @GET("/autopilot-car-hailing/order/v2/driver/taxi/passenger/orderInService/query") + @GET("/och-taxi-cabin/api/flow/v1/queryCurrentTask") fun queryOrdersInAndWaitService( @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, - @Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token, - @Query("driverSn") driverSn: String + @Header("ticket") ticket: String = MoGoAiCloudClientConfig.getInstance().token, + @Query("sn") sn: String ): Observable + /** + * 根据lineId查询Line详细信息,包含了轨迹文件等信息 + */ + @Headers("Content-type:application/json;charset=UTF-8") + @POST("/och-taxi-cabin/api/business/v1/contrail") + fun getTrajectoryInfoByLineIds( + @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, + @Header("ticket") ticket: String = MoGoAiCloudClientConfig.getInstance().token, + @Query("lineIds") lineIds: List + ):Observable + + /** * 通过orderNo查询订单信息(用于本地已经有orderNo时) * @param data * @return */ @Headers("Content-type:application/json;charset=UTF-8") - @POST("/autopilot-car-hailing/order/v2/driver/taxi/passenger/queryOrderById") + @POST("/och-taxi-cabin/api/business/v1/queryCarOrder") fun queryOrderById( @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, @Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token, @@ -53,7 +66,7 @@ internal interface TaxiPassengerServiceApi { * @return */ @Headers("Content-type:application/json;charset=UTF-8") - @POST("/autopilot-car-hailing/cab/flow/v1/driver/taxi/passenger/verification/phone") + @POST("/och-taxi-cabin/api/flow/v1/verification/phone") fun checkPhoneAndUpdateOrderStatus( @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, @Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token, @@ -68,8 +81,8 @@ internal interface TaxiPassengerServiceApi { * @return */ @Headers("Content-type:application/json;charset=UTF-8") - @POST("/autopilot-car-hailing/cab/flow/v1/driver/taxi/passenger/startServicePilot") - fun startServicePilotDone( + @POST("/och-taxi-cabin/api/flow/v1/startService") + fun startAutoPilotServiceByPassenger( @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, @Header("ticket") ticket: String= MoGoAiCloudClientConfig.getInstance().token, @Body data: TaxiPassengerStartReqBean diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt index c5ceee6b9f..fe096c17c4 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt @@ -1,12 +1,8 @@ package com.mogo.och.taxi.passenger.network import android.content.Context -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean import com.mogo.commons.AbsMogoApplication import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager -import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean -import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean -import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P @@ -14,45 +10,52 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl import com.mogo.och.common.module.biz.network.interceptor.transformTry +import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerGetTrajectoryByLineIdRespBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean /** * Created by pangfan on 2021/8/19 */ object TaxiPassengerServiceManager { - + private val mOCHTaxiServiceApi: TaxiPassengerServiceApi = - MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(TaxiPassengerServiceApi::class.java) + MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()) + .create(TaxiPassengerServiceApi::class.java) private const val TAG = "TaxiPassengerServiceManager" - private var draiverSnCacher = "" + private var driverSnCache = "" /** * 获取Bus司机端的sn * @return */ - val draiverSn: String - get(){ + private val driverSn: String + get() { val serverToken = CallerTelematicManager.getServerToken() - if (serverToken != draiverSnCacher && serverToken.isNotEmpty()) { - draiverSnCacher = serverToken + if (serverToken != driverSnCache && serverToken.isNotEmpty()) { + driverSnCache = serverToken } - return draiverSnCacher + return driverSnCache } - val context:Context + val context: Context get() { return AbsMogoApplication.getApp() } - private fun beforeNet():Boolean{ - if (draiverSn.isBlank()) { + private fun beforeNet(): Boolean { + if (driverSn.isBlank()) { CallerLogger.e(M_TAXI_P + TAG, "没有司机屏sn 请稍等在请求") return true } return false } + /** * 查询全部服务中/待服务订单列表 * @param callback @@ -61,10 +64,19 @@ object TaxiPassengerServiceManager { fun queryOrdersInAndWaitService( callback: OchCommonServiceCallback? ) { - if(beforeNet()){ + if (beforeNet()) { return } - mOCHTaxiServiceApi.queryOrdersInAndWaitService(driverSn = draiverSn) //获取到司机端的sn + mOCHTaxiServiceApi.queryOrdersInAndWaitService(sn = driverSn) //获取到司机端的sn + .flatMap { ordersInServiceQueryResp: TaxiPassengerOrdersInServiceQueryRespBean -> + val lineId = ordersInServiceQueryResp.data.lineId + return@flatMap mOCHTaxiServiceApi.getTrajectoryInfoByLineIds(lineIds = listOf(lineId)) + .map { trajectoryInfoResp: TaxiPassengerGetTrajectoryByLineIdRespBean? -> + val lineInfoByQuery = trajectoryInfoResp?.getTrajectoryInfoByLineId(lineId) + ordersInServiceQueryResp.data.trajectoryInfoByQuery = lineInfoByQuery + ordersInServiceQueryResp + } + } .transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrdersInAndWaitService")) } @@ -75,22 +87,41 @@ object TaxiPassengerServiceManager { phone: String?, callback: OchCommonServiceCallback? ) { - mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus(data= TaxiPassengerCheckPhoneUpdateOrderReqBean(orderNo, phone)) + mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus( + data = TaxiPassengerCheckPhoneUpdateOrderReqBean( + orderNo, + phone + ) + ) .transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) } + /** + * 乘客启动自动驾驶 开始服务 + */ @JvmStatic - fun startServicePilotDone( - orderNo: String?, loc: TaxiPassengerStartReqBean.Result?, + fun startAutoPilotServiceByPassenger( + orderNo: String?, + gcjLat: Double?, + gcjLon: Double?, callback: OchCommonServiceCallback? ) { - if(beforeNet()){ + if (beforeNet()) { return } - mOCHTaxiServiceApi.startServicePilotDone(data = TaxiPassengerStartReqBean(draiverSn, orderNo, loc)) + mOCHTaxiServiceApi.startAutoPilotServiceByPassenger( + data = TaxiPassengerStartReqBean(driverSn, orderNo, gcjLat, gcjLon) + ) .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "startServicePilotDone")) + .retry(3) + .subscribe( + OchCommonSubscribeImpl( + context, + callback, + "startAutoPilotServiceByPassenger" + ) + ) } /** @@ -104,11 +135,11 @@ object TaxiPassengerServiceManager { context: Context, orderNo: String?, callback: OchCommonServiceCallback? ) { - if(beforeNet()){ + if (beforeNet()) { return } mOCHTaxiServiceApi.queryOrderById( - data=TaxiPassengerOrderQueryReqBean(draiverSn, orderNo) + data = TaxiPassengerOrderQueryReqBean(driverSn, orderNo) ) .transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderById")) diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt index ff56b35d47..75c700f443 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt @@ -9,6 +9,7 @@ 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.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum import com.mogo.och.taxi.passenger.model.AutopilotManager @@ -48,7 +49,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : TaxiPassengerModel.setOrderStatusCallback("BaseTaxiPassengerPresenter", null) } - override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrderQueryRespBean.Result?) { + override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean?) { order?.let { updateOrderView(order) } @@ -61,7 +62,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : ) { } - private fun updateOrderView(order: TaxiPassengerOrderQueryRespBean.Result?) { + private fun updateOrderView(order: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean?) { order?.let { setItineraryVisibility() when (TaxiPassengerModel.curOrderStatus) { diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/ArrivedViewModel.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/ArrivedViewModel.kt index 0181c883ac..6fcf776ddc 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/ArrivedViewModel.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/ArrivedViewModel.kt @@ -15,8 +15,8 @@ class ArrivedViewModel: ViewModel() { fun setViewCallback(viewCallback: ArrivedViewCallback){ this.viewCallback = viewCallback - TaxiPassengerModel.currentOCHOrder?.endSiteAddr?.let { - this.viewCallback?.setEndStation(it) + TaxiPassengerModel.currentOCHOrder?.orderEndSite?.let { + this.viewCallback?.setEndStation(it.siteName) } } diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/ChekViewModel.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/ChekViewModel.kt index 5ad2e8aee8..2e2efd99b7 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/ChekViewModel.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/ChekViewModel.kt @@ -1,7 +1,7 @@ package com.mogo.och.taxi.passenger.ui.check import androidx.lifecycle.ViewModel -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum import com.mogo.och.taxi.passenger.model.TaxiPassengerModel @@ -28,12 +28,12 @@ class ChekViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallback { private fun setOrderInfo() { val currentOCHOrder = TaxiPassengerModel.currentOCHOrder currentOCHOrder?.let { order -> - viewCallback?.setOrderInfo(order.startSiteAddr, - order.endSiteAddr, order.passengerNum, order.passengerPhone) + viewCallback?.setOrderInfo(order.orderStartSite.siteName, + order.orderEndSite.siteName, "${order.passengerSize}", order.bookingUserPhone) } } - override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrderQueryRespBean.Result?) { + override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean?) { super.onCurrentOrderStatusChanged(order) order?.let { if(it.orderStatus != TaxiPassengerOrderStatusEnum.UserArriveAtStart.code){ diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/orderinfo/OrderInfoViewModel.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/orderinfo/OrderInfoViewModel.kt index 11f3e8a07d..22b2ed64c7 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/orderinfo/OrderInfoViewModel.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/orderinfo/OrderInfoViewModel.kt @@ -10,6 +10,7 @@ import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.NumberFormatUtil import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum import com.mogo.och.taxi.passenger.model.TaxiPassengerModel @@ -62,10 +63,10 @@ class OrderInfoViewModel: ViewModel(), IMoGoChassisLocationGCJ02Listener, fun setSpeed(speedValue:String) } - override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrderQueryRespBean.Result?) { - order?.endSiteAddr?.let { + override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean?) { + order?.orderEndSite?.let { UiThreadHandler.post { - viewCallback?.setEndStation(it) + viewCallback?.setEndStation(it.siteName) } } when (TaxiPassengerModel.curOrderStatus) { diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotViewModel.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotViewModel.kt index 8891d34fd8..cb9fff3fc8 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotViewModel.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/startautopilot/StartAutopilotViewModel.kt @@ -40,16 +40,16 @@ class StartAutopilotViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallbac private fun setOrderInfo() { val currentOCHOrder = TaxiPassengerModel.currentOCHOrder currentOCHOrder?.let { - val phone = it.passengerPhone + val phone = it.bookingUserPhone val show = if (phone.length > 8) { //截取电话号码前三位 val phoneNumPre = phone.substring(0, 3) //截取电话号码后四位 val phoneNumFix = phone.substring(7) - "用户:$phoneNumPre****$phoneNumFix 目的地:${it.endSiteAddr}" + "用户:$phoneNumPre****$phoneNumFix 目的地:${it.orderEndSite.siteName}" } else { - "用户:${phone} 目的地:${it.endSiteAddr}" + "用户:${phone} 目的地:${it.orderEndSite.siteName}" } viewCallback?.setOrderInfo(show) }