From db00859cd88ab986e4cdd6f9d2b98f34eae5422a Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 26 Jun 2024 16:03:39 +0800 Subject: [PATCH] =?UTF-8?q?[6.4.6]=20[fea]=20[=E6=B7=BB=E5=8A=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E8=BF=87=E6=BB=A4=E6=9D=A1=E4=BB=B6]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/OchAutoPilotManager.kt | 7 ++- .../manager/autopilot/line/ILineCallback.java | 9 +++ .../manager/autopilot/line/LineManager.kt | 62 ++++++++++++++++--- .../module/wigets/map/drawline/LineView.kt | 33 ++++++---- .../wigets/map/drawline/LineViewModel.kt | 46 ++++++++++++++ .../cloud/model/SweeperCloudTaskModel.java | 5 ++ .../presenter/SweeperOperatePresenter.java | 5 ++ 7 files changed, 145 insertions(+), 22 deletions(-) create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/ILineCallback.java create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/map/drawline/LineViewModel.kt diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt index ce201d7def..e71a17dbea 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt @@ -11,6 +11,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerReceiveReceivedAckListe import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager +import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager import com.zhjt.mogo.adas.common.MessageType import com.zhjt.mogo.adas.data.bean.ReceivedAck @@ -26,8 +27,12 @@ object OchAutoPilotManager : IMoGoReceiveReceivedAckListener { @JvmStatic fun canStartAutoPilot(lineId: Number?): String { return TrajectoryAndDistanceManager.canStartAutopilot(lineId).apply { - if(!isNullOrBlank()){ + if (!isNullOrBlank()) { // 去启动绘制高精地图上的轨迹 + val drawGlobalTrajectory = LineManager.drawGlobalTrajectory() + if (!drawGlobalTrajectory.first) { + ToastUtils.showLong(drawGlobalTrajectory.second) + } } } } diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/ILineCallback.java b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/ILineCallback.java new file mode 100644 index 0000000000..2bdb1e5b9a --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/ILineCallback.java @@ -0,0 +1,9 @@ +package com.mogo.och.common.module.manager.autopilot.line; + + +public interface ILineCallback { + default void clearLineSuccess(){} + default void drawLineSuccess(){} + + default void drawLineFail(){} +} diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/LineManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/LineManager.kt index 77f1f29e8f..9b827fa0e5 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/LineManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/LineManager.kt @@ -1,21 +1,29 @@ package com.mogo.och.common.module.manager.autopilot.line -object LineManager { +import com.mogo.eagle.core.function.call.map.CallerMapGlobalTrajectoryDrawManager +import com.mogo.och.common.module.utils.CallerBase + +/** + * 订单中 + */ +object LineManager : CallerBase() { private var lineId: Int = -1 @JvmStatic fun setLineId(value: Int) { - if (value < 0) { - lineId = -1 + lineId = if (value < 0) { + clearGlobalTrajectory() + -1 } else { - lineId = value + value } } @JvmStatic fun setLineId(value: Long) { - if (value < 0) { - lineId = -1 + lineId = if (value < 0) { + clearGlobalTrajectory() + -1 } else { - lineId = value.toInt() + value.toInt() } } @@ -24,8 +32,44 @@ object LineManager { return lineId } - fun haveLine(): Boolean { - return lineId > 0 + override fun doSomeAfterAddListener(tag: String, listener: ILineCallback) { + super.doSomeAfterAddListener(tag, listener) + if (hasDrawnGlobalTrajectory()) { + listener.drawLineSuccess() + }else{ + listener.drawLineFail() + } } + fun hasDrawnGlobalTrajectory(): Boolean { + return CallerMapGlobalTrajectoryDrawManager.hasDrawnGlobalTrajectory() + } + + fun clearGlobalTrajectory() { + CallerMapGlobalTrajectoryDrawManager.clearGlobalTrajectory() + if (!hasDrawnGlobalTrajectory()){ + M_LISTENERS.forEach { + it.value.clearLineSuccess() + } + } + } + + fun drawGlobalTrajectory(): Pair { + if(lineId<0){ + return Pair(false,"请设置正确线路或订单") + } + return CallerMapGlobalTrajectoryDrawManager.drawGlobalTrajectory().apply { + if(first){ + M_LISTENERS.forEach { + it.value.drawLineSuccess() + } + }else{ + M_LISTENERS.forEach { + it.value.drawLineFail() + } + } + } + } + + } \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/map/drawline/LineView.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/map/drawline/LineView.kt index 7b255d86df..175d39eaf2 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/map/drawline/LineView.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/map/drawline/LineView.kt @@ -1,17 +1,21 @@ package com.mogo.och.common.module.wigets.map.drawline + import android.content.Context import android.util.AttributeSet import androidx.appcompat.widget.AppCompatImageView -import com.mogo.eagle.core.function.call.map.CallerMapGlobalTrajectoryDrawManager +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.findViewTreeViewModelStoreOwner import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.R +import com.mogo.och.common.module.manager.autopilot.line.LineManager + /** * */ -class LineView : AppCompatImageView{ +class LineView : AppCompatImageView, LineViewModel.ILineViewCallback { - private val TAG = "VisualView" + private val TAG = "LineView" constructor(context: Context) : super(context) @@ -31,19 +35,21 @@ class LineView : AppCompatImageView{ super.onAttachedToWindow() onClick { - if (CallerMapGlobalTrajectoryDrawManager.hasDrawnGlobalTrajectory()) { - CallerMapGlobalTrajectoryDrawManager.clearGlobalTrajectory() - setImageResource(R.drawable.common_map_line_close) - }else{ - val drawGlobalTrajectory = CallerMapGlobalTrajectoryDrawManager.drawGlobalTrajectory() - if(drawGlobalTrajectory.first){ - setImageResource(R.drawable.common_map_line_open) - }else{ - setImageResource(R.drawable.common_map_line_close) + if (LineManager.hasDrawnGlobalTrajectory()) { + LineManager.clearGlobalTrajectory() + } else { + val drawGlobalTrajectory = LineManager.drawGlobalTrajectory() + if (!drawGlobalTrajectory.first) { ToastUtils.showLong(drawGlobalTrajectory.second) } } } + + val viewModel = findViewTreeViewModelStoreOwner()?.let { + ViewModelProvider(it).get(LineViewModel::class.java) + } + viewModel?.setDistanceCallback(this) + } @@ -55,6 +61,9 @@ class LineView : AppCompatImageView{ } } + override fun setImageViewResource(name: Int) { + setImageResource(name) + } } \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/map/drawline/LineViewModel.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/map/drawline/LineViewModel.kt new file mode 100644 index 0000000000..d16d17d0ae --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/map/drawline/LineViewModel.kt @@ -0,0 +1,46 @@ +package com.mogo.och.common.module.wigets.map.drawline + +import androidx.annotation.DrawableRes +import androidx.lifecycle.ViewModel +import com.mogo.och.common.module.R +import com.mogo.och.common.module.manager.autopilot.line.ILineCallback +import com.mogo.och.common.module.manager.autopilot.line.LineManager + +class LineViewModel : ViewModel(), ILineCallback { + + private val TAG = LineViewModel::class.java.simpleName + + private var viewCallback: ILineViewCallback? = null + + init { + + } + + override fun onCleared() { + super.onCleared() + LineManager.removeListener(TAG) + this.viewCallback = null + } + + fun setDistanceCallback(viewCallback: ILineViewCallback) { + LineManager.addListener(TAG,this) + this.viewCallback = viewCallback + } + + override fun clearLineSuccess() { + this.viewCallback?.setImageViewResource(R.drawable.common_map_line_close) + } + + override fun drawLineSuccess() { + this.viewCallback?.setImageViewResource(R.drawable.common_map_line_open) + } + + override fun drawLineFail() { + this.viewCallback?.setImageViewResource(R.drawable.common_map_line_close) + } + + interface ILineViewCallback { + fun setImageViewResource(@DrawableRes name: Int) + + } +} \ No newline at end of file diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java index 6fcaf29aa3..d59f3ac076 100644 --- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java +++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java @@ -792,4 +792,9 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene public void onAutopilotTrajectoryDownloadReq(@NonNull AutopilotControlParameters.AutoPilotLine autoPilotLine, int downloadType) { } + + @Override + public void onFsmReceiveTimeout(boolean isTimeout) { + + } } diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java index 130c155a68..764942e060 100644 --- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java +++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java @@ -469,4 +469,9 @@ public class SweeperOperatePresenter extends Presenter @Override public void onAutopilotTrajectoryDownloadReq(@NonNull AutopilotControlParameters.AutoPilotLine autoPilotLine, int downloadType) { } + + @Override + public void onFsmReceiveTimeout(boolean isTimeout) { + + } }