[Sweeper Colud] feat: 增加 云端下发大任务 暂停/恢复 的处理/弹框/发送收到消息的回执;
refactor: 任务列表中状态 从子任务状态 修改为 大任务状态 (暂停/恢复 动作在大任务上);
This commit is contained in:
@@ -10,6 +10,8 @@ import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon.Code
|
||||
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.cloud.s_r.SweeperTaskCloudSuspendResume.ActionType
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume.BigTaskActionPush
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskType
|
||||
|
||||
/**
|
||||
@@ -51,6 +53,12 @@ interface ISweeperCloudTaskCallback {
|
||||
* 云端同步大任务状态
|
||||
*/
|
||||
fun onSweeperCloudBigTaskStatus(taskId:String, bigTaskStatus: SweeperCommon.TaskStatus)
|
||||
|
||||
/**
|
||||
* 云端同步大任务暂停 / 恢复 指令
|
||||
*/
|
||||
fun onSweeperCloudBigTaskSuspendResume(taskId:String, actionType: ActionType, isPop:Boolean)
|
||||
|
||||
/**
|
||||
* 设置轨迹坐标点集合
|
||||
*/
|
||||
|
||||
@@ -24,6 +24,8 @@ import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createReceivedBigTas
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskEndDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskExceptionEndDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskNormalEndDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskResumeDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.createSweeperTaskSuspendDialog
|
||||
import com.mogo.och.sweepercloud.util.SweeperCloudTaskUtils.printMessage
|
||||
import com.mogo.och.sweepercloud.view.SweeperCurrentTaskInfoView
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask
|
||||
@@ -32,7 +34,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.cloud.s_r.SweeperTaskCloudSuspendResume
|
||||
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.sweeper_cl_work_mode
|
||||
@@ -56,6 +58,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
private var mTaskInfo: SweeperTask.TaskInfo? = null
|
||||
private var mSubTaskType: TaskModel = TaskModel.DEFAULT_MODEL //1:自动驾驶子任务 2:人工驾驶子任务 -1:未知任务类型
|
||||
private var mCurrentRunningSubTaskInfo: SubTaskInfo? = null//当前正在执行的子任务
|
||||
private var mCurrentSuspendSubTaskInfo: SubTaskInfo? = null//当前暂停的子任务
|
||||
private val mLoadingDialog: SweeperCloudLoadingDialog by lazy { SweeperCloudLoadingDialog(requireContext()) }
|
||||
private var mDialog: SweeperCloudDialog? = null
|
||||
|
||||
@@ -244,6 +247,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
} else {
|
||||
mCurrentRunningSubTaskInfo = null
|
||||
}
|
||||
if (subTaskStatus == SweeperCommon.TaskStatus.SUSPENDED) {
|
||||
mCurrentSuspendSubTaskInfo = subBuilder.build()
|
||||
} else {
|
||||
mCurrentSuspendSubTaskInfo = null
|
||||
}
|
||||
//判断是否结束子任务
|
||||
if (subTaskStatus == SweeperCommon.TaskStatus.FINISHED) {
|
||||
//已完成的计入任务进度,未完成的不计入
|
||||
@@ -408,6 +416,68 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
showNotice("任务已暂停")
|
||||
ToastUtils.showLong("任务已暂停")
|
||||
//更新任务列表中大任务状态
|
||||
val builder = it.toBuilder()
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.SUSPENDED
|
||||
mTaskInfo = builder.build()
|
||||
getCurrentTaskView().setData(mTaskInfo, getCurrentRunningSubTaskPosition())
|
||||
} else if (it.taskStatus == SweeperCommon.TaskStatus.SUSPENDED
|
||||
&& bigTaskStatus == SweeperCommon.TaskStatus.RUNNING) { //恢复
|
||||
showNotice("任务已恢复")
|
||||
ToastUtils.showLong("任务已恢复")
|
||||
|
||||
//更新任务列表中大任务状态
|
||||
val builder = it.toBuilder()
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.RUNNING
|
||||
mTaskInfo = builder.build()
|
||||
getCurrentTaskView().setData(mTaskInfo, getCurrentRunningSubTaskPosition())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 云端同步 暂停/恢复 大任务状态
|
||||
*/
|
||||
fun onSweeperCloudBigTaskSuspendOrResume(taskId: String, actionType: SweeperTaskCloudSuspendResume.ActionType, isPop:Boolean) {
|
||||
//隐藏loading
|
||||
mLoadingDialog.hideLoading()
|
||||
mTaskInfo?.let {
|
||||
//如果云端要更新的任务和本地缓存任务不是同一个,在无法进行任务列表状态更新
|
||||
if (it.taskId != taskId) {
|
||||
return
|
||||
}
|
||||
// 发送接收到信息的ACK回执
|
||||
mPresenter?.sendSweeperSuspendResumeTaskResp(taskId, SweeperTaskCloudSuspendResume.Code.RECEIVED)
|
||||
if (isPop) {
|
||||
//数据重复导致连续弹窗
|
||||
if (mDialog != null && mDialog!!.isShowing) {
|
||||
return
|
||||
}
|
||||
when (actionType) {
|
||||
SweeperTaskCloudSuspendResume.ActionType.SUSPENDED -> {
|
||||
mDialog = sweeperCloudTaskSuspendDialog()
|
||||
showNotice("云端暂停任务,注意车辆即将停车!")
|
||||
}
|
||||
else -> {
|
||||
mDialog = sweeperCloudTaskResumeDialog()
|
||||
var ttsString = "云端恢复任务,注意车辆即将启动!"
|
||||
mCurrentSuspendSubTaskInfo?.also { suspendSub ->
|
||||
val isAutoPoilotState = mPresenter?.autopilotState == STATUS_AUTOPILOT_ENABLE
|
||||
when {
|
||||
suspendSub.taskModel == TaskModel.MANUAL -> {
|
||||
ttsString = "云端恢复任务,请继续手动驾驶完成任务!"
|
||||
}
|
||||
suspendSub.taskModel == TaskModel.AUTO && isAutoPoilotState -> {
|
||||
ttsString = "云端恢复任务,注意车辆即将启动!"
|
||||
}
|
||||
suspendSub.taskModel == TaskModel.AUTO && !isAutoPoilotState -> {
|
||||
ttsString = "云端恢复任务,请到达合适的位置后开启自动驾驶!"
|
||||
}
|
||||
}
|
||||
}
|
||||
showNotice(ttsString)
|
||||
}
|
||||
}
|
||||
mDialog?.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -563,7 +633,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
}, subTaskInfo)
|
||||
mDialog?.show()
|
||||
showNotice("请确认并执行子任务")
|
||||
if (subTaskInfo.taskModel == TaskModel.MANUAL) {
|
||||
showNotice("请确认并执行子任务")
|
||||
} else { //自动驾驶子任务,需要提醒在N档且拉起手刹,做好准备工作
|
||||
showNotice("请确认并执行子任务, 保持N档拉手刹再进入自动驾驶")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -609,4 +683,50 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
showNotice("已为您接取任务")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 大任务暂停弹框
|
||||
*/
|
||||
private fun sweeperCloudTaskSuspendDialog(): SweeperCloudDialog? {
|
||||
return createSweeperTaskSuspendDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
|
||||
}
|
||||
|
||||
override fun onRefuseOrEnd() {
|
||||
|
||||
}
|
||||
|
||||
override fun onCountDownStop() {
|
||||
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 大任务恢复弹框
|
||||
*/
|
||||
private fun sweeperCloudTaskResumeDialog(): SweeperCloudDialog? {
|
||||
return createSweeperTaskResumeDialog(context, object : SweeperCloudDialogClickListener {
|
||||
override fun onConfirm() {
|
||||
|
||||
}
|
||||
|
||||
override fun onRefuseOrEnd() {
|
||||
|
||||
}
|
||||
|
||||
override fun onCountDownStop() {
|
||||
|
||||
}
|
||||
|
||||
override fun onNext() {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -410,8 +410,14 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime, @Nullable SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush) {
|
||||
|
||||
public void onSweeperFutianCloudTaskCloudSuspendResume(@NonNull SweeperCloudTask.MessageType messageType, @Nullable String reqNo, long sysTime,
|
||||
@Nullable SweeperTaskCloudSuspendResume.BigTaskActionPush bigTaskActionPush) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "messageType: " + messageType.getNumber() + " sysTime:" + sysTime + " reqNo:" + reqNo + " " +
|
||||
"onSweeperFutianCloudTaskCloudSuspendResume:" + printMessage(bigTaskActionPush));
|
||||
if (mSweeperTaskCallback != null && bigTaskActionPush != null) {
|
||||
msgTypeAndReqNo.put(messageType.getNumber(), reqNo);
|
||||
mSweeperTaskCallback.onSweeperCloudBigTaskSuspendResume(bigTaskActionPush.getTaskId(), bigTaskActionPush.getAction(), bigTaskActionPush.getIsPop());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -590,6 +596,24 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
//SweeperCloudTaskUtils.mockSendCloudBootable();
|
||||
}
|
||||
|
||||
/**
|
||||
* 大任务暂停/恢复 接收到指令到 回复
|
||||
* @param taskId
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperSuspendResumeTaskResp(String taskId, SweeperTaskCloudSuspendResume.Code code) {
|
||||
SweeperTaskCloudSuspendResume.BigTaskActionResp.Builder builder = SweeperTaskCloudSuspendResume.BigTaskActionResp.newBuilder();
|
||||
builder.setSn(getDriverSn());
|
||||
builder.setTaskId(taskId);
|
||||
builder.setCode(code);
|
||||
SweeperTaskCloudSuspendResume.BigTaskActionResp resp = builder.build();
|
||||
String reqNo = msgTypeAndReqNo.get(SweeperCloudTask.MessageType.CloudPushTaskSuspendResume.getNumber());
|
||||
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG,
|
||||
"sendSweeperSuspendResumeTaskResp" + printMessage(resp) + " reqNo:" + reqNo + " messageType:" + SweeperCloudTask.MessageType.CloudPushTaskSuspendResume);
|
||||
getAutoPilotControlManager().sendSweeperCloudSuspendResumeTaskResp(reqNo, resp);
|
||||
}
|
||||
|
||||
public CallerAutoPilotControlManager getAutoPilotControlManager() {
|
||||
return CallerAutoPilotControlManager.INSTANCE;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.mogo.och.sweepercloud.presenter;
|
||||
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.commons.mvp.Presenter;
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
@@ -8,8 +11,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCleanSyste
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
|
||||
import com.mogo.och.common.module.manager.OCHAdasAbilityManager;
|
||||
import com.mogo.och.sweepercloud.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperCloudTaskCallback;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweepercloud.callback.ISweeperTaskRouteCallback;
|
||||
import com.mogo.och.sweepercloud.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweepercloud.fragment.SweeperFragment;
|
||||
@@ -18,15 +21,12 @@ import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
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.cloud.s_r.SweeperTaskCloudSuspendResume;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm;
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import chassis.ChassisStatesOuterClass;
|
||||
|
||||
/**
|
||||
@@ -175,6 +175,15 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
SweeperTaskModel.getInstance().sendSweeperAutopilotBootable(taskId, subTaskId, lineId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 大任务暂停/恢复 接收到指令到 回复
|
||||
* @param taskId
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperSuspendResumeTaskResp(String taskId, SweeperTaskCloudSuspendResume.Code code) {
|
||||
SweeperTaskModel.getInstance().sendSweeperSuspendResumeTaskResp(taskId, code);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRouteList(@NonNull ArrayList<SweeperRoutePlanningUpdateReqBean.Result> routeList) {
|
||||
mView.setTaskRouteList(routeList);
|
||||
@@ -216,6 +225,11 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudBigTaskStatus(taskId, bigTaskStatus));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSweeperCloudBigTaskSuspendResume(@NonNull String taskId, @NonNull SweeperTaskCloudSuspendResume.ActionType actionType, boolean isPop) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.onSweeperCloudBigTaskSuspendOrResume(taskId, actionType, isPop));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWeltDataToMap(@NonNull ArrayList<WeltDataBean> weltDataBeans, boolean isWeltData, @NonNull String distance) {
|
||||
ThreadUtils.runOnUiThread(() -> mView.setWeltDataToMap(weltDataBeans, isWeltData, distance));
|
||||
|
||||
@@ -15,13 +15,15 @@ import com.mogo.och.sweepercloud.ui.dialog.SweeperCloudDialog
|
||||
import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask.MessageType
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
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.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.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
|
||||
import java.util.*
|
||||
import java.util.UUID
|
||||
|
||||
object SweeperCloudTaskUtils {
|
||||
const val TAG = "SweeperCloudTaskUtils"
|
||||
@@ -204,7 +206,7 @@ object SweeperCloudTaskUtils {
|
||||
val builder = SweeperBigTaskStatus.BigTaskStatusPush.newBuilder()
|
||||
builder.sn = getDriverSn()
|
||||
builder.taskId = "10"
|
||||
builder.taskStatus = BigTaskStatus.FINISHED
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.FINISHED
|
||||
builder.systemTime = System.currentTimeMillis()
|
||||
SweeperTaskModel.getInstance().onSweeperFutianCloudBigTaskStatus(
|
||||
MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}",
|
||||
@@ -358,6 +360,40 @@ object SweeperCloudTaskUtils {
|
||||
return context?.let { it1 -> builder.build(it1) }
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun createSweeperTaskSuspendDialog(
|
||||
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 createSweeperTaskResumeDialog(
|
||||
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 "\n"+TextFormat.printer().escapingNonAscii(false).printToString(message)
|
||||
|
||||
@@ -10,6 +10,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.sweepercloud.R
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
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
|
||||
@@ -46,7 +47,7 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_current_task_info, this)
|
||||
setSubTaskState(false)
|
||||
updateTaskStateText(TaskStatus.TO_START)
|
||||
}
|
||||
|
||||
fun getAutoBtn(): TextView {
|
||||
@@ -85,10 +86,10 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
* 设置当前任务数据
|
||||
*/
|
||||
fun setData(
|
||||
subTaskBean: TaskInfo?,
|
||||
taskInfo: TaskInfo?,
|
||||
currentPosition: Int = -1
|
||||
) {
|
||||
subTaskBean?.apply {
|
||||
taskInfo?.apply {
|
||||
this@SweeperCurrentTaskInfoView.listTask = subListList
|
||||
tvTaskName.text = taskName
|
||||
val calendarStart = DateTimeUtil.formatLongToCalendar(taskStartTime)
|
||||
@@ -104,25 +105,32 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
listTask?.let {
|
||||
//特殊处理当前暂无执行中任务的情况
|
||||
if (currentPosition == -1) {
|
||||
setSubTaskState(false)
|
||||
updateTaskStateText(TaskStatus.TO_START)
|
||||
setCurrentData(currentPosition + 1)
|
||||
} else {
|
||||
setSubTaskState(it[currentPosition].taskStatus == TaskStatus.RUNNING)
|
||||
updateTaskStateText(taskInfo?.taskStatus ?: TaskStatus.RUNNING)
|
||||
setCurrentData(currentPosition)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置子任务的状态
|
||||
* 设置任务的状态
|
||||
*/
|
||||
private fun setSubTaskState(isWorking: Boolean) {
|
||||
if (isWorking) {
|
||||
tvTaskState.text = "任务执行中"
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_working)
|
||||
} else {
|
||||
tvTaskState.text = "任务待开始"
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_not_ready)
|
||||
private fun updateTaskStateText(taskStatus: SweeperCommon.TaskStatus) {
|
||||
when (taskStatus) {
|
||||
SweeperCommon.TaskStatus.RUNNING -> {
|
||||
tvTaskState.text = "任务执行中"
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_working)
|
||||
}
|
||||
SweeperCommon.TaskStatus.SUSPENDED -> {
|
||||
tvTaskState.text = "任务已暂停"
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_not_ready)
|
||||
}
|
||||
else -> {
|
||||
tvTaskState.text = "任务待开始"
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_not_ready)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user