[sweeper-cloud]大任务正常结束逻辑处理以及大任务各种结束状态模拟处理
This commit is contained in:
@@ -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?)
|
||||
|
||||
/**
|
||||
|
||||
@@ -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<V extends IView, P extends Presente
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前子任务终点
|
||||
* 设置当前任务终点
|
||||
*
|
||||
* @param subTaskCoordinate
|
||||
*/
|
||||
@@ -517,7 +514,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
* 模拟云端发送大任务状态
|
||||
*/
|
||||
public void mockSendCloudBigTaskStatus() {
|
||||
|
||||
SweeperCloudTaskUtils.mockSendCloudBigTaskStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,11 +12,14 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
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.database.MyDataBase
|
||||
import com.mogo.och.sweepercloud.presenter.SweeperPresenter
|
||||
import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog
|
||||
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.createSweeperTaskEndDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskNormalEndDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.printMessage
|
||||
import com.mogo.och.sweepercloud.view.SweeperCurrentTaskInfoView
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask
|
||||
@@ -24,6 +27,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.SweeperTask.SubTaskInfo
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.big.SweeperBigTaskStatus
|
||||
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.*
|
||||
@@ -144,15 +148,12 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 设置当前子任务终点
|
||||
*/
|
||||
private fun setEndStationMarker() {
|
||||
private fun setEndStationMarker(position: Int) {
|
||||
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)
|
||||
}
|
||||
val endPoint = subList[position].endLocation
|
||||
val endLatLng = LatLng(endPoint.latitude, endPoint.longitude)
|
||||
super.mCurrentTaskEndStation = endLatLng
|
||||
setCurrentTaskEndMarker(endLatLng)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,8 +164,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
this.mTaskInfo = taskInfo
|
||||
this.mSubMutableList = taskInfo?.subListList
|
||||
CallerLogger.d(SceneConstant.M_SWEEPER + TAG, taskInfo?.let { printMessage(it) })
|
||||
if (taskInfo == null) {
|
||||
setShowCurrentTaskPanelView(false)
|
||||
if (taskInfo == null || this.mSubMutableList == null) {
|
||||
resetTaskInfoPanel()
|
||||
return
|
||||
}
|
||||
//主动拉取云端正在执行的任务,有则直接在任务列表展示
|
||||
@@ -173,9 +174,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
setShowCurrentTaskPanelView(true)
|
||||
addTaskData()
|
||||
} else {//云端下发的任务信息需要弹窗接取
|
||||
setShowCurrentTaskPanelView(true)
|
||||
getCurrentView().setData(taskInfo)
|
||||
receivedTaskInfoDialog()
|
||||
//设置任务进度
|
||||
this.mSubMutableList?.let {
|
||||
setTaskProgress("0/${it.size}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,7 +200,14 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
if (subTaskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
||||
mCurrentSubTaskInfo = subBuilder.build()
|
||||
//更新当前正在执行的任务状态
|
||||
updateCurrentSubTaskInfo()
|
||||
updateCurrentSubTaskInfo(index)
|
||||
} else {
|
||||
mCurrentSubTaskInfo = null
|
||||
}
|
||||
//判断是否结束子任务
|
||||
if (subTaskStatus == SweeperCommon.TaskStatus.FINISHED) {
|
||||
//已完成的计入任务进度,未完成的不计入
|
||||
ToastUtils.showLong("任务完成")
|
||||
}
|
||||
val builder = it.toBuilder()
|
||||
builder.setSubList(index, subBuilder.build())
|
||||
@@ -206,7 +216,6 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
getCurrentView().setData(mTaskInfo, index)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -222,35 +231,114 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
return
|
||||
}
|
||||
val timeout: String = getTimeSpent(it.taskEndTime)
|
||||
val dialog = createSweeperTaskEndDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.MANUAL_CONFIRM)
|
||||
mLoadingDialog.showLoading()
|
||||
ToastUtils.showLong("确认")
|
||||
}
|
||||
var dialog: SweeperCloudDialog?
|
||||
if (stopTaskType == SweeperTaskStop.StopTaskType.NORMAL) {
|
||||
dialog = sweeperCloudTaskNormalEndDialog(true)
|
||||
} else {
|
||||
dialog = createSweeperTaskEndDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.MANUAL_CONFIRM)
|
||||
mLoadingDialog.showLoading()
|
||||
ToastUtils.showLong("确认")
|
||||
}
|
||||
|
||||
override fun onRefuseOrEnd() {
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.MANUAL_REFUSE)
|
||||
mLoadingDialog.showLoading()
|
||||
ToastUtils.showLong("拒绝")
|
||||
}
|
||||
override fun onRefuseOrEnd() {
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.MANUAL_REFUSE)
|
||||
mLoadingDialog.showLoading()
|
||||
ToastUtils.showLong("拒绝")
|
||||
}
|
||||
|
||||
override fun onCountDownStop() {
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.OVER_TIME)
|
||||
mLoadingDialog.showLoading()
|
||||
ToastUtils.showLong("倒计时")
|
||||
}
|
||||
override fun onCountDownStop() {
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.OVER_TIME)
|
||||
mLoadingDialog.showLoading()
|
||||
ToastUtils.showLong("倒计时")
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
}
|
||||
override fun onNext() {
|
||||
}
|
||||
|
||||
}, stopTaskType, timeout)
|
||||
}, stopTaskType, timeout)
|
||||
}
|
||||
dialog?.show()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 大任务/子任务正常结束弹窗
|
||||
*/
|
||||
private fun sweeperCloudTaskNormalEndDialog(isBigTaskEnd: Boolean): SweeperCloudDialog? {
|
||||
return createSweeperTaskNormalEndDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
if (isBigTaskEnd) {
|
||||
resetTaskInfoPanel()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRefuseOrEnd() {
|
||||
|
||||
}
|
||||
|
||||
override fun onCountDownStop() {
|
||||
if (isBigTaskEnd) {
|
||||
resetTaskInfoPanel()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 云端同步大任务状态
|
||||
*/
|
||||
fun onSweeperCloudBigTaskStatus(taskId: String, subTaskStatus: SweeperBigTaskStatus.BigTaskStatus) {
|
||||
//隐藏loading
|
||||
mLoadingDialog.hideLoading()
|
||||
mTaskInfo?.let {
|
||||
//如果云端要更新的任务和本地缓存任务不是同一个,在无法进行任务列表状态更新
|
||||
if (it.taskId != taskId) {
|
||||
return
|
||||
}
|
||||
//大任务正常结束
|
||||
if (subTaskStatus == SweeperBigTaskStatus.BigTaskStatus.FINISHED) {
|
||||
val dialog = sweeperCloudTaskNormalEndDialog(true)
|
||||
dialog?.show()
|
||||
return
|
||||
}
|
||||
//大任务处于取消状态 异常状态pad端都显示无任务列表
|
||||
if (subTaskStatus == SweeperBigTaskStatus.BigTaskStatus.CANCLE || subTaskStatus == SweeperBigTaskStatus.BigTaskStatus.ABNORMAL) {
|
||||
resetTaskInfoPanel()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置任务面板为无数据状态
|
||||
*/
|
||||
private fun resetTaskInfoPanel() {
|
||||
setShowCurrentTaskPanelView(false)
|
||||
mTaskInfo = null
|
||||
mCurrentSubTaskInfo = null
|
||||
mSubMutableList = null
|
||||
mSubTaskType = TaskModel.DEFAULT_MODEL
|
||||
setTaskProgress("0")
|
||||
//清除任务缓存数据
|
||||
mPresenter?.clearRouteList()
|
||||
//清除任务地图绘制标记和作业路线
|
||||
clearAllMarkerAndPolyline()
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
//清除贴边数据缓存
|
||||
MyDataBase.getInstance().weltDataDao.deleteAllWeltData()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 获取当前正在执行的子任务在列表中的位置
|
||||
*/
|
||||
private fun getCurrentPosition(): Int {
|
||||
@@ -259,7 +347,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
for (index in 0 until size) {
|
||||
if (get(index).taskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
||||
mCurrentSubTaskInfo = get(index)
|
||||
updateCurrentSubTaskInfo()
|
||||
updateCurrentSubTaskInfo(index)
|
||||
return index
|
||||
}
|
||||
}
|
||||
@@ -285,11 +373,15 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 更新当前子任务信息
|
||||
*/
|
||||
private fun updateCurrentSubTaskInfo() {
|
||||
private fun updateCurrentSubTaskInfo(position: Int) {
|
||||
mCurrentSubTaskInfo?.let {
|
||||
mSubTaskType = it.taskModel
|
||||
mPresenter?.setSubtask(it.subTaskId, it.taskModel, it.lineId)
|
||||
setEndStationMarker()
|
||||
setEndStationMarker(position)
|
||||
//设置任务进度
|
||||
this.mSubMutableList?.apply {
|
||||
setTaskProgress("${position}/${size}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,6 +443,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
override fun onConfirm() {
|
||||
ToastUtils.showLong("确认")
|
||||
mPresenter?.sendSweeperStartTaskResp(it.taskId, SweeperTask.StartTaskCode.MANUAL_CONFIRM)
|
||||
setShowCurrentTaskPanelView(true)
|
||||
getCurrentView().setData(it)
|
||||
mLoadingDialog.showLoading()
|
||||
addTaskData()
|
||||
}
|
||||
@@ -379,6 +473,9 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算任务超时时间
|
||||
*/
|
||||
private fun getTimeSpent(taskEndTime: Long): String {
|
||||
|
||||
val timeLag: Long = System.currentTimeMillis() - taskEndTime
|
||||
|
||||
@@ -129,10 +129,13 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
|
||||
//添加清扫车云控任务回调监听
|
||||
CallerSweeperFutianCloudTaskListenerManager.INSTANCE.addListener(TAG, this);
|
||||
|
||||
//自动驾驶状态监听
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this);
|
||||
|
||||
//清扫车模式和贴边数据回调监听
|
||||
CallerSweeperFutianCleanSystemListenerManager.INSTANCE.addListener(TAG, this);
|
||||
|
||||
//2022.1.28
|
||||
// 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃
|
||||
// The exception could not be delivered to the consumer because it has already canceled/disposed
|
||||
@@ -295,7 +298,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTask(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime,
|
||||
public void onSweeperFutianCloudTask(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTask.TaskInfo taskInfo) {
|
||||
if (taskInfo != null) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG,
|
||||
@@ -308,41 +311,41 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskConfirm(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime,
|
||||
@NonNull SweeperTaskConfirm.TaskConfirm taskConfirm) {
|
||||
public void onSweeperFutianCloudTaskConfirm(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskConfirm.TaskConfirm taskConfirm) {
|
||||
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianCloudTaskConfirm:" + printMessage(taskConfirm));
|
||||
if (mSweeperTaskCallback != null) {
|
||||
if (mSweeperTaskCallback != null&&taskConfirm!=null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskConfirm(taskConfirm.getTaskId(), taskConfirm.getSubTaskId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskStatus(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime,
|
||||
@NonNull SweeperTaskStatus.TaskStatusPush taskStatusPush) {
|
||||
public void onSweeperFutianCloudTaskStatus(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskStatus.TaskStatusPush taskStatusPush) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianCloudTaskStatus:" + printMessage(taskStatusPush));
|
||||
if (mSweeperTaskCallback != null) {
|
||||
if (mSweeperTaskCallback != null&&taskStatusPush!=null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskStatus(taskStatusPush.getTaskId(), taskStatusPush.getSubTaskId(), taskStatusPush.getTaskStatus());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskStop(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime,
|
||||
@NonNull SweeperTaskStop.StopTaskReq stopTaskReq) {
|
||||
public void onSweeperFutianCloudTaskStop(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperTaskStop.StopTaskReq stopTaskReq) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianCloudTaskStop:" + printMessage(stopTaskReq));
|
||||
if (mSweeperTaskCallback != null) {
|
||||
if (mSweeperTaskCallback != null&&stopTaskReq!=null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskStop(stopTaskReq.getTaskId(), stopTaskReq.getType());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime,
|
||||
@NonNull SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp) {
|
||||
public void onSweeperFutianCloudTaskSuspendResume(@NonNull SweeperCloudTask.MessageType messageType,String reqNo, long sysTime,
|
||||
SweeperTaskSuspendResume.SuspendResumeTaskResp suspendResumeTaskResp) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianCloudTaskSuspendResume:" + printMessage(suspendResumeTaskResp));
|
||||
if (mSweeperTaskCallback != null) {
|
||||
if (mSweeperTaskCallback != null&&suspendResumeTaskResp!=null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskSuspendResume(messageType, suspendResumeTaskResp.getTaskId(),
|
||||
suspendResumeTaskResp.getSubTaskId(), suspendResumeTaskResp.getCode());
|
||||
@@ -350,20 +353,20 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudBootable(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime,
|
||||
@NonNull SweeperBootable.IsBootableResp isBootableResp) {
|
||||
public void onSweeperFutianCloudBootable(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperBootable.IsBootableResp isBootableResp) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianCloudBootable:" + printMessage(isBootableResp));
|
||||
if (mSweeperTaskCallback != null) {
|
||||
if (mSweeperTaskCallback != null&&isBootableResp!=null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudBootable(isBootableResp.getTaskId(), isBootableResp.getSubTaskId(), isBootableResp.getCode());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudBigTaskStatus(@NonNull SweeperCloudTask.MessageType messageType, @NonNull String reqNo, long sysTime,
|
||||
@NonNull SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush) {
|
||||
public void onSweeperFutianCloudBigTaskStatus(@NonNull SweeperCloudTask.MessageType messageType, String reqNo, long sysTime,
|
||||
SweeperBigTaskStatus.BigTaskStatusPush bigTaskStatusPush) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onSweeperFutianCloudBigTaskStatus:" + printMessage(bigTaskStatusPush));
|
||||
if (mSweeperTaskCallback != null) {
|
||||
if (mSweeperTaskCallback != null&&bigTaskStatusPush!=null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudBigTaskStatus(bigTaskStatusPush.getTaskId(), bigTaskStatusPush.getTaskStatus());
|
||||
}
|
||||
|
||||
@@ -174,29 +174,29 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
@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
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -280,7 +280,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 设置当前大任务的所有子任务起终点集合
|
||||
* 设置当前任务终点
|
||||
*/
|
||||
fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) {
|
||||
ThreadUtils.runOnUiThread {
|
||||
|
||||
@@ -203,11 +203,13 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
|
||||
* 设置当前大任务的所有子任务起终点集合
|
||||
*/
|
||||
fun setTaskListCoordinatesLatLng(coordinatesLatLng: MutableList<LatLng>) {
|
||||
this.mTaskCoordinatesLatLng = coordinatesLatLng
|
||||
ThreadUtils.runOnUiThread {
|
||||
this.mTaskCoordinatesLatLng = coordinatesLatLng
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前子任务的终点
|
||||
* 设置当前任务的终点
|
||||
*/
|
||||
fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) {
|
||||
endStationMarker?.remove()
|
||||
|
||||
Reference in New Issue
Block a user