[Taxi无人化]refactor: 乘客屏相关接口及数据结构调整;
refactor: 起自驾时 startName/endName 直接传 中文名字,不传拼音了;
This commit is contained in:
@@ -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<TrajectoryInfo> 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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Result>{
|
||||
// 订单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<Double> startSitePoint; //wgs坐标,用于自动驾驶 [lon,lat]
|
||||
public List<Double> startSiteGcjPoint; //高德坐标,用于本地计算距离 [lon,lat]
|
||||
// 终点站点id
|
||||
public int endSiteId;
|
||||
// 终点站点名称
|
||||
public String endSiteAddr;
|
||||
// 终点站点坐标
|
||||
public List<Double> endSitePoint; //wgs坐标,用于自动驾驶 [lon,lat]
|
||||
public List<Double> 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;
|
||||
}
|
||||
|
||||
@@ -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<TaxiPassengerOrderQueryRespBean.Result> 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<Long> 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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){}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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<TaxiPassengerBaseRespBean> {
|
||||
override fun onSuccess(data: TaxiPassengerBaseRespBean) {
|
||||
VoiceNotice.showNotice("坐稳扶好,我们出发咯!", AIAssist.LEVEL2)
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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<String, IOCHTaxiPassengerOrderStatusCallback> = ConcurrentHashMap()
|
||||
// 当前line id
|
||||
@Volatile
|
||||
var currentLineId: Long? = null
|
||||
|
||||
// 当前的轨迹信息
|
||||
@Volatile
|
||||
var currentTrajectoryInfo: TaxiPassengerGetTrajectoryByLineIdRespBean.TrajectoryInfo? = null
|
||||
|
||||
private val mOrderStatusCallbackMap: MutableMap<String, IOCHTaxiPassengerOrderStatusCallback> =
|
||||
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<TaxiPassengerOrdersInServiceQueryRespBean> {
|
||||
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<TaxiPassengerOrderQueryRespBean> {
|
||||
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<TaxiPassengerBaseRespBean> {
|
||||
phoneTail,
|
||||
object : OchCommonServiceCallback<TaxiPassengerBaseRespBean> {
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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<TaxiPassengerOrdersInServiceQueryRespBean>
|
||||
|
||||
/**
|
||||
* 根据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<Long>
|
||||
):Observable<TaxiPassengerGetTrajectoryByLineIdRespBean>
|
||||
|
||||
|
||||
/**
|
||||
* 通过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
|
||||
|
||||
@@ -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<TaxiPassengerOrdersInServiceQueryRespBean>?
|
||||
) {
|
||||
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<TaxiPassengerBaseRespBean>?
|
||||
) {
|
||||
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<TaxiPassengerBaseRespBean>?
|
||||
) {
|
||||
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<TaxiPassengerOrderQueryRespBean>?
|
||||
) {
|
||||
if(beforeNet()){
|
||||
if (beforeNet()) {
|
||||
return
|
||||
}
|
||||
mOCHTaxiServiceApi.queryOrderById(
|
||||
data=TaxiPassengerOrderQueryReqBean(draiverSn, orderNo)
|
||||
data = TaxiPassengerOrderQueryReqBean(driverSn, orderNo)
|
||||
)
|
||||
.transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderById"))
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user