From a1fb290a9ebe999dd7a31438630ae05c4d2a79fd Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 16 Jan 2024 16:29:16 +0800 Subject: [PATCH] =?UTF-8?q?[5.2.8]=20[shuttle=5Fp]=20[=E6=A0=B8=E9=94=80?= =?UTF-8?q?=E6=8E=A5=E9=A9=B3=E7=A5=A8=20=E5=BC=82=E5=B8=B8=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=92=8C=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/common/module/bean/dpmsg/DPMsgType.kt | 4 +- .../och/common/module/bean/dpmsg/DataBean.kt | 13 ++ .../java/com/mogo/och/bus/BusProvider.java | 16 +- .../main/java/com/mogo/och/bus/IMogoOCH.java | 24 -- .../com/mogo/och/bus/model/OrderModel.java | 96 +++++++- .../manager/scnner/ScannerManager.kt | 212 +++++++++++++----- .../manager/scnner/StateChangeListener.kt | 2 +- .../shuttle/passenger/model/TicketModel.kt | 38 +++- .../network/PassengerServiceManager.kt | 2 +- .../eagle/core/data/enums/EventTypeEnumNew.kt | 6 +- ...on_warning_v2x_verification_successful.png | Bin 0 -> 4933 bytes 11 files changed, 306 insertions(+), 107 deletions(-) delete mode 100644 OCH/shuttle/driver/src/main/java/com/mogo/och/bus/IMogoOCH.java create mode 100644 core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_v2x_verification_successful.png diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt index 26f52b5a4e..cada587957 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt @@ -12,5 +12,7 @@ enum class DPMsgType(val type: Int) { TYPE_TASK_DETAILS(4), //路线任务详情 TYPE_LOGIN_STATUS(5), //login status TYPE_ARRIVEDEST_STATUS(6), //到站通知 status - TYPE_ORDER_CLOSED_BY_M1_STATUS(7) //到站通知 status + TYPE_ORDER_CLOSED_BY_M1_STATUS(7), //到站通知 status + TYPE_WRITEOFF_INFO(8), //核销信息 + TYPE_WRITEOFF_DEVICES_INFO(9) //核销设备信息 } \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt index a8a65b3dfb..fcbcceb8d4 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt @@ -83,3 +83,16 @@ data class AppConnectMsg( data class TaskDetailsMsg( var msg: String?, ): BaseDPMsg(DPMsgType.TYPE_TASK_DETAILS.type) + +data class WriteOffMsg( + val isScuccess: Boolean?, + val phone: String?, + val ticketSize: Int?, + val ticketName:String?, + val failedReason:String? +): BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO.type) + +data class WriteOffDevicesMsg( + val isConnectScanner: Boolean?, + val reason:String? +): BaseDPMsg(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type) diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/BusProvider.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/BusProvider.java index 998d7b5d4b..6b5f576a24 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/BusProvider.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/BusProvider.java @@ -10,6 +10,7 @@ import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.och.bus.constant.BusConst; @@ -24,7 +25,7 @@ import org.jetbrains.annotations.Nullable; * @author tongchenfei */ @Route(path = BusConst.PATH) -public class BusProvider implements IMogoOCH { +public class BusProvider implements IMoGoFunctionProvider { private static final String TAG = "BusProvider"; @@ -32,14 +33,6 @@ public class BusProvider implements IMogoOCH { private int containerId; private FragmentActivity activity; - /** - * 进入鹰眼模式,设置手势缩放地图失效 - */ - private void stepIntoVrMode() { - CallerLogger.d(M_BUS + TAG, "进入vr模式"); - CallerMoGoUiSettingManager.INSTANCE.stepInNightMode();//夜间模式 状态栏字体颜色变黑 - } - @Override public void init(Context context) { } @@ -71,11 +64,6 @@ public class BusProvider implements IMogoOCH { } - @Override - public void createCoverage(FragmentActivity activity, int containerId) { - - } - @NotNull @Override public String getFunctionName() { diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/IMogoOCH.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/IMogoOCH.java deleted file mode 100644 index 073f7fcc29..0000000000 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/IMogoOCH.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.mogo.och.bus; - -import androidx.annotation.IdRes; -import androidx.fragment.app.FragmentActivity; - -import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; - -public -/** - * @author congtaowang - * @since 2021/1/15 - * - * 网约车抽象接口 - */ -interface IMogoOCH extends IMoGoFunctionProvider { - - /** - * 初始化网约车容器 - * - * @param activity - * @param containerId 容器ID - */ - void createCoverage(FragmentActivity activity, @IdRes int containerId); -} diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index b43791e1c5..90b6cc0a4d 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -16,7 +16,12 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.amap.api.maps.model.LatLng; import com.elegant.network.utils.GsonUtil; import com.mogo.aicloud.services.socket.IMogoOnMessageListener; +import com.mogo.eagle.core.data.enums.EventTypeEnumNew; +import com.mogo.eagle.core.data.msgbox.MsgBoxBean; +import com.mogo.eagle.core.data.msgbox.MsgBoxType; +import com.mogo.eagle.core.data.msgbox.V2XMsg; import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener; +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager; import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager; import com.mogo.eagle.core.utilcode.util.CoordinateUtils; import com.mogo.commons.AbsMogoApplication; @@ -33,6 +38,8 @@ import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg; import com.mogo.och.common.module.bean.dpmsg.DPMsgType; import com.mogo.och.common.module.bean.dpmsg.LoginCacheStatus; import com.mogo.och.common.module.bean.dpmsg.TaskDetailsMsg; +import com.mogo.och.common.module.bean.dpmsg.WriteOffDevicesMsg; +import com.mogo.och.common.module.bean.dpmsg.WriteOffMsg; import com.mogo.och.common.module.biz.constant.LoginStatusManager; import com.mogo.och.data.bean.BusStationBean; import com.mogo.och.common.module.biz.common.socketmessage.data.SystemMsg; @@ -241,13 +248,98 @@ public class OrderModel { if (OchCommonConst.BUSINESS_STRING == type){ CallerLogger.d(M_BUS + BaseDPMsg.TAG,new String(byteArray)); BaseDPMsg msg = GsonUtils.fromJson(new String(byteArray),BaseDPMsg.class); - if (msg!=null && msg.getType() == DPMsgType.TYPE_TASK_DETAILS.getType()){ - sendTaskDetailsToClients(); + if(msg!=null) { + if (msg.getType() == DPMsgType.TYPE_TASK_DETAILS.getType()) { + sendTaskDetailsToClients(); + } else if(msg.getType() == DPMsgType.TYPE_WRITEOFF_INFO.getType()){ + WriteOffMsg writeOffMsg = + GsonUtils.fromJson(new String(byteArray), WriteOffMsg.class); + receiveWrteOffInfo(writeOffMsg); + } else if(msg.getType() == DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.getType()){ + WriteOffDevicesMsg writeOffMsg = + GsonUtils.fromJson(new String(byteArray), WriteOffDevicesMsg.class); + receiveWrteOffDevicesInfo(writeOffMsg); + } } } } }; + private void receiveWrteOffInfo(WriteOffMsg writeOffMsg) { + if (writeOffMsg.isScuccess() != null) { + if (Boolean.TRUE.equals(writeOffMsg.isScuccess())) {// 核验成功 + int size = writeOffMsg.getTicketSize()==null?0:writeOffMsg.getTicketSize(); + String type = writeOffMsg.getTicketName()==null?"":writeOffMsg.getTicketName(); + String phone = writeOffMsg.getPhone()==null?"":writeOffMsg.getPhone(); + + if (phone.length() > 8) { + //截取电话号码前三位 + String phoneNumPre = phone.substring(0, 3); + //截取电话号码后四位 + String phoneNumFix = phone.substring(7); + phone = phoneNumPre+"****"+phoneNumFix; + } + + String content = size+"张"+type+" "+phone; + CallerMsgBoxManager.INSTANCE.saveMsgBox( + new MsgBoxBean( + MsgBoxType.V2X, + new V2XMsg( + EventTypeEnumNew.TYPE_VERIFICATION_SUCCESSFUL.getPoiType(), + content, + EventTypeEnumNew.TYPE_VERIFICATION_SUCCESSFUL.getTts(), + "" + ) + ) + ); + } else { // 核验失败 + String reason = writeOffMsg.getFailedReason()==null?"":writeOffMsg.getFailedReason(); + CallerMsgBoxManager.INSTANCE.saveMsgBox( + new MsgBoxBean( + MsgBoxType.V2X, + new V2XMsg( + EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.getPoiType(), + reason, + EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.getTts(), + "" + ) + ) + ); + } + } + } + + private void receiveWrteOffDevicesInfo(WriteOffDevicesMsg writeOffMsg) { + if (writeOffMsg.isConnectScanner() != null) { + String reason = writeOffMsg.getReason()==null?"":writeOffMsg.getReason(); + if (Boolean.TRUE.equals(writeOffMsg.isConnectScanner())) {// 链接成功 + CallerMsgBoxManager.INSTANCE.saveMsgBox( + new MsgBoxBean( + MsgBoxType.V2X, + new V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.getPoiType(), + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.getTts(), + "" + ) + ) + ); + } else { // 核验失败 + CallerMsgBoxManager.INSTANCE.saveMsgBox( + new MsgBoxBean( + MsgBoxType.V2X, + new V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.getPoiType(), + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.getTts(), + "" + ) + ) + ); + } + } + } + private final IMogoOnMessageListener mMogoOnMessageListener = new IMogoOnMessageListener() { @Override diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerManager.kt b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerManager.kt index 12e9b02b80..4555d4fbc6 100644 --- a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerManager.kt +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerManager.kt @@ -2,25 +2,29 @@ package com.mogo.och.shuttle.passenger.manager.scnner import android.net.Uri import com.mogo.commons.AbsMogoApplication +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P +import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.StringUtils +import com.mogo.och.common.module.bean.dpmsg.WriteOffDevicesMsg +import com.mogo.och.common.module.bean.dpmsg.WriteOffMsg import com.mogo.och.common.module.biz.constant.OchCommonConst -import com.mogo.och.common.module.manager.distancemamager.ITrajectoryWithStationListener -import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager import com.mogo.support.serialport.client.SerialPortManager import com.mogo.support.serialport.client.SerialPortManager.SERVICE_STATE import com.mogo.support.serialport.client.listener.OnDeviceVerificationListener import com.mogo.support.serialport.client.listener.OnSerialPortListener import com.mogo.support.serialport.common.verification.UnpackStatus import com.mogo.support.serialport.common.verification.data.VerificationActiveData -import java.net.URL import java.util.concurrent.ConcurrentHashMap import kotlin.properties.Delegates -object ScannerManager : OnSerialPortListener { +object ScannerManager : OnSerialPortListener, OnDeviceVerificationListener(), IReceivedMsgListener { private val TAG = "ScannerManager" @@ -29,11 +33,20 @@ object ScannerManager : OnSerialPortListener { private val stateChanageListeners: ConcurrentHashMap = ConcurrentHashMap() + private var driverSn:String by Delegates.observable("") { _, oldV, newV -> + if (oldV != newV) { + // sn 发生了改变 需要向司机屏推送当前链接的状态 + sendScannerState() + } + } private var bindStatus: BindStatus by Delegates.observable(BindStatus.NOTHING) { _, oldV, newV -> if (oldV != newV) { try { CallerLogger.d(SceneConstant.M_OCHCOMMON + TAG, "状态发生变化old:${oldV}_new:${newV}") + if(newV!=BindStatus.BIND_SUCCEED) { + dispatchMsg(newV) + } if (stateChanageListeners.size > 0) { stateChanageListeners.forEach { it.value.stateChange(newV, openStatus) @@ -44,6 +57,7 @@ object ScannerManager : OnSerialPortListener { } } } + private var openStatus: OpenStatus by Delegates.observable(OpenStatus.Unopen) { _, oldV, newV -> if (oldV != newV) { try { @@ -58,6 +72,11 @@ object ScannerManager : OnSerialPortListener { } } + init { + //监听司机端消息 + CallerTelematicListenerManager.addListener(TAG, this) + } + fun addStateChangeListener(tag: String, listener: StateChangeListener) { if (stateChanageListeners.containsKey(tag)) { return @@ -66,47 +85,14 @@ object ScannerManager : OnSerialPortListener { } fun bindService() { - serialPortManager.bindService(AbsMogoApplication.getApp(), this);//绑定服务 + serialPortManager.bindService(AbsMogoApplication.getApp(), this)//绑定服务 } override fun onServiceState(serviceState: Int) { when (serviceState) { SERVICE_STATE.BIND_SUCCEED -> { bindStatus = BindStatus.BIND_SUCCEED - serialPortManager.openVerificationDevice(object : OnDeviceVerificationListener() { - override fun onSerialPortState( - path: String?, - isOpen: Boolean, - throwableMessage: String? - ) { - CallerLogger.d( - M_BUS_P + TAG, - "path ${path}---isOpen${isOpen}--throwableMessage${throwableMessage}" - ) - if (isOpen) { - openStatus = OpenStatus.Open - } else { - openStatus = OpenStatus.Unopen - } - } - - override fun onActiveDataReceive(data: VerificationActiveData?) { - data?.let { - if(data.unpackStatus==UnpackStatus.SUCCEED){ - "数据类型${it.dataType.name}" - CallerLogger.d(M_BUS_P + TAG, "data $it") - if(!StringUtils.isEmpty(it.payload)){ - parseParams(it.payload) - }else{ - CallerLogger.d(M_BUS_P + TAG, "数据错误") - } - }else{ - CallerLogger.d(M_BUS_P + TAG, "解包失败") - } - } - } - - }); + serialPortManager.openVerificationDevice(this) } SERVICE_STATE.BIND_FAILURE_UNINSTALLED -> { CallerLogger.d(M_BUS_P + TAG, "服务绑定失败:未安装串口服务端APP") @@ -124,25 +110,6 @@ object ScannerManager : OnSerialPortListener { } } - private fun parseParams(payload: String?) { - val parse = Uri.parse("${OchCommonConst.getShuttleUrl()}?${payload}") - val queryParameterNames = parse.queryParameterNames - val mutableMapOf = mutableMapOf() - queryParameterNames.forEach { - val queryParameter = parse.getQueryParameter(it) - println("${it}:$queryParameter") - if(it!=null&&queryParameter!=null){ - mutableMapOf[it] = queryParameter - } - } - if (stateChanageListeners.size > 0) { - stateChanageListeners.forEach { - it.value.parseData(mutableMapOf) - } - } - - } - // 查询串口 override fun onFindSerialPort(paths: Array?) { CallerLogger.d(M_BUS_P + TAG, "$paths") @@ -150,6 +117,135 @@ object ScannerManager : OnSerialPortListener { bindStatus = BindStatus.BIND_FAILURE_NO_PERMISSION_NOT_FOUND } } + + override fun onSerialPortState( + path: String?, + isOpen: Boolean, + throwableMessage: String? + ) { + CallerLogger.d( + M_BUS_P + TAG, + "path ${path}---isOpen${isOpen}--throwableMessage${throwableMessage}" + ) + openStatus = if (isOpen) { + sendMessage2Driver(true,"扫码枪打开成功") + OpenStatus.Open + } else { + sendMessage2Driver(false,"扫码枪打开错误:${throwableMessage}_${path}") + OpenStatus.Unopen + } + } + + override fun onActiveDataReceive(data: VerificationActiveData?) { + data?.let { + if(data.unpackStatus==UnpackStatus.SUCCEED){ + "数据类型${it.dataType.name}" + CallerLogger.d(M_BUS_P + TAG, "data $it") + if(!StringUtils.isEmpty(it.payload)){ + parseParams(it.payload) + }else{ + CallerLogger.d(M_BUS_P + TAG, "数据错误") + sendMessage2DriverWriteOffInfo("扫码数据为空") + } + }else{ + sendMessage2DriverWriteOffInfo("解包失败") + CallerLogger.d(M_BUS_P + TAG, "解包失败") + } + } + } + + private fun parseParams(payload: String?) { + val parse = Uri.parse("${OchCommonConst.getShuttleUrl()}?${payload}") + val queryParameterNames = parse.queryParameterNames + val mutableMapOf = mutableMapOf() + queryParameterNames.forEach { + val queryParameter = parse.getQueryParameter(it) + if(it!=null&&queryParameter!=null){ + mutableMapOf[it] = queryParameter + } + } + if(mutableMapOf.isNotEmpty()){ + if (stateChanageListeners.size > 0) { + stateChanageListeners.forEach { + it.value.parseData(mutableMapOf,payload) + } + } + }else{ + sendMessage2DriverWriteOffInfo("扫码参数数据为空:${payload}") + } + + } + + /** + * @param isConnectScanner 是否打开设备 + */ + private fun sendMessage2Driver(isConnectScanner:Boolean,message:String){ + val msg = WriteOffDevicesMsg(isConnectScanner, message) + CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) + if(driverSn.isNotEmpty()) { + CallerTelematicManager.sendMsgToServer( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + } + } + + /** + * 打开设备后数据异常 + */ + private fun sendMessage2DriverWriteOffInfo(message:String){ + val msg = WriteOffMsg(false, "", 0, "", message) + CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) + CallerTelematicManager.sendMsgToServer( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + } + + override fun onReceivedMsg(type: Int, byteArray: ByteArray) { + + } + + override fun onReceivedServerSn(sn: String?) { + Logger.d(M_BUS_P + TAG, "司机屏sn:$sn") + driverSn = sn?:"" + } + + /** + * 链接司机屏后向司机屏同步扫码枪状态 + */ + private fun sendScannerState() { + if(bindStatus==BindStatus.BIND_SUCCEED&& openStatus==OpenStatus.Open){ + sendMessage2Driver(true,"扫码枪打开状态") + }else{ + if(bindStatus==BindStatus.BIND_SUCCEED&& openStatus==OpenStatus.Unopen){ + sendMessage2Driver(false,"绑定成功、打开失败") + }else{ + dispatchMsg(bindStatus) + } + } + } + + private fun dispatchMsg(newV: BindStatus) { + when (newV) { + BindStatus.BIND_FAILURE_UNINSTALLED -> { + // 服务绑定失败:未安装串口服务端APP + sendMessage2Driver(false,"服务绑定失败:未安装串口服务端APP") + } + BindStatus.BIND_FAILURE_NO_PERMISSION_NOT_FOUND -> { + // 服务绑定失败:没有绑定权限或找不到服务(如果是此状态,基本上安装后就可以找到,主要就是权限问题) + sendMessage2Driver(false,"服务绑定失败:没有绑定权限或找不到服务") + } + BindStatus.EXCEPTION -> { + // 扫码枪open错误 + sendMessage2Driver(false,"扫码枪打开错误") + } + BindStatus.NOTHING -> {} + else -> {} + } + } + + } enum class BindStatus { diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/StateChangeListener.kt b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/StateChangeListener.kt index cbe1b13a45..12698fa45e 100644 --- a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/StateChangeListener.kt +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/StateChangeListener.kt @@ -2,5 +2,5 @@ package com.mogo.och.shuttle.passenger.manager.scnner interface StateChangeListener { fun stateChange(newBindValue:BindStatus,newOpentValue:OpenStatus){} - fun parseData(params:MutableMap){} + fun parseData(params: MutableMap, payload: String?){} } \ No newline at end of file diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/model/TicketModel.kt b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/model/TicketModel.kt index cfef34d5b8..14bf2cd93a 100644 --- a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/model/TicketModel.kt +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/model/TicketModel.kt @@ -1,10 +1,13 @@ package com.mogo.och.shuttle.passenger.model import com.mogo.commons.AbsMogoApplication +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P +import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.och.common.module.bean.dpmsg.WriteOffMsg +import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.debug.DebugDataDispatch import com.mogo.och.shuttle.passenger.bean.request.PassengerWriteOffRequest import com.mogo.och.shuttle.passenger.bean.response.PassengerWriteOffResponse import com.mogo.och.shuttle.passenger.manager.scnner.ScannerManager @@ -24,17 +27,18 @@ object TicketModel : StateChangeListener { } - override fun parseData(params: MutableMap) { + override fun parseData(params: MutableMap, payload: String?) { val orderNo = params["orderNo"] val uid = params["uid"] if(orderNo is String && uid is String){ writeOffTicket(orderNo,uid) }else{ // 通知司机屏二维码错误 + sendMessage2Driver("参数错误:${payload}") } } - fun writeOffTicket(orderNo: String, uid: String) { + private fun writeOffTicket(orderNo: String, uid: String) { val passengerWriteOffRequest = PassengerWriteOffRequest(orderNo, uid) PassengerServiceManager.writeOffTicket(AbsMogoApplication.getApp(), passengerWriteOffRequest, @@ -44,14 +48,42 @@ object TicketModel : StateChangeListener { val ticketInfo = "核销成功:票种名称:${data.data.ticketName},车票数量:${data.data.ticketSize},预留手机号:${data.data.phone},时间:${data.data.remainingTimes}" CallerLogger.d(M_BUS_P + TAG, ticketInfo) + sendMessage2DriverSuccess(data.data) } override fun onFail(code: Int, msg: String?) { CallerLogger.d(M_BUS_P + TAG, "核销失败 ${code}-----${msg}") + when (code) { + 6002 -> {sendMessage2Driver("同一订单核销间隔时间需大于5分钟")} + 1009 -> {sendMessage2Driver("车票所选乘车日期非今日")} + 1006 -> {sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合")} + 1008 -> {sendMessage2Driver("车票剩余可用次数为0")} + 6001 -> {sendMessage2Driver("二维码已过期")} + 1012 -> {sendMessage2Driver("当前用户下单路线非当前的车辆所属公司")} + else -> {} + } } } ) } + private fun sendMessage2Driver(message:String){ + val msg = WriteOffMsg(false, "", 0, "", message) + CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) + CallerTelematicManager.sendMsgToServer( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + } + private fun sendMessage2DriverSuccess(message: PassengerWriteOffResponse.Result){ + val msg = WriteOffMsg(true, message.phone, message.ticketSize, message.ticketName, "") + CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) + CallerTelematicManager.sendMsgToServer( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + } + + } \ No newline at end of file diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/PassengerServiceManager.kt b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/PassengerServiceManager.kt index 8586f35e0f..555c6de886 100644 --- a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/PassengerServiceManager.kt +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/PassengerServiceManager.kt @@ -93,7 +93,7 @@ object PassengerServiceManager { ) { ticketInfo.sn = driverAppSn if(StringUtils.isEmpty(driverAppSn)){ - ToastUtils.showShort("请链接司机屏") + ToastUtils.showShort("请链接司机屏${ticketInfo.uid}") return } mShuttleBusPassengerServiceApi.writeOffTicket( diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt index afa0366d96..05be71b547 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt @@ -556,7 +556,7 @@ enum class EventTypeEnumNew( "VERIFICATION_SUCCESSFUL", "验票成功", "%s张%s票(如全程票)", - R.drawable.icon_warning_v2x_optimal_route, + R.drawable.icon_warning_v2x_verification_successful, "%s张%s票(如全程票)", "%s张%s票(如全程票)" ), @@ -1246,7 +1246,7 @@ enum class EventTypeEnumNew( } //核销成功 TYPE_VERIFICATION_SUCCESSFUL.poiType->{ - R.drawable.icon_warning_v2x_optimal_route + R.drawable.icon_warning_v2x_verification_successful } //核销异常 TYPE_ABNORMAL_VERIFICATION.poiType->{ @@ -1254,7 +1254,7 @@ enum class EventTypeEnumNew( } //设备状态正常 TYPE_DEVICE_STATUS_NORMAL.poiType->{ - R.drawable.icon_default + R.drawable.icon_warning_v2x_verification_successful } //设备状态异常 TYPE_DEVICE_STATUS_ABNORMAL.poiType->{ diff --git a/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_v2x_verification_successful.png b/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_v2x_verification_successful.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7b293b90817473c775392fe3ad51d4d7f11d24 GIT binary patch literal 4933 zcmV-L6T0k)P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91c%TCS1ONa40RR91cmMzZ00`n$?f?K1uSrBfRCodHoePi@$9c!U+1)$1 z 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 DCiI-Y literal 0 HcmV?d00001