diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java index 2fa4642c97..e08b00229d 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java @@ -133,11 +133,15 @@ public class MogoOCHTaxiModelNew { } if (NetworkUtils.isConnected(mContext)) { - startOrStopOrderLoop(mOCHCarStatus == 1); +// startOrStopOrderLoop(mOCHCarStatus == 1); queryCarStatus(); } } + public void startOrStopOrderLoop(){ + startOrStopOrderLoop(mOCHCarStatus == 1); + } + public void release() { startOrStopOrderLoop(false); releaseListeners(); @@ -275,70 +279,70 @@ public class MogoOCHTaxiModelNew { public void queryInAndWaitOrders() { OCHTaxiServiceManagerNew.getInstance().queryOrdersInAndWaitService(mContext, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(OrdersInServiceQueryRespBean data) { - if (data == null || data.data == null) { - return; - } - - //1. 处理进行中订单 - mInServiceList = data.data.servicing; - if (data.data.servicing != null && !data.data.servicing.isEmpty()) { - // 1.1. 当存在进行中单时:对本地currentOrder进行更新 - if (mCurrentOCHOrder == null) { - //1.1.1. 当本地无currentOrder(已经完成or取消),则更新currentOrder,并通知ui更新 - updateNativeCurrentOrder(data.data.servicing.get(0)); - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + @Override + public void onSuccess(OrdersInServiceQueryRespBean data) { + if (data == null || data.data == null) { + return; } - } else { - //1.1.2. 当本地有currentOrder: - //orderId不一致时:通过currentOrder.orderId查询订单状态,并通知ui更新 - //orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新 - if (mCurrentOCHOrder.orderId != data.data.servicing.get(0).orderId) { - queryCurOrderStatus(); - } else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) { - updateNativeCurrentOrder(data.data.servicing.get(0)); - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + + //1. 处理进行中订单 + mInServiceList = data.data.servicing; + if (data.data.servicing != null && !data.data.servicing.isEmpty()) { + // 1.1. 当存在进行中单时:对本地currentOrder进行更新 + if (mCurrentOCHOrder == null) { + //1.1.1. 当本地无currentOrder(已经完成or取消),则更新currentOrder,并通知ui更新 + updateNativeCurrentOrder(data.data.servicing.get(0)); + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + } + } else { + //1.1.2. 当本地有currentOrder: + //orderId不一致时:通过currentOrder.orderId查询订单状态,并通知ui更新 + //orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新 + if (mCurrentOCHOrder.orderId != data.data.servicing.get(0).orderId) { + queryCurOrderStatus(); + } else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) { + updateNativeCurrentOrder(data.data.servicing.get(0)); + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + } + } + } + } else { + // 1.2. 当无进行中订单时:如果本地也无则跳过;如果本地仍存在currentOrder,查询此单(完成or取消)并通知ui更新 + if (mCurrentOCHOrder != null) { + queryCurOrderStatus(); + } + } + + //2. 处理待服务订单列表 + if (data.data.waitService != null && !data.data.waitService.isEmpty()) { + //2.1. 当存在待服务订单列表:跟本地待服务列表比较 + if (mWaitServiceList.isEmpty() + || (mWaitServiceList.size() != data.data.waitService.size()) + || !OrderUtil.haveSameOrders(mWaitServiceList, data.data.waitService)) { + // 2.1.1. 当本地无待服务单,或数量和内容不一致,更新本地待服务列表,并通知ui更新 + mWaitServiceList = data.data.waitService; + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onOrdersWaitServiceChanged(mWaitServiceList); + } + } + } else { + //2.2. 当无待服务单时:如果本地也无则跳过;如果本地有,则清除并通知ui更新 + if (!mWaitServiceList.isEmpty()) { + mWaitServiceList.clear(); + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onOrdersWaitServiceChanged(mWaitServiceList); + } } } } - } else { - // 1.2. 当无进行中订单时:如果本地也无则跳过;如果本地仍存在currentOrder,查询此单(完成or取消)并通知ui更新 - if (mCurrentOCHOrder != null) { - queryCurOrderStatus(); - } - } - //2. 处理待服务订单列表 - if (data.data.waitService != null && !data.data.waitService.isEmpty()) { - //2.1. 当存在待服务订单列表:跟本地待服务列表比较 - if (mWaitServiceList.isEmpty() - || (mWaitServiceList.size() != data.data.waitService.size()) - || !OrderUtil.haveSameOrders(mWaitServiceList, data.data.waitService)) { - // 2.1.1. 当本地无待服务单,或数量和内容不一致,更新本地待服务列表,并通知ui更新 - mWaitServiceList = data.data.waitService; - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onOrdersWaitServiceChanged(mWaitServiceList); - } - } - } else { - //2.2. 当无待服务单时:如果本地也无则跳过;如果本地有,则清除并通知ui更新 - if (!mWaitServiceList.isEmpty()) { - mWaitServiceList.clear(); - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onOrdersWaitServiceChanged(mWaitServiceList); - } - } - } - } + @Override + public void onFail(int code, String msg) { - @Override - public void onFail(int code, String msg) { - - } - }); + } + }); } //仅用于轮询时查到本地有mCurrentOCHOrder但请求结果无进行中单or orderId不一致是复查本地currentOrder @@ -349,29 +353,29 @@ public class MogoOCHTaxiModelNew { final long orderId = mCurrentOCHOrder.orderId; OCHTaxiServiceManagerNew.getInstance().queryOrderById(mContext, orderId, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(OrderQueryRespBean data) { - if (data != null && data.data != null - && mCurrentOCHOrder != null && mCurrentOCHOrder.orderId == data.data.orderId) { - if (data.data.orderStatus == OrderStatusEnum.Cancel.getCode() - || data.data.orderStatus == OrderStatusEnum.JourneyCompleted.getCode() - || data.data.orderStatus == OrderStatusEnum.None.getCode()) { - clearCurrentOCHOrder(); - cancelAutopilot(); - } else { - updateNativeCurrentOrder(data.data); + @Override + public void onSuccess(OrderQueryRespBean data) { + if (data != null && data.data != null + && mCurrentOCHOrder != null && mCurrentOCHOrder.orderId == data.data.orderId) { + if (data.data.orderStatus == OrderStatusEnum.Cancel.getCode() + || data.data.orderStatus == OrderStatusEnum.JourneyCompleted.getCode() + || data.data.orderStatus == OrderStatusEnum.None.getCode()) { + clearCurrentOCHOrder(); + cancelAutopilot(); + } else { + updateNativeCurrentOrder(data.data); + } + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onCurrentOrderStatusChanged(data.data); + } + } } - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderStatusChanged(data.data); + + @Override + public void onFail(int code, String msg) { + } - } - } - - @Override - public void onFail(int code, String msg) { - - } - }); + }); } //更新当前订单状态 @@ -382,29 +386,29 @@ public class MogoOCHTaxiModelNew { final long orderId = mCurrentOCHOrder.orderId; OCHTaxiServiceManagerNew.getInstance().updateOrderStatus(mContext, orderId, orderStatus.getCode(), new OCHTaxiServiceCallback() { - @Override - public void onSuccess(BaseData data) { - if (null != data && 0 == data.code - && mCurrentOCHOrder != null && mCurrentOCHOrder.orderId == orderId) { - mCurrentOCHOrder.orderStatus = orderStatus.getCode(); - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + @Override + public void onSuccess(BaseData data) { + if (null != data && 0 == data.code + && mCurrentOCHOrder != null && mCurrentOCHOrder.orderId == orderId) { + mCurrentOCHOrder.orderStatus = orderStatus.getCode(); + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); + } + } } - } - } - @Override - public void onError() { - if (!NetworkUtils.isConnected(mContext)) { - TipToast.shortTip("网络异常,请稍后重试"); - } - } + @Override + public void onError() { + if (!NetworkUtils.isConnected(mContext)) { + TipToast.shortTip("网络异常,请稍后重试"); + } + } - @Override - public void onFail(int code, String msg) { + @Override + public void onFail(int code, String msg) { // TipToast.shortTip(code + "," + msg); - } - }); + } + }); } // 取消当前订单 @@ -416,23 +420,23 @@ public class MogoOCHTaxiModelNew { final long orderId = mCurrentOCHOrder.orderId; OCHTaxiServiceManagerNew.getInstance().cancelOrder(mContext, orderId, reasonType, reason, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(BaseData data) { - if (null != data && 0 == data.code - && mCurrentOCHOrder != null && mCurrentOCHOrder.orderId == orderId) { - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderCancelDone(); + @Override + public void onSuccess(BaseData data) { + if (null != data && 0 == data.code + && mCurrentOCHOrder != null && mCurrentOCHOrder.orderId == orderId) { + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onCurrentOrderCancelDone(); + } + clearCurrentOCHOrder(); + cancelAutopilot(); + } } - clearCurrentOCHOrder(); - cancelAutopilot(); - } - } - @Override - public void onFail(int code, String msg) { + @Override + public void onFail(int code, String msg) { // TipToast.shortTip(code + "," + msg); - } - }); + } + }); } // 取消待服务中订单 @@ -463,96 +467,96 @@ public class MogoOCHTaxiModelNew { final long orderId = mCurrentOCHOrder.orderId; OCHTaxiServiceManagerNew.getInstance().queryOrderRouteInfo(mContext, orderId, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(OrderQueryRouteInfoRespBean data) { - if (null != data && 0 == data.code - && mCurrentOCHOrder != null && mCurrentOCHOrder.orderId == orderId) { - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderRouteInfoGot(data.data); + @Override + public void onSuccess(OrderQueryRouteInfoRespBean data) { + if (null != data && 0 == data.code + && mCurrentOCHOrder != null && mCurrentOCHOrder.orderId == orderId) { + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onCurrentOrderRouteInfoGot(data.data); + } + } } - } - } - @Override - public void onFail(int code, String msg) { + @Override + public void onFail(int code, String msg) { // TipToast.shortTip(code + "," + msg); - } - }); + } + }); } // 获取全部订单列表 public void queryOrdersList(int page, int size) { OCHTaxiServiceManagerNew.getInstance().queryOrdersList(mContext, page, size, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(OrdersListQueryRespBean data) { - if (null != data && 0 == data.code) { - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onOrdersListPageRefresh(data.data.orders); + @Override + public void onSuccess(OrdersListQueryRespBean data) { + if (null != data && 0 == data.code) { + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onOrdersListPageRefresh(data.data.orders); + } + } } - } - } - @Override - public void onFail(int code, String msg) { - TipToast.shortTip("请求异常,请稍后重试"); - } - }); + @Override + public void onFail(int code, String msg) { + TipToast.shortTip("请求异常,请稍后重试"); + } + }); } /** * 查询新到预约单 * * 注:只有在本地缓存mNewBookingOrder为null时(执行完抢单or司机关闭改单),才更新新到待抢单 - */ + */ public void queryNewBookingOrder() { OCHTaxiServiceManagerNew.getInstance().queryNewBookingOrder(mContext, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(OrdersNewBookingQueryRespBean data) { - if (data != null && data.code == 0 - && data.data != null && data.data.orders.size() > 0) { - // 本地无新到单,且本次新到单id与上次收到的新单id不同时:显示本次新到单 - if (mNewBookingOrder == null ) { - for (Long orderId : data.data.orders) { - if (mPrevOrderId != orderId.longValue()) { - queryNewBookingContent(orderId.longValue()); - break; + @Override + public void onSuccess(OrdersNewBookingQueryRespBean data) { + if (data != null && data.code == 0 + && data.data != null && data.data.orders.size() > 0) { + // 本地无新到单,且本次新到单id与上次收到的新单id不同时:显示本次新到单 + if (mNewBookingOrder == null ) { + for (Long orderId : data.data.orders) { + if (mPrevOrderId != orderId.longValue()) { + queryNewBookingContent(orderId.longValue()); + break; + } + } } } } - } - } - @Override - public void onFail(int code, String msg) { + @Override + public void onFail(int code, String msg) { - } - }); + } + }); } // 仅限于获取到新待抢单且需要展示时查询该单信息:(queryOrderById接口可以查询属于该车的单、未派的单) private void queryNewBookingContent(final long orderId) { OCHTaxiServiceManagerNew.getInstance().queryOrderById(mContext, orderId, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(OrderQueryRespBean data) { - if (data != null && data.code == 0 - && data.data != null && data.data.orderId == orderId - && data.data.orderType == OrderTypeEnum.Reserved.getType()) { - mNewBookingOrder = data.data; - mPrevOrderId = data.data.orderId; - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onNewBookingOrderGot(mNewBookingOrder); + @Override + public void onSuccess(OrderQueryRespBean data) { + if (data != null && data.code == 0 + && data.data != null && data.data.orderId == orderId + && data.data.orderType == OrderTypeEnum.Reserved.getType()) { + mNewBookingOrder = data.data; + mPrevOrderId = data.data.orderId; + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onNewBookingOrderGot(mNewBookingOrder); + } + } } - } - } - @Override - public void onFail(int code, String msg) { + @Override + public void onFail(int code, String msg) { - } - }); + } + }); } // 执行抢单动作 @@ -566,22 +570,22 @@ public class MogoOCHTaxiModelNew { final long orderId = mNewBookingOrder.orderId; OCHTaxiServiceManagerNew.getInstance().grabOrder(mContext, orderId, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(OrderGrabRespBean data) { - if (data != null && data.code == 0 - && mNewBookingOrder != null && mNewBookingOrder.orderId == orderId) { - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onGrabOrderExecuteDone(); - OCHTaxiModelLoopManager.getInstance().startGrabResultLoop(); + @Override + public void onSuccess(OrderGrabRespBean data) { + if (data != null && data.code == 0 + && mNewBookingOrder != null && mNewBookingOrder.orderId == orderId) { + if (mOrderStatusCallback != null) { + mOrderStatusCallback.onGrabOrderExecuteDone(); + OCHTaxiModelLoopManager.getInstance().startGrabResultLoop(); + } + } } - } - } - @Override - public void onFail(int code, String msg) { - TipToast.shortTip("请求异常,请稍后重试"); - } - }); + @Override + public void onFail(int code, String msg) { + TipToast.shortTip("请求异常,请稍后重试"); + } + }); } // 查询抢单结果 @@ -596,77 +600,77 @@ public class MogoOCHTaxiModelNew { final long orderId = mNewBookingOrder.orderId; OCHTaxiServiceManagerNew.getInstance().queryOrderGrabStatus(mContext, orderId, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(OrderGrabStatusQueryRespBean data) { - //OCHTaxiModelLoopManager.getInstance().stopGrabResultLoop(); - if (data != null && data.code == 0 - && mNewBookingOrder != null && mNewBookingOrder.orderId == orderId) { - if (data.data.grabStatus == 0) { - return; //抢单中,不处理继续轮询结果 - } - if (mOrderStatusCallback != null) { - if (data.data.grabStatus == 1) { - mOrderStatusCallback.onGrabOrderSuccess(mNewBookingOrder); - } else if (data.data.grabStatus == 2) { - mOrderStatusCallback.onGrabOrderFailed(mNewBookingOrder); + @Override + public void onSuccess(OrderGrabStatusQueryRespBean data) { + //OCHTaxiModelLoopManager.getInstance().stopGrabResultLoop(); + if (data != null && data.code == 0 + && mNewBookingOrder != null && mNewBookingOrder.orderId == orderId) { + if (data.data.grabStatus == 0) { + return; //抢单中,不处理继续轮询结果 + } + if (mOrderStatusCallback != null) { + if (data.data.grabStatus == 1) { + mOrderStatusCallback.onGrabOrderSuccess(mNewBookingOrder); + } else if (data.data.grabStatus == 2) { + mOrderStatusCallback.onGrabOrderFailed(mNewBookingOrder); + } else { + // TODO: 2021/9/22 需根据具体内容给予提示,如订单已取消 + mOrderStatusCallback.onGrabOrderFailed(mNewBookingOrder); + } + } } else { - // TODO: 2021/9/22 需根据具体内容给予提示,如订单已取消 - mOrderStatusCallback.onGrabOrderFailed(mNewBookingOrder); + if (mOrderStatusCallback != null) { + // TODO: 2021/9/22 如果用户已取消单,抢单失败时暂返回null,UI当前直接恢复原页面内容,后续优化 + mOrderStatusCallback.onGrabOrderFailed(null); + } } + OCHTaxiModelLoopManager.getInstance().stopGrabResultLoop(); + cancelNewBookingOrder(); } - } else { - if (mOrderStatusCallback != null) { - // TODO: 2021/9/22 如果用户已取消单,抢单失败时暂返回null,UI当前直接恢复原页面内容,后续优化 - mOrderStatusCallback.onGrabOrderFailed(null); + + @Override + public void onFail(int code, String msg) { + } - } - OCHTaxiModelLoopManager.getInstance().stopGrabResultLoop(); - cancelNewBookingOrder(); - } - - @Override - public void onFail(int code, String msg) { - - } - }); + }); } // 车机端上传心跳数据(只在出车状态时上传) public void runCarHeartbeat() { OCHTaxiServiceManagerNew.getInstance().runCarHeartbeat(mContext, mLongitude, mLatitude, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(BaseData data) { + @Override + public void onSuccess(BaseData data) { - } + } - @Override - public void onFail(int code, String msg) { + @Override + public void onFail(int code, String msg) { - } - }); + } + }); } // 查询司机服务数据 public void queryDriverServiceData() { OCHTaxiServiceManagerNew.getInstance().queryDriverServiceData(mContext, new OCHTaxiServiceCallback() { - @Override - public void onSuccess(DriverServiceDataRespBean data) { - if (data != null && data.code == 0 - && data.data != null && data.data.immediate != null) { - if (mCarStatusCallback != null) { - mCarStatusCallback.onServiceDataUpdate( - data.data.immediate.timeDuration, data.data.immediate.orderNum); + @Override + public void onSuccess(DriverServiceDataRespBean data) { + if (data != null && data.code == 0 + && data.data != null && data.data.immediate != null) { + if (mCarStatusCallback != null) { + mCarStatusCallback.onServiceDataUpdate( + data.data.immediate.timeDuration, data.data.immediate.orderNum); + } + } } - } - } - @Override - public void onFail(int code, String msg) { + @Override + public void onFail(int code, String msg) { - } - }); + } + }); } // 取消当前新到预约单 @@ -724,7 +728,7 @@ public class MogoOCHTaxiModelNew { if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE == Integer.parseInt(DebugConfig.getAutoPilotStatus())) { - // TODO: 2021/11/28 工控机存在刚开始状态为0,但是可以开启变为2,工控机解决前不显示此toast + // TODO: 2021/11/28 工控机存在刚开始状态为0,但是可以开启变为2,工控机解决前不显示此toast // TipToast.shortTip("自动驾驶状态为不可用!"); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiBeingServerdOrdersFragment.java index 577f3b5b05..e22499f2c0 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiBeingServerdOrdersFragment.java @@ -126,6 +126,12 @@ public class OCHTaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implem } } + @Override + public void onResume() { + super.onResume(); + MogoOCHTaxiModelNew.getInstance().startOrStopOrderLoop(); + } + private void initNaviView(View view) { mNaviIcon = view.findViewById(R.id.module_och_taxi_navi_iv); mNaviIcon.setOnClickListener(this);