[sweeper] fix: 当中间有人工子任务时,会影响后面的自动驾驶子任务的到站判断;
This commit is contained in:
@@ -76,7 +76,6 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
mSubInfo?.apply {
|
||||
presenter?.startTask(isFirstSubTask(), isLastSubTask(), taskId, mSubTaskType, taskStatus)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user