[sweeper-cloud]大任务正常结束逻辑处理以及大任务各种结束状态模拟处理

This commit is contained in:
bxb
2023-05-13 19:18:55 +08:00
parent 122e0bf686
commit aff744f816
10 changed files with 235 additions and 94 deletions

View File

@@ -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?)
/**

View File

@@ -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();
}
/**

View File

@@ -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

View File

@@ -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());
}

View File

@@ -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

View File

@@ -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() {

View File

@@ -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()

View File

@@ -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)

View File

@@ -280,7 +280,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
}
}
/**
* 设置当前任务的所有子任务起终点集合
* 设置当前任务终点
*/
fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) {
ThreadUtils.runOnUiThread {

View File

@@ -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()