[2.11.0/1.6.0] bus司机端接口调整
This commit is contained in:
@@ -36,7 +36,7 @@ public class BusPassengerModelLoopManager {
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private Disposable mHeartbeatDisposable; //心跳轮询
|
||||
private Disposable mQueryLineDisposable; //心跳轮询
|
||||
private CompositeDisposable mRouteWipeDisposable;
|
||||
private CompositeDisposable mCalculateRouteDisposable; //每隔2s计算一次剩余里程和时间
|
||||
|
||||
@@ -78,11 +78,11 @@ public class BusPassengerModelLoopManager {
|
||||
}
|
||||
|
||||
public void startQueryDriverLineLoop() {
|
||||
if (mHeartbeatDisposable != null && !mHeartbeatDisposable.isDisposed()) {
|
||||
if (mQueryLineDisposable != null && !mQueryLineDisposable.isDisposed()) {
|
||||
return;
|
||||
}
|
||||
CallerLogger.INSTANCE.i(M_BUS_P + TAG, "startQueryDriverLineLoop()");
|
||||
mHeartbeatDisposable = Observable.interval(LOOP_DELAY,
|
||||
mQueryLineDisposable = Observable.interval(LOOP_DELAY,
|
||||
LOOP_LINE_2S, TimeUnit.MILLISECONDS)
|
||||
.map((aLong -> aLong + 1))
|
||||
.subscribeOn(Schedulers.io())
|
||||
@@ -91,10 +91,10 @@ public class BusPassengerModelLoopManager {
|
||||
}
|
||||
|
||||
public void stopQueryDriverLineLoop() {
|
||||
if (mHeartbeatDisposable != null) {
|
||||
if (mQueryLineDisposable != null) {
|
||||
CallerLogger.INSTANCE.i(M_BUS_P + TAG, "stopQueryDriverLineLoop()");
|
||||
mHeartbeatDisposable.dispose();
|
||||
mHeartbeatDisposable = null;
|
||||
mQueryLineDisposable.dispose();
|
||||
mQueryLineDisposable = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -75,5 +75,9 @@ class BusConst {
|
||||
|
||||
//围栏到站 暂定10米
|
||||
const val ARRIVE_AT_END_STATION_DISTANCE = 10
|
||||
|
||||
// 轮询
|
||||
const val LOOP_PASSENGER_2S = 2 * 1000L
|
||||
const val LOOP_PASSENGER_1S = 1 * 1000L
|
||||
}
|
||||
}
|
||||
@@ -340,6 +340,7 @@ public class BusOrderModel {
|
||||
mBusOrdersDisposable.dispose();
|
||||
}
|
||||
startOrStopOrderLoop(false);
|
||||
startOrStopQueryPassengerWriteOff(false);
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getStatusManagerApi()
|
||||
@@ -507,9 +508,9 @@ public class BusOrderModel {
|
||||
public void abortTask() {
|
||||
CallerLogger.INSTANCE.d( M_BUS + TAG, "结束当前路线abortTask");
|
||||
BusServiceManager.getInstance().abortTask(mContext, currentLineId
|
||||
, new IBusServiceCallback<BusRoutesResponse>() {
|
||||
, new IBusServiceCallback<BaseData>() {
|
||||
@Override
|
||||
public void onSuccess(BusRoutesResponse o) {
|
||||
public void onSuccess(BaseData o) {
|
||||
CallerLogger.INSTANCE.d(M_BUS + TAG, "abortTask success: " + o);
|
||||
isGoingToNextStation = false;
|
||||
if (o.code == 0){ // 重置成功
|
||||
@@ -525,37 +526,6 @@ public class BusOrderModel {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 离站上报
|
||||
*/
|
||||
public void leaveStation(boolean isRestart){
|
||||
CallerLogger.INSTANCE.d(M_BUS + TAG,"leaveStation-backgroundCurrentStationIndex = "+backgroundCurrentStationIndex);
|
||||
BusServiceManager.getInstance().leaveStation(mContext,
|
||||
stationList.get(backgroundCurrentStationIndex).getSeq(),
|
||||
stationList.get(backgroundCurrentStationIndex).getSiteId(),
|
||||
currentLineId,
|
||||
new IBusServiceCallback<BusRoutesResponse>() {
|
||||
@Override
|
||||
public void onSuccess(BusRoutesResponse o) {
|
||||
if ( o.getResult() == null || o.getResult().getSites() == null || o.getResult().getSites().isEmpty() ) {
|
||||
return;
|
||||
}
|
||||
isArrivedStation = false;
|
||||
CallerLogger.INSTANCE.d( M_BUS + TAG, "自动驾驶开启开往下一站====" );
|
||||
//需要更改当前站和下一站的状态 然后渲染
|
||||
leaveStationSuccess(o.getResult(),isRestart);
|
||||
}
|
||||
@Override
|
||||
public void onFail(String failMsg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
}else{
|
||||
ToastUtils.showShort("离站上报失败:"+failMsg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 离站上报成功后渲染站点
|
||||
* 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站,
|
||||
@@ -569,9 +539,7 @@ public class BusOrderModel {
|
||||
paramIndexes = {0},
|
||||
clientPkFileName = "sn"
|
||||
)
|
||||
private void leaveStationSuccess(BusRoutesResult result, boolean isRestart) {
|
||||
|
||||
updateBusStatus(result);
|
||||
private void leaveStationSuccess(boolean isRestart) {
|
||||
|
||||
//开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启
|
||||
if (isRestart || CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()
|
||||
@@ -630,6 +598,21 @@ public class BusOrderModel {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 到站查询核销乘客
|
||||
*/
|
||||
public void queryPassengerWriteOff(){
|
||||
//todo 查询接口拿到核销乘客波播报
|
||||
}
|
||||
|
||||
private void startOrStopQueryPassengerWriteOff(boolean isStart){
|
||||
if (isStart){
|
||||
BusModelLoopManager.getInstance().startQueryPassengerWriteOffLoop();
|
||||
}else {
|
||||
BusModelLoopManager.getInstance().stopQueryPassengerWriteOffLoop();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 到站后重置站点状态
|
||||
*/
|
||||
@@ -654,17 +637,46 @@ public class BusOrderModel {
|
||||
CallerLogger.INSTANCE.d(M_BUS + TAG,"arriveSiteStation success");
|
||||
if (!isRestart){
|
||||
arrivedBusStationSuccess();
|
||||
//todo 开始轮询到站核销的乘客
|
||||
startOrStopQueryPassengerWriteOff(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFail(String failMsg) {
|
||||
// if (!NetworkUtils.isConnected(mContext)) {
|
||||
// ToastUtils.showShort("网络异常,请稍后重试");
|
||||
// }else {
|
||||
// ToastUtils.showShort("离站上报失败:"+failMsg);
|
||||
// }
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 离站上报
|
||||
*/
|
||||
public void leaveStation(boolean isRestart){
|
||||
CallerLogger.INSTANCE.d(M_BUS + TAG,"leaveStation-backgroundCurrentStationIndex = "+backgroundCurrentStationIndex);
|
||||
BusServiceManager.getInstance().leaveStation(mContext,
|
||||
stationList.get(backgroundCurrentStationIndex).getSeq(),
|
||||
stationList.get(backgroundCurrentStationIndex).getSiteId(),
|
||||
currentLineId,
|
||||
new IBusServiceCallback<BaseData>() {
|
||||
@Override
|
||||
public void onSuccess(BaseData o) {
|
||||
isArrivedStation = false;
|
||||
CallerLogger.INSTANCE.d( M_BUS + TAG, "自动驾驶开启开往下一站====" );
|
||||
//需要更改当前站和下一站的状态 然后渲染
|
||||
leaveStationSuccess(isRestart);
|
||||
queryBusRoutes();
|
||||
startOrStopQueryPassengerWriteOff(false);
|
||||
}
|
||||
@Override
|
||||
public void onFail(String failMsg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
}else{
|
||||
ToastUtils.showShort("离站上报失败:"+failMsg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -801,7 +813,7 @@ public class BusOrderModel {
|
||||
/**
|
||||
* 开启自动驾驶到下一站
|
||||
*/
|
||||
public void autoDriveToNextStation( boolean isRestart ) {
|
||||
public void autoDriveToNextStation(boolean isRestart) {
|
||||
if ( backgroundCurrentStationIndex >= stationList.size() - 1 ) {
|
||||
// 当前站是最后一站,结束当前行程
|
||||
travelOver();
|
||||
@@ -880,25 +892,6 @@ public class BusOrderModel {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据订单状态、获取下一站靠站的的站点
|
||||
*
|
||||
* @return -1 当前已是最后一个站点
|
||||
*/
|
||||
private int getNextStopStation() {
|
||||
if ( backgroundCurrentStationIndex >= stationList.size() - 1 ) {
|
||||
return -1;
|
||||
}
|
||||
int nextStationIndex = backgroundCurrentStationIndex + 1;
|
||||
for ( ; nextStationIndex < stationList.size() - 1; nextStationIndex++ ) {
|
||||
if ( stationList.get( nextStationIndex ).getIfStop() == 1 ) {
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return nextStationIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* 延时查询站点信心
|
||||
*/
|
||||
@@ -911,7 +904,7 @@ public class BusOrderModel {
|
||||
*/
|
||||
public void restartAutopilot() {
|
||||
CallerLogger.INSTANCE.d( M_BUS + TAG, "重启自动驾驶===" + isGoingToNextStation );
|
||||
autoDriveToNextStation( true );
|
||||
autoDriveToNextStation(true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -981,7 +974,7 @@ public class BusOrderModel {
|
||||
CallerLogger.INSTANCE.d( M_BUS + TAG, "单程结束====" );
|
||||
CallerAutoPilotManager.INSTANCE.cancelAutoPilot();
|
||||
AIAssist.getInstance( mContext ).speakTTSVoice( "感谢您体验'蘑菇车联'无人驾驶小巴车,请您携带好随身物品,我们下次再见" );
|
||||
// leaveStation(true,true);
|
||||
|
||||
endTask();
|
||||
}
|
||||
|
||||
@@ -991,14 +984,15 @@ public class BusOrderModel {
|
||||
private void endTask() {
|
||||
CallerLogger.INSTANCE.d( M_BUS + TAG, "任务正常走完endTask()");
|
||||
BusServiceManager.getInstance().endTask(mContext, currentLineId
|
||||
, new IBusServiceCallback<BusRoutesResponse>() {
|
||||
, new IBusServiceCallback<BaseData>() {
|
||||
@Override
|
||||
public void onSuccess(BusRoutesResponse o) {
|
||||
public void onSuccess(BaseData o) {
|
||||
CallerLogger.INSTANCE.d(M_BUS + TAG, "endTask success: " + o);
|
||||
if (o.code == 0){ // 重新获取任务
|
||||
if (o.code == 0){
|
||||
isGoingToNextStation = false;
|
||||
backgroundCurrentStationIndex = 0;
|
||||
queryBusRoutes();
|
||||
queryBusRoutes();// 重新获取任务
|
||||
startOrStopQueryPassengerWriteOff(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1035,16 +1029,18 @@ public class BusOrderModel {
|
||||
CallerLogger.INSTANCE.d( M_BUS + TAG, "到站====currentStationIndex=" + backgroundCurrentStationIndex);
|
||||
isGoingToNextStation = false;
|
||||
|
||||
queryStationLeaveAwayPassengers();
|
||||
UiThreadHandler.postDelayed(new Runnable() {// 先查询下车乘客,再上报到站,便于后台筛查下车订单
|
||||
@Override
|
||||
public void run() {
|
||||
if (!hadQueryLeaveAwayPassager){
|
||||
arriveSiteStation(false);
|
||||
}
|
||||
hadQueryLeaveAwayPassager = false;
|
||||
}
|
||||
},1500);
|
||||
arriveSiteStation(false);
|
||||
|
||||
// queryStationLeaveAwayPassengers();// 2.11.0不再播报乘客下车
|
||||
// UiThreadHandler.postDelayed(new Runnable() {// 先查询下车乘客,再上报到站,便于后台筛查下车订单
|
||||
// @Override
|
||||
// public void run() {
|
||||
// if (!hadQueryLeaveAwayPassager){
|
||||
// arriveSiteStation(false);
|
||||
// }
|
||||
// hadQueryLeaveAwayPassager = false;
|
||||
// }
|
||||
// },1500);
|
||||
}
|
||||
|
||||
public boolean isGoingToNextStation() {
|
||||
|
||||
@@ -83,12 +83,12 @@ public class BusServiceManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束当前任务
|
||||
* 中断当前任务
|
||||
* @param context
|
||||
* @param taskId
|
||||
* @param callback
|
||||
*/
|
||||
public void abortTask(Context context, int taskId, IBusServiceCallback<BusRoutesResponse> callback){
|
||||
public void abortTask(Context context, int taskId, IBusServiceCallback<BaseData> callback){
|
||||
mService.abortTask(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
|
||||
,MoGoAiCloudClientConfig.getInstance().getToken()
|
||||
,new BusCloseTaskRequest(taskId))
|
||||
@@ -102,7 +102,7 @@ public class BusServiceManager {
|
||||
* @param taskId
|
||||
* @param callback
|
||||
*/
|
||||
public void endTask(Context context, int taskId, IBusServiceCallback<BusRoutesResponse> callback){
|
||||
public void endTask(Context context, int taskId, IBusServiceCallback<BaseData> callback){
|
||||
mService.endTask(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
|
||||
,MoGoAiCloudClientConfig.getInstance().getToken()
|
||||
,new BusCloseTaskRequest(taskId))
|
||||
@@ -117,7 +117,7 @@ public class BusServiceManager {
|
||||
* @param siteId
|
||||
* @param callback
|
||||
*/
|
||||
public void leaveStation(Context context, int seq, int siteId,int taskId, IBusServiceCallback<BusRoutesResponse> callback){
|
||||
public void leaveStation(Context context, int seq, int siteId,int taskId, IBusServiceCallback<BaseData> callback){
|
||||
mService.leaveStation(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
|
||||
,MoGoAiCloudClientConfig.getInstance().getToken()
|
||||
,new BusUpdateSiteStatusRequest(taskId,siteId,seq))
|
||||
|
||||
@@ -62,7 +62,7 @@ public interface IBusApiService {
|
||||
// @POST("/autopilot-car-hailing/car/v2/driver/bus/driving/away")
|
||||
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/leave")
|
||||
// @POST("/mock/268/autopilot-car-hailing/bus/api/driving/away")
|
||||
Observable<BusRoutesResponse> leaveStation(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusUpdateSiteStatusRequest request);
|
||||
Observable<BaseData> leaveStation(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusUpdateSiteStatusRequest request);
|
||||
|
||||
/**
|
||||
* 到站 更新到站信息
|
||||
@@ -165,7 +165,7 @@ public interface IBusApiService {
|
||||
*/
|
||||
@Headers( {"Content-type:application/json;charset=UTF-8"} )
|
||||
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/abortTask")
|
||||
Observable<BusRoutesResponse> abortTask(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusCloseTaskRequest data);
|
||||
Observable<BaseData> abortTask(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusCloseTaskRequest data);
|
||||
|
||||
/**
|
||||
* 任务正常跑完结束
|
||||
@@ -176,6 +176,6 @@ public interface IBusApiService {
|
||||
*/
|
||||
@Headers( {"Content-type:application/json;charset=UTF-8"} )
|
||||
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/endTask")
|
||||
Observable<BusRoutesResponse> endTask(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusCloseTaskRequest data);
|
||||
Observable<BaseData> endTask(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusCloseTaskRequest data);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.mogo.och.bus.presenter;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS;
|
||||
import static com.mogo.och.bus.constant.BusConst.LOOP_DELAY;
|
||||
import static com.mogo.och.bus.constant.BusConst.LOOP_PASSENGER_2S;
|
||||
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.bus.constant.BusConst;
|
||||
@@ -31,6 +33,28 @@ public class BusModelLoopManager {
|
||||
}
|
||||
|
||||
private Disposable mHeartbeatDisposable; //心跳轮询
|
||||
private Disposable mQueryPassengerDisposable; //查询核销乘客
|
||||
|
||||
public void startQueryPassengerWriteOffLoop() {
|
||||
if (mQueryPassengerDisposable != null && !mQueryPassengerDisposable.isDisposed()) {
|
||||
return;
|
||||
}
|
||||
CallerLogger.INSTANCE.i(M_BUS + TAG, "startQueryPassengerWriteOffLoop()");
|
||||
mQueryPassengerDisposable = Observable.interval(LOOP_DELAY,
|
||||
LOOP_PASSENGER_2S, TimeUnit.MILLISECONDS)
|
||||
.map((aLong -> aLong + 1))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(aLong -> BusOrderModel.getInstance().queryPassengerWriteOff());
|
||||
}
|
||||
|
||||
public void stopQueryPassengerWriteOffLoop() {
|
||||
if (mQueryPassengerDisposable != null) {
|
||||
CallerLogger.INSTANCE.i(M_BUS + TAG, "stopQueryPassengerWriteOffLoop()");
|
||||
mQueryPassengerDisposable.dispose();
|
||||
mQueryPassengerDisposable = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void startHeartbeatLoop() {
|
||||
if (mHeartbeatDisposable != null && !mHeartbeatDisposable.isDisposed()) {
|
||||
|
||||
Reference in New Issue
Block a user