From 55238dd0ed8645cfe03d775beccc0990c945ed7f Mon Sep 17 00:00:00 2001 From: bxb Date: Fri, 5 May 2023 17:19:17 +0800 Subject: [PATCH] =?UTF-8?q?[sweeper-cloud]=20=E6=8E=A5=E5=8F=96=E4=BA=91?= =?UTF-8?q?=E6=8E=A7=E4=BB=BB=E5=8A=A1=E7=A1=AE=E8=AE=A4=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=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 --- .../callback/ISweeperCloudTaskCallback.kt | 6 +- .../database/bean/WeltDataBean.java | 8 +- .../fragment/BaseSweeperTabFragment.java | 27 +--- .../sweepercloud/fragment/SweeperFragment.kt | 146 ++++++++++++++---- .../sweepercloud/model/SweeperTaskModel.java | 125 ++++++--------- .../presenter/SweeperPresenter.java | 13 +- .../ui/dialog/SweeperCloudDialog.kt | 7 +- .../util/SweeperCloudTaskMockUtils.kt | 58 +++++-- .../mogo/och/sweepercloud/view/SubTaskView.kt | 7 +- .../view/SweeperCurrentTaskInfoView.kt | 53 ++++--- .../och/sweepercloud/view/WeltSmallMapView.kt | 46 +----- .../res/layout/dialog_sweeper_cloud_view.xml | 28 ++-- .../main/res/layout/fragment_och_sweeper.xml | 2 +- .../res/layout/sweeper_current_task_info.xml | 7 +- .../layout/sweeper_no_data_common_view.xml | 2 +- .../main/res/layout/sweeper_subtask_view.xml | 4 +- 16 files changed, 283 insertions(+), 256 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 e8e16da350..ea5af72a84 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 @@ -16,8 +16,11 @@ import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskType */ interface ISweeperCloudTaskCallback { - fun onSweeperCloudTask(messageType: SweeperCloudTask.MessageType,taskInfo: SweeperTask.TaskInfo) + fun onSweeperCloudTask(messageType: SweeperCloudTask.MessageType,taskInfo: SweeperTask.TaskInfo?) + /** + * 云端下发子任务请求pad确认 + */ fun onSweeperCloudTaskConfirm(taskId:String,subTaskId:String) fun onSweeperCloudTaskStatus(taskId:String,subTaskId:String,subTaskStatus: SweeperCommon.TaskStatus) @@ -43,4 +46,5 @@ interface ISweeperCloudTaskCallback { */ fun onSweeperFutianCleanSystemState(cleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates) + } \ No newline at end of file diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/database/bean/WeltDataBean.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/database/bean/WeltDataBean.java index 42fad0c8f9..f6a3be84ee 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/database/bean/WeltDataBean.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/database/bean/WeltDataBean.java @@ -19,9 +19,9 @@ public class WeltDataBean implements Serializable { private int id; - @ColumnInfo(name = "subTaskId", typeAffinity = ColumnInfo.INTEGER)//子任务id + @ColumnInfo(name = "subTaskId", typeAffinity = ColumnInfo.TEXT)//子任务id - private int subTaskId; + private String subTaskId; @ColumnInfo(name = "locLon", typeAffinity = ColumnInfo.REAL) @@ -55,11 +55,11 @@ public class WeltDataBean implements Serializable { this.id = id; } - public int getSubTaskId() { + public String getSubTaskId() { return subTaskId; } - public void setSubTaskId(int subTaskId) { + public void setSubTaskId(String subTaskId) { this.subTaskId = subTaskId; } 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 c7ba240d52..0618243ebd 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 @@ -437,6 +437,10 @@ public abstract class BaseSweeperTabFragment routeList) { mRouteList = routeList; - ThreadUtils.getSinglePool().execute(new Runnable() { - @Override - public void run() { - mMapWeltView.setRouteList(routeList); - if (mTaskDataToFragmentCallback != null) { - mTaskDataToFragmentCallback.setRouteList(routeList); - } + ThreadUtils.getSinglePool().execute(() -> { + mMapWeltView.setRouteList(routeList); + if (mTaskDataToFragmentCallback != null) { + mTaskDataToFragmentCallback.setRouteList(routeList); } }); } 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 f9c514b39f..917c515e02 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 @@ -15,8 +15,10 @@ import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog import com.mogo.och.sweepercloud.util.SweeperCloudTaskMockUtils.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 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.confirm.SweeperTaskConfirm import kotlinx.android.synthetic.main.fragment_och_sweeper.* import kotlinx.android.synthetic.main.sweeper_no_data_common_view.* import kotlinx.coroutines.Dispatchers @@ -31,7 +33,6 @@ class SweeperFragment : BaseSweeperTabFragment? = null private var mCleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates? = null private var mLocation: MogoLocation? = null @@ -67,12 +68,13 @@ class SweeperFragment : BaseSweeperTabFragment if (subList.size <= 0) { @@ -135,7 +131,6 @@ class SweeperFragment : BaseSweeperTabFragment) { - val endPoint = subList[mCurrentSubPosition].endLocation - val endLatLng = LatLng(endPoint.latitude, endPoint.longitude) - super.mCurrentTaskEndStation = endLatLng - setCurrentTaskEndMarker(endLatLng) + private fun setEndStationMarker() { + mSubMutableList?.let { subList -> + val position = getCurrentPosition() + if (position != -1) { + val endPoint = subList[position].endLocation + val endLatLng = LatLng(endPoint.latitude, endPoint.longitude) + super.mCurrentTaskEndStation = endLatLng + setCurrentTaskEndMarker(endLatLng) + } + } } /** * 设置云端任务信息 */ - fun onSweeperCloudTask(messageType: SweeperCloudTask.MessageType, taskInfo: SweeperTask.TaskInfo) { + fun onSweeperCloudTask(messageType: SweeperCloudTask.MessageType, taskInfo: SweeperTask.TaskInfo?) { this.mTaskInfo = taskInfo - setShowCurrentTaskPanelView(true) + this.mSubMutableList = taskInfo?.subListList if (messageType == SweeperCloudTask.MessageType.PadSendGetTaskReq) {//主动拉取云端正在执行的任务,则直接在任务列表展示 - getCurrentView().setData(taskInfo, mCurrentSubPosition) + if (taskInfo == null) { + setShowCurrentTaskPanelView(false) + } else { + getCurrentView().setData(taskInfo, getCurrentPosition()) + setShowCurrentTaskPanelView(true) + } } else {//云端下发的任务信息需要弹窗接取 + setShowCurrentTaskPanelView(true) + getCurrentView().setData(taskInfo) receivedTaskInfoDialog() } } //模拟结束子任务 override fun debugEndSubTask() { - super.debugEndSubTask() - mPresenter?.getCurrentTask() - //sendCloudTaskInfo(SweeperCloudTask.MessageType.CloudPushTask) + //super.debugEndSubTask() + // TODO: 模拟云控获取任务 + //mPresenter?.getCurrentTask() + sendCloudTaskInfo(SweeperCloudTask.MessageType.CloudPushTask) + } + + /** + * 获取当前正在执行的子任务在列表中的位置 + */ + private fun getCurrentPosition(): Int { + mSubMutableList = mTaskInfo?.subListList + mSubMutableList?.apply { + for (index in 0 until size) { + if (get(index).taskStatus == SweeperCommon.TaskStatus.RUNNING) { + mSubTaskType = get(index).taskModel.number + mPresenter?.setSubtask(get(index).subTaskId, get(index).taskModel.number, get(index).lineId) + return index + } + } + } + return -1 + } + + /** + * 根据子任务id获取子任务信息 + */ + private fun bySubTaskIdFindSubTaskInfo(subTaskId: String): SubTaskInfo? { + mSubMutableList = mTaskInfo?.subListList + mSubMutableList?.apply { + for (index in 0 until size) { + if (get(index).subTaskId == subTaskId) { + mSubTaskType = get(index).taskModel.number + mPresenter?.setSubtask(get(index).subTaskId, get(index).taskModel.number, get(index).lineId) + return get(index) + } + } + } + return null } /** @@ -179,11 +221,55 @@ class SweeperFragment : BaseSweeperTabFragment builder.build(it1) } + dialog?.show() + } + } + /** * 接取云端任务弹窗 */ private fun receivedTaskInfoDialog() { mTaskInfo?.apply { + mPresenter?.sendSweeperStartTaskResp(taskId, SweeperTask.StartTaskCode.RECEIVED) var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() val startCalendar = DateTimeUtil.formatLongToCalendar(taskStartTime) val endCalendar = DateTimeUtil.formatLongToCalendar(taskEndTime) @@ -202,17 +288,19 @@ class SweeperFragment : BaseSweeperTabFragment /** * 设置当前子任务信息 */ - public void setSubtask(int subTaskId, int subTaskType, int currentLineId) { + public void setSubtask(String subTaskId, int subTaskType, int currentLineId) { SweeperTaskModel.getInstance().setSubtask(subTaskId, subTaskType, currentLineId); } @@ -167,18 +167,17 @@ public class SweeperPresenter extends Presenter } @Override - public void onSweeperCloudTask(@NonNull SweeperCloudTask.MessageType messageType, @NonNull SweeperTask.TaskInfo taskInfo) { - 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)); } @Override public void onSweeperCloudTaskStatus(@NonNull String taskId, @NonNull String subTaskId, @NonNull SweeperCommon.TaskStatus subTaskStatus) { - } @Override @@ -204,11 +203,11 @@ public class SweeperPresenter extends Presenter @Override public void setWeltDataToMap(@NonNull ArrayList weltDataBeans, boolean isWeltData, @NonNull String distance) { - mView.setWeltDataToMap(weltDataBeans, isWeltData, distance); + ThreadUtils.runOnUiThread(()-> mView.setWeltDataToMap(weltDataBeans, isWeltData, distance)); } @Override public void onSweeperFutianCleanSystemState(@NonNull ChassisStatesOuterClass.SweeperFuTianTaskSystemStates cleanSystemState) { - mView.onSweeperFutianCleanSystemState(cleanSystemState); + ThreadUtils.runOnUiThread(()-> mView.onSweeperFutianCleanSystemState(cleanSystemState)); } } 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 1eea4fa029..6398096db8 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 @@ -3,7 +3,6 @@ package com.mogo.och.sweepercloud.ui.dialog import android.animation.ObjectAnimator import android.animation.ValueAnimator import android.content.Context -import android.text.Html import android.view.View import android.view.animation.LinearInterpolator import android.widget.ImageView @@ -29,7 +28,7 @@ class SweeperCloudDialog : BaseFloatDialog, LifecycleObserver { constructor(builder: Builder, context: Context) : super(context) { commonTitle?.text = builder.titleStr - commonContent?.text = Html.fromHtml(builder.contentStr) + commonContent?.text = builder.contentStr if (builder.tipStr == "") { commonTip?.visibility = View.GONE } else { @@ -68,7 +67,7 @@ class SweeperCloudDialog : BaseFloatDialog, LifecycleObserver { dismiss() } commonRight?.setOnClickListener { - builder.listener?.onRefuse() + builder.listener?.onRefuseOrEnd() objectAnimator?.cancel() commonCountDown?.stopCountDown() dismiss() @@ -100,7 +99,7 @@ class SweeperCloudDialog : BaseFloatDialog, LifecycleObserver { interface SweeperCloudClickListener { fun onConfirm() - fun onRefuse() + fun onRefuseOrEnd() fun onCountDownStop() fun onNext() } 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/SweeperCloudTaskMockUtils.kt index 492b4420b3..37b10a94e8 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/SweeperCloudTaskMockUtils.kt @@ -1,6 +1,9 @@ package com.mogo.och.sweepercloud.util +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.sweepercloud.model.SweeperTaskModel import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask.MessageType import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon @@ -8,6 +11,7 @@ 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.confirm.SweeperTaskConfirm.TaskConfirm object SweeperCloudTaskMockUtils { /** @@ -24,42 +28,42 @@ object SweeperCloudTaskMockUtils { builder.taskEndTime = 1682750562000 //第一个子任务 val subBuilder0 = SubTaskInfo.newBuilder() - subBuilder0.subTaskId = "0" + subBuilder0.subTaskId = "1" subBuilder0.subTaskName = "自动驾驶子任务0" subBuilder0.taskModel = TaskModel.AUTO - subBuilder0.taskStatus = SweeperCommon.TaskStatus.TO_START + subBuilder0.taskStatus = SweeperCommon.TaskStatus.FINISHED val startLocation0 = Location.newBuilder() - startLocation0.siteName = "子任务起点0" + startLocation0.siteName = "自动驾驶子任务起点0" startLocation0.wgsLongitude = 121.6421189511 startLocation0.wgsLatitude = 37.4767125311 - startLocation0.longitude = 121.64693997741931 + startLocation0.longitude = 121.64693997741931 startLocation0.latitude = 37.47740504453125 subBuilder0.startLocation = startLocation0.build() val endLocation0 = Location.newBuilder() - endLocation0.siteName = "子任务终点0" + endLocation0.siteName = "自动驾驶子任务终点0" endLocation0.wgsLongitude = 121.6392313 endLocation0.wgsLatitude = 37.4726471 endLocation0.longitude = 121.64404710861349 endLocation0.latitude = 37.47333410433059 - subBuilder0.startLocation = endLocation0.build() + subBuilder0.endLocation = endLocation0.build() subBuilder0.lineId = 123 subBuilder0.lineName = "测试路线0" builder.addSubList(subBuilder0.build()) //第二个子任务 val subBuilder1 = SubTaskInfo.newBuilder() - subBuilder1.subTaskId = "1" + subBuilder1.subTaskId = "2" subBuilder1.subTaskName = "自动驾驶子任务1" subBuilder1.taskModel = TaskModel.AUTO subBuilder1.taskStatus = SweeperCommon.TaskStatus.TO_START val startLocation1 = Location.newBuilder() - startLocation1.siteName = "测试子任务站点1" + startLocation1.siteName = "自动驾驶子任务起点1" startLocation1.wgsLongitude = 121.6421189511 startLocation1.wgsLatitude = 37.47264711 startLocation1.longitude = 121.6469395478903 startLocation1.latitude = 37.47333856025812 - subBuilder1.startLocation=startLocation1.build() + subBuilder1.startLocation = startLocation1.build() val endLocation1 = Location.newBuilder() - endLocation1.siteName = "测试子任务站点1" + endLocation1.siteName = "自动驾驶子任务终点1" endLocation1.wgsLongitude = 121.4261245286646 endLocation1.wgsLatitude = 37.52885874483938 endLocation1.longitude = 121.43138115208806 @@ -68,22 +72,22 @@ object SweeperCloudTaskMockUtils { builder.addSubList(subBuilder1.build()) //第三个子任务 val subBuilder2 = SubTaskInfo.newBuilder() - subBuilder2.subTaskId = "1" + subBuilder2.subTaskId = "3" subBuilder2.subTaskName = "人工驾驶子任务路线2" subBuilder2.taskModel = TaskModel.MANUAL subBuilder2.taskStatus = SweeperCommon.TaskStatus.TO_START val startLocation2 = Location.newBuilder() - startLocation2.siteName = "人工驾驶子任务站点2" + startLocation2.siteName = "人工驾驶子任务起点2" startLocation2.wgsLongitude = 121.31344761929978 startLocation2.wgsLatitude = 37.53205755535642 startLocation2.longitude = 121.3185679517558 startLocation2.latitude = 37.5329694887952 - subBuilder2.startLocation=startLocation2.build() + subBuilder2.startLocation = startLocation2.build() val endLocation2 = Location.newBuilder() - endLocation2.siteName = "人工驾驶子任务站点2" + endLocation2.siteName = "人工驾驶子任务终点2" endLocation2.wgsLongitude = 121.4551205070834 - endLocation2.wgsLatitude =37.47936696980237 - endLocation2.longitude =121.46030960742117 + endLocation2.wgsLatitude = 37.47936696980237 + endLocation2.longitude = 121.46030960742117 endLocation2.latitude = 37.48032689641474 subBuilder2.endLocation = endLocation2.build() builder.addSubList(subBuilder2.build()) @@ -95,7 +99,29 @@ object SweeperCloudTaskMockUtils { ) } + /** + * 模拟云控发送子任务开始确认信息 + */ + @JvmStatic + fun sendCloudSubTaskConfirm() { + val builder = TaskConfirm.newBuilder() + builder.sn = getDriverSn() + builder.taskId = "10" + builder.subTaskId = "1" + ThreadUtils.runOnUiThreadDelayed({ + SweeperTaskModel.getInstance().onSweeperFutianCloudTaskConfirm( + MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}", + System.currentTimeMillis(), builder.build() + ) + }, 10000) + } + fun getDriverSn(): String? { return MoGoAiCloudClientConfig.getInstance().sn } + + @JvmStatic + fun printMessage(message: MessageOrBuilder): String { + return TextFormat.printer().escapingNonAscii(false).printToString(message) + } } \ No newline at end of file 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 fd39fe7705..79077550eb 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 @@ -7,6 +7,7 @@ import android.view.LayoutInflater import android.view.View 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 kotlinx.android.synthetic.main.sweeper_subtask_view.view.* @@ -28,15 +29,15 @@ class SubTaskView : ConstraintLayout { /** * 设置子任务信息 */ - fun setData(taskInfo: SubTaskInfo, isSelect: Boolean = false, isLastTask: Boolean = false) { + fun setData(taskInfo: SubTaskInfo, isLastTask: Boolean = false) { tvSubTaskName.text = taskInfo.subTaskName - tvSubTaskName.setTextColor(if (isSelect) Color.parseColor("#3BD2FF") else Color.parseColor("#FFFFFF")) + tvSubTaskName.setTextColor(if (taskInfo.taskStatus==SweeperCommon.TaskStatus.RUNNING) Color.parseColor("#3BD2FF") else Color.parseColor("#FFFFFF")) if (taskInfo.taskModel.number == 1) {//人工驾驶子任务 ivManualDriving.visibility = View.VISIBLE } else { ivManualDriving.visibility = View.GONE } - if (isSelect) { + if (taskInfo.taskStatus==SweeperCommon.TaskStatus.RUNNING) { ivSubTask.setImageResource(R.drawable.sweeper_icon_select_subtask) } else { ivSubTask.setImageResource(R.drawable.sweeper_icon_not_select_subtask) diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperCurrentTaskInfoView.kt b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperCurrentTaskInfoView.kt index 371f83ffed..69104f5738 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperCurrentTaskInfoView.kt +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/view/SweeperCurrentTaskInfoView.kt @@ -7,6 +7,7 @@ import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.sweepercloud.R +import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon.TaskStatus import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.SubTaskInfo import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskInfo import kotlinx.android.synthetic.main.sweeper_current_task_info.view.* @@ -18,10 +19,7 @@ class SweeperCurrentTaskInfoView : ConstraintLayout { private val TAG: String = "SweeperCurrentTaskInfoView" //当前任务操作菜单 - private var mCurrentPosition = 0 private var listTask: List? = null - private var mSubTaskType: Int=0 - private var mSubTaskStatus: Int = 1 constructor(context: Context) : super(context) {} constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { @@ -41,9 +39,8 @@ class SweeperCurrentTaskInfoView : ConstraintLayout { */ fun setData( subTaskBean: TaskInfo?, - currentPosition: Int, + currentPosition:Int=-1 ) { - this.mCurrentPosition = currentPosition subTaskBean?.apply { this@SweeperCurrentTaskInfoView.listTask = subListList tvTaskName.text = taskName @@ -51,16 +48,22 @@ class SweeperCurrentTaskInfoView : ConstraintLayout { tvTaskTime.text = DateTimeUtil.formatCalendarToString(calendar, DateTimeUtil.HH_mm) } listTask?.let { - mSubTaskStatus = it[currentPosition].taskStatus.number - setSubTaskState(mSubTaskStatus == 1) + //特殊处理当前暂无执行中任务的情况 + var position=currentPosition + if (position==-1){ + position += 1 + setSubTaskState(false) + }else{ + setSubTaskState(it[position].taskStatus==TaskStatus.RUNNING) + } + setCurrentData(position) } - setCurrentData(currentPosition) } /** * 设置子任务的状态 */ - fun setSubTaskState(isWorking: Boolean) { + private fun setSubTaskState(isWorking: Boolean) { if (isWorking) { tvTaskState.text = "正在作业" tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_working) @@ -69,23 +72,23 @@ class SweeperCurrentTaskInfoView : ConstraintLayout { tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_not_ready) } } + /** * 填充数据 */ - fun setCurrentData(mCurrentPosition: Int) { + private fun setCurrentData(currentPosition:Int) { listTask?.let { - mSubTaskType = it[mCurrentPosition].taskModel.number if (it.size == 1) { - preSubTask.setData(it[mCurrentPosition], isSelect = true, isLastTask = true) + preSubTask.setData(it[currentPosition], isLastTask = true) currentSubTask.visibility = View.INVISIBLE lastSubTask.visibility = View.INVISIBLE } else if (it.size == 2) { - if (mCurrentPosition == 0) { - preSubTask.setData(it[mCurrentPosition], isSelect = true) + if (currentPosition == 0) { + preSubTask.setData(it[currentPosition]) currentSubTask.setData(it[1], isLastTask = true) } else { - preSubTask.setData(it[mCurrentPosition - 1]) - currentSubTask.setData(it[mCurrentPosition], isSelect = true, isLastTask = true) + preSubTask.setData(it[currentPosition - 1]) + currentSubTask.setData(it[currentPosition], isLastTask = true) } preSubTask.visibility = View.VISIBLE currentSubTask.visibility = View.VISIBLE @@ -95,19 +98,19 @@ class SweeperCurrentTaskInfoView : ConstraintLayout { currentSubTask.visibility = View.VISIBLE lastSubTask.visibility = View.VISIBLE //当前正在执行的任务是第一个子任务 - if (mCurrentPosition == 0) { - preSubTask.setData(it[mCurrentPosition], isSelect = true) + if (currentPosition == 0) { + preSubTask.setData(it[currentPosition]) currentSubTask.setData(it[1]) lastSubTask.setData(it[2], isLastTask = true) //当前正在执行的任务是最后一个子任务 - } else if (mCurrentPosition == it.size - 1) { - preSubTask.setData(it[mCurrentPosition - 2]) - currentSubTask.setData(it[mCurrentPosition - 1]) - lastSubTask.setData(it[mCurrentPosition], isSelect = true, isLastTask = true) + } else if (currentPosition == it.size - 1) { + preSubTask.setData(it[currentPosition - 2]) + currentSubTask.setData(it[currentPosition - 1]) + lastSubTask.setData(it[currentPosition], isLastTask = true) } else { - preSubTask.setData(it[mCurrentPosition - 1]) - currentSubTask.setData(it[mCurrentPosition], isSelect = true) - lastSubTask.setData(it[mCurrentPosition + 1], isLastTask = true) + preSubTask.setData(it[currentPosition - 1]) + currentSubTask.setData(it[currentPosition]) + lastSubTask.setData(it[currentPosition + 1], isLastTask = true) } } } 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 5c88ada8d6..9893dfd624 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 @@ -199,39 +199,15 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { return colorList } - /** - * 添加起点和终点的marker - */ - private fun addStartAndEndMarker(startPoint: LatLng, endPoint: LatLng) { -// for (i in mLineMarkers.indices) { -// mLineMarkers[i]?.isVisible = false -// mLineMarkers[i]?.remove() -// } -// mLineMarkers.clear() -// val startMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_small_start_marker_icon))) -// startMarker?.position = startPoint -// mLineMarkers.add(startMarker) -// val endMarker = mAMap?.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.sweeper_small_end_marker_icon))) -// endMarker?.position = endPoint -// mLineMarkers.add(endMarker) - } - /** * 设置当前大任务的所有子任务起终点集合 */ fun setTaskListCoordinatesLatLng(coordinatesLatLng: MutableList) { this.mTaskCoordinatesLatLng = coordinatesLatLng -// if (mTaskCoordinatesLatLng.size > 0) { -// d( -// SceneConstant.M_SWEEPER + TAG, -// "startPoint:${mTaskCoordinatesLatLng[0]} endPoint:${mTaskCoordinatesLatLng[mTaskCoordinatesLatLng.size - 1]}" -// ) -// addStartAndEndMarker(mTaskCoordinatesLatLng[0], mTaskCoordinatesLatLng[mTaskCoordinatesLatLng.size - 1]) -// } } /** - * 设置当前大任务的所有子任务起终点集合 + * 设置当前子任务的终点 */ fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) { endStationMarker?.remove() @@ -243,28 +219,12 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { * 清除所有标记和路线 */ fun clearAllMarkerAndPolyline() { -// for (i in mLineMarkers.indices) { -// mLineMarkers[i]?.isVisible = false -// mLineMarkers[i]?.remove() -// } endStationMarker?.remove() mWeltPolylines?.remove() -// mLineMarkers.clear() mRoutePolylines?.remove() - //mFirst = false - //showOrHiddenWelt(false) } fun getSwitchToBig(): ImageView = sweeperSwitchToBig - - /** - * 显示或隐藏贴边 - */ - private fun showOrHiddenWelt(isShow: Boolean) { - taskProgressTv.visibility = if (isShow) View.VISIBLE else View.GONE - taskWeltDistanceTv.visibility = if (isShow) View.VISIBLE else View.GONE - } - /** * 设置贴边数据 */ @@ -273,10 +233,6 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { ThreadUtils.runOnUiThread { setWeltDistance(distance) } - //if (!mFirst&&isWeltData) { - // showOrHiddenWelt(true) - // mFirst = true - //} } /** 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 5525e62f4f..43c465f166 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 @@ -9,8 +9,8 @@ android:layout_gravity="center"> + app:layout_constraintLeft_toLeftOf="@+id/sweeper_cloud_imageview" + app:layout_constraintTop_toTopOf="@+id/sweeper_cloud_imageview" + app:layout_constraintEnd_toEndOf="@+id/sweeper_cloud_imageview" + app:layout_constraintBottom_toBottomOf="@+id/sweeper_cloud_imageview"/> @@ -108,7 +108,7 @@ android:layout_weight="1" android:background="@drawable/bg_shape_right_bottom_round" android:gravity="center" - android:text="拒绝" + tools:text="拒绝" android:textColor="#FFFFFFFF" android:textSize="@dimen/dp_50" /> diff --git a/OCH/sweeper/sweeper-cloud/src/main/res/layout/fragment_och_sweeper.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/fragment_och_sweeper.xml index 029a6a6642..0c276dceb1 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/fragment_och_sweeper.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/fragment_och_sweeper.xml @@ -28,7 +28,7 @@ android:id="@+id/sweeper_current_task_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="visible" /> + android:visibility="gone" /> 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 0ce7f1c198..16ca97e9a4 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 @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" + xmlns:tools="http://schemas.android.com/tools" android:background="@drawable/bg_shape_task_panel"> + tools:text="惠新西街南口地铁站公交站" /> + tools:text="9:00" /> diff --git a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_no_data_common_view.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_no_data_common_view.xml index 7e35dd415c..44030efcc0 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_no_data_common_view.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_no_data_common_view.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bg_shape_task_panel" - android:visibility="gone"> + android:visibility="visible"> + xmlns:tools="http://schemas.android.com/tools">