[shuttle]
[核销接驳票 司机屏处理]
This commit is contained in:
yangyakun
2024-01-16 19:16:57 +08:00
parent d1112d3d96
commit b1ef57f081
6 changed files with 211 additions and 109 deletions

View File

@@ -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(

View File

@@ -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;
}

View File

@@ -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<SystemMsg> mMogoOnMessageListener =
new IMogoOnMessageListener<SystemMsg>() {
@Override
@@ -371,23 +289,23 @@ public class OrderModel {
}
};
private final IMogoOnMessageListener<WriteOffPassenger> mWriteOffPassengeOnMessageListener =
new IMogoOnMessageListener<WriteOffPassenger>() {
@Override
public Class<WriteOffPassenger> 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<WriteOffPassenger> mWriteOffPassengeOnMessageListener =
// new IMogoOnMessageListener<WriteOffPassenger>() {
// @Override
// public Class<WriteOffPassenger> 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;

View File

@@ -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<WriteOffPassenger> {
private val TAG = "TicketModel"
private val currenStartList = mutableListOf<String>()
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<WriteOffPassenger> {
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,
""
)
)
)
}
}

View File

@@ -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,

View File

@@ -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,