[sweeper] fix: 当中间有人工子任务时,会影响后面的自动驾驶子任务的到站判断;
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user