diff --git a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java index c5b3a0fa0c..c7ba240d52 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java +++ b/OCH/sweeper/sweeper-cloud/src/main/java/com/mogo/och/sweepercloud/fragment/BaseSweeperTabFragment.java @@ -56,7 +56,7 @@ import androidx.fragment.app.FragmentTransaction; * @author tongchenfei */ public abstract class BaseSweeperTabFragment> extends MvpFragment implements IMogoMapListener, - View.OnClickListener, IWeltMapSwitchToSmallCallback, View.OnTouchListener { + IWeltMapSwitchToSmallCallback, View.OnTouchListener { private static final String TAG = "BaseSweeperTabFragment"; //地图放大缩小 @@ -73,14 +73,6 @@ public abstract class BaseSweeperTabFragment { showOrHideOverMapViewFragment(true); }); @@ -373,54 +360,6 @@ public abstract class BaseSweeperTabFragment(), MenuPopWindow.OnMenuItemOnClickListener { +class SweeperFragment : BaseSweeperTabFragment(){ companion object { const val TAG = "SweeperFragment" } - - private var mAdapter: TaskListAdapter? = null private var mCurrentSubPosition: Int = 0 //子任务下标 private var mSubMutableList: MutableList? = null private var mSubTaskBean: SweeperSubTaskBean? = null @@ -58,25 +45,10 @@ class SweeperFragment : BaseSweeperTabFragment - mCurrentSubPosition = 0 - mSubTaskBean = SweeperSubTaskBean(task.mainTaskId, task.mainTaskName, task.mainTaskStartTime, 1, mSubMutableList) - //获取当前子任务列表 - presenter?.getSubTaskList(task.mainTaskId, mSubTaskBean) - mAdapter?.selectPosition(-1) - } - } - //列表任务刷新 - ivTaskListRefresh.setOnClickListener { - mPresenter?.getMainTaskList(true) - } //无任务时刷新 ivNoTaskRefresh.setOnClickListener { - mPresenter?.getMainTaskList(true) - } - } - - private val onTaskItemClickListener = object : TaskListAdapter.TaskItemClickListener { - override fun onItemClick(position: Int, mainTask: SweeperMainTaskBean) { - mAdapter?.selectPosition(position) - tvTaskConfirm.isSelected = true - tvTaskConfirm.setTextColor(Color.parseColor("#FFFFFFFF")) - this@SweeperFragment.mMainTask = mainTask - } - - } - - override fun onMenuItemClick(itemType: TaskStatusEnum) { - when (itemType.code) { - TaskStatusEnum.JUMP_OVER_SUBTASK.code -> {//跳过任务 - mSubInfo?.let { - //如果当前只有一个子任务,则isFirst设置为false - presenter?.subTaskSkip(if (mSubMutableList?.size == 1) false else isFirstSubTask(), isLastSubTask(), it.taskId) + var builder: SweeperCloudDialog.Builder = SweeperCloudDialog.Builder() + builder.titleStr="任务接取" + builder.contentStr="请确认是否接取任务AAAAAAA" + builder.tipStr="(任务时间09:00-12:00)" + builder.leftStr="确认" + builder.middleStr="" + builder.rightStr="拒绝" + builder.countDownTime=15 + builder.listener=object : SweeperCloudDialog.SweeperCloudClickListener { + override fun onConfirm() { + ToastUtils.showLong("确认") } + + override fun onRefuse() { + ToastUtils.showLong("拒绝") + } + + override fun onCountDownStop() { + ToastUtils.showLong("倒计时结束") + } + + override fun onNext() { + ToastUtils.showLong("下一个") + } + } - TaskStatusEnum.END_TASK.code -> {//结束主任务 - endMainTask() - } + val dialog= context?.let { it1 -> builder.build(it1) } + dialog?.show() } } @@ -204,253 +129,6 @@ class SweeperFragment : BaseSweeperTabFragment?, refresh: Boolean) { - setShowCurrentTaskPanelView(false) - setShowTaskListPanelView(true) - sweeper_cl_work_mode.visibility = View.GONE - if (mainTaskBeanList != null && mainTaskBeanList.isNotEmpty()) { - noTaskDataView.visibility = View.GONE - sweeperListCl.visibility = View.VISIBLE - mAdapter?.setTaskListData(mainTaskBeanList) - } else { - noTaskDataView.visibility = View.VISIBLE - sweeperListCl.visibility = View.GONE - } - if (refresh) { - ToastUtils.showLong("已刷新") - } - } - - /** - * 设置当前子任务列表数据 - */ - fun setSubTaskBean(subTaskBean: SweeperSubTaskBean, isWorkingSubTask: Boolean) { - this.mSubTaskBean = subTaskBean - this.mSubTaskBean?.let { - setShowCurrentTaskPanelView(true) - setShowTaskListPanelView(false) - sweeper_cl_work_mode.visibility = View.VISIBLE - mCurrentSubPosition = if (isWorkingSubTask) {//如果是正在执行的子任务 - it.sort - 1 - } else { - 0 - } - d(SceneConstant.M_SWEEPER + TAG, "setSubTaskBean mCurrentSubPosition:$mCurrentSubPosition") - sweeper_current_task_view.setData(sweeper_cl_work_mode, it, mCurrentSubPosition, this, presenter) - mSubMutableList = it.subList - setSubTaskData() - if (mSubTaskType.code == SubTaskTypeEnum.AUTOPILOT_SUBTYPE.code) {//自动驾驶子任务需要调用详情 - mSubInfo?.let { subInfo -> - presenter?.getSubTaskDetail(isFirstSubTask(), isLastSubTask(), subInfo.taskId, mSubTaskType, false)//加载子任务详情包括轨迹信息 - } - } - mMainTask = SweeperMainTaskBean(it.taskId, it.taskName, 0, it.taskStartTime) - clearAllMarkerAndPolyline() - addWeltData() - } - } - - /** - * 更新子任务状态 - */ - fun updateSubTaskStatus(typeEnum: TaskStatusEnum, isLastSubTask: Boolean) { - if (isLastSubTask) { - showAmapNaviToStationFragment(false) - clearAllMarkerAndPolyline() - //整个大任务结束,则删除它相关的贴边数据缓存 - lifecycleScope.launch(Dispatchers.IO) { - MyDataBase.getInstance().weltDataDao.deleteAllWeltData() - mPresenter?.clearRouteList() - } - setTaskProgress("0") - - val builder = SweeperManualDrivingDialog.Builder() - val endConfirmDialog = builder - .tips("任务已完成") - .confirmStr("确认") - .build(requireContext()) - endConfirmDialog?.setClickListener(object: SweeperManualDrivingDialog.ClickListener{ - override fun confirm() { - mPresenter?.getMainTaskList(false) - } - }) - endConfirmDialog?.show() - return - } - when (typeEnum.code) { - TaskStatusEnum.END_SUBTASK.code -> {//子任务结束 - mCurrentSubPosition++ - setSubTaskData() - d(SceneConstant.M_SWEEPER + TAG, "END_SUBTASK mCurrentSubPosition:$mCurrentSubPosition") - if (mSubTaskType.code == SubTaskTypeEnum.AUTOPILOT_SUBTYPE.code) {//自动驾驶子任务 - //关闭人工驾驶导航 - showAmapNaviToStationFragment(false) - mSubInfo?.apply { - presenter?.getSubTaskDetail(isFirstSubTask(), isLastSubTask(), taskId, mSubTaskType, true) - } - sweeper_current_task_view.setCurrentData(mCurrentSubPosition) - } else { - manualDriving(true) - } - } - TaskStatusEnum.JUMP_OVER_SUBTASK.code -> { //子任务跳过 - //是否是最后一个子任务结束 - mCurrentSubPosition++ - setSubTaskData() - d(SceneConstant.M_SWEEPER + TAG, "JUMP_OVER_SUBTASK mCurrentSubPosition:$mCurrentSubPosition") - showAmapNaviToStationFragment(false) - if (mSubTaskType.code == SubTaskTypeEnum.AUTOPILOT_SUBTYPE.code) {//自动驾驶子任务 - //关闭人工驾驶导航 - showAmapNaviToStationFragment(false) - mSubInfo?.apply { - presenter?.getSubTaskDetail(isFirstSubTask(), isLastSubTask(), taskId, mSubTaskType, true) - } - sweeper_current_task_view.setCurrentData(mCurrentSubPosition) - } else { - manualDriving(true) - } - } - TaskStatusEnum.START_SUBTASK.code -> { //子任务开始 - setTaskBtn(true) - sweeper_current_task_view.setTaskStatus(2) - if (mSubTaskType == SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE) { - sweeper_current_task_view.setCurrentData(mCurrentSubPosition) - } - } - } - setEndStationMarker() - } - - /** - * 主任务重置 - */ - fun setMainTaskReset(isSuccess: Boolean) { - if (isSuccess) { - //任务重置后,重新拉取任务列表数据 - mPresenter?.getMainTaskList(false) - //清除任务全览图的marker和路线 - clearAllMarkerAndPolyline() - showAmapNaviToStationFragment(false) - setTaskProgress("0") - //整个大任务结束,则删除它相关的贴边数据缓存 - lifecycleScope.launch(Dispatchers.IO) { - MyDataBase.getInstance().weltDataDao.deleteAllWeltData() - mPresenter?.clearRouteList() - } - } - } - - /** - * 设置当前选中的子任务信息 - */ - private fun setSubTaskData() { - mSubMutableList?.let { - mSubInfo = it[mCurrentSubPosition] - mSubTaskType = if (it[mCurrentSubPosition].taskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE.code) - SubTaskTypeEnum.AUTOPILOT_SUBTYPE else SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE - //设置当前子任务信息 - presenter?.setSubtask(isFirstSubTask(), isLastSubTask(), it[mCurrentSubPosition].taskId, it[mCurrentSubPosition].taskType) - } - /** - * 计算任务的进度 - */ - lifecycleScope.launch(Dispatchers.IO) { - mSubMutableList?.let { - var sum: Double = 0.0 - for (index in it.indices) { - sum += it[index].mileage - } - var completed: Double = 0.0 - for (index in it.indices) { - if (index < mCurrentSubPosition) { - // 已完成的子任务记入完成度,进行中的不计入 - completed += it[index].mileage - } - } - val progress = "${((completed / sum) * 100.0).roundToInt()}%" - setTaskProgress(progress) - } - - } - } - /** - * 结束主任务 - */ - private fun endMainTask() { - //结束任务 - val builder = SweeperNoTitleCommonDialog.Builder() - val endConfirmDialog = builder - .tips("是否结束任务?") - .confirmStr("确认") - .cancelStr("取消") - .build(requireContext()) - endConfirmDialog?.setClickListener(object : SweeperNoTitleCommonDialog.ClickListener { - override fun confirm() { - mMainTask?.let { - presenter?.mainTaskReset(it.mainTaskId) - } - } - - override fun cancel() { - endConfirmDialog?.dismiss() - } - }) - endConfirmDialog?.show() - } - - /** - * 人工驾驶子任务 - */ - private fun manualDriving(isCancelAutoPoilot: Boolean) { - if (isCancelAutoPoilot) { // 人工子任务 先取消自动驾驶 - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) - CallerAutoPilotControlManager.cancelAutoPilot() - } - - mSubInfo?.apply { - val builder = SweeperManualDrivingDialog.Builder() - val endConfirmDialog = builder - .tips("前方子任务${taskName}请人工驾驶至(${endSiteName})") - .confirmStr("确认") - .build(requireContext()) - endConfirmDialog?.setClickListener(object : SweeperManualDrivingDialog.ClickListener { - override fun confirm() { - presenter?.startTask(isFirstSubTask(), isLastSubTask(), taskId, mSubTaskType, taskStatus) - val startPoint = - CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(AbsMogoApplication.getApp(), startWgs84Lon, startWgs84Lat) - val endPoint = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(AbsMogoApplication.getApp(), endWgs84Lon, endWgs84Lat) - startNaviToStation( - true, - startPoint.latitude, - startPoint.longitude, - endPoint.latitude, - endPoint.longitude - ) - showAmapNaviToStationFragment(true) - } - }) - endConfirmDialog?.show() - } - } - - /** - * 是否第一个子任务 - */ - fun isFirstSubTask(): Boolean { - return mCurrentSubPosition == 0 - } - - /** - * 是否最后一个子任务 - */ - fun isLastSubTask(): Boolean { - return mCurrentSubPosition == (mSubMutableList?.size?.minus(1)) - } - /** * 当前位置经纬度 */ @@ -458,15 +136,6 @@ class SweeperFragment : BaseSweeperTabFragment @@ -481,14 +150,14 @@ class SweeperFragment : BaseSweeperTabFragment if (autopilotStatusInfo == null) return; CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotStatusResponse state:" + autopilotStatusInfo.getState()); SweeperTaskModel.getInstance().setAutopilotState(autopilotStatusInfo.getState()); - ThreadUtils.runOnUiThread(() -> mView.startAutoBtn(autopilotStatusInfo.getState())); switch (autopilotStatusInfo.getState()) { case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE://不可自动驾驶 break; @@ -379,75 +378,24 @@ public class SweeperPresenter extends Presenter SweeperTaskModel.getInstance().getCurrentTask(); } - /** - * 获取主任务列表 - */ - public void getMainTaskList(boolean refresh) { - SweeperTaskModel.getInstance().getMainTaskList(refresh); - } - - /** - * 获取子任务列表 - */ - public void getSubTaskList(int taskId, SweeperSubTaskBean sweeperSubTaskBean) { - SweeperTaskModel.getInstance().getSubTaskList(taskId, sweeperSubTaskBean); - } - - /** - * 获取子任务详情包括轨迹文件信息 - */ - public void getSubTaskDetail(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, boolean isStartSubtask) { - SweeperTaskModel.getInstance().getSubTaskDetail(isFirst, isEnd, subTaskId, subTaskType, isStartSubtask); - } - - /** - * 开始任务 - */ - public void startTask(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, int subTaskStatus) { - if (SubTaskTypeEnum.AUTOPILOT_SUBTYPE.getCode() == subTaskStatus) { - SweeperTaskModel.getInstance().subTaskStart(isFirst, isEnd, subTaskId, subTaskType); - } - } - - /** - * 子任务结束上报 - */ - public void subTaskEnd(boolean isFirst, boolean isEnd, int subTaskId) { - SweeperTaskModel.getInstance().subTaskEnd(isFirst, isEnd, subTaskId); - } - - /** - * 子任务跳过上报 - */ - public void subTaskSkip(boolean isFirst, boolean isEnd, int subTaskId) { - SweeperTaskModel.getInstance().subTaskSkip(isFirst, isEnd, subTaskId); - } - - /** - * 主任务重置 - */ - public void mainTaskReset(int taskId) { - SweeperTaskModel.getInstance().mainTaskReset(taskId); - } - @Override public void setMainTaskList(List mainTaskBeanList, boolean refresh) { - mView.setMainTaskList(mainTaskBeanList,refresh); + } @Override public void setSubTaskBean(SweeperSubTaskBean subTaskBean, boolean isWorkingSubTask) { - mView.setSubTaskBean(subTaskBean, isWorkingSubTask); + } @Override public void updateSubTaskStatus(TaskStatusEnum typeEnum, boolean isLastSubTask) { - mView.updateSubTaskStatus(typeEnum, isLastSubTask); + } @Override public void setMainTaskReset(boolean isSuccess) { - mView.setMainTaskReset(isSuccess); + } @Override diff --git a/OCH/sweeper/sweeper-cloud/src/main/res/layout/fragment_och_sweeper.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/fragment_och_sweeper.xml index df5ba64231..b3458d9c53 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/fragment_och_sweeper.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/fragment_och_sweeper.xml @@ -1,33 +1,16 @@ + android:layout_height="wrap_content" /> - - - - - - - - - - - - - + android:visibility="visible" /> + \ No newline at end of file diff --git a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_no_data_common_view.xml b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_no_data_common_view.xml index 2532275d52..f82cb901f2 100644 --- a/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_no_data_common_view.xml +++ b/OCH/sweeper/sweeper-cloud/src/main/res/layout/sweeper_no_data_common_view.xml @@ -4,8 +4,8 @@ android:id="@+id/noTaskDataView" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="visible" - android:background="@drawable/bg_shape_task_panel"> + android:background="@drawable/bg_shape_task_panel" + android:visibility="gone">