[fix]
[任务重选问题]
This commit is contained in:
yangyakun
2024-11-26 12:21:21 +08:00
parent be4400140d
commit e546dc20d4
12 changed files with 105 additions and 2 deletions

View File

@@ -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 // 还车通知

View File

@@ -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() // 消息下发时间戳
){
}

View File

@@ -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<TaskUsedMsg> {
private val tag = "OperateAction"
override fun target(): Class<TaskUsedMsg> {
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)
}
}
}
}

View File

@@ -29,4 +29,6 @@ public interface IBusLinesCallback {
default void onCompleteTask(){}
default void onCompleteTaskFail(){}
default void onEndTaskByOther(long taskId,String plateNumber){}
}

View File

@@ -453,4 +453,11 @@ object LineModel {
}
}
fun endTaskByOther(taskId: Long,plateNumber:String) {
RepositoryManager.endTaskByOther(taskId)
mBusLinesCallbackMap.forEach { callback ->
callback.value.onEndTaskByOther(taskId,plateNumber)
}
}
}

View File

@@ -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()
//监听乘客屏发来的消息

View File

@@ -128,6 +128,11 @@ object RepositoryManager {
return lineRepository?.endTask(taskId)
}
fun endTaskByOther(taskId: Long) {
lineRepository?.endTaskByOther(taskId)
}
fun haveRunningTask():Boolean{
return lineRepository?.haveRunningTask()?:false
}

View File

@@ -34,5 +34,6 @@ interface ILineRepository {
}
fun release()
fun endTaskByOther(taskId: Long) {}
}

View File

@@ -314,6 +314,10 @@ class WeaknetRepository : ILineRepository {
}
}
override fun endTaskByOther(taskId: Long) {
TaskDb.endTask(taskId)
}
override fun queryCarExecutableTaskList(
ochCommonServiceCallback: OchCommonServiceCallback<CarExecutableTaskResponse>
) {

View File

@@ -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) // 时间
}

View File

@@ -52,6 +52,8 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba
private lateinit var linearLayoutManager:GridLayoutManager
private val tempData = mutableMapOf<Long,String>()
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

View File

@@ -78,6 +78,7 @@ class SwtichTaskModel : ViewModel(), IBusLinesCallback {
fun startTaskSuccess()
fun showErrorInfo()
fun resetRecycleView()
fun setCurrentTaskUsed(taskId: Long,plateNumber:String)
}
fun onBusLineTasks(o: MutableList<TaskDataBean>?) {
@@ -121,6 +122,8 @@ class SwtichTaskModel : ViewModel(), IBusLinesCallback {
LineModel.commitSwitchLineId(checkTask,tasksBelongLine!!)
}
override fun onEndTaskByOther(taskId: Long,plateNumber:String) {
viewCallback?.setCurrentTaskUsed(taskId,plateNumber)
}
}