[sweeper-cloud]1.云端下发大任务信息(type: 100001)
2.云端下发子任务,请求pad确认 (type:100002)
3.云端请求pad结束任务 (type:100004) 数据解析及其逻辑修改
This commit is contained in:
@@ -25,7 +25,7 @@ interface ISweeperCloudTaskCallback {
|
||||
/**
|
||||
* 云端下发子任务请求pad确认
|
||||
*/
|
||||
fun onSweeperCloudTaskConfirm(taskId:String,subTaskId:String)
|
||||
fun onSweeperCloudTaskConfirm(taskId:String,subTaskId:String,isPop:Boolean)
|
||||
|
||||
/**
|
||||
* 云端下发子任务状态同步
|
||||
@@ -35,7 +35,7 @@ interface ISweeperCloudTaskCallback {
|
||||
/**
|
||||
* 云端下发结束大任务指令
|
||||
*/
|
||||
fun onSweeperCloudTaskStop(taskId:String,stopTaskType: StopTaskType)
|
||||
fun onSweeperCloudTaskStop(taskId:String,stopTaskType: StopTaskType,isPop:Boolean)
|
||||
|
||||
/**
|
||||
* 挂起/恢复
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.view.View
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import chassis.ChassisStatesOuterClass
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.elegant.utils.UiThreadHandler
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion.STATUS_AUTOPILOT_ENABLE
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
@@ -161,7 +162,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
private fun setEndStationMarker(position: Int) {
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
mSubMutableList?.let { subList ->
|
||||
val endPoint = subList[position-1].endLocation
|
||||
val endPoint = subList[position - 1].endLocation
|
||||
val endLatLng = LatLng(endPoint.latitude, endPoint.longitude)
|
||||
super.mCurrentTaskEndStation = endLatLng
|
||||
setCurrentTaskEndMarker(endLatLng)
|
||||
@@ -186,7 +187,13 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
setShowCurrentTaskPanelView(true)
|
||||
addTaskData()
|
||||
} else {//云端下发的任务信息需要弹窗接取
|
||||
receivedTaskInfoDialog()
|
||||
if (taskInfo.isPop) {//是否需要弹窗确认
|
||||
receivedTaskInfoDialog()
|
||||
} else {
|
||||
mPresenter?.sendSweeperStartTaskResp(taskInfo.taskId, SweeperTask.StartTaskCode.RECEIVED)
|
||||
//延时2秒再上报确认接取任务,防止时间太短跟收到任务指令冲突
|
||||
UiThreadHandler.postDelayed({ mPresenter?.sendSweeperStartTaskResp(taskInfo.taskId, SweeperTask.StartTaskCode.MANUAL_CONFIRM) }, 2000)
|
||||
}
|
||||
//设置任务进度
|
||||
this.mSubMutableList?.let {
|
||||
setTaskProgress("0/${it.size}")
|
||||
@@ -212,7 +219,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
if (subTaskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
||||
mCurrentSubTaskInfo = subBuilder.build()
|
||||
//更新当前正在执行的任务状态
|
||||
updateCurrentSubTaskInfo(index+1)
|
||||
updateCurrentSubTaskInfo(index + 1)
|
||||
} else {
|
||||
mCurrentSubTaskInfo = null
|
||||
}
|
||||
@@ -236,51 +243,62 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 云端请求结束大任务
|
||||
*/
|
||||
fun onSweeperCloudTaskStop(taskId: String, stopTaskType: SweeperTaskStop.StopTaskType) {
|
||||
mLoadingDialog.hideLoading()
|
||||
fun onSweeperCloudTaskStop(taskId: String, stopTaskType: SweeperTaskStop.StopTaskType, isPop: Boolean) {
|
||||
mTaskInfo?.let {
|
||||
//如果云端要更新的任务和本地缓存任务不是同一个,在无法结束任务
|
||||
if (taskId != it.taskId) {
|
||||
return
|
||||
}
|
||||
val timeout: String = getTimeSpent(it.taskEndTime)
|
||||
//数据重复导致连续弹窗
|
||||
if (mDialog != null && mDialog!!.isShowing) {
|
||||
return
|
||||
}
|
||||
if (stopTaskType == SweeperTaskStop.StopTaskType.NORMAL) {
|
||||
mDialog = sweeperCloudTaskNormalEndDialog()
|
||||
showNotice("任务已结束")
|
||||
if (isPop) {
|
||||
sweeperCloudTaskStopDialog(taskId, stopTaskType, it)
|
||||
} else {
|
||||
mDialog = 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 onCountDownStop() {
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.OVER_TIME)
|
||||
mLoadingDialog.showLoading()
|
||||
//ToastUtils.showLong("倒计时")
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
}
|
||||
|
||||
}, stopTaskType, timeout)
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.MANUAL_CONFIRM)
|
||||
}
|
||||
mDialog?.show()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束任务弹窗处理
|
||||
*/
|
||||
private fun sweeperCloudTaskStopDialog(taskId: String, stopTaskType: SweeperTaskStop.StopTaskType, taskInfo: SweeperTask.TaskInfo) {
|
||||
mLoadingDialog.hideLoading()
|
||||
val timeout: String = getTimeSpent(taskInfo.taskEndTime)
|
||||
//数据重复导致连续弹窗
|
||||
if (mDialog != null && mDialog!!.isShowing) {
|
||||
return
|
||||
}
|
||||
if (stopTaskType == SweeperTaskStop.StopTaskType.NORMAL) {
|
||||
mDialog = sweeperCloudTaskNormalEndDialog()
|
||||
showNotice("任务已结束")
|
||||
} else {
|
||||
mDialog = 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 onCountDownStop() {
|
||||
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.OVER_TIME)
|
||||
mLoadingDialog.showLoading()
|
||||
//ToastUtils.showLong("倒计时")
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
}
|
||||
|
||||
}, stopTaskType, timeout)
|
||||
}
|
||||
mDialog?.show()
|
||||
}
|
||||
|
||||
/**
|
||||
* 大任务/子任务正常结束弹窗
|
||||
*/
|
||||
@@ -380,7 +398,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
for (index in 0 until size) {
|
||||
if (get(index).taskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
||||
mCurrentSubTaskInfo = get(index)
|
||||
updateCurrentSubTaskInfo(index+1)
|
||||
updateCurrentSubTaskInfo(index + 1)
|
||||
return index
|
||||
}
|
||||
}
|
||||
@@ -427,50 +445,61 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
|
||||
private fun getCurrentView(): SweeperCurrentTaskInfoView = sweeper_current_task_view
|
||||
|
||||
/**
|
||||
* 云控下发子任务确认弹窗
|
||||
*/
|
||||
fun showSubTaskInfoDialog(taskId: String, subTaskId: String) {
|
||||
mLoadingDialog.hideLoading()
|
||||
|
||||
fun handleSubTaskInfoDialog(taskId: String, subTaskId: String, isPop: Boolean) {
|
||||
if (mTaskInfo == null) return
|
||||
if (mTaskInfo?.taskId != taskId) return
|
||||
val subInfo = bySubTaskIdFindSubTaskInfo(subTaskId)
|
||||
subInfo?.let {
|
||||
//数据重复导致连续弹窗
|
||||
if (mDialog != null && mDialog!!.isShowing) {
|
||||
return
|
||||
if (isPop) {
|
||||
showSubTaskInfoDialog(taskId, subTaskId, it)
|
||||
} else {
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_CONFIRM)
|
||||
}
|
||||
mDialog = createConfirmStartSubTaskDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
//ToastUtils.showLong("确认")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_CONFIRM)
|
||||
mLoadingDialog.showLoading()
|
||||
}
|
||||
|
||||
override fun onRefuseOrEnd() {
|
||||
//ToastUtils.showLong("结束")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_REFUSE_ALL)
|
||||
mLoadingDialog.showLoading()
|
||||
}
|
||||
|
||||
override fun onCountDownStop() {
|
||||
//ToastUtils.showLong("倒计时结束")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.OVER_TIME)
|
||||
mLoadingDialog.showLoading()
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
//ToastUtils.showLong("下一个")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_REFUSE_SINGLE)
|
||||
mLoadingDialog.showLoading()
|
||||
}
|
||||
|
||||
}, it)
|
||||
mDialog?.show()
|
||||
showNotice("请确认是否执行任务")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 云控下发子任务确认弹窗
|
||||
*/
|
||||
private fun showSubTaskInfoDialog(taskId: String, subTaskId: String, subTaskInfo: SubTaskInfo) {
|
||||
mLoadingDialog.hideLoading()
|
||||
if (mTaskInfo == null) return
|
||||
if (mTaskInfo?.taskId != taskId) return
|
||||
//数据重复导致连续弹窗
|
||||
if (mDialog != null && mDialog!!.isShowing) {
|
||||
return
|
||||
}
|
||||
mDialog = createConfirmStartSubTaskDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
//ToastUtils.showLong("确认")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_CONFIRM)
|
||||
mLoadingDialog.showLoading()
|
||||
}
|
||||
|
||||
override fun onRefuseOrEnd() {
|
||||
//ToastUtils.showLong("结束")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_REFUSE_ALL)
|
||||
mLoadingDialog.showLoading()
|
||||
}
|
||||
|
||||
override fun onCountDownStop() {
|
||||
//ToastUtils.showLong("倒计时结束")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.OVER_TIME)
|
||||
mLoadingDialog.showLoading()
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
//ToastUtils.showLong("下一个")
|
||||
mPresenter?.sendSweeperTaskConfirmResp(taskId, subTaskId, SweeperTaskConfirm.TaskConfirmCode.MANUAL_REFUSE_SINGLE)
|
||||
mLoadingDialog.showLoading()
|
||||
}
|
||||
|
||||
}, subTaskInfo)
|
||||
mDialog?.show()
|
||||
showNotice("请确认是否执行任务")
|
||||
}
|
||||
|
||||
/**
|
||||
* 接取云端任务弹窗
|
||||
*/
|
||||
|
||||
@@ -317,7 +317,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
"onSweeperFutianCloudTaskConfirm:" + printMessage(taskConfirm));
|
||||
if (mSweeperTaskCallback != null && taskConfirm != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskConfirm(taskConfirm.getTaskId(), taskConfirm.getSubTaskId());
|
||||
mSweeperTaskCallback.onSweeperCloudTaskConfirm(taskConfirm.getTaskId(), taskConfirm.getSubTaskId(),taskConfirm.getIsPop());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,7 +339,7 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
"onSweeperFutianCloudTaskStop:" + printMessage(stopTaskReq));
|
||||
if (mSweeperTaskCallback != null && stopTaskReq != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudTaskStop(stopTaskReq.getTaskId(), stopTaskReq.getType());
|
||||
mSweeperTaskCallback.onSweeperCloudTaskStop(stopTaskReq.getTaskId(), stopTaskReq.getType(),stopTaskReq.getIsPop());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -169,18 +169,17 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudTaskConfirm(@NonNull String taskId, @NonNull String subTaskId) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.showSubTaskInfoDialog(taskId, subTaskId));
|
||||
public void onSweeperCloudTaskConfirm(@NonNull String taskId, @NonNull String subTaskId, boolean isPop) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.handleSubTaskInfoDialog(taskId, subTaskId,isPop));
|
||||
}
|
||||
|
||||
@Override
|
||||
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, SweeperTaskStop.StopTaskType stopTaskType) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTaskStop(taskId, stopTaskType));
|
||||
public void onSweeperCloudTaskStop(@NonNull String taskId, SweeperTaskStop.StopTaskType stopTaskType,boolean isPop) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTaskStop(taskId, stopTaskType,isPop));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user