From aff744f816ea806b2993a48c23b2884c5724f41d Mon Sep 17 00:00:00 2001 From: bxb Date: Sat, 13 May 2023 19:18:55 +0800 Subject: [PATCH] =?UTF-8?q?[sweeper-cloud]=E5=A4=A7=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E7=BB=93=E6=9D=9F=E9=80=BB=E8=BE=91=E5=A4=84?= =?UTF-8?q?=E7=90=86=E4=BB=A5=E5=8F=8A=E5=A4=A7=E4=BB=BB=E5=8A=A1=E5=90=84?= =?UTF-8?q?=E7=A7=8D=E7=BB=93=E6=9D=9F=E7=8A=B6=E6=80=81=E6=A8=A1=E6=8B=9F?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/ISweeperCloudTaskCallback.kt | 4 +- .../fragment/BaseSweeperTabFragment.java | 7 +- .../sweepercloud/fragment/SweeperFragment.kt | 169 ++++++++++++++---- .../sweepercloud/model/SweeperTaskModel.java | 41 +++-- .../presenter/SweeperPresenter.java | 12 +- .../ui/dialog/SweeperCloudDialog.kt | 34 ++-- .../ui/dialog/SweeperCloudLoadingDialog.kt | 2 +- .../util/SweeperCloudTaskUtils.kt | 52 ++++-- .../och/sweepercloud/view/WeltMapOverView.kt | 2 +- .../och/sweepercloud/view/WeltSmallMapView.kt | 6 +- 10 files changed, 235 insertions(+), 94 deletions(-) diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt index 97817eca09..b3b59484e0 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/ISweeperCloudTaskCallback.kt @@ -15,7 +15,9 @@ import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskType * @date: 2021/10/22 */ interface ISweeperCloudTaskCallback { - + /** + * 接取云端任务/正在执行中任务信息回调 + */ fun onSweeperCloudTask(messageType: SweeperCloudTask.MessageType,taskInfo: SweeperTask.TaskInfo?) /** diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java index 9d25dc84d3..0f493d7d2b 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java @@ -8,12 +8,10 @@ import android.widget.FrameLayout; import android.widget.ImageView; import com.amap.api.maps.model.LatLng; -import com.amap.api.navi.model.NaviLatLng; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; @@ -30,7 +28,6 @@ import com.mogo.map.listener.MogoMapListenerHandler; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.VisualAngleMode; -import com.mogo.och.common.module.map.AmapNaviToDestinationModel; import com.mogo.och.sweepercloud.R; import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean; import com.mogo.och.sweepercloud.callback.ISweeperTaskDataToFragmentCallback; @@ -438,7 +435,7 @@ public abstract class BaseSweeperTabFragment - val position = getCurrentPosition() - if (position != -1) { - val endPoint = subList[position].endLocation - val endLatLng = LatLng(endPoint.latitude, endPoint.longitude) - super.mCurrentTaskEndStation = endLatLng - setCurrentTaskEndMarker(endLatLng) - } + val endPoint = subList[position].endLocation + val endLatLng = LatLng(endPoint.latitude, endPoint.longitude) + super.mCurrentTaskEndStation = endLatLng + setCurrentTaskEndMarker(endLatLng) } } @@ -163,8 +164,8 @@ class SweeperFragment : BaseSweeperTabFragment } @Override - public void onSweeperCloudTaskStatus(@NonNull String taskId, @NonNull String subTaskId, @NonNull SweeperCommon.TaskStatus subTaskStatus) { + 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, @NonNull SweeperTaskStop.StopTaskType stopTaskType) { + public void onSweeperCloudTaskStop(@NonNull String taskId, SweeperTaskStop.StopTaskType stopTaskType) { ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTaskStop(taskId, stopTaskType)); } @Override public void onSweeperCloudTaskSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String taskId, - @NonNull String subTaskId, @NonNull SweeperCommon.Code code) { + @NonNull String subTaskId,SweeperCommon.Code code) { } @Override - public void onSweeperCloudBootable(@NonNull String taskId, @NonNull String subTaskId, @NonNull SweeperCommon.Code code) { + public void onSweeperCloudBootable(@NonNull String taskId, @NonNull String subTaskId, SweeperCommon.Code code) { } @Override - public void onSweeperCloudBigTaskStatus(@NonNull String taskId, @NonNull SweeperBigTaskStatus.BigTaskStatus subTaskStatus) { - + public void onSweeperCloudBigTaskStatus(@NonNull String taskId, SweeperBigTaskStatus.BigTaskStatus subTaskStatus) { + ThreadUtils.runOnUiThread(()->mView.onSweeperCloudBigTaskStatus(taskId,subTaskStatus)); } @Override diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudDialog.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudDialog.kt index fdfefa6b48..23deab9621 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudDialog.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudDialog.kt @@ -9,6 +9,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.lifecycle.LifecycleObserver import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog +import com.mogo.eagle.core.utilcode.util.ClickUtils import com.mogo.och.sweepercloud.R import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener import com.mogo.och.sweepercloud.view.CountDownView @@ -56,22 +57,31 @@ import com.mogo.och.sweepercloud.view.CountDownView commonCountDown?.startCountDown(builder.countDownTime) } commonLeft?.setOnClickListener { - builder.listener?.onConfirm() - objectAnimator?.cancel() - commonCountDown?.stopCountDown() - dismiss() + //防止重复点击 + if(ClickUtils.isFastClick()){ + builder.listener?.onConfirm() + objectAnimator?.cancel() + commonCountDown?.stopCountDown() + dismiss() + } } commonMiddle?.setOnClickListener { - builder.listener?.onNext() - objectAnimator?.cancel() - commonCountDown?.stopCountDown() - dismiss() + //防止重复点击 + if(ClickUtils.isFastClick()){ + builder.listener?.onNext() + objectAnimator?.cancel() + commonCountDown?.stopCountDown() + dismiss() + } } commonRight?.setOnClickListener { - builder.listener?.onRefuseOrEnd() - objectAnimator?.cancel() - commonCountDown?.stopCountDown() - dismiss() + //防止重复点击 + if(ClickUtils.isFastClick()){ + builder.listener?.onRefuseOrEnd() + objectAnimator?.cancel() + commonCountDown?.stopCountDown() + dismiss() + } } commonCountDown?.setCountDownListener(object : CountDownView.CountDownListener { override fun stop() { diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudLoadingDialog.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudLoadingDialog.kt index 534c08538f..a367363817 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudLoadingDialog.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/ui/dialog/SweeperCloudLoadingDialog.kt @@ -35,7 +35,7 @@ class SweeperCloudLoadingDialog : BaseFloatDialog, LifecycleObserver { private fun startRotation() { objectAnimator = ObjectAnimator.ofFloat(mLoadingView, "rotation", 0f, 720f) objectAnimator?.let { - it.duration = 2000 + it.duration = 1800 it.repeatCount = -1 it.interpolator = LinearInterpolator() it.start() diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt index 03488ee9a9..b929c977da 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt @@ -13,6 +13,8 @@ import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask.MessageType import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.* +import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus +import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus.BigTaskStatus import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirm import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop @@ -103,7 +105,7 @@ object SweeperCloudTaskUtils { System.currentTimeMillis(), builder.build() ) - CallerLogger.d(SceneConstant.M_SWEEPER + TAG, "messageType:"+messageType+"taskInfo:"+printMessage(builder.build())) + CallerLogger.d(SceneConstant.M_SWEEPER + TAG, "messageType:" + messageType + "taskInfo:" + printMessage(builder.build())) } /** @@ -145,14 +147,30 @@ object SweeperCloudTaskUtils { val builder = SweeperTaskStop.StopTaskReq.newBuilder() builder.sn = getDriverSn() builder.taskId = "10" - builder.type = SweeperTaskStop.StopTaskType.TIMEOUT + builder.type = SweeperTaskStop.StopTaskType.NORMAL SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStop( MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}", System.currentTimeMillis(), builder.build() ) } - fun getDriverSn(): String? { + /** + * 模拟云端发送大任务状态给pad + */ + @JvmStatic + fun mockSendCloudBigTaskStatus() { + val builder = SweeperBigTaskStatus.BigTaskStatusPush.newBuilder() + builder.sn = getDriverSn() + builder.taskId = "10" + builder.taskStatus = BigTaskStatus.CANCLE + builder.systemTime = System.currentTimeMillis() + SweeperTaskModel.getInstance().onSweeperFutianCloudBigTaskStatus( + MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}", + System.currentTimeMillis(), builder.build() + ) + } + + private fun getDriverSn(): String? { return MoGoAiCloudClientConfig.getInstance().sn } @@ -215,14 +233,6 @@ object SweeperCloudTaskUtils { var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() builder.titleStr = "任务结束" when (stopTaskType) { - //任务正常结束 - SweeperTaskStop.StopTaskType.NORMAL -> { - builder.contentStr = "任务已完成,干的漂亮!" - builder.tipStr = "" - builder.leftStr = "确认" - builder.middleStr = "" - builder.rightStr = "" - } //任务提前结束 SweeperTaskStop.StopTaskType.ADVANCE -> { builder.contentStr = "云端请求终止任务,请确认" @@ -245,6 +255,26 @@ object SweeperCloudTaskUtils { return context?.let { it1 -> builder.build(it1) } } + /** + * 任务正常结束弹窗 + */ + @JvmStatic + fun createSweeperTaskNormalEndDialog( + context: Context?, + listener: SweeperCloudDialogClickListener? + ): SweeperCloudDialog? { + var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + builder.titleStr = "任务结束" + builder.contentStr = "任务已完成,干的漂亮!" + builder.tipStr = "" + builder.leftStr = "确认" + builder.middleStr = "" + builder.rightStr = "" + builder.countDownTime = 10 + builder.listener = listener + return context?.let { it1 -> builder.build(it1) } + } + @JvmStatic fun printMessage(message: MessageOrBuilder): String { return TextFormat.printer().escapingNonAscii(false).printToString(message) diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltMapOverView.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltMapOverView.kt index 59324c2ef3..20e8978498 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltMapOverView.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltMapOverView.kt @@ -280,7 +280,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { } } /** - * 设置当前大任务的所有子任务起终点集合 + * 设置当前任务终点 */ fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) { ThreadUtils.runOnUiThread { diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltSmallMapView.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltSmallMapView.kt index 9893dfd624..8a0f20968f 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltSmallMapView.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/WeltSmallMapView.kt @@ -203,11 +203,13 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { * 设置当前大任务的所有子任务起终点集合 */ fun setTaskListCoordinatesLatLng(coordinatesLatLng: MutableList) { - this.mTaskCoordinatesLatLng = coordinatesLatLng + ThreadUtils.runOnUiThread { + this.mTaskCoordinatesLatLng = coordinatesLatLng + } } /** - * 设置当前子任务的终点 + * 设置当前任务的终点 */ fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) { endStationMarker?.remove()