[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确认
|
* 云端下发子任务请求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 androidx.lifecycle.lifecycleScope
|
||||||
import chassis.ChassisStatesOuterClass
|
import chassis.ChassisStatesOuterClass
|
||||||
import com.amap.api.maps.model.LatLng
|
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.data.map.MogoLocation
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion.STATUS_AUTOPILOT_ENABLE
|
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion.STATUS_AUTOPILOT_ENABLE
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||||
@@ -161,7 +162,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
|||||||
private fun setEndStationMarker(position: Int) {
|
private fun setEndStationMarker(position: Int) {
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
lifecycleScope.launch(Dispatchers.IO) {
|
||||||
mSubMutableList?.let { subList ->
|
mSubMutableList?.let { subList ->
|
||||||
val endPoint = subList[position-1].endLocation
|
val endPoint = subList[position - 1].endLocation
|
||||||
val endLatLng = LatLng(endPoint.latitude, endPoint.longitude)
|
val endLatLng = LatLng(endPoint.latitude, endPoint.longitude)
|
||||||
super.mCurrentTaskEndStation = endLatLng
|
super.mCurrentTaskEndStation = endLatLng
|
||||||
setCurrentTaskEndMarker(endLatLng)
|
setCurrentTaskEndMarker(endLatLng)
|
||||||
@@ -186,7 +187,13 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
|||||||
setShowCurrentTaskPanelView(true)
|
setShowCurrentTaskPanelView(true)
|
||||||
addTaskData()
|
addTaskData()
|
||||||
} else {//云端下发的任务信息需要弹窗接取
|
} 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 {
|
this.mSubMutableList?.let {
|
||||||
setTaskProgress("0/${it.size}")
|
setTaskProgress("0/${it.size}")
|
||||||
@@ -212,7 +219,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
|||||||
if (subTaskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
if (subTaskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
||||||
mCurrentSubTaskInfo = subBuilder.build()
|
mCurrentSubTaskInfo = subBuilder.build()
|
||||||
//更新当前正在执行的任务状态
|
//更新当前正在执行的任务状态
|
||||||
updateCurrentSubTaskInfo(index+1)
|
updateCurrentSubTaskInfo(index + 1)
|
||||||
} else {
|
} else {
|
||||||
mCurrentSubTaskInfo = null
|
mCurrentSubTaskInfo = null
|
||||||
}
|
}
|
||||||
@@ -236,51 +243,62 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
|||||||
/**
|
/**
|
||||||
* 云端请求结束大任务
|
* 云端请求结束大任务
|
||||||
*/
|
*/
|
||||||
fun onSweeperCloudTaskStop(taskId: String, stopTaskType: SweeperTaskStop.StopTaskType) {
|
fun onSweeperCloudTaskStop(taskId: String, stopTaskType: SweeperTaskStop.StopTaskType, isPop: Boolean) {
|
||||||
mLoadingDialog.hideLoading()
|
|
||||||
mTaskInfo?.let {
|
mTaskInfo?.let {
|
||||||
//如果云端要更新的任务和本地缓存任务不是同一个,在无法结束任务
|
//如果云端要更新的任务和本地缓存任务不是同一个,在无法结束任务
|
||||||
if (taskId != it.taskId) {
|
if (taskId != it.taskId) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val timeout: String = getTimeSpent(it.taskEndTime)
|
if (isPop) {
|
||||||
//数据重复导致连续弹窗
|
sweeperCloudTaskStopDialog(taskId, stopTaskType, it)
|
||||||
if (mDialog != null && mDialog!!.isShowing) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (stopTaskType == SweeperTaskStop.StopTaskType.NORMAL) {
|
|
||||||
mDialog = sweeperCloudTaskNormalEndDialog()
|
|
||||||
showNotice("任务已结束")
|
|
||||||
} else {
|
} else {
|
||||||
mDialog = createSweeperTaskEndDialog(context, object : SweeperCloudDialogClickListener {
|
mPresenter?.sendSweeperStopTaskResp(taskId, SweeperTaskStop.StopTaskCode.MANUAL_CONFIRM)
|
||||||
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()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束任务弹窗处理
|
||||||
|
*/
|
||||||
|
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) {
|
for (index in 0 until size) {
|
||||||
if (get(index).taskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
if (get(index).taskStatus == SweeperCommon.TaskStatus.RUNNING) {
|
||||||
mCurrentSubTaskInfo = get(index)
|
mCurrentSubTaskInfo = get(index)
|
||||||
updateCurrentSubTaskInfo(index+1)
|
updateCurrentSubTaskInfo(index + 1)
|
||||||
return index
|
return index
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -427,50 +445,61 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
|||||||
|
|
||||||
private fun getCurrentView(): SweeperCurrentTaskInfoView = sweeper_current_task_view
|
private fun getCurrentView(): SweeperCurrentTaskInfoView = sweeper_current_task_view
|
||||||
|
|
||||||
/**
|
|
||||||
* 云控下发子任务确认弹窗
|
fun handleSubTaskInfoDialog(taskId: String, subTaskId: String, isPop: Boolean) {
|
||||||
*/
|
|
||||||
fun showSubTaskInfoDialog(taskId: String, subTaskId: String) {
|
|
||||||
mLoadingDialog.hideLoading()
|
|
||||||
if (mTaskInfo == null) return
|
if (mTaskInfo == null) return
|
||||||
if (mTaskInfo?.taskId != taskId) return
|
if (mTaskInfo?.taskId != taskId) return
|
||||||
val subInfo = bySubTaskIdFindSubTaskInfo(subTaskId)
|
val subInfo = bySubTaskIdFindSubTaskInfo(subTaskId)
|
||||||
subInfo?.let {
|
subInfo?.let {
|
||||||
//数据重复导致连续弹窗
|
if (isPop) {
|
||||||
if (mDialog != null && mDialog!!.isShowing) {
|
showSubTaskInfoDialog(taskId, subTaskId, it)
|
||||||
return
|
} 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));
|
"onSweeperFutianCloudTaskConfirm:" + printMessage(taskConfirm));
|
||||||
if (mSweeperTaskCallback != null && taskConfirm != null) {
|
if (mSweeperTaskCallback != null && taskConfirm != null) {
|
||||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
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));
|
"onSweeperFutianCloudTaskStop:" + printMessage(stopTaskReq));
|
||||||
if (mSweeperTaskCallback != null && stopTaskReq != null) {
|
if (mSweeperTaskCallback != null && stopTaskReq != null) {
|
||||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
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
|
@Override
|
||||||
public void onSweeperCloudTaskConfirm(@NonNull String taskId, @NonNull String subTaskId) {
|
public void onSweeperCloudTaskConfirm(@NonNull String taskId, @NonNull String subTaskId, boolean isPop) {
|
||||||
ThreadUtils.runOnUiThread(() -> mView.showSubTaskInfoDialog(taskId, subTaskId));
|
ThreadUtils.runOnUiThread(() -> mView.handleSubTaskInfoDialog(taskId, subTaskId,isPop));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSweeperCloudTaskStatus(@NonNull String taskId, @NonNull String subTaskId, SweeperCommon.TaskStatus subTaskStatus) {
|
public void onSweeperCloudTaskStatus(@NonNull String taskId, @NonNull String subTaskId, SweeperCommon.TaskStatus subTaskStatus) {
|
||||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperUpdateSubTaskStatus(taskId, subTaskId, subTaskStatus));
|
ThreadUtils.runOnUiThread(() -> mView.onSweeperUpdateSubTaskStatus(taskId, subTaskId, subTaskStatus));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSweeperCloudTaskStop(@NonNull String taskId, SweeperTaskStop.StopTaskType stopTaskType) {
|
public void onSweeperCloudTaskStop(@NonNull String taskId, SweeperTaskStop.StopTaskType stopTaskType,boolean isPop) {
|
||||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTaskStop(taskId, stopTaskType));
|
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudTaskStop(taskId, stopTaskType,isPop));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user