From b1ef57f081c0b4bc255ae51e423f4cd09ddd7063 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 16 Jan 2024 19:16:57 +0800 Subject: [PATCH] =?UTF-8?q?[5.2.8]=20[shuttle]=20[=E6=A0=B8=E9=94=80?= =?UTF-8?q?=E6=8E=A5=E9=A9=B3=E7=A5=A8=20=E5=8F=B8=E6=9C=BA=E5=B1=8F?= =?UTF-8?q?=E5=A4=84=E7=90=86]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/common/module/bean/dpmsg/DataBean.kt | 3 +- .../mogo/och/bus/bean/WriteOffPassenger.java | 1 + .../com/mogo/och/bus/model/OrderModel.java | 124 ++---------- .../com/mogo/och/bus/model/TicketModel.kt | 182 ++++++++++++++++++ .../manager/scnner/ScannerManager.kt | 2 +- .../shuttle/passenger/model/TicketModel.kt | 8 +- 6 files changed, 211 insertions(+), 109 deletions(-) create mode 100644 OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/TicketModel.kt 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 fcbcceb8d4..81588d4e85 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 @@ -89,7 +89,8 @@ data class WriteOffMsg( val phone: String?, val ticketSize: Int?, val ticketName:String?, - val failedReason:String? + val failedReason:String?, + val orderNo: String? ): BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO.type) data class WriteOffDevicesMsg( diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/bean/WriteOffPassenger.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/bean/WriteOffPassenger.java index 11ac15e305..dd9f9f67c6 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/bean/WriteOffPassenger.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/bean/WriteOffPassenger.java @@ -9,6 +9,7 @@ import java.io.Serializable; public class WriteOffPassenger implements Serializable { public String phone; public String orderNo; + public String ticketName; public int passengerSize; public long writeOffTime; } 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 90b6cc0a4d..6d87cef3d3 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 @@ -184,9 +184,10 @@ public class OrderModel { OCHSocketMessageManager.msgMonitorType, mMogoOnMessageListener); - OCHSocketMessageManager.INSTANCE.registerSocketMessageListener(//监听核销乘客 - OCHSocketMessageManager.msgWriteOffPassengerType, - mWriteOffPassengeOnMessageListener); +// OCHSocketMessageManager.INSTANCE.registerSocketMessageListener(//监听核销乘客 +// OCHSocketMessageManager.msgWriteOffPassengerType, +// mWriteOffPassengeOnMessageListener); + TicketModel.INSTANCE.load(); AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); @@ -251,95 +252,12 @@ public class OrderModel { 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 @@ -371,23 +289,23 @@ public class OrderModel { } }; - private final IMogoOnMessageListener mWriteOffPassengeOnMessageListener = - new IMogoOnMessageListener() { - @Override - public Class target() { - return WriteOffPassenger.class; - } - - @Override - public void onMsgReceived(WriteOffPassenger passenger) { - //进行播报 - CallerLogger.i(M_BUS + TAG,"passenger = "+ GsonUtil.jsonFromObject(passenger)); - if (passenger != null && passenger.passengerSize == 0) return; - if (mPassengerCallback != null){ - mPassengerCallback.playPassenger(passenger); - } - } - }; +// private final IMogoOnMessageListener mWriteOffPassengeOnMessageListener = +// new IMogoOnMessageListener() { +// @Override +// public Class target() { +// return WriteOffPassenger.class; +// } +// +// @Override +// public void onMsgReceived(WriteOffPassenger passenger) { +// //进行播报 +// CallerLogger.i(M_BUS + TAG,"passenger = "+ GsonUtil.jsonFromObject(passenger)); +// if (passenger != null && passenger.passengerSize == 0) return; +// if (mPassengerCallback != null){ +// mPassengerCallback.playPassenger(passenger); +// } +// } +// }; public void setAdasStatusCallback(IBusADASStatusCallback callback){ this.mADASStatusCallback = callback; diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/TicketModel.kt b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/TicketModel.kt new file mode 100644 index 0000000000..8f1c7a8c6c --- /dev/null +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/TicketModel.kt @@ -0,0 +1,182 @@ +package com.mogo.och.bus.model + +import com.elegant.network.utils.GsonUtil +import com.mogo.aicloud.services.socket.IMogoOnMessageListener +import com.mogo.commons.voice.AIAssist +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.saveMsgBox +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.och.bus.bean.WriteOffPassenger +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.WriteOffDevicesMsg +import com.mogo.och.common.module.bean.dpmsg.WriteOffMsg +import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager +import com.mogo.och.common.module.biz.constant.OchCommonConst +import com.mogo.och.common.module.voice.VoiceNotice.showNotice + +object TicketModel : IReceivedMsgListener, IMogoOnMessageListener { + + private val TAG = "TicketModel" + + private val currenStartList = mutableListOf() + + init { + + //监听乘客屏发来的消息 + CallerTelematicListenerManager.addListener(TAG, this) + OCHSocketMessageManager.registerSocketMessageListener( //监听核销乘客 + OCHSocketMessageManager.msgWriteOffPassengerType, + this + ) + } + + fun load(){ + + } + + // 收到局域网的核验信息 + override fun onReceivedMsg(type: Int, byteArray: ByteArray) { + if (OchCommonConst.BUSINESS_STRING == type) { + d(SceneConstant.M_BUS + BaseDPMsg.TAG, String(byteArray)) + val msg = GsonUtils.fromJson(String(byteArray), BaseDPMsg::class.java) + if (msg != null) { + if (msg.type == DPMsgType.TYPE_WRITEOFF_INFO.type) { + val writeOffMsg = GsonUtils.fromJson(String(byteArray), WriteOffMsg::class.java) + receiveWrteOffInfo(writeOffMsg) + } else if (msg.type == DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type) { + val writeOffMsg = GsonUtils.fromJson(String(byteArray), WriteOffDevicesMsg::class.java) + receiveWrteOffDevicesInfo(writeOffMsg) + } + } + } + } + + override fun target(): Class { + return WriteOffPassenger::class.java + } + + // 收到服务器的核验信息 + override fun onMsgReceived(passenger: WriteOffPassenger?) { + //进行播报 + i(SceneConstant.M_BUS + TAG, "passenger = " + GsonUtil.jsonFromObject(passenger)) + if(passenger==null||passenger.passengerSize==0){ + return + } + playPassenger( + passenger.passengerSize, + passenger.phone ?: "", + passenger.ticketName?:"", + passenger.orderNo?:"" + ) + } + + private fun receiveWrteOffInfo(writeOffMsg: WriteOffMsg?) { + if(writeOffMsg!=null) { + if (writeOffMsg.isScuccess != null) { + if (writeOffMsg.isScuccess == true) { // 核验成功 + if(writeOffMsg.ticketSize==null||writeOffMsg.ticketSize==0){ + return + } + playPassenger( + writeOffMsg.ticketSize?:0, + writeOffMsg.phone ?: "", + writeOffMsg.ticketName ?: "", + writeOffMsg.orderNo?:"" + ) + } else { // 核验失败 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, V2XMsg( + EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.poiType, + writeOffMsg.failedReason ?: "", + EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.tts, + "" + ) + ) + ) + } + } + } + } + + private fun receiveWrteOffDevicesInfo(writeOffMsg: WriteOffDevicesMsg) { + if (writeOffMsg.isConnectScanner != null) { + val reason = if (writeOffMsg.reason == null) "" else writeOffMsg.reason!! + if (writeOffMsg.isConnectScanner==true) { // 链接成功 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.poiType, + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.tts, + "" + ) + ) + ) + } else { // 核验失败 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.poiType, + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.tts, + "" + ) + ) + ) + } + } + } + + private fun playPassenger(ticketSize: Int,phone:String,ticketName:String,orderNo:String) { + + val key = "${orderNo}_${phone}_$ticketSize" + if (currenStartList.contains(key)) { + return + } + if(currenStartList.size>1000){ + currenStartList.clear() + } + currenStartList.add(key) + + if (ticketSize > 1) { //多人播报 "x人" ---》x人核验通过 + showNotice(ticketSize.toString() + "人核验通过", AIAssist.LEVEL3) + OrderModel.getInstance().sendWriteOffNumToClient(ticketSize.toString() + "人核验通过") + } else { //是 1 播放 "滴" 2022.11.09 改为: "核验通过" + showNotice("核验通过", AIAssist.LEVEL3) + OrderModel.getInstance().sendWriteOffNumToClient("核验通过") + } + + var tempPhone = phone + if (tempPhone.length > 8) { + //截取电话号码前三位 + val phoneNumPre = tempPhone.substring(0, 3) + //截取电话号码后四位 + val phoneNumFix = tempPhone.substring(7) + tempPhone = "$phoneNumPre****$phoneNumFix" + } + val content = "${ticketSize}张 $ticketName $tempPhone" + saveMsgBox(MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + EventTypeEnumNew.TYPE_VERIFICATION_SUCCESSFUL.poiType, + content, + EventTypeEnumNew.TYPE_VERIFICATION_SUCCESSFUL.tts, + "" + ) + ) + ) + } + +} \ No newline at end of file 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 2ae8465486..7cc7e56956 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 @@ -198,7 +198,7 @@ object ScannerManager : OnSerialPortListener, OnDeviceVerificationListener(), IR * 打开设备后数据异常 */ private fun sendMessage2DriverWriteOffInfo(message:String){ - val msg = WriteOffMsg(false, "", 0, "", message) + val msg = WriteOffMsg(false, "", 0, "", message,"") CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) CallerTelematicManager.sendMsgToServer( OchCommonConst.BUSINESS_STRING, 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 6e4944fae1..fce605296e 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 @@ -49,7 +49,7 @@ 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) + sendMessage2DriverSuccess(data.data,orderNo) } override fun onFail(code: Int, msg: String?) { @@ -70,7 +70,7 @@ object TicketModel : StateChangeListener { } private fun sendMessage2Driver(message:String){ - val msg = WriteOffMsg(false, "", 0, "", message) + val msg = WriteOffMsg(false, "", 0, "", "",message) CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) CallerTelematicManager.sendMsgToServer( OchCommonConst.BUSINESS_STRING, @@ -78,8 +78,8 @@ object TicketModel : StateChangeListener { ) ScannerChainLogManager.writeChainLog(TAG +"sendMessage2Driver","核验失败:message:${message}") } - private fun sendMessage2DriverSuccess(message: PassengerWriteOffResponse.Result){ - val msg = WriteOffMsg(true, message.phone, message.ticketSize, message.ticketName, "") + private fun sendMessage2DriverSuccess(message: PassengerWriteOffResponse.Result,orderNo: String){ + val msg = WriteOffMsg(true, message.phone, message.ticketSize, message.ticketName, "",orderNo) CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) CallerTelematicManager.sendMsgToServer( OchCommonConst.BUSINESS_STRING,