From 1562ce1e4d6fc0f7546a6b8ac7f7d113ad24f878 Mon Sep 17 00:00:00 2001 From: bxb Date: Tue, 30 May 2023 14:10:05 +0800 Subject: [PATCH] =?UTF-8?q?[sweeper-cloud]=E4=BF=AE=E6=94=B9=E5=90=8C?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E8=BD=A8=E8=BF=B9=E5=90=8C=E4=B8=80=E4=B8=AA?= =?UTF-8?q?lineId=EF=BC=8C=E4=BB=BB=E5=8A=A1=E8=BD=A8=E8=BF=B9=E8=A2=AB?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E6=8E=89=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sweepercloud/fragment/SweeperFragment.kt | 11 ++++ .../sweepercloud/model/SweeperTaskModel.java | 50 +++++++++++-------- .../presenter/SweeperPresenter.java | 28 ++++++++--- 3 files changed, 60 insertions(+), 29 deletions(-) diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/SweeperFragment.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/SweeperFragment.kt index 5d9eeb97c8..7ec62f7dc4 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/SweeperFragment.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/SweeperFragment.kt @@ -211,6 +211,13 @@ class SweeperFragment : BaseSweeperTabFragment 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 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 diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java index 225e1b0046..c454c5e66f 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/presenter/SweeperPresenter.java @@ -85,16 +85,18 @@ public class SweeperPresenter extends Presenter @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 /** * 判断是否有任务数据 */ - 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 @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