diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/SweeperCloudDialogClickListener.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/SweeperCloudDialogClickListener.kt new file mode 100644 index 0000000000..abf3be40ca --- /dev/null +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/callback/SweeperCloudDialogClickListener.kt @@ -0,0 +1,8 @@ +package com.mogo.och.sweepercloud.callback + +interface SweeperCloudDialogClickListener { + fun onConfirm() + fun onRefuseOrEnd() + fun onCountDownStop() + fun onNext() +} \ No newline at end of file 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 917c515e02..f7274ecd6f 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 @@ -7,12 +7,14 @@ import chassis.ChassisStatesOuterClass import com.amap.api.maps.model.LatLng import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.sweepercloud.R import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean +import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener import com.mogo.och.sweepercloud.presenter.SweeperPresenter -import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog -import com.mogo.och.sweepercloud.util.SweeperCloudTaskMockUtils.sendCloudTaskInfo +import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudLoadingDialog +import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createConfirmStartSubTaskDialog +import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createReceivedTaskInfoDialog +import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.sendCloudTaskInfo import com.mogo.och.sweepercloud.view.SweeperCurrentTaskInfoView import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon @@ -38,6 +40,7 @@ class SweeperFragment : BaseSweeperTabFragment builder.build(it1) } + }, it) dialog?.show() } } @@ -268,47 +267,34 @@ class SweeperFragment : BaseSweeperTabFragment builder.build(it1) } + }, it) dialog?.show() } diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java index 6b59222ad1..1de5c44e72 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/model/SweeperTaskModel.java @@ -31,7 +31,7 @@ import com.mogo.och.sweepercloud.callback.ISweeperControllerStatusCallback; import com.mogo.och.sweepercloud.constant.SweeperConst; import com.mogo.och.sweepercloud.database.MyDataBase; import com.mogo.och.sweepercloud.database.bean.WeltDataBean; -import com.mogo.och.sweepercloud.util.SweeperCloudTaskMockUtils; +import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils; import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask; import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable; import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask; @@ -61,7 +61,7 @@ import planning.RoboSweeperTaskIndexOuterClass; import system_master.SystemStatusInfo; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER; -import static com.mogo.och.sweepercloud.util.SweeperCloudTaskMockUtils.printMessage; +import static com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.printMessage; /** * @author congtaowang @@ -457,7 +457,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "getCurrentTask:" + printMessage(getTaskReq) + " reqNo:" + reqNo); getAutoPilotControlManager().sendSweeperGetTaskReq(reqNo, getTaskReq); // TODO: 2023/5/5 模拟云控获取任务 - SweeperCloudTaskMockUtils.sendCloudTaskInfo(SweeperCloudTask.MessageType.PadSendGetTaskReq); + SweeperCloudTaskUtils.sendCloudTaskInfo(SweeperCloudTask.MessageType.PadSendGetTaskReq); } /** @@ -474,7 +474,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperStartTaskResp:" + printMessage(startTaskResp) + " reqNo:" + reqNo); // TODO: 2023/5/5 模拟 当云控收到pad接取任务成功的指令时, 云控下发子任务开始确认指令 if (code == SweeperTask.StartTaskCode.MANUAL_CONFIRM) { - SweeperCloudTaskMockUtils.sendCloudSubTaskConfirm(); + SweeperCloudTaskUtils.sendCloudSubTaskConfirm(); } } 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 6398096db8..fdfefa6b48 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 @@ -10,12 +10,13 @@ import android.widget.TextView import androidx.lifecycle.LifecycleObserver import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog import com.mogo.och.sweepercloud.R +import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener import com.mogo.och.sweepercloud.view.CountDownView /** * 清扫车云控任务dialog基类 */ -class SweeperCloudDialog : BaseFloatDialog, LifecycleObserver { + class SweeperCloudDialog : BaseFloatDialog, LifecycleObserver { private var commonTitle: TextView? = null //标题 private var commonLeft: TextView? = null//底部左边按钮 private var commonMiddle: TextView? = null //底部中间按钮 @@ -96,14 +97,6 @@ class SweeperCloudDialog : BaseFloatDialog, LifecycleObserver { countDownImage = findViewById(R.id.sweeper_cloud_imageview) commonCountDown = findViewById(R.id.sweeper_cloud_countdown) } - - interface SweeperCloudClickListener { - fun onConfirm() - fun onRefuseOrEnd() - fun onCountDownStop() - fun onNext() - } - class Builder { var titleStr: String = "" var contentStr: String = "" @@ -112,12 +105,11 @@ class SweeperCloudDialog : BaseFloatDialog, LifecycleObserver { var middleStr: String = "" var rightStr: String = "" var countDownTime: Int = 0 - var listener: SweeperCloudClickListener? = null + var listener: SweeperCloudDialogClickListener? = null fun build(context: Context): SweeperCloudDialog { return SweeperCloudDialog(this, context) } } - /** * 启动动画 */ diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskMockUtils.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt similarity index 66% rename from OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskMockUtils.kt rename to OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt index 37b10a94e8..69e04cd5d5 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskMockUtils.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/util/SweeperCloudTaskUtils.kt @@ -1,19 +1,20 @@ package com.mogo.och.sweepercloud.util +import android.content.Context import com.google.protobuf.MessageOrBuilder import com.google.protobuf.TextFormat import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.sweepercloud.callback.SweeperCloudDialogClickListener import com.mogo.och.sweepercloud.model.SweeperTaskModel +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.Location -import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.SubTaskInfo -import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskInfo -import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel +import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.* import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfirm -object SweeperCloudTaskMockUtils { +object SweeperCloudTaskUtils { /** * 模拟云控发送任务给pad */ @@ -22,14 +23,14 @@ object SweeperCloudTaskMockUtils { val builder = TaskInfo.newBuilder() builder.sn = getDriverSn() builder.taskId = "10" - builder.taskName = "环球贸易中心B座" + builder.taskName = "烟台清扫车作业任务" builder.currentTime = System.currentTimeMillis() builder.taskStartTime = 1682664162000 builder.taskEndTime = 1682750562000 //第一个子任务 val subBuilder0 = SubTaskInfo.newBuilder() subBuilder0.subTaskId = "1" - subBuilder0.subTaskName = "自动驾驶子任务0" + subBuilder0.subTaskName = "海水浴场-佛兴禅寺(前岛贴右)" subBuilder0.taskModel = TaskModel.AUTO subBuilder0.taskStatus = SweeperCommon.TaskStatus.FINISHED val startLocation0 = Location.newBuilder() @@ -52,7 +53,7 @@ object SweeperCloudTaskMockUtils { //第二个子任务 val subBuilder1 = SubTaskInfo.newBuilder() subBuilder1.subTaskId = "2" - subBuilder1.subTaskName = "自动驾驶子任务1" + subBuilder1.subTaskName = "佛兴禅寺-海水浴场(前岛贴左)" subBuilder1.taskModel = TaskModel.AUTO subBuilder1.taskStatus = SweeperCommon.TaskStatus.TO_START val startLocation1 = Location.newBuilder() @@ -73,7 +74,7 @@ object SweeperCloudTaskMockUtils { //第三个子任务 val subBuilder2 = SubTaskInfo.newBuilder() subBuilder2.subTaskId = "3" - subBuilder2.subTaskName = "人工驾驶子任务路线2" + subBuilder2.subTaskName = "海水浴场-佛兴禅寺(前岛贴左)" subBuilder2.taskModel = TaskModel.MANUAL subBuilder2.taskStatus = SweeperCommon.TaskStatus.TO_START val startLocation2 = Location.newBuilder() @@ -120,6 +121,46 @@ object SweeperCloudTaskMockUtils { return MoGoAiCloudClientConfig.getInstance().sn } + /** + * 创建接收任务弹窗 + */ + @JvmStatic + fun createReceivedTaskInfoDialog(context:Context?,listener: SweeperCloudDialogClickListener?,taskInfo: TaskInfo):SweeperCloudDialog?{ + var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + val startCalendar = DateTimeUtil.formatLongToCalendar(taskInfo.taskStartTime) + val endCalendar = DateTimeUtil.formatLongToCalendar(taskInfo.taskEndTime) + builder.titleStr = "任务接取" + builder.contentStr = "请确认是否接取任务${taskInfo.taskName}" + builder.tipStr = "(任务时间${DateTimeUtil.formatCalendarToString(startCalendar, DateTimeUtil.HH_mm)}-${ + DateTimeUtil.formatCalendarToString( + endCalendar, + DateTimeUtil.HH_mm + ) + })" + builder.leftStr = "确认" + builder.middleStr = "" + builder.rightStr = "拒绝" + builder.countDownTime = 15 + builder.listener=listener + return context?.let { it1 -> builder.build(it1) } + } + + /** + * 创建确认开始子任务弹窗 + */ + @JvmStatic + fun createConfirmStartSubTaskDialog(context:Context?,listener: SweeperCloudDialogClickListener?,subTaskInfo: SubTaskInfo):SweeperCloudDialog?{ + var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + builder.titleStr = "任务确认" + builder.contentStr = "请确认是否执行任务${subTaskInfo.subTaskName}" + builder.tipStr = if (subTaskInfo.taskModel.number == 1) "[需手动驾驶至终点${subTaskInfo.endLocation.siteName}]" else "[自动驾驶至终点${subTaskInfo.endLocation.siteName}]" + builder.leftStr = "确认" + builder.middleStr = "下一个" + builder.rightStr = "结束" + builder.countDownTime = 15 + 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/res/layout/sweeper_current_task_info.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_current_task_info.xml index 16ca97e9a4..16e989383f 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_current_task_info.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_current_task_info.xml @@ -77,7 +77,7 @@ android:id="@+id/preSubTask" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/dp_40" + android:layout_marginTop="@dimen/dp_50" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/viewTaskInfoLine" />