From e546dc20d4d886a3105c1fddad4a09a90674736f Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 26 Nov 2024 12:21:21 +0800 Subject: [PATCH] =?UTF-8?q?[6.8.0]=20[fix]=20[=E4=BB=BB=E5=8A=A1=E9=87=8D?= =?UTF-8?q?=E9=80=89=E9=97=AE=E9=A2=98]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../socket/cloud/OCHSocketMessageManager.kt | 1 + .../manager/socket/cloud/data/TaskUsedMsg.kt | 14 +++++++++ .../mogo/och/weaknet/action/TaskUsedAction.kt | 30 +++++++++++++++++++ .../weaknet/callback/IBusLinesCallback.java | 2 ++ .../com/mogo/och/weaknet/model/LineModel.kt | 7 +++++ .../mogo/och/weaknet/model/ThirdDeviceData.kt | 9 ++++++ .../weaknet/repository/RepositoryManager.kt | 5 ++++ .../repository/line/ILineRepository.kt | 1 + .../repository/line/impl/WeaknetRepository.kt | 4 +++ .../ui/switchtask/SwitchLineTaskAdapter.kt | 8 +++++ .../weaknet/ui/switchtask/SwitchTaskView.kt | 21 ++++++++++++- .../weaknet/ui/switchtask/SwtichTaskModel.kt | 5 +++- 12 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/cloud/data/TaskUsedMsg.kt create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/action/TaskUsedAction.kt diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/cloud/OCHSocketMessageManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/cloud/OCHSocketMessageManager.kt index deed51c9a3..59e278c50c 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/cloud/OCHSocketMessageManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/cloud/OCHSocketMessageManager.kt @@ -17,6 +17,7 @@ object OCHSocketMessageManager { const val msgWriteOffPassengerType:Int = 6295554 //核销消息 const val msgOperateDoorType = 6295556 // 开/关门消息 const val msgOrderClosedType = 6295555 //订单结束消息 + const val msgTaskUsedType = 6295557 //订单结束消息 const val OPERATION_SYSTEM: Int = -1 // 运营消息 默认是次消息类型 const val OPERATION_ORDER_TYPE: Int = 0 // 还车通知 diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/cloud/data/TaskUsedMsg.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/cloud/data/TaskUsedMsg.kt new file mode 100644 index 0000000000..4eeb316092 --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/cloud/data/TaskUsedMsg.kt @@ -0,0 +1,14 @@ +package com.mogo.och.common.module.manager.socket.cloud.data +/** + * @author: wangmingjun + * @date: 2023/2/25 + */ +data class TaskUsedMsg( + var sn: String, + var businessType: Int, + var plateNumber: String, + var taskId: Long, + var pushTimeStamp: Long = System.currentTimeMillis() // 消息下发时间戳 +){ +} + diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/action/TaskUsedAction.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/action/TaskUsedAction.kt new file mode 100644 index 0000000000..2012f2285c --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/action/TaskUsedAction.kt @@ -0,0 +1,30 @@ +package com.mogo.och.weaknet.action + +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS +import com.mogo.och.common.module.biz.login.LoginStatusManager +import com.mogo.och.common.module.manager.socket.cloud.IOchOnMessageListener +import com.mogo.och.common.module.manager.socket.cloud.data.TaskUsedMsg +import com.mogo.och.weaknet.model.LineModel +import com.mogo.och.weaknet.repository.RepositoryManager + +class TaskUsedAction() : + IOchOnMessageListener { + + private val tag = "OperateAction" + + override fun target(): Class { + + return TaskUsedMsg::class.java + } + + override fun onMsgReceived(obj: TaskUsedMsg?) { + i(M_BUS + tag, "onMsgReceived = $obj") + obj?.apply { + if (LoginStatusManager.getLoginInfo()?.businessType==businessType + &&RepositoryManager.supportDb()) { + LineModel.endTaskByOther(taskId,plateNumber) + } + } + } +} \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/callback/IBusLinesCallback.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/callback/IBusLinesCallback.java index c145851761..a03a36f56e 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/callback/IBusLinesCallback.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/callback/IBusLinesCallback.java @@ -29,4 +29,6 @@ public interface IBusLinesCallback { default void onCompleteTask(){} default void onCompleteTaskFail(){} + + default void onEndTaskByOther(long taskId,String plateNumber){} } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt index ed0dea66e3..363e5ff686 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt @@ -453,4 +453,11 @@ object LineModel { } } + fun endTaskByOther(taskId: Long,plateNumber:String) { + RepositoryManager.endTaskByOther(taskId) + mBusLinesCallbackMap.forEach { callback -> + callback.value.onEndTaskByOther(taskId,plateNumber) + } + } + } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/ThirdDeviceData.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/ThirdDeviceData.kt index 1c61f8f5ed..cf6986c4f7 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/ThirdDeviceData.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/ThirdDeviceData.kt @@ -20,6 +20,7 @@ import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusTransferData import com.mogo.och.shuttle.weaknet.R +import com.mogo.och.weaknet.action.TaskUsedAction import com.mogo.och.weaknet.constant.BusConst import com.mogo.och.weaknet.util.ShuttleVoiceManager @@ -36,6 +37,12 @@ object ThirdDeviceData { OCHSocketMessageManager.msgMonitorType, OperateAction(true) ) + + OCHSocketMessageManager.registerSocketMessageListener( + OCHSocketMessageManager.msgTaskUsedType, + TaskUsedAction() + ) + // 长链接监听 AbnormalFactorsLoopManager.startLoopAbnormalFactors(AbsMogoApplication.getApp()) @@ -50,6 +57,8 @@ object ThirdDeviceData { OCHSocketMessageManager.releaseSocketMessageListener(OCHSocketMessageManager.msgMonitorType) + OCHSocketMessageManager.releaseSocketMessageListener(OCHSocketMessageManager.msgTaskUsedType) + AbnormalFactorsLoopManager.stopLoopAbnormalFactors() //监听乘客屏发来的消息 diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt index 066f1c27a6..a289e4aacc 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt @@ -128,6 +128,11 @@ object RepositoryManager { return lineRepository?.endTask(taskId) } + + fun endTaskByOther(taskId: Long) { + lineRepository?.endTaskByOther(taskId) + } + fun haveRunningTask():Boolean{ return lineRepository?.haveRunningTask()?:false } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt index f381bc7ba9..1f2864563d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt @@ -34,5 +34,6 @@ interface ILineRepository { } fun release() + fun endTaskByOther(taskId: Long) {} } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt index 71c7fc1141..d139bd1419 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt @@ -314,6 +314,10 @@ class WeaknetRepository : ILineRepository { } } + override fun endTaskByOther(taskId: Long) { + TaskDb.endTask(taskId) + } + override fun queryCarExecutableTaskList( ochCommonServiceCallback: OchCommonServiceCallback ) { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchLineTaskAdapter.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchLineTaskAdapter.kt index c591caa1e6..42638d5aca 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchLineTaskAdapter.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchLineTaskAdapter.kt @@ -93,6 +93,14 @@ class SwitchLineTaskAdapter( return mData.size } + fun setCurrentTaskUsed(taskId: Long) { + mData.forEach { + if(it.taskId==taskId){ + it.status = TaskDataBean.used + } + } + } + class SwitchLineTaskViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val taskTime: AppCompatCheckedTextView = itemView.findViewById(R.id.actv_task_time) // 时间 } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchTaskView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchTaskView.kt index 618795c1ed..f112ccec8a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchTaskView.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchTaskView.kt @@ -52,6 +52,8 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba private lateinit var linearLayoutManager:GridLayoutManager + private val tempData = mutableMapOf() + init { LayoutInflater.from(context).inflate(R.layout.shuttle_weak_switch_task, this, true) initView() @@ -73,7 +75,16 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba if(tempCheckTask==null){ ToastUtils.showShort("请选择任务") }else{ - viewModel?.changeLineStart(tempCheckTask) + if(tempCheckTask.status == TaskDataBean.used){ + val reason = tempData[tempCheckTask.taskId] + if(reason==null){ + ToastUtils.showShort("该任务已被其他车辆使用、请切换任务") + }else{ + ToastUtils.showShort("该任务已被${reason}使用、请切换任务") + } + }else { + viewModel?.changeLineStart(tempCheckTask) + } } } actv_cancle_task.onClick { @@ -140,6 +151,7 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba override fun startTaskSuccess() { viewbizModel?.showRunningTaskView() + tempData.clear() } override fun showErrorInfo() { @@ -156,6 +168,13 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba mAdapter.setDataList(mutableListOf()) } + override fun setCurrentTaskUsed(taskId: Long,plateNumber: String) { + BizLoopManager.runInMainThread{ + mAdapter.setCurrentTaskUsed(taskId) + tempData[taskId] = "该任务已被${plateNumber}使用" + } + } + private fun showEmptyView(){ actv_submit_task.setTextColor(ResourcesUtils.getColor(R.color.bus_color_66666)) actv_submit_task.isEnabled = false diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwtichTaskModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwtichTaskModel.kt index 287799a79d..4a5691b126 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwtichTaskModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwtichTaskModel.kt @@ -78,6 +78,7 @@ class SwtichTaskModel : ViewModel(), IBusLinesCallback { fun startTaskSuccess() fun showErrorInfo() fun resetRecycleView() + fun setCurrentTaskUsed(taskId: Long,plateNumber:String) } fun onBusLineTasks(o: MutableList?) { @@ -121,6 +122,8 @@ class SwtichTaskModel : ViewModel(), IBusLinesCallback { LineModel.commitSwitchLineId(checkTask,tasksBelongLine!!) } - + override fun onEndTaskByOther(taskId: Long,plateNumber:String) { + viewCallback?.setCurrentTaskUsed(taskId,plateNumber) + } }