From 29650a6051f9ba558da0914da10291b531092834 Mon Sep 17 00:00:00 2001 From: bxb Date: Wed, 10 May 2023 16:03:51 +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=E5=92=8C=E6=8F=90=E5=89=8D?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E9=80=BB=E8=BE=91=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/BaseSweeperTabFragment.java | 104 ++++++++++------ .../sweepercloud/fragment/SweeperFragment.kt | 93 +++++++++++---- .../sweepercloud/model/SweeperTaskModel.java | 20 +--- .../presenter/SweeperPresenter.java | 16 +-- .../ui/dialog/SweeperCloudLoadingDialog.kt | 4 +- .../util/SweeperCloudTaskUtils.kt | 102 ++++++++++++---- .../mogo/och/sweepercloud/view/SubTaskView.kt | 3 +- .../view/SweeperTrafficDataView.kt | 4 +- .../sweepercloud/view/SweeperWorkModeView.kt | 5 +- .../res/layout/dialog_sweeper_cloud_view.xml | 92 ++++++++------- .../main/res/layout/sweeper_base_fragment.xml | 111 +++++++----------- .../main/res/layout/sweeper_subtask_view.xml | 1 + 12 files changed, 344 insertions(+), 211 deletions(-) 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 0618243ebd..9d25dc84d3 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 @@ -36,8 +36,10 @@ import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean; import com.mogo.och.sweepercloud.callback.ISweeperTaskDataToFragmentCallback; import com.mogo.och.sweepercloud.callback.IWeltMapSwitchToSmallCallback; import com.mogo.och.sweepercloud.database.bean.WeltDataBean; +import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils; import com.mogo.och.sweepercloud.view.SweeperTrafficDataView; import com.mogo.och.sweepercloud.view.WeltSmallMapView; +import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask; import java.math.BigDecimal; import java.math.RoundingMode; @@ -119,25 +121,28 @@ public abstract class BaseSweeperTabFragment - debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) + // 模拟 云端发送任务 + findViewById(R.id.btnSendTask).setOnClickListener(view -> + mockSendCloudTaskInfo() + ); + // 模拟 云端发送子任务确认 + findViewById(R.id.btnSendSubTaskConfirm).setOnClickListener(view -> + mockSendCloudSubTaskConfirm() ); - // 模拟 可自动驾驶,工控机连接正常,且处于人工干预状态 - findViewById(R.id.btnAutopilotEnable).setOnClickListener(view -> - debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) + // 模拟 云端请求结束大任务 + findViewById(R.id.btnSendEndTask).setOnClickListener(view -> + mockSendCloudEndBigTask() ); - - // 模拟 自动驾驶能力,自动驾驶中,可能是停车,可能是行进,但是是机器在处理车的前进后退,不是人 - findViewById(R.id.btnAutopilotRunning).setOnClickListener(view -> - debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) + // 模拟 云端发送子任务状态 + findViewById(R.id.btnSendSubtaskStatus).setOnClickListener(view -> + mockSendCloudSubTaskStatus() ); - // 模拟 结束子任务 - findViewById(R.id.btnEndTask).setOnClickListener(view -> - debugEndSubTask() + // 模拟 云端发送大任务状态 + findViewById(R.id.btnSendTaskStatus).setOnClickListener(view -> + mockSendCloudBigTaskStatus() ); - mTrafficDataView.setOnLongClickListener(new View.OnLongClickListener() { + mTrafficDataView.getSpeedImage().setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { debugTestBar(); @@ -256,12 +261,6 @@ public abstract class BaseSweeperTabFragment resultArrayList = tempData(); setTaskRouteList(resultArrayList); UiThreadHandler.postDelayed(() -> { - ArrayList routeList =tempData1(); + ArrayList routeList = tempData1(); ArrayList weltDataBeans = new ArrayList<>(); - ArrayList subTaskCoordinates=new ArrayList<>(); + ArrayList subTaskCoordinates = new ArrayList<>(); for (int i = 0; i < routeList.size(); i++) { WeltDataBean weltDataBean = new WeltDataBean(); weltDataBean.setLocLon(routeList.get(i).longitude); weltDataBean.setLocLat(routeList.get(i).latitude); weltDataBean.setWeltDistance(Math.random() * 50); weltDataBeans.add(weltDataBean); - subTaskCoordinates.add(new LatLng(routeList.get(i).latitude,routeList.get(i).longitude)); + subTaskCoordinates.add(new LatLng(routeList.get(i).latitude, routeList.get(i).longitude)); } setTaskListCoordinatesLatLng(subTaskCoordinates); setWeltDataToMap(weltDataBeans, true, format(Math.random() * 50)); @@ -509,24 +545,26 @@ public abstract class BaseSweeperTabFragment tempData() { ArrayList results = new ArrayList<>(); - results.add(getRoute(116.41732262522,39.974576894194)); - results.add(getRoute(116.43963532201855,39.9752190287537)); - results.add(getRoute(116.4440910789222,39.96469276598098)); - results.add(getRoute(116.45254030604285,39.958762580403544)); - results.add(getRoute(116.46168616811329,39.94668171374373)); + results.add(getRoute(116.41732262522, 39.974576894194)); + results.add(getRoute(116.43963532201855, 39.9752190287537)); + results.add(getRoute(116.4440910789222, 39.96469276598098)); + results.add(getRoute(116.45254030604285, 39.958762580403544)); + results.add(getRoute(116.46168616811329, 39.94668171374373)); return results; } + private ArrayList tempData1() { ArrayList results = new ArrayList<>(); - results.add(getRoute(116.41732262522,39.974576894194)); - results.add(getRoute(116.43963532201855,39.9752190287537)); - results.add(getRoute(116.4440910789222,39.96469276598098)); + results.add(getRoute(116.41732262522, 39.974576894194)); + results.add(getRoute(116.43963532201855, 39.9752190287537)); + results.add(getRoute(116.4440910789222, 39.96469276598098)); return results; } - private SweeperRoutePlanningUpdateReqBean.Result getRoute(double longitude,double latitude){ + + private SweeperRoutePlanningUpdateReqBean.Result getRoute(double longitude, double latitude) { SweeperRoutePlanningUpdateReqBean.Result result = new SweeperRoutePlanningUpdateReqBean.Result(); result.latitude = latitude; - result.longitude =longitude; + result.longitude = longitude; return result; } } 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 8fbc24c524..ec588a3b3a 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,6 +7,7 @@ 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 @@ -14,13 +15,15 @@ import com.mogo.och.sweepercloud.presenter.SweeperPresenter 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.mockSendCloudTaskInfo +import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskEndDialog import com.mogo.och.sweepercloud.view.SweeperCurrentTaskInfoView import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask 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.SweeperTask.SubTaskInfo +import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm +import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop import kotlinx.android.synthetic.main.fragment_och_sweeper.* import kotlinx.android.synthetic.main.sweeper_no_data_common_view.* import kotlinx.coroutines.Dispatchers @@ -39,7 +42,7 @@ class SweeperFragment : BaseSweeperTabFragment= 1) { + return "${day}天${hour}时${minute}分钟" + } + if (hour >= 1) { + return "${hour}时${minute}分钟" + } + return "${minute}分钟" + } } \ No newline at end of file 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 9e5516e8dc..ffda68b95e 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 @@ -78,7 +78,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM private ISweeperControllerStatusCallback mControllerStatusCallback; //Model->Presenter:VR mode等 private ISweeperCloudTaskCallback mSweeperTaskCallback; ArrayList points = new ArrayList<>();//全路径信息 - private int mSubTaskType = -1; //1自动驾驶 2.人工驾驶 -1:未知任务类型 + private SweeperTask.TaskModel mSubTaskType = SweeperTask.TaskModel.DEFAULT_MODEL; //1自动驾驶 2.人工驾驶 0:无效值 private int mCurrentLineId = 0; //当前路线id private int mLineId = 0;//上一次存储的路线id //自动驾驶状态 @@ -196,7 +196,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM }; - public void setSubtask(String subTaskId, int subTaskType, int currentLineId) { + public void setSubtask(String subTaskId, SweeperTask.TaskModel subTaskType, int currentLineId) { this.mSubTaskId = subTaskId; this.mSubTaskType = subTaskType; this.mCurrentLineId = currentLineId; @@ -207,7 +207,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM */ public void clearRouteList() { points.clear(); - mSubTaskType = 0; + mSubTaskType = SweeperTask.TaskModel.UNRECOGNIZED; } /** @@ -265,7 +265,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM if (mControllerStatusCallback != null) { mControllerStatusCallback.onCarLocationChanged(gnssInfo); } - if (mSubTaskType == 1) {//收集人工驾驶子任务坐标点 + if (mSubTaskType == SweeperTask.TaskModel.MANUAL) {//收集人工驾驶子任务坐标点 addCoordinates(gnssInfo); return; } @@ -472,10 +472,6 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTask.getNumber()); getAutoPilotControlManager().sendSweeperStartTaskResp(reqNo, startTaskResp); CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperStartTaskResp:" + printMessage(startTaskResp) + " reqNo:" + reqNo); - // TODO: 2023/5/5 模拟 当云控收到pad接取任务成功的指令时, 云控下发子任务开始确认指令 - if (code == SweeperTask.StartTaskCode.MANUAL_CONFIRM) { - SweeperCloudTaskUtils.mockSendCloudSubTaskConfirm(); - } } /** @@ -489,12 +485,8 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM builder.setCode(code); SweeperTaskConfirm.TaskConfirmResp taskConfirmResp = builder.build(); String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskConfirm.getNumber()); - CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperStartTaskResp" + printMessage(taskConfirmResp) + " reqNo:" + reqNo); + CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperTaskConfirmResp" + printMessage(taskConfirmResp) + " reqNo:" + reqNo); getAutoPilotControlManager().sendSweeperTaskConfirmResp(reqNo, taskConfirmResp); - // TODO: 2023/5/8 模拟当云控收到pad子任务确认指令后。云控下发子任务状态更新指令 - if (code == SweeperTaskConfirm.TaskConfirmCode.MANUAL_CONFIRM) { - SweeperCloudTaskUtils.mockSendCloudUpdateSubTaskStatus(); - } } /** @@ -510,7 +502,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM builder.setCode(code); SweeperTaskStop.StopTaskResp stopTaskResp = builder.build(); String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskStop.getNumber()); - CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperStartTaskResp" + printMessage(stopTaskResp) + " reqNo:" + reqNo); + CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "sendSweeperStopTaskResp" + printMessage(stopTaskResp) + " reqNo:" + reqNo); getAutoPilotControlManager().sendSweeperStopTaskResp(reqNo, stopTaskResp); } 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 6ad18c5369..d732f5324e 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 @@ -98,7 +98,7 @@ public class SweeperPresenter extends Presenter /** * 设置当前子任务信息 */ - public void setSubtask(String subTaskId, int subTaskType, int currentLineId) { + public void setSubtask(String subTaskId, SweeperTask.TaskModel subTaskType, int currentLineId) { SweeperTaskModel.getInstance().setSubtask(subTaskId, subTaskType, currentLineId); } @@ -167,23 +167,23 @@ public class SweeperPresenter extends Presenter } @Override - public void onSweeperCloudTask(@NonNull SweeperCloudTask.MessageType messageType,SweeperTask.TaskInfo taskInfo) { - ThreadUtils.runOnUiThread(()-> mView.onSweeperCloudTask(messageType,taskInfo)); + public void onSweeperCloudTask(@NonNull SweeperCloudTask.MessageType messageType, SweeperTask.TaskInfo taskInfo) { + ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTask(messageType, taskInfo)); } @Override public void onSweeperCloudTaskConfirm(@NonNull String taskId, @NonNull String subTaskId) { - ThreadUtils.runOnUiThread(()-> mView.showSubTaskInfoDialog(taskId,subTaskId)); + ThreadUtils.runOnUiThread(() -> mView.showSubTaskInfoDialog(taskId, subTaskId)); } @Override public void onSweeperCloudTaskStatus(@NonNull String taskId, @NonNull String subTaskId, @NonNull SweeperCommon.TaskStatus subTaskStatus) { - ThreadUtils.runOnUiThread(()->mView.onSweeperUpdateSubTaskStatus(taskId,subTaskId,subTaskStatus)); + ThreadUtils.runOnUiThread(() -> mView.onSweeperUpdateSubTaskStatus(taskId, subTaskId, subTaskStatus)); } @Override public void onSweeperCloudTaskStop(@NonNull String taskId, @NonNull SweeperTaskStop.StopTaskType stopTaskType) { - + ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTaskStop(taskId, stopTaskType)); } @Override @@ -204,11 +204,11 @@ public class SweeperPresenter extends Presenter @Override public void setWeltDataToMap(@NonNull ArrayList weltDataBeans, boolean isWeltData, @NonNull String distance) { - ThreadUtils.runOnUiThread(()-> mView.setWeltDataToMap(weltDataBeans, isWeltData, distance)); + ThreadUtils.runOnUiThread(() -> mView.setWeltDataToMap(weltDataBeans, isWeltData, distance)); } @Override public void onSweeperFutianCleanSystemState(@NonNull ChassisStatesOuterClass.SweeperFuTianTaskSystemStates cleanSystemState) { - ThreadUtils.runOnUiThread(()-> mView.onSweeperFutianCleanSystemState(cleanSystemState)); + ThreadUtils.runOnUiThread(() -> mView.onSweeperFutianCleanSystemState(cleanSystemState)); } } 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 f1cdde806b..534c08538f 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 @@ -33,9 +33,9 @@ class SweeperCloudLoadingDialog : BaseFloatDialog, LifecycleObserver { * 开始旋转 */ private fun startRotation() { - objectAnimator = ObjectAnimator.ofFloat(mLoadingView, "rotation", 0f, 360f) + objectAnimator = ObjectAnimator.ofFloat(mLoadingView, "rotation", 0f, 720f) objectAnimator?.let { - it.duration = 1000 + it.duration = 2000 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 d82b6b00e7..d4a4a8189f 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 @@ -4,7 +4,6 @@ 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 @@ -14,6 +13,7 @@ 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.confirm.SweeperTaskConfirm.TaskConfirm import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus +import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop object SweeperCloudTaskUtils { /** @@ -110,13 +110,12 @@ object SweeperCloudTaskUtils { builder.sn = getDriverSn() builder.taskId = "10" builder.subTaskId = "1" - ThreadUtils.runOnUiThreadDelayed({ - SweeperTaskModel.getInstance().onSweeperFutianCloudTaskConfirm( - MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}", - System.currentTimeMillis(), builder.build() - ) - }, 10000) + SweeperTaskModel.getInstance().onSweeperFutianCloudTaskConfirm( + MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}", + System.currentTimeMillis(), builder.build() + ) } + /** * 模拟下发更新子任务状态指令 */ @@ -127,13 +126,27 @@ object SweeperCloudTaskUtils { builder.taskId = "10" builder.subTaskId = "3" builder.taskStatus = SweeperCommon.TaskStatus.RUNNING - ThreadUtils.runOnUiThreadDelayed({ - SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStatus( - MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}", - System.currentTimeMillis(), builder.build() - ) - }, 10000) + SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStatus( + MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}", + System.currentTimeMillis(), builder.build() + ) } + + /** + * 模拟云端发送大任务结束 + */ + @JvmStatic + fun mockSendCloudBigTaskEnd() { + val builder = SweeperTaskStop.StopTaskReq.newBuilder() + builder.sn = getDriverSn() + builder.taskId = "10" + builder.type = SweeperTaskStop.StopTaskType.TIMEOUT + SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStop( + MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}", + System.currentTimeMillis(), builder.build() + ) + } + fun getDriverSn(): String? { return MoGoAiCloudClientConfig.getInstance().sn } @@ -142,12 +155,12 @@ object SweeperCloudTaskUtils { * 创建接收任务弹窗 */ @JvmStatic - fun createReceivedTaskInfoDialog(context:Context?,listener: SweeperCloudDialogClickListener?,taskInfo: TaskInfo):SweeperCloudDialog?{ + 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.contentStr = "请确认是否接取${taskInfo.taskName}" builder.tipStr = "(任务时间${DateTimeUtil.formatCalendarToString(startCalendar, DateTimeUtil.HH_mm)}-${ DateTimeUtil.formatCalendarToString( endCalendar, @@ -158,7 +171,7 @@ object SweeperCloudTaskUtils { builder.middleStr = "" builder.rightStr = "拒绝" builder.countDownTime = 15 - builder.listener=listener + builder.listener = listener return context?.let { it1 -> builder.build(it1) } } @@ -166,18 +179,67 @@ object SweeperCloudTaskUtils { * 创建确认开始子任务弹窗 */ @JvmStatic - fun createConfirmStartSubTaskDialog(context:Context?,listener: SweeperCloudDialogClickListener?,subTaskInfo: SubTaskInfo):SweeperCloudDialog?{ + 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.contentStr = "请确认是否执行${subTaskInfo.subTaskName}" + builder.tipStr = + if (subTaskInfo.taskModel == TaskModel.MANUAL) "[需手动驾驶至终点${subTaskInfo.endLocation.siteName}]" else "[自动驾驶至终点${subTaskInfo.endLocation.siteName}]" builder.leftStr = "确认" builder.middleStr = "下一个" builder.rightStr = "结束" builder.countDownTime = 15 - builder.listener =listener + builder.listener = listener return context?.let { it1 -> builder.build(it1) } } + + /** + * 创建结束任务弹窗 + */ + @JvmStatic + fun createSweeperTaskEndDialog( + context: Context?, + listener: SweeperCloudDialogClickListener?, + stopTaskType: SweeperTaskStop.StopTaskType, + timeoutStr: String + ): SweeperCloudDialog? { + 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 = "云端请求终止任务,请确认" + builder.tipStr = "【确认后请接管停车】" + builder.leftStr = "确认" + builder.middleStr = "" + builder.rightStr = "拒绝" + } + //任务超时结束 + SweeperTaskStop.StopTaskType.TIMEOUT -> { + builder.contentStr = "任务已超时${timeoutStr},请确认是否结束" + builder.tipStr = "【结束后请接管停车】" + 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/java/com/mogo/och/sweepercloud/view/SubTaskView.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SubTaskView.kt index 97c60565bb..32559b6bdc 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SubTaskView.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SubTaskView.kt @@ -9,6 +9,7 @@ import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.och.sweepercloud.R import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.SubTaskInfo +import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel import kotlinx.android.synthetic.main.sweeper_subtask_view.view.* /** @@ -32,7 +33,7 @@ class SubTaskView : ConstraintLayout { fun setData(taskInfo: SubTaskInfo,isLastTask: Boolean = false) { tvSubTaskName.text = taskInfo.subTaskName tvSubTaskName.setTextColor(if (taskInfo.taskStatus==SweeperCommon.TaskStatus.RUNNING) Color.parseColor("#3BD2FF") else Color.parseColor("#FFFFFF")) - if (taskInfo.taskModel.number == 1) {//人工驾驶子任务 + if (taskInfo.taskModel == TaskModel.MANUAL) {//人工驾驶子任务 ivManualDriving.visibility = View.VISIBLE } else { ivManualDriving.visibility = View.GONE diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperTrafficDataView.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperTrafficDataView.kt index 5a2b5a3525..b8885f7231 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperTrafficDataView.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperTrafficDataView.kt @@ -158,7 +158,9 @@ class SweeperTrafficDataView : ConstraintLayout, tapPositionView?.updateWithGear(gear) } } - + fun getSpeedImage():ImageView?{ + return speedImage + } /** * 速度设置 */ diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperWorkModeView.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperWorkModeView.kt index 04e3095b4c..08dd7f348c 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperWorkModeView.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperWorkModeView.kt @@ -14,6 +14,7 @@ import com.mogo.och.sweepercloud.callback.ICleaningModeStateCallback import com.mogo.och.sweepercloud.constant.OperateStateEnum import com.mogo.och.sweepercloud.ui.popwindow.SweeperOperatePanelPopWindow import com.mogo.och.sweepercloud.util.SweeperFutianCmdUtil +import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel import kotlinx.android.synthetic.main.sweeper_work_mode.view.* /** @@ -67,7 +68,7 @@ class SweeperWorkModeView : ConstraintLayout,ICleaningModeStateCallback { /** * 设置清扫模式面板 */ - fun setSweeperFutianCleanSystemState(taskType: Int, cleanSystemState: SweeperFuTianTaskSystemStates?) { + fun setSweeperFutianCleanSystemState(taskType: TaskModel, cleanSystemState: SweeperFuTianTaskSystemStates?) { // TODO:传递清扫车底盘数据给上装面板 //mOperatePanelPopWindow?.setCleanSystemState(cleanSystemState, this@SweeperWorkModeView) if (this.operateState.code==OperateStateEnum.STARTING_STATUS.code){ @@ -79,7 +80,7 @@ class SweeperWorkModeView : ConstraintLayout,ICleaningModeStateCallback { d(SceneConstant.M_SWEEPER + TAG, "SystemState operateState:"+operateState.code) } //清扫车暂未选择清扫模式或者任务类型是人工驾驶子任务,则暂无清扫模式 - if (SweeperFutianCmdUtil.checkIfCleanMode(cleanSystemState) || taskType==1||taskType==-1) { + if (SweeperFutianCmdUtil.checkIfCleanMode(cleanSystemState) || taskType==TaskModel.MANUAL||taskType==TaskModel.DEFAULT_MODEL) { setShowOrHideCleanSystemState(OperateStateEnum.NO_STATUS, cleanSystemState) } else { setShowOrHideCleanSystemState(OperateStateEnum.SUCCESS_STATUS, cleanSystemState) diff --git a/OCH/sweeper/sweeper-cloud/src/main/res/layout/dialog_sweeper_cloud_view.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/dialog_sweeper_cloud_view.xml index 43c465f166..8050e1dc04 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/dialog_sweeper_cloud_view.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/dialog_sweeper_cloud_view.xml @@ -4,31 +4,32 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="@dimen/dp_800" android:layout_height="@dimen/dp_560" + android:layout_gravity="center" android:background="@drawable/bg_shape_dialog_cloud_view" - app:roundLayoutRadius="@dimen/dp_45" - android:layout_gravity="center"> + app:roundLayoutRadius="@dimen/dp_45"> + + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + tools:text="15" /> + app:layout_constraintTop_toTopOf="parent" + tools:text="任务领取" /> - - + + + + + + + + android:textSize="@dimen/dp_50" + tools:text="下一个" /> + android:textSize="@dimen/dp_50" + tools:text="拒绝" /> \ No newline at end of file diff --git a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml index d9833a54ed..9516c3597b 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_base_fragment.xml @@ -85,36 +85,37 @@ android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginLeft="@dimen/dp_13" + android:layout_marginTop="-20dp" app:layout_constraintBottom_toTopOf="@+id/sweeper_switch_model_icon" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toBottomOf="@id/sweeper_arc" - app:layout_goneMarginTop="@dimen/module_mogo_och_station_panel_container_margin_top_no_call" - android:layout_marginTop="-20dp"/> + app:layout_goneMarginTop="@dimen/module_mogo_och_station_panel_container_margin_top_no_call" /> + android:layout_marginEnd="@dimen/dp_36" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:roundLayoutRadius="@dimen/dp_16"> + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + app:layout_constraintTop_toBottomOf="@+id/sweeper_video_view" /> - - - - - - - -