[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 {
presenter?.startTask(isFirstSubTask(), isLastSubTask(), taskId, mSubTaskType, taskStatus)
}
}
}
}

View File

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

View File

@@ -1,6 +1,12 @@
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.mogo.commons.AbsMogoApplication;
import com.mogo.commons.mvp.Presenter;
@@ -41,17 +47,12 @@ import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
import chassis.ChassisStatesOuterClass;
import mogo.telematics.pad.MessagePad;
import mogo_msg.MogoReportMsg;
import planning.RoboSweeperTaskIndexOuterClass;
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) {
SweeperTaskModel.getInstance().getSubTaskDetail(isFirst, isEnd, subTaskId, subTaskType, isStartSubtask);
}
/**
* 子任务开始上报
*/
/**
* 开始任务
*/
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);
}
}
@@ -443,6 +442,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
@Override
public void setSubTakDetail(@NonNull SweeperSubTaskDetailBean subTaskDetailBean, SubTaskTypeEnum subTaskTypeEnum) {
}
@Override
public void setRouteList(@NonNull ArrayList<SweeperRoutePlanningUpdateReqBean.Result> routeList) {
mView.setTaskRouteList(routeList);