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 0000000000..ed7b293b90 Binary files /dev/null and b/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_v2x_verification_successful.png differ