[sweeper] fix: 当中间有人工子任务时,会影响后面的自动驾驶子任务的到站判断;

This commit is contained in:
aibingbing
2023-03-11 17:57:26 +08:00
parent ea897afab4
commit 79bcedc2f6
3 changed files with 25 additions and 23 deletions

View File

@@ -76,7 +76,6 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
mSubInfo?.apply { mSubInfo?.apply {
presenter?.startTask(isFirstSubTask(), isLastSubTask(), taskId, mSubTaskType, taskStatus) presenter?.startTask(isFirstSubTask(), isLastSubTask(), taskId, mSubTaskType, taskStatus)
} }
} }
} }
} }

View File

@@ -1,5 +1,7 @@
package com.mogo.och.sweeper.model; package com.mogo.och.sweeper.model;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
import android.content.Context; import android.content.Context;
import android.util.Log; import android.util.Log;
@@ -46,7 +48,6 @@ import com.mogo.och.sweeper.bean.SweeperSubTaskDetailBean;
import com.mogo.och.sweeper.callback.ISweeperADASStatusCallback; import com.mogo.och.sweeper.callback.ISweeperADASStatusCallback;
import com.mogo.och.sweeper.callback.ISweeperControllerStatusCallback; import com.mogo.och.sweeper.callback.ISweeperControllerStatusCallback;
import com.mogo.och.sweeper.callback.ISweeperTaskCallback; import com.mogo.och.sweeper.callback.ISweeperTaskCallback;
import com.mogo.och.sweeper.callback.ISweeperTaskRouteCallback;
import com.mogo.och.sweeper.constant.SubTaskTypeEnum; import com.mogo.och.sweeper.constant.SubTaskTypeEnum;
import com.mogo.och.sweeper.constant.SweeperConst; import com.mogo.och.sweeper.constant.SweeperConst;
import com.mogo.och.sweeper.constant.TaskStatusEnum; import com.mogo.och.sweeper.constant.TaskStatusEnum;
@@ -65,8 +66,6 @@ import io.reactivex.functions.Consumer;
import io.reactivex.plugins.RxJavaPlugins; import io.reactivex.plugins.RxJavaPlugins;
import mogo.telematics.pad.MessagePad; import mogo.telematics.pad.MessagePad;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
/** /**
* @author congtaowang * @author congtaowang
* @since 2021/3/23 * @since 2021/3/23
@@ -90,7 +89,7 @@ public class SweeperTaskModel {
//子任务是否正在进行中 //子任务是否正在进行中
private boolean mIsSubTaskWorking = false; private boolean mIsSubTaskWorking = false;
//自动驾驶是否到达子任务终点 //自动驾驶是否到达子任务终点
private boolean isArriveSubTaskEndSite = false; private boolean isAutopilotSubTaskArriveEndSite = false;
//当前子任务id //当前子任务id
private int mSubTaskId = 0; private int mSubTaskId = 0;
//当前是否最后一个子任务 //当前是否最后一个子任务
@@ -311,12 +310,12 @@ public class SweeperTaskModel {
if (mControllerStatusCallback != null) { if (mControllerStatusCallback != null) {
mControllerStatusCallback.onCarLocationChanged(gnssInfo); mControllerStatusCallback.onCarLocationChanged(gnssInfo);
} }
if (mSubTaskType == 2) {//人工驾驶子任务需要手动跳过,不能自动结束 if (SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE.getCode() == mSubTaskType) {//人工驾驶子任务需要手动跳过,不能自动结束
addCoordinates(gnssInfo); addCoordinates(gnssInfo);
return; return;
} }
//子任务完成的围栏判断 子任务正在执行中,还未到达子任务终点 //子任务完成的围栏判断 子任务正在执行中,还未到达子任务终点
if (mIsSubTaskWorking && !isArriveSubTaskEndSite) { if (mIsSubTaskWorking && !isAutopilotSubTaskArriveEndSite) {
judgeArrivedStation(gnssInfo); judgeArrivedStation(gnssInfo);
} }
} }
@@ -356,7 +355,7 @@ public class SweeperTaskModel {
+ " to " + mCurrentSubTaskDetail.getEndSiteName()); + " to " + mCurrentSubTaskDetail.getEndSiteName());
Log.d(TAG, "行程日志-judgeArrivedStation() distance = " + distance Log.d(TAG, "行程日志-judgeArrivedStation() distance = " + distance
+ " to " + mCurrentSubTaskDetail.getEndSiteName()); + " to " + mCurrentSubTaskDetail.getEndSiteName());
isArriveSubTaskEndSite = true; isAutopilotSubTaskArriveEndSite = true;
//到达子任务终点 结束子任务 //到达子任务终点 结束子任务
subTaskEnd(mIsFirstSubtask, mIsLastSubtask, mSubTaskId); //无自动驾驶到终点信息传null subTaskEnd(mIsFirstSubtask, mIsLastSubtask, mSubTaskId); //无自动驾驶到终点信息传null
return; return;
@@ -452,13 +451,13 @@ public class SweeperTaskModel {
return; return;
} }
} }
if (mSubTaskType == 2) {//人工驾驶子任务需要手动跳过,不能自动结束 if (SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE.getCode() == mSubTaskType) {//人工驾驶子任务需要手动跳过,不能自动结束
return; return;
} }
if (isArriveSubTaskEndSite) return; if (isAutopilotSubTaskArriveEndSite) return;
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "行程日志-当前==subTaskId=" CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "行程日志-当前==subTaskId="
+ mSubTaskId); + mSubTaskId);
isArriveSubTaskEndSite = true; isAutopilotSubTaskArriveEndSite = true;
//到达子任务终点 结束子任务 //到达子任务终点 结束子任务
subTaskEnd(mIsFirstSubtask, mIsLastSubtask, mSubTaskId); subTaskEnd(mIsFirstSubtask, mIsLastSubtask, mSubTaskId);
} }
@@ -705,7 +704,7 @@ public class SweeperTaskModel {
if (mSweeperTaskCallback != null && data != null) { if (mSweeperTaskCallback != null && data != null) {
if (data.getData()) { if (data.getData()) {
mIsSubTaskWorking = true; mIsSubTaskWorking = true;
isArriveSubTaskEndSite = false; isAutopilotSubTaskArriveEndSite = false;
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.START_SUBTASK, false); mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.START_SUBTASK, false);
if (subTaskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE) {//如果是自动驾驶子任务子开启自驾 if (subTaskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE) {//如果是自动驾驶子任务子开启自驾
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时 if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
@@ -716,7 +715,6 @@ public class SweeperTaskModel {
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时 if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;//是否强制绘制引导线 FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;//是否强制绘制引导线
CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(false);//是否自动启动自驾 CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(false);//是否自动启动自驾
} }
} }
} }
@@ -777,7 +775,7 @@ public class SweeperTaskModel {
if (!NetworkUtils.isConnected(mContext)) { if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort("网络异常,请稍后重试"); ToastUtils.showShort("网络异常,请稍后重试");
} else { } else {
if (isArriveSubTaskEndSite) return; if (isAutopilotSubTaskArriveEndSite) return;
ToastUtils.showShort(msg); ToastUtils.showShort(msg);
} }
} }
@@ -806,6 +804,8 @@ public class SweeperTaskModel {
if (mSweeperTaskCallback != null && data != null) { if (mSweeperTaskCallback != null && data != null) {
if (data.getData()) { if (data.getData()) {
mIsSubTaskWorking = false; mIsSubTaskWorking = false;
// 跳过子任务也相当于开始并结束一个子任务,相关变量状态需要重置
isAutopilotSubTaskArriveEndSite = false;
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.JUMP_OVER_SUBTASK, isEnd); mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.JUMP_OVER_SUBTASK, isEnd);
} }
} }
@@ -841,6 +841,9 @@ public class SweeperTaskModel {
@Override @Override
public void onSuccess(BaseResponse<Boolean> data) { public void onSuccess(BaseResponse<Boolean> data) {
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "mainTaskReset" + GsonUtil.jsonFromObject(data)); CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "mainTaskReset" + GsonUtil.jsonFromObject(data));
// 主任务重置 当前子任务也需重置
mIsSubTaskWorking = false;
isAutopilotSubTaskArriveEndSite = false;
if (mSweeperTaskCallback != null && data != null) { if (mSweeperTaskCallback != null && data != null) {
mSweeperTaskCallback.setMainTaskReset(data.getData()); mSweeperTaskCallback.setMainTaskReset(data.getData());
} }

View File

@@ -1,6 +1,12 @@
package com.mogo.och.sweeper.presenter; package com.mogo.och.sweeper.presenter;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
import com.amap.api.maps.model.LatLng; import com.amap.api.maps.model.LatLng;
import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.mvp.Presenter; import com.mogo.commons.mvp.Presenter;
@@ -41,17 +47,12 @@ import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
import chassis.ChassisStatesOuterClass; import chassis.ChassisStatesOuterClass;
import mogo.telematics.pad.MessagePad; import mogo.telematics.pad.MessagePad;
import mogo_msg.MogoReportMsg; import mogo_msg.MogoReportMsg;
import planning.RoboSweeperTaskIndexOuterClass; import planning.RoboSweeperTaskIndexOuterClass;
import system_master.SystemStatusInfo; import system_master.SystemStatusInfo;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
/** /**
* 网约车小巴 * 网约车小巴
* *
@@ -387,14 +388,12 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
public void getSubTaskDetail(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, boolean isStartSubtask) { public void getSubTaskDetail(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, boolean isStartSubtask) {
SweeperTaskModel.getInstance().getSubTaskDetail(isFirst, isEnd, subTaskId, subTaskType, isStartSubtask); SweeperTaskModel.getInstance().getSubTaskDetail(isFirst, isEnd, subTaskId, subTaskType, isStartSubtask);
} }
/**
* 子任务开始上报
*/
/** /**
* 开始任务 * 开始任务
*/ */
public void startTask(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, int subTaskStatus) { public void startTask(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, int subTaskStatus) {
if (subTaskStatus == 1) { if (SubTaskTypeEnum.AUTOPILOT_SUBTYPE.getCode() == subTaskStatus) {
SweeperTaskModel.getInstance().subTaskStart(isFirst, isEnd, subTaskId, subTaskType); SweeperTaskModel.getInstance().subTaskStart(isFirst, isEnd, subTaskId, subTaskType);
} }
} }
@@ -443,6 +442,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
@Override @Override
public void setSubTakDetail(@NonNull SweeperSubTaskDetailBean subTaskDetailBean, SubTaskTypeEnum subTaskTypeEnum) { public void setSubTakDetail(@NonNull SweeperSubTaskDetailBean subTaskDetailBean, SubTaskTypeEnum subTaskTypeEnum) {
} }
@Override @Override
public void setRouteList(@NonNull ArrayList<SweeperRoutePlanningUpdateReqBean.Result> routeList) { public void setRouteList(@NonNull ArrayList<SweeperRoutePlanningUpdateReqBean.Result> routeList) {
mView.setTaskRouteList(routeList); mView.setTaskRouteList(routeList);