[清扫车]准备出发按钮逻辑修改以及当前正在执行任务和大任务列表选取任务后子任务列表接口回调逻辑区分
This commit is contained in:
@@ -19,7 +19,7 @@ interface ISweeperTaskCallback {
|
||||
/**
|
||||
* 获取子任务列表
|
||||
*/
|
||||
fun setSubTaskBean(subTaskBean: SweeperSubTaskBean?)
|
||||
fun setSubTaskBean(subTaskBean: SweeperSubTaskBean?,isWorkingSubTask:Boolean)
|
||||
|
||||
/**
|
||||
* 更新子任务状态
|
||||
|
||||
@@ -194,13 +194,17 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 设置当前子任务列表数据
|
||||
*/
|
||||
fun setSubTaskBean(subTaskBean: SweeperSubTaskBean?) {
|
||||
fun setSubTaskBean(subTaskBean: SweeperSubTaskBean?,isWorkingSubTask:Boolean) {
|
||||
this.mSubTaskBean = subTaskBean
|
||||
this.mSubTaskBean?.let {
|
||||
setShowCurrentTaskPanelView(true)
|
||||
setShowTaskListPanelView(false)
|
||||
workModePanelView.visibility = View.VISIBLE
|
||||
mCurrentSubPosition = it.sort - 1
|
||||
mCurrentSubPosition = if (isWorkingSubTask){//如果是正在执行的子任务
|
||||
it.sort - 1
|
||||
}else{
|
||||
0
|
||||
}
|
||||
currentTaskPanelView.setData(workModePanelView, it, mCurrentSubPosition, this, presenter)
|
||||
setSubTaskData()
|
||||
presenter?.getSubTaskDetail(mSubTaskId, mSubTaskType)//加载子任务详情包括轨迹信息
|
||||
@@ -214,6 +218,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
if (isLastSubTask) {
|
||||
setShowCurrentTaskPanelView(false)
|
||||
setShowTaskListPanelView(true)
|
||||
workModePanelView.visibility = View.GONE
|
||||
return
|
||||
}
|
||||
when (typeEnum) {
|
||||
@@ -234,8 +239,18 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
TaskStatusEnum.START_SUBTASK -> { //子任务开始
|
||||
if (mSubTaskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE) {//自动驾驶子任务
|
||||
readyTaskBtn("暂停任务", true, true)
|
||||
}else{
|
||||
readyTaskBtn("准备出发", false, false)
|
||||
}
|
||||
setShowTaskListPanelView(false)
|
||||
workModePanelView.visibility = View.VISIBLE
|
||||
setShowCurrentTaskPanelView(true)
|
||||
currentTaskPanelView.setCurrentData(mCurrentSubPosition)
|
||||
workModePanelView.setSweeperFutianCleanSystemState(
|
||||
mSubTaskType,
|
||||
if (mCleanSystemState == null) SweeperFutianCmdUtil.buildSweeperFuTionCleanSystemStateMockData() else mCleanSystemState,
|
||||
trafficDataView
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.mogo.och.sweeper.model;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS;
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -33,6 +32,7 @@ import com.mogo.och.common.module.manager.OCHAdasAbilityManager;
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil;
|
||||
import com.mogo.och.common.module.utils.PinYinUtil;
|
||||
import com.mogo.och.common.module.utils.ToastUtilsOch;
|
||||
import com.mogo.och.sweeper.R;
|
||||
import com.mogo.och.sweeper.bean.BaseResponse;
|
||||
import com.mogo.och.sweeper.bean.SubInfo;
|
||||
@@ -86,9 +86,9 @@ public class SweeperTaskModel {
|
||||
//自动驾驶是否到达子任务终点
|
||||
private boolean isArriveSubTaskEndSite = false;
|
||||
//当前子任务id
|
||||
private int mSubTaskId=0;
|
||||
private int mSubTaskId = 0;
|
||||
// //当前是否最后一个子任务
|
||||
private boolean mIsLastSubtask=false;
|
||||
private boolean mIsLastSubtask = false;
|
||||
//0: 代表没有启动过 1代表是启动第一次,当>=1 代表是重试 每次子任务结束/主任务结束清空置为0
|
||||
private volatile int firstStartAutopilot = 0;
|
||||
|
||||
@@ -106,6 +106,7 @@ public class SweeperTaskModel {
|
||||
private SweeperTaskModel() {
|
||||
|
||||
}
|
||||
|
||||
public void init() {
|
||||
mContext = AbsMogoApplication.getApp();
|
||||
// 定位监听
|
||||
@@ -180,6 +181,7 @@ public class SweeperTaskModel {
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
public void setSubTaskId(int mSubTaskId) {
|
||||
this.mSubTaskId = mSubTaskId;
|
||||
}
|
||||
@@ -187,6 +189,7 @@ public class SweeperTaskModel {
|
||||
public void setIsLastSubtask(boolean mIsLastSubtask) {
|
||||
this.mIsLastSubtask = mIsLastSubtask;
|
||||
}
|
||||
|
||||
public static List<SweeperRoutePlanningUpdateReqBean.Result> coordinateConverterWgsToGcjList(Context mContext,
|
||||
List<MessagePad.Location> mogoLatLngList) {
|
||||
List<SweeperRoutePlanningUpdateReqBean.Result> points = new ArrayList<>();
|
||||
@@ -248,7 +251,7 @@ public class SweeperTaskModel {
|
||||
mControllerStatusCallback.onCarLocationChanged(gnssInfo);
|
||||
}
|
||||
//子任务完成的围栏判断 子任务正在执行中,还未到达子任务终点
|
||||
if (isSubTaskWorking&&!isArriveSubTaskEndSite) {
|
||||
if (isSubTaskWorking && !isArriveSubTaskEndSite) {
|
||||
judgeArrivedStation(gnssInfo);
|
||||
}
|
||||
}
|
||||
@@ -268,6 +271,7 @@ public class SweeperTaskModel {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 在踩刹车、控制方向盘等操作后,会停止自动驾驶,重启自动驾驶的话相当于重新设置自动驾驶目的地
|
||||
*/
|
||||
@@ -276,6 +280,7 @@ public class SweeperTaskModel {
|
||||
//只去启动自动驾驶
|
||||
startAutopilot(firstStartAutopilot >= 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启自动驾驶
|
||||
*
|
||||
@@ -308,9 +313,10 @@ public class SweeperTaskModel {
|
||||
/**
|
||||
* 获取任务子任务执行状态
|
||||
*/
|
||||
public boolean getSubWorking(){
|
||||
return isSubTaskWorking;
|
||||
public boolean getSubWorking() {
|
||||
return isSubTaskWorking;
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭美化模式
|
||||
*/
|
||||
@@ -346,10 +352,11 @@ public class SweeperTaskModel {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (isArriveSubTaskEndSite)return;
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "行程日志-当前==subTaskId="
|
||||
+ currentSubTaskDetail.getId());
|
||||
//到达子任务终点 结束子任务
|
||||
subTaskEnd(mSubTaskId,mIsLastSubtask);
|
||||
subTaskEnd(mSubTaskId, mIsLastSubtask);
|
||||
}
|
||||
|
||||
public void triggerStartServiceEvent(boolean isRestart, boolean send) {
|
||||
@@ -402,11 +409,11 @@ public class SweeperTaskModel {
|
||||
parameters.vehicleType = VEHICLE_TYPE;
|
||||
parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine(
|
||||
currentSubTaskDetail.getLineId(),
|
||||
currentSubTaskDetail.getCsvFileUrl(),currentSubTaskDetail.getCsvFileMd5(),
|
||||
currentSubTaskDetail.getTxtFileUrl(),currentSubTaskDetail.getTxtFileMd5(),
|
||||
currentSubTaskDetail.getCsvFileUrl(), currentSubTaskDetail.getCsvFileMd5(),
|
||||
currentSubTaskDetail.getTxtFileUrl(), currentSubTaskDetail.getTxtFileMd5(),
|
||||
currentSubTaskDetail.getContrailSaveTime(), currentSubTaskDetail.getCarModel(),
|
||||
currentSubTaskDetail.getCsvFileUrlDPQP(),currentSubTaskDetail.getCsvFileMd5DPQP(),
|
||||
currentSubTaskDetail.getTxtFileUrlDPQP(),currentSubTaskDetail.getTxtFileMd5DPQP(),
|
||||
currentSubTaskDetail.getCsvFileUrlDPQP(), currentSubTaskDetail.getCsvFileMd5DPQP(),
|
||||
currentSubTaskDetail.getTxtFileUrlDPQP(), currentSubTaskDetail.getTxtFileMd5DPQP(),
|
||||
currentSubTaskDetail.getContrailSaveTimeDPQP());
|
||||
}
|
||||
return parameters;
|
||||
@@ -421,8 +428,8 @@ public class SweeperTaskModel {
|
||||
public void onSuccess(BaseResponse<SweeperSubTaskBean> data) {
|
||||
if (mSweeperTaskCallback != null && data != null) {
|
||||
SweeperSubTaskBean sweeperSubTaskBean = data.getData();
|
||||
if (sweeperSubTaskBean != null && sweeperSubTaskBean.getSubList()!=null&&sweeperSubTaskBean.getSubList().size() > 0) {
|
||||
mSweeperTaskCallback.setSubTaskBean(sweeperSubTaskBean);
|
||||
if (sweeperSubTaskBean != null && sweeperSubTaskBean.getSubList() != null && sweeperSubTaskBean.getSubList().size() > 0) {
|
||||
mSweeperTaskCallback.setSubTaskBean(sweeperSubTaskBean,true);
|
||||
} else {
|
||||
getMainTaskList();
|
||||
}
|
||||
@@ -440,10 +447,12 @@ public class SweeperTaskModel {
|
||||
|
||||
@Override
|
||||
public void onFail(int code, String msg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -464,10 +473,12 @@ public class SweeperTaskModel {
|
||||
|
||||
@Override
|
||||
public void onFail(int code, String msg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -485,7 +496,7 @@ public class SweeperTaskModel {
|
||||
/**
|
||||
* 获取子任务列表
|
||||
*/
|
||||
public void getSubTaskList(int taskId,SweeperSubTaskBean sweeperSubTaskBean) {
|
||||
public void getSubTaskList(int taskId, SweeperSubTaskBean sweeperSubTaskBean) {
|
||||
SweeperServiceManager.getSubTaskList(taskId, mContext, new OchCommonServiceCallback<BaseResponse<List<SubInfo>>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<List<SubInfo>> data) {
|
||||
@@ -493,7 +504,7 @@ public class SweeperTaskModel {
|
||||
List<SubInfo> list = data.getData();
|
||||
if (list != null && list.size() > 0) {
|
||||
sweeperSubTaskBean.setSubList(list);
|
||||
mSweeperTaskCallback.setSubTaskBean(sweeperSubTaskBean);
|
||||
mSweeperTaskCallback.setSubTaskBean(sweeperSubTaskBean,false);
|
||||
} else {
|
||||
getMainTaskList();
|
||||
}
|
||||
@@ -502,10 +513,12 @@ public class SweeperTaskModel {
|
||||
|
||||
@Override
|
||||
public void onFail(int code, String msg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -523,29 +536,31 @@ public class SweeperTaskModel {
|
||||
/**
|
||||
* 获取子任务详情包括轨迹文件信息
|
||||
*/
|
||||
public void getSubTaskDetail(int subTaskId,SubTaskTypeEnum subTaskType) {
|
||||
public void getSubTaskDetail(int subTaskId, SubTaskTypeEnum subTaskType) {
|
||||
SweeperServiceManager.getSubTaskDetail(subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<SweeperSubTaskDetailBean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<SweeperSubTaskDetailBean> data) {
|
||||
if (data != null) {
|
||||
currentSubTaskDetail = data.getData();
|
||||
if (currentSubTaskDetail!=null){
|
||||
if (subTaskType==SubTaskTypeEnum.AUTOPILOT_SUBTYPE){//自动驾驶子任务
|
||||
if (currentSubTaskDetail != null) {
|
||||
mSweeperTaskCallback.setSubTakDetail(currentSubTaskDetail,subTaskType);
|
||||
if (subTaskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE) {//自动驾驶子任务
|
||||
//向自动驾驶发送要下载文件轨迹路径
|
||||
SweeperTrajectoryManager.getInstance().syncTrajectoryInfo(currentSubTaskDetail);
|
||||
updateAutopilotControlParameters();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFail(int code, String msg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -569,10 +584,19 @@ public class SweeperTaskModel {
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
if (mSweeperTaskCallback != null && data != null) {
|
||||
if (data.getData()) {
|
||||
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.START_SUBTASK,false);
|
||||
startBeautificationMode();
|
||||
if (subTaskType==SubTaskTypeEnum.AUTOPILOT_SUBTYPE){//如果是自动驾驶子任务子开启自驾
|
||||
isSubTaskWorking = true;
|
||||
isArriveSubTaskEndSite = false;
|
||||
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.START_SUBTASK, false);
|
||||
if (subTaskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE) {//如果是自动驾驶子任务子开启自驾
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().startBeautificationMode();
|
||||
}
|
||||
startAutopilot(false);
|
||||
}else{
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;//是否强制绘制引导线
|
||||
CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(false);//是否自动启动自驾
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -580,10 +604,12 @@ public class SweeperTaskModel {
|
||||
|
||||
@Override
|
||||
public void onFail(int code, String msg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -601,23 +627,35 @@ public class SweeperTaskModel {
|
||||
/**
|
||||
* 子任务结束上报
|
||||
*/
|
||||
public void subTaskEnd(int subTaskId,boolean isLastSubTask) {
|
||||
public void subTaskEnd(int subTaskId, boolean isLastSubTask) {
|
||||
SweeperServiceManager.subTaskEnd(subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
if (mSweeperTaskCallback != null && data != null) {
|
||||
if (data.getData()) {
|
||||
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.END_SUBTASK,isLastSubTask);
|
||||
isSubTaskWorking = false;
|
||||
isArriveSubTaskEndSite = true;
|
||||
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.END_SUBTASK, isLastSubTask);
|
||||
if (isLastSubTask) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().closeBeautificationMode();
|
||||
}
|
||||
//结束自动驾驶
|
||||
cancelAutoPilot();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFail(int code, String msg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
if (isArriveSubTaskEndSite) return;
|
||||
ToastUtils.showShort(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -628,6 +666,7 @@ public class SweeperTaskModel {
|
||||
} else {
|
||||
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -635,14 +674,14 @@ public class SweeperTaskModel {
|
||||
/**
|
||||
* 子任务跳过上报
|
||||
*/
|
||||
public void subTaskSkip(int subTaskId,boolean isLastSubTask) {
|
||||
public void subTaskSkip(int subTaskId, boolean isLastSubTask) {
|
||||
SweeperServiceManager.subTaskSkip(subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
if (mSweeperTaskCallback != null && data != null) {
|
||||
if (data.getData()) {
|
||||
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.JUMP_OVER_SUBTASK,isLastSubTask);
|
||||
if (isLastSubTask){//如果是最后一个子任务,则跳过完成后,调用结束子任务接口
|
||||
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.JUMP_OVER_SUBTASK, isLastSubTask);
|
||||
if (isLastSubTask) {//如果是最后一个子任务,则跳过完成后,调用结束子任务接口,这样后端可以才可以把整个大任务结束掉
|
||||
subTaskEnd(subTaskId, true);
|
||||
}
|
||||
}
|
||||
@@ -651,10 +690,12 @@ public class SweeperTaskModel {
|
||||
|
||||
@Override
|
||||
public void onFail(int code, String msg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -683,10 +724,12 @@ public class SweeperTaskModel {
|
||||
|
||||
@Override
|
||||
public void onFail(int code, String msg) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
if (ToastUtilsOch.isCustomFastClick(5000)) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试");
|
||||
} else {
|
||||
ToastUtils.showShort(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -700,4 +743,8 @@ public class SweeperTaskModel {
|
||||
}
|
||||
});
|
||||
}
|
||||
//结束自动驾驶
|
||||
public void cancelAutoPilot() {
|
||||
CallerAutoPilotControlManager.INSTANCE.cancelAutoPilot();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,11 +153,6 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
}
|
||||
|
||||
public void cancelAutoPilot() {
|
||||
//结束自动驾驶
|
||||
CallerAutoPilotControlManager.INSTANCE.cancelAutoPilot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startOpenAutopilot() {
|
||||
|
||||
@@ -261,8 +256,12 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* 开始任务
|
||||
*/
|
||||
public void startTask(int subTaskId, SubTaskTypeEnum subTaskType) {
|
||||
if (SweeperTaskModel.getInstance().getSubWorking() && subTaskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE) {//如果任务正在执行中,被人工接管后掉出自驾,则只重启自动驾驶
|
||||
SweeperTaskModel.getInstance().startAutopilot();
|
||||
if (SweeperTaskModel.getInstance().getSubWorking()) {//如果任务正在执行中,被人工接管后掉出自驾,则只重启自动驾驶
|
||||
if (subTaskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE){
|
||||
SweeperTaskModel.getInstance().startAutopilot();
|
||||
}else{
|
||||
|
||||
}
|
||||
} else {
|
||||
SweeperTaskModel.getInstance().subTaskStart(subTaskId, subTaskType);
|
||||
}
|
||||
@@ -325,18 +324,12 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSubTaskBean(SweeperSubTaskBean subTaskBean) {
|
||||
mView.setSubTaskBean(subTaskBean);
|
||||
public void setSubTaskBean(SweeperSubTaskBean subTaskBean,boolean isWorkingSubTask) {
|
||||
mView.setSubTaskBean(subTaskBean,isWorkingSubTask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateSubTaskStatus(TaskStatusEnum typeEnum, boolean isLastSubTask) {
|
||||
if (isLastSubTask) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().closeBeautificationMode();
|
||||
}
|
||||
cancelAutoPilot();
|
||||
}
|
||||
mView.updateSubTaskStatus(typeEnum, isLastSubTask);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
private var presenter: SweeperPresenter?=null
|
||||
private var mCurrentPosition=-1
|
||||
private var listTask:List<SubInfo>?=null
|
||||
private var isStartTask:Boolean=false
|
||||
private var mSubTaskType:SubTaskTypeEnum=SubTaskTypeEnum.AUTOPILOT_SUBTYPE
|
||||
|
||||
constructor(context: Context) : super(context) {}
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||
@@ -63,8 +65,12 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
}
|
||||
}
|
||||
readyTaskBtn.setOnClickListener {
|
||||
//开始执行任务
|
||||
startSubTask()
|
||||
if (!isStartTask){
|
||||
//开始执行任务
|
||||
startSubTask()
|
||||
}else{
|
||||
isStartTask=false
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -72,15 +78,25 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
* 设置准备就绪按钮时都可以点击
|
||||
*/
|
||||
fun setEnableClickBtn(text:String,isClick:Boolean,isTaskWorking:Boolean) {
|
||||
readyTaskBtn.text=text
|
||||
readyTaskBtn.isClickable=isClick
|
||||
readyTaskBtn.isSelected=isClick
|
||||
if (isTaskWorking){
|
||||
tvTaskState.text="正在作业"
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_working)
|
||||
}else{
|
||||
if (mSubTaskType==SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE){
|
||||
tvTaskState.text="暂未准备"
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_not_ready)
|
||||
readyTaskBtn.text="准备出发"
|
||||
readyTaskBtn.isClickable=false
|
||||
readyTaskBtn.isSelected=false
|
||||
isStartTask=false
|
||||
}else{
|
||||
readyTaskBtn.text=text
|
||||
readyTaskBtn.isClickable=isClick
|
||||
readyTaskBtn.isSelected=isClick
|
||||
isStartTask=isTaskWorking
|
||||
if (isTaskWorking){
|
||||
tvTaskState.text="正在作业"
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_working)
|
||||
}else{
|
||||
tvTaskState.text="暂未准备"
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_not_ready)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,6 +114,7 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
*/
|
||||
fun setCurrentData(mCurrentPosition:Int){
|
||||
listTask?.let {
|
||||
mSubTaskType=if (it[mCurrentPosition].taskType==SubTaskTypeEnum.AUTOPILOT_SUBTYPE.code) SubTaskTypeEnum.AUTOPILOT_SUBTYPE else SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE
|
||||
if (it.size == 1) {
|
||||
preSubTask.setData(it[mCurrentPosition], isSelect = true, isLastTask = true)
|
||||
currentSubTask.visibility = View.INVISIBLE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="false" android:drawable="@drawable/sweeper_task_list_nor"/>
|
||||
<item android:state_selected="true" android:drawable="@drawable/sweeper_ready"/>
|
||||
<item android:state_selected="false" android:drawable="@drawable/sweeper_task_not_selected"/>
|
||||
<item android:state_selected="true" android:drawable="@drawable/sweeper_task_selected"/>
|
||||
</selector>
|
||||
@@ -78,7 +78,7 @@
|
||||
android:id="@+id/tvTaskConfirm"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_116"
|
||||
android:background="@drawable/sweeper_task_list_btn"
|
||||
android:background="@drawable/sweeper_task_btn"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
android:id="@+id/readyTaskBtn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/sweeper_switch_line_btn_height_1"
|
||||
android:background="@drawable/sweeper_ready"
|
||||
android:background="@drawable/sweeper_task_btn"
|
||||
android:gravity="center"
|
||||
android:text="@string/sweeper_switch_line_btn"
|
||||
android:textColor="@android:color/white"
|
||||
@@ -117,5 +117,6 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:clickable="false"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -10,7 +10,7 @@
|
||||
<string name="sweeper_switch_line_start">起点: </string>
|
||||
<string name="sweeper_switch_line_end">终点:</string>
|
||||
<string name="sweeper_switch_line_btn_txt">确认</string>
|
||||
<string name="sweeper_switch_line_btn">准备就绪</string>
|
||||
<string name="sweeper_switch_line_btn">准备出发</string>
|
||||
<string name="sweeper_switch_line_btn_warning1">自动驾驶中,不可切换路线</string>
|
||||
<string name="sweeper_switch_line_btn_warning2">当前行程未完成,不可切换路线</string>
|
||||
<string name="sweeper_no_task_tip">当前暂无任务</string>
|
||||
|
||||
Reference in New Issue
Block a user