[5.2.8]
[shuttle_p] [核销接驳票 异常处理和消息通知]
This commit is contained in:
@@ -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) //核销设备信息
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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<SystemMsg> mMogoOnMessageListener =
|
||||
new IMogoOnMessageListener<SystemMsg>() {
|
||||
@Override
|
||||
|
||||
@@ -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<String, StateChangeListener> =
|
||||
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<String, Any>()
|
||||
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<out String>?) {
|
||||
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<String, Any>()
|
||||
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 {
|
||||
|
||||
@@ -2,5 +2,5 @@ package com.mogo.och.shuttle.passenger.manager.scnner
|
||||
|
||||
interface StateChangeListener {
|
||||
fun stateChange(newBindValue:BindStatus,newOpentValue:OpenStatus){}
|
||||
fun parseData(params:MutableMap<String, Any>){}
|
||||
fun parseData(params: MutableMap<String, Any>, payload: String?){}
|
||||
}
|
||||
@@ -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<String, Any>) {
|
||||
override fun parseData(params: MutableMap<String, Any>, 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()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -93,7 +93,7 @@ object PassengerServiceManager {
|
||||
) {
|
||||
ticketInfo.sn = driverAppSn
|
||||
if(StringUtils.isEmpty(driverAppSn)){
|
||||
ToastUtils.showShort("请链接司机屏")
|
||||
ToastUtils.showShort("请链接司机屏${ticketInfo.uid}")
|
||||
return
|
||||
}
|
||||
mShuttleBusPassengerServiceApi.writeOffTicket(
|
||||
|
||||
@@ -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->{
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
Reference in New Issue
Block a user