[sweeper-cloud]修改同一个轨迹同一个lineId,任务轨迹被过滤掉的问题
This commit is contained in:
@@ -211,6 +211,13 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
*/
|
||||
fun onSweeperUpdateSubTaskStatus(taskId: String, subTaskId: String, subTaskStatus: SweeperCommon.TaskStatus) {
|
||||
mLoadingDialog.hideLoading()
|
||||
updateSubTaskInfo(taskId, subTaskId, subTaskStatus)
|
||||
}
|
||||
|
||||
/**
|
||||
* 子任务确认时,更新子任务信息
|
||||
*/
|
||||
private fun updateSubTaskInfo(taskId: String, subTaskId: String, subTaskStatus: SweeperCommon.TaskStatus) {
|
||||
mTaskInfo?.let {
|
||||
//如果云端要更新的任务和本地缓存任务不是同一个,在无法更新子任务状态
|
||||
if (taskId != it.taskId) {
|
||||
@@ -461,6 +468,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
showSubTaskInfoDialog(taskId, subTaskId, it)
|
||||
} else {
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_CONFIRM)
|
||||
mPresenter?.setPreLineId(-1)
|
||||
updateSubTaskInfo(taskId, subTaskId, SweeperCommon.TaskStatus.RUNNING)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -480,6 +489,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
override fun onConfirm() {
|
||||
//ToastUtils.showLong("确认")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_CONFIRM)
|
||||
mPresenter?.setPreLineId(-1)
|
||||
updateSubTaskInfo(taskId, subTaskId, SweeperCommon.TaskStatus.RUNNING)
|
||||
mLoadingDialog.showLoading()
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
ArrayList<SweeperRoutePlanningUpdateReqBean.Result> points = new ArrayList<>();//全路径信息
|
||||
private SweeperTask.TaskModel mSubTaskType = SweeperTask.TaskModel.DEFAULT_MODEL; //1自动驾驶 2.人工驾驶 0:无效值
|
||||
private int mCurrentLineId = 0; //当前路线id
|
||||
private int mLineId = -1;//上一次存储的路线id
|
||||
private int mPreLineId = -1;//上一次存储的路线id
|
||||
//自动驾驶状态
|
||||
private int mAutopilotState = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE;
|
||||
//当前子任务id
|
||||
@@ -105,7 +105,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
|
||||
private String latitude;//纬度
|
||||
|
||||
private boolean isHasTaskInfo=false;//判断是否有任务数据
|
||||
private boolean isHasTaskInfo = false;//判断是否有任务数据
|
||||
|
||||
//用于对应messageType和reqNo绑定在一起,保证请求的reqNo和响应的reqNo一致
|
||||
private HashMap<Integer, String> msgTypeAndReqNo = new HashMap<>();
|
||||
@@ -196,19 +196,19 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
@Override
|
||||
public void onAutopilotRotting(MessagePad.GlobalPathResp routeList) {
|
||||
if (null != routeList && routeList.getWayPointsList() != null && routeList.getWayPointsList().size() > 0) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG,"onAutopilotRotting: "+printMessage(routeList));
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotRotting: " + printMessage(routeList));
|
||||
|
||||
// MAP返回路线信息,在1秒内返回了2次,这里加上数据过滤
|
||||
long current = System.currentTimeMillis();
|
||||
if (current - mRouteDataCurrentTimeMillis <= ROUTE_DATA_INTERVAL_MILLIS) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG,"onAutopilotRotting: interval <=" + ROUTE_DATA_INTERVAL_MILLIS + " data is abandon");
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotRotting: interval <=" + ROUTE_DATA_INTERVAL_MILLIS + " data is abandon");
|
||||
return;
|
||||
}
|
||||
mRouteDataCurrentTimeMillis = current;
|
||||
|
||||
if (mCurrentLineId != mLineId) {//判断是否同一条路线
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG,"onAutopilotRotting: mCurrentLineId"+mCurrentLineId+"mLineId:"+mLineId);
|
||||
mLineId = mCurrentLineId;
|
||||
if (mCurrentLineId != mPreLineId) {//判断是否同一条路线
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotRotting: mCurrentLineId" + mCurrentLineId + "mPreLineId:" + mPreLineId);
|
||||
mPreLineId = mCurrentLineId;
|
||||
points.addAll(coordinateConverterWgsToGcjList(mContext, routeList.getWayPointsList()));
|
||||
if (mSweeperTaskCallback != null) {
|
||||
mSweeperTaskCallback.setRouteList(points);
|
||||
@@ -231,15 +231,22 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void clearRouteList() {
|
||||
points.clear();
|
||||
mSubTaskType = SweeperTask.TaskModel.UNRECOGNIZED;
|
||||
mCurrentLineId=0;
|
||||
mLineId=-1;
|
||||
mCurrentLineId = 0;
|
||||
mPreLineId = -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新设置上一次的lineId,防止同一个轨迹,同一个lineid时不绘制轨迹
|
||||
*/
|
||||
public void setPreLineId(int preLineId) {
|
||||
this.mPreLineId = preLineId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否有任务数据
|
||||
*/
|
||||
public void isHasTaskInfo(boolean isHasTaskInfo){
|
||||
this.isHasTaskInfo=isHasTaskInfo;
|
||||
public void isHasTaskInfo(boolean isHasTaskInfo) {
|
||||
this.isHasTaskInfo = isHasTaskInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -344,7 +351,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
"onSweeperFutianCloudTaskConfirm:" + printMessage(taskConfirm));
|
||||
if (mSweeperTaskCallback != null && taskConfirm != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskConfirm(taskConfirm.getTaskId(), taskConfirm.getSubTaskId(),taskConfirm.getIsPop());
|
||||
mSweeperTaskCallback.onSweeperCloudTaskConfirm(taskConfirm.getTaskId(), taskConfirm.getSubTaskId(), taskConfirm.getIsPop());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -366,7 +373,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
"onSweeperFutianCloudTaskStop:" + printMessage(stopTaskReq));
|
||||
if (mSweeperTaskCallback != null && stopTaskReq != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskStop(stopTaskReq.getTaskId(), stopTaskReq.getType(),stopTaskReq.getIsPop());
|
||||
mSweeperTaskCallback.onSweeperCloudTaskStop(stopTaskReq.getTaskId(), stopTaskReq.getType(), stopTaskReq.getIsPop());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -414,7 +421,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
return;
|
||||
}
|
||||
mVehicleStateCurrentTimeMillis = current;
|
||||
// CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianCleanSystemState:" + printMessage(cleanSystemState));
|
||||
// CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianCleanSystemState:" + printMessage(cleanSystemState));
|
||||
if (mSweeperTaskCallback != null) {
|
||||
mSweeperTaskCallback.onSweeperFutianCleanSystemState(cleanSystemState);
|
||||
}
|
||||
@@ -433,11 +440,12 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
mWeltDataCurrentTimeMillis = current;
|
||||
|
||||
//没有任务数据时,不处理贴边
|
||||
if (!isHasTaskInfo){
|
||||
if (!isHasTaskInfo) {
|
||||
return;
|
||||
}
|
||||
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "mSubTaskType:"+mSubTaskType+"+ onSweeperFutianTaskIndexData:" + printMessage(roboSweeperTaskIndex));
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG,
|
||||
"mSubTaskType:" + mSubTaskType + "+ onSweeperFutianTaskIndexData:" + printMessage(roboSweeperTaskIndex));
|
||||
handleWeltData(roboSweeperTaskIndex);
|
||||
}
|
||||
|
||||
@@ -587,7 +595,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) {
|
||||
//CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotStatusResponse state:" + autoPilotStatusInfo.getState());
|
||||
this.mAutopilotState = autoPilotStatusInfo.getState();
|
||||
if (mControllerStatusCallback!=null){
|
||||
if (mControllerStatusCallback != null) {
|
||||
mControllerStatusCallback.onAutopilotState(autoPilotStatusInfo.getState());
|
||||
}
|
||||
switch (autoPilotStatusInfo.getState()) {
|
||||
@@ -621,17 +629,17 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
|
||||
@Override
|
||||
public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) {
|
||||
if (status == 0x00){//判断工控机重连后,获取当前正在执行的子任务,延时10秒,防止工控机连接上时SN为空
|
||||
UiThreadHandler.postDelayed(()->{
|
||||
if (status == 0x00) {//判断工控机重连后,获取当前正在执行的子任务,延时10秒,防止工控机连接上时SN为空
|
||||
UiThreadHandler.postDelayed(() -> {
|
||||
getCurrentTask();
|
||||
},10000);
|
||||
}, 10000);
|
||||
}
|
||||
//CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotIpcConnectStatusChanged status:" + status + " reason:" + reason);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) {
|
||||
// CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotStatusRespByQuery status:" + status.getSysState().getNumber());
|
||||
// CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotStatusRespByQuery status:" + status.getSysState().getNumber());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -85,16 +85,18 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
|
||||
@Override
|
||||
public void onAutopilotState(int state) {
|
||||
ThreadUtils.runOnUiThread(() ->mView.setAutoState(state));
|
||||
ThreadUtils.runOnUiThread(() -> mView.setAutoState(state));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取自动驾驶状态
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int getAutopilotState() {
|
||||
return SweeperTaskModel.getInstance().getAutopilotState();
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除路线缓存数据
|
||||
*/
|
||||
@@ -112,9 +114,18 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
/**
|
||||
* 判断是否有任务数据
|
||||
*/
|
||||
public void isHasTaskInfo(boolean isHasTaskInfo){
|
||||
public void isHasTaskInfo(boolean isHasTaskInfo) {
|
||||
SweeperTaskModel.getInstance().isHasTaskInfo(isHasTaskInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置上一个任务的lineId
|
||||
* @param preLineId
|
||||
*/
|
||||
public void setPreLineId(int preLineId) {
|
||||
SweeperTaskModel.getInstance().setPreLineId(preLineId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前正在执行的任务
|
||||
*/
|
||||
@@ -176,32 +187,33 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudTaskConfirm(@NonNull String taskId, @NonNull String subTaskId, boolean isPop) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.handleSubTaskInfoDialog(taskId, subTaskId,isPop));
|
||||
ThreadUtils.runOnUiThread(() -> mView.handleSubTaskInfoDialog(taskId, subTaskId, isPop));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudTaskStatus(@NonNull String taskId, @NonNull String subTaskId, SweeperCommon.TaskStatus subTaskStatus) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperUpdateSubTaskStatus(taskId, subTaskId, subTaskStatus));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudTaskStop(@NonNull String taskId, SweeperTaskStop.StopTaskType stopTaskType,boolean isPop) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTaskStop(taskId, stopTaskType,isPop));
|
||||
public void onSweeperCloudTaskStop(@NonNull String taskId, SweeperTaskStop.StopTaskType stopTaskType, boolean isPop) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTaskStop(taskId, stopTaskType, isPop));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudTaskSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String taskId,
|
||||
@NonNull String subTaskId,SweeperCommon.Code code) {
|
||||
@NonNull String subTaskId, SweeperCommon.Code code) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudBootable(@NonNull String taskId, @NonNull String subTaskId, SweeperBootable.IsBootableResp isBootableResp) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudAutopilotBootable(taskId, subTaskId,isBootableResp));
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudAutopilotBootable(taskId, subTaskId, isBootableResp));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudBigTaskStatus(@NonNull String taskId, SweeperBigTaskStatus.BigTaskStatus subTaskStatus) {
|
||||
ThreadUtils.runOnUiThread(()->mView.onSweeperCloudBigTaskStatus(taskId,subTaskStatus));
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudBigTaskStatus(taskId, subTaskStatus));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user