diff --git a/OCH/bus/passenger/src/main/res/m2/layout/bus_p_m2_view_status_bar.xml b/OCH/bus/passenger/src/main/res/m2/layout/bus_p_m2_view_status_bar.xml index 163bee4257..8c4a96d678 100644 --- a/OCH/bus/passenger/src/main/res/m2/layout/bus_p_m2_view_status_bar.xml +++ b/OCH/bus/passenger/src/main/res/m2/layout/bus_p_m2_view_status_bar.xml @@ -19,7 +19,7 @@ android:layout_marginStart="@dimen/dp_40" /> - 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..47a51d7d6f --- /dev/null +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/TicketModel.kt @@ -0,0 +1,183 @@ +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 { // 核验失败 + showNotice("验票失败,${writeOffMsg.failedReason ?: ""}", AIAssist.LEVEL3) + 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/driver/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt index 741fd6480e..0bf345177a 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt @@ -62,10 +62,16 @@ class SwitchLineAdapter( line.taskList, object : SwitchLineTaskAdapter.TaskItemClickListener { override fun onItemClick(position: Int,isCheck:Boolean) { - if(isCheck) { - checkLineId = line.lineId - checkTaskId = line.taskList[position].id - }else{ + try { + if(isCheck) { + checkLineId = line.lineId + checkTaskId = line.taskList[position].id + }else{ + checkLineId=-1 + checkTaskId=-1 + } + }catch (e:Exception){ + e.printStackTrace() checkLineId=-1 checkTaskId=-1 } diff --git a/OCH/shuttle/passenger/build.gradle b/OCH/shuttle/passenger/build.gradle index db47636500..bdaac7108b 100644 --- a/OCH/shuttle/passenger/build.gradle +++ b/OCH/shuttle/passenger/build.gradle @@ -86,6 +86,8 @@ dependencies { implementation rootProject.ext.dependencies.rxandroid implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.amapnavi3dmap + // 串口链接 + implementation rootProject.ext.dependencies.serialport implementation project(":OCH:common:common") compileOnly project(":libraries:mogo-map") implementation project(':core:mogo-core-res') diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/MogoOCHShuttlePassenger.kt b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/MogoOCHShuttlePassenger.kt index dbfbc2bd11..4a3719d191 100644 --- a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/MogoOCHShuttlePassenger.kt +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/MogoOCHShuttlePassenger.kt @@ -14,6 +14,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils import com.mogo.och.shuttle.passenger.constant.BusPassengerConst import com.mogo.och.common.module.wigets.media.MediaPlayerActivity +import com.mogo.och.shuttle.passenger.model.TicketModel import com.mogo.och.shuttle.passenger.ui.BusPassengerRouteFragment import com.mogo.och.shuttle.passenger.ui.PM2BaseFragment @@ -37,6 +38,7 @@ class MogoOCHShuttlePassenger : IMoGoFunctionProvider { MultiDisplayUtils.startActWithSecond(it, MediaPlayerActivity::class.java) } } + TicketModel.load() return null } diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2QueryLineRequest.java b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/request/PassengerQueryLineRequest.java similarity index 53% rename from OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2QueryLineRequest.java rename to OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/request/PassengerQueryLineRequest.java index 62594f2813..48c312b288 100644 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2QueryLineRequest.java +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/request/PassengerQueryLineRequest.java @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.passenger.bean; +package com.mogo.och.shuttle.passenger.bean.request; public /** @@ -7,10 +7,10 @@ public * * 根据车机行驶线路站点信息 */ -class PM2QueryLineRequest { +class PassengerQueryLineRequest { private String sn; - public PM2QueryLineRequest(String sn) { + public PassengerQueryLineRequest(String sn) { this.sn = sn; } } diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/request/PassengerWriteOffRequest.java b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/request/PassengerWriteOffRequest.java new file mode 100644 index 0000000000..1ff5c160a6 --- /dev/null +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/request/PassengerWriteOffRequest.java @@ -0,0 +1,50 @@ +package com.mogo.och.shuttle.passenger.bean.request; + +public +/** + * @author congtaowang + * @since 2021/3/22 + * + * 根据车机行驶线路站点信息 + */ +class PassengerWriteOffRequest { + + private String sn; + private String orderNo; + private String uid; + + public PassengerWriteOffRequest(String orderNo, String uid) { + this.orderNo = orderNo; + this.uid = uid; + } + + public PassengerWriteOffRequest(String sn, String orderNo, String uid) { + this.sn = sn; + this.orderNo = orderNo; + this.uid = uid; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getUid() { + return uid; + } + + public void setUid(String uid) { + this.uid = uid; + } +} diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2OperationStatusResponse.java b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerOperationStatusResponse.java similarity index 76% rename from OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2OperationStatusResponse.java rename to OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerOperationStatusResponse.java index a39d34927b..b6781937bb 100644 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2OperationStatusResponse.java +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerOperationStatusResponse.java @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.passenger.bean; +package com.mogo.och.shuttle.passenger.bean.response; import com.mogo.eagle.core.data.BaseData; @@ -8,7 +8,7 @@ import com.mogo.eagle.core.data.BaseData; * * 小巴车运营状态返回参数 */ -public class PM2OperationStatusResponse extends BaseData { +public class PassengerOperationStatusResponse extends BaseData { public Result data; diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2RoutesResponse.java b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerRoutesResponse.java similarity index 83% rename from OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2RoutesResponse.java rename to OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerRoutesResponse.java index cc302cdca5..3b9fbe3ec1 100644 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2RoutesResponse.java +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerRoutesResponse.java @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.passenger.bean; +package com.mogo.och.shuttle.passenger.bean.response; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.data.bean.BusRoutesResult; @@ -8,7 +8,7 @@ import com.mogo.och.data.bean.BusRoutesResult; * * @author tongchenfei */ -public class PM2RoutesResponse extends BaseData { +public class PassengerRoutesResponse extends BaseData { private BusRoutesResult data; public BusRoutesResult getResult() { diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerWriteOffResponse.kt b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerWriteOffResponse.kt new file mode 100644 index 0000000000..d46146c23c --- /dev/null +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerWriteOffResponse.kt @@ -0,0 +1,13 @@ +package com.mogo.och.shuttle.passenger.bean.response + +import com.mogo.eagle.core.data.BaseData + + +data class PassengerWriteOffResponse(val data: Result?) : BaseData(){ + data class Result( + val phone: String?, + val ticketSize: Int?, + val ticketName: String?, + val remainingTimes: Long? + ) +} diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerChainLogManager.kt b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerChainLogManager.kt new file mode 100644 index 0000000000..abc506434e --- /dev/null +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerChainLogManager.kt @@ -0,0 +1,49 @@ +package com.mogo.och.shuttle.passenger.manager.scnner + +import android.text.TextUtils +import com.mogo.commons.debug.DebugConfig +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.commons.utils.MogoAnalyticUtils +import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.deva.chain.ChainConstant +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.DateTimeUtils +import com.zhjt.service.chain.ChainLog + +object ScannerChainLogManager { + + private val TAG = ScannerChainLogManager::class.java.simpleName + + const val EVENT_KEY_INFE_WITH_CHANGE = "event_key_och_scanner_info" + + /** + * @param Info 事件 + * @param changeInfo 数据 + */ + @ChainLog( + linkChainLog = ChainConstant.CHAIN_TYPE_OCH, + linkCode = ChainConstant.CHAIN_SOURCE_OCH, + nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_COMMON_DISTANCE, + paramIndexes = [0,1] + ) + @JvmStatic + fun writeChainLog(info: String, changeInfo: String,upload:Boolean = true,eventID:String=EVENT_KEY_INFE_WITH_CHANGE) { + try { + d(SceneConstant.M_OCHCOMMON + TAG, info+changeInfo) + if(upload) { + val plateNum = AppConfigInfo.plateNumber + val params = HashMap() + params["sn"] = SharedPrefsMgr.getInstance().sn + params["env"] = DebugConfig.getNetMode() + params["plate_number"] = if (TextUtils.isEmpty(plateNum)) "" else plateNum + params["time"] = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd_HH_mm_ss) + params[info] = changeInfo + MogoAnalyticUtils.track(eventID, params) + } + }catch (e:Exception){ + e.printStackTrace() + } + } + +} \ 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 new file mode 100644 index 0000000000..44980dcce3 --- /dev/null +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerManager.kt @@ -0,0 +1,262 @@ +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.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.util.concurrent.ConcurrentHashMap +import kotlin.properties.Delegates + + +object ScannerManager : OnSerialPortListener, OnDeviceVerificationListener(), IReceivedMsgListener { + + private val TAG = "ScannerManager" + + private var serialPortManager = SerialPortManager() + + 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) + } + } + } catch (e: Exception) { + CallerLogger.e(SceneConstant.M_OCHCOMMON + TAG, "扫码枪bind错误") + } + } + } + + private var openStatus: OpenStatus by Delegates.observable(OpenStatus.Unopen) { _, oldV, newV -> + if (oldV != newV) { + try { + if (stateChanageListeners.size > 0) { + stateChanageListeners.forEach { + it.value.stateChange(bindStatus, newV) + } + } + } catch (e: Exception) { + CallerLogger.e(SceneConstant.M_OCHCOMMON + TAG, "扫码枪open错误") + } + } + } + + init { + //监听司机端消息 + CallerTelematicListenerManager.addListener(TAG, this) + } + + fun addStateChangeListener(tag: String, listener: StateChangeListener) { + if (stateChanageListeners.containsKey(tag)) { + return + } + stateChanageListeners[tag] = listener + } + + fun bindService() { + serialPortManager.bindService(AbsMogoApplication.getApp(), this)//绑定服务 + } + + override fun onServiceState(serviceState: Int) { + ScannerChainLogManager.writeChainLog(TAG+"bindStatus","绑定服务结果:serviceState:${serviceState}") + when (serviceState) { + SERVICE_STATE.BIND_SUCCEED -> { + CallerLogger.d(M_BUS_P + TAG, "服务绑定成功") + bindStatus = BindStatus.BIND_SUCCEED + serialPortManager.openVerificationDevice(this) + } + SERVICE_STATE.BIND_FAILURE_UNINSTALLED -> { + CallerLogger.d(M_BUS_P + TAG, "服务绑定失败:未安装串口服务端APP") + bindStatus = BindStatus.BIND_FAILURE_UNINSTALLED + } + SERVICE_STATE.BIND_FAILURE_NO_PERMISSION_NOT_FOUND -> { + CallerLogger.d(M_BUS_P + TAG, "服务绑定失败:没有绑定权限或找不到服务(如果是此状态,基本上安装后就可以找到,主要就是权限问题)") + bindStatus = BindStatus.BIND_FAILURE_NO_PERMISSION_NOT_FOUND + } + SERVICE_STATE.EXCEPTION -> { + CallerLogger.d(M_BUS_P + TAG, "服务被异常销毁") + bindStatus = BindStatus.EXCEPTION + } + else -> {} + } + } + + // 查询串口 + override fun onFindSerialPort(paths: Array?) { + CallerLogger.d(M_BUS_P + TAG, "$paths") + ScannerChainLogManager.writeChainLog(TAG+"onFindSerialPort","查询串口:${paths}") + if(paths==null) { + 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}" + ) + ScannerChainLogManager.writeChainLog(TAG+"onSerialPortState","扫码枪是否打开: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?) { + ScannerChainLogManager.writeChainLog(TAG+"onActiveDataReceive","扫码结果:data:${data}") + 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 { + BIND_SUCCEED, BIND_FAILURE_UNINSTALLED ,BIND_FAILURE_NO_PERMISSION_NOT_FOUND,EXCEPTION,NOTHING +} + +enum class OpenStatus { + Open, Unopen +} \ No newline at end of file diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerStateView.kt b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerStateView.kt new file mode 100644 index 0000000000..a1388b6280 --- /dev/null +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerStateView.kt @@ -0,0 +1,47 @@ +package com.mogo.och.shuttle.passenger.manager.scnner + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import androidx.appcompat.widget.AppCompatImageView +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.och.common.module.R + +class ScannerStateView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : AppCompatImageView(context, attrs, defStyleAttr), StateChangeListener { + private val TAG = "ScannerStateView" + + init { + setImageResource(R.drawable.driver_connect_statis) + ScannerManager.addStateChangeListener(TAG,this) + } + + override fun stateChange(newBindValue: BindStatus, newOpentValue: OpenStatus) { + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "newBindValue = $newBindValue newOpentValue = $newOpentValue") + when (newBindValue) { + BindStatus.BIND_SUCCEED -> { + // 绑定成功 + when (newOpentValue) { + OpenStatus.Open -> { + //成功打开 + visibility = View.GONE + } + OpenStatus.Unopen -> { + // 打开失败 + setImageResource(R.drawable.driver_connect_statis) + } + } + } + else ->{ + // 绑定失败 + setImageResource(R.drawable.driver_connect_statis) + } + } + } + + +} \ No newline at end of file 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 new file mode 100644 index 0000000000..12698fa45e --- /dev/null +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/StateChangeListener.kt @@ -0,0 +1,6 @@ +package com.mogo.och.shuttle.passenger.manager.scnner + +interface StateChangeListener { + fun stateChange(newBindValue:BindStatus,newOpentValue:OpenStatus){} + 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 new file mode 100644 index 0000000000..7b87149914 --- /dev/null +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/model/TicketModel.kt @@ -0,0 +1,104 @@ +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.shuttle.passenger.bean.request.PassengerWriteOffRequest +import com.mogo.och.shuttle.passenger.bean.response.PassengerWriteOffResponse +import com.mogo.och.shuttle.passenger.manager.scnner.ScannerChainLogManager +import com.mogo.och.shuttle.passenger.manager.scnner.ScannerManager +import com.mogo.och.shuttle.passenger.manager.scnner.StateChangeListener +import com.mogo.och.shuttle.passenger.network.PassengerServiceManager + +object TicketModel : StateChangeListener { + + private const val TAG = "TicketModel" + + init { + ScannerManager.bindService() + ScannerManager.addStateChangeListener(TAG, this) + } + + fun load(){ + + } + + 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}") + } + } + + private fun writeOffTicket(orderNo: String, uid: String) { + val passengerWriteOffRequest = PassengerWriteOffRequest(orderNo, uid) + PassengerServiceManager.writeOffTicket(AbsMogoApplication.getApp(), + passengerWriteOffRequest, + object : OchCommonServiceCallback { + override fun onSuccess(data: PassengerWriteOffResponse?) { + if (data?.data == null) return + val ticketInfo = + "核销成功:票种名称:${data.data.ticketName},车票数量:${data.data.ticketSize},预留手机号:${data.data.phone},时间:${data.data.remainingTimes}" + CallerLogger.d(M_BUS_P + TAG, ticketInfo) + sendMessage2DriverSuccess(data.data,orderNo) + } + + 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 -> { + when (msg) { + "6002" -> {sendMessage2Driver("同一订单核销间隔时间需大于5分钟")} + "1009" -> {sendMessage2Driver("车票所选乘车日期非今日")} + "1006" -> {sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合")} + "1008" -> {sendMessage2Driver("车票剩余可用次数为0")} + "6001" -> {sendMessage2Driver("二维码已过期")} + "1012" -> {sendMessage2Driver("当前用户下单路线非当前的车辆所属公司")} + else -> { + sendMessage2Driver(msg?:"") + } + } + } + } + } + + } + ) + } + + 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() + ) + ScannerChainLogManager.writeChainLog(TAG +"sendMessage2Driver","核验失败:message:${message}") + } + 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, + GsonUtils.toJson(msg).toByteArray() + ) + ScannerChainLogManager.writeChainLog(TAG +"sendMessage2DriverSuccess","核验成功:message:${message}") + } + + +} \ No newline at end of file diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/BusPassengerServiceManager.kt b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/PassengerServiceManager.kt similarity index 57% rename from OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/BusPassengerServiceManager.kt rename to OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/PassengerServiceManager.kt index 2c3a4bbca9..555c6de886 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/BusPassengerServiceManager.kt +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/PassengerServiceManager.kt @@ -2,27 +2,31 @@ package com.mogo.och.shuttle.passenger.network import android.content.Context import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken -import com.mogo.och.shuttle.passenger.bean.BusPassengerRoutesResponse import com.mogo.cloud.passport.MoGoAiCloudClientConfig -import com.mogo.och.shuttle.passenger.bean.BusPassengerQueryLineRequest -import com.mogo.och.shuttle.passenger.bean.BusPassengerOperationStatusResponse import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.utilcode.util.StringUtils +import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl import com.mogo.och.common.module.biz.network.interceptor.transformTry +import com.mogo.och.shuttle.passenger.bean.request.PassengerQueryLineRequest +import com.mogo.och.shuttle.passenger.bean.request.PassengerWriteOffRequest +import com.mogo.och.shuttle.passenger.bean.response.PassengerOperationStatusResponse +import com.mogo.och.shuttle.passenger.bean.response.PassengerRoutesResponse +import com.mogo.och.shuttle.passenger.bean.response.PassengerWriteOffResponse /** * Created on 2022/3/31 */ -object BusPassengerServiceManager { +object PassengerServiceManager { private var driverSnCache = "" private var mShuttleBusPassengerServiceApi = MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( - ShettlePassengerServiceApi::class.java) + ServiceApi::class.java) /** * 获取Bus司机端的sn @@ -44,12 +48,12 @@ object BusPassengerServiceManager { */ @JvmStatic fun queryDriverSiteByCoordinate( - context: Context, callback: OchCommonServiceCallback? + context: Context, callback: OchCommonServiceCallback? ) { mShuttleBusPassengerServiceApi.queryDriverSiteByCoordinate( MoGoAiCloudClientConfig.getInstance().serviceAppId, SharedPrefsMgr.getInstance().token, - BusPassengerQueryLineRequest( + PassengerQueryLineRequest( driverAppSn ) ).transformTry() @@ -64,7 +68,7 @@ object BusPassengerServiceManager { @JvmStatic fun queryDriverOperationStatus( context: Context, - callback: OchCommonServiceCallback? + callback: OchCommonServiceCallback? ) { mShuttleBusPassengerServiceApi.queryDriverOperationStatus( MoGoAiCloudClientConfig.getInstance().serviceAppId, @@ -75,4 +79,30 @@ object BusPassengerServiceManager { .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus")) } + + /** + * 查询司机端出车收车状态,以及车牌号 + * @param context + * @param callback + */ + @JvmStatic + fun writeOffTicket( + context: Context, + ticketInfo: PassengerWriteOffRequest, + callback: OchCommonServiceCallback?, + ) { + ticketInfo.sn = driverAppSn + if(StringUtils.isEmpty(driverAppSn)){ + ToastUtils.showShort("请链接司机屏${ticketInfo.uid}") + return + } + mShuttleBusPassengerServiceApi.writeOffTicket( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + ticketInfo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus")) + + } } \ No newline at end of file diff --git a/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/ServiceApi.java b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/ServiceApi.java new file mode 100644 index 0000000000..b1cd8187a1 --- /dev/null +++ b/OCH/shuttle/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/ServiceApi.java @@ -0,0 +1,47 @@ +package com.mogo.och.shuttle.passenger.network; + +import com.mogo.och.shuttle.passenger.bean.request.PassengerQueryLineRequest; +import com.mogo.och.shuttle.passenger.bean.request.PassengerWriteOffRequest; +import com.mogo.och.shuttle.passenger.bean.response.PassengerOperationStatusResponse; +import com.mogo.och.shuttle.passenger.bean.response.PassengerRoutesResponse; +import com.mogo.och.shuttle.passenger.bean.response.PassengerWriteOffResponse; + +import io.reactivex.Observable; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Headers; +import retrofit2.http.POST; +import retrofit2.http.Query; + +/** + * Created on 2022/3/31 + * + * Bus乘客端接口定义 + */ +public interface ServiceApi { + /** + * 查询bus司机端绑定路线 + * @return 接口返回数据 + */ + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @POST( "/och-shuttle-cabin/api/business/v1/passenger/lineDataWithDriver/query" ) + Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Body PassengerQueryLineRequest request); + + /** + * 查询司机端的登陆状态 + * @param sn + * @return + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) +// @GET("/autopilot-car-hailing/car/v2/driver/bus/passenger/takeOrderStatus/query") + @GET("/och-shuttle-cabin/api/business/v1/passenger/loginStatus") + Observable queryDriverOperationStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); + + /** + * 查询司机端的登陆状态 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/och-vehicle/api/scanner/device/writeOff") + Observable writeOffTicket(@Header ("appId") String appId, @Header("ticket") String ticket, @Body PassengerWriteOffRequest request); +} diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerOperationStatusResponse.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerOperationStatusResponse.java deleted file mode 100644 index b5d3da4997..0000000000 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerOperationStatusResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.mogo.och.shuttle.passenger.bean; - -import com.mogo.eagle.core.data.BaseData; - -/** - * @author congtaowang - * @since 2021/3/22 - * - * 小巴车运营状态返回参数 - */ -public class BusPassengerOperationStatusResponse extends BaseData { - - public Result data; - - public static class Result { - private String sn; //司机屏sn - private String phone; //司机手机号 - public String plateNumber; //车牌号 - public int driverStatus;//0:已收车,1:已出车 - } -} diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerQueryLineRequest.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerQueryLineRequest.java deleted file mode 100644 index c1d06830e5..0000000000 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerQueryLineRequest.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.mogo.och.shuttle.passenger.bean; - -public -/** - * @author congtaowang - * @since 2021/3/22 - * - * 根据车机行驶线路站点信息 - */ -class BusPassengerQueryLineRequest { - - private String sn; - public BusPassengerQueryLineRequest(String sn) { - this.sn = sn; - } -} diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerRoutesResponse.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerRoutesResponse.java deleted file mode 100644 index cf8b7ed6f6..0000000000 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerRoutesResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.mogo.och.shuttle.passenger.bean; - -import com.mogo.eagle.core.data.BaseData; -import com.mogo.och.data.bean.BusRoutesResult; - -/** - * 网约车小巴路线接口请求响应结果 返回的是对应司机屏的线路信息 - * - * @author tongchenfei - */ -public class BusPassengerRoutesResponse extends BaseData { - private BusRoutesResult data; - - public BusRoutesResult getResult() { - return data; - } - - public void setResult(BusRoutesResult data) { - this.data = data; - } - - @Override - public String toString() { - return "OchBusRoutesResponse{" + - "data=" + data + - '}'; - } - -} diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerRoutesResult.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerRoutesResult.java deleted file mode 100644 index fc2b345648..0000000000 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerRoutesResult.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.mogo.och.shuttle.passenger.bean; - -import java.util.List; -import java.util.Objects; - -/** - * 网约车小巴路线接口返回接口数据封装 - * - * @author tongchenfei - */ -public class BusPassengerRoutesResult { - private List sites; - private int lineId; - private String name; //线路名称 - private int lineType; //线路类型,0:环形 - private String description; - private int status; - private String runningDur; //运营时间 - private long taskTime; //线路时间班次 - private long writeVersion;//更新时间戳 - - public List getSites() { - return sites; - } - - public int getLineId() { - return lineId; - } - - public String getName() { - return name; - } - - public int getLineType() { - return lineType; - } - - public String getDescription() { - return description; - } - - public int getStatus() { - return status; - } - - public String getRunningDur() { - return runningDur; - } - - public long getWriteVersion() { - return writeVersion; - } - - @Override - public String toString() { - return "BusPassengerRoutesResult{" + - "sites=" + sites + - ", lineId=" + lineId + - ", name='" + name + '\'' + - ", lineType=" + lineType + - ", description='" + description + '\'' + - ", status=" + status + - ", writeVersion="+ writeVersion+ - ", runningDur='" + runningDur + '\'' + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - BusPassengerRoutesResult that = (BusPassengerRoutesResult) o; - return lineId == that.lineId - && lineType == that.lineType - && status == that.status - && sites.equals(that.sites) - && name.equals(that.name) - && runningDur.equals(that.runningDur); - } - - @Override - public int hashCode() { - return Objects.hash(sites, lineId, name, lineType, description, status, runningDur); - } -} diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerStation.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerStation.java deleted file mode 100644 index 6a512d1e1b..0000000000 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/bean/BusPassengerStation.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.mogo.och.shuttle.passenger.bean; - -import java.util.Objects; - -/** - * 单个网约车小巴车站信息 - * - * @author wangmingjun - */ -public class BusPassengerStation { - - private String name; - private String description; - private String cityCode; - private double lon; //高精坐标 - private double lat; //高精坐标 - private double gcjLon; //高德坐标 - private double gcjLat; //高德坐标 - private int businessType; //站点类型,9:taxi,10:bus - private int status; - private int siteId; - private int seq; - private int drivingStatus;//行驶信息,0初始值;1已经过;2当前站;3未到站 - private int ifStop = 1; // 是否需要停靠、1需要、0不需要 // TODO: 2021/10/19 原来站点里有设计是否需要停靠字段,现设计暂无,默认都需要停靠 - private boolean leaving; - - public void setName(String name) { - this.name = name; - } - - public void setDescription(String description) { - this.description = description; - } - - public void setCityCode(String cityCode) { - this.cityCode = cityCode; - } - - public void setLon(double lon) { - this.lon = lon; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public void setBusinessType(int businessType) { - this.businessType = businessType; - } - - public void setStatus(int status) { - this.status = status; - } - - public void setSiteId(int siteId) { - this.siteId = siteId; - } - - public void setSeq(int seq) { - this.seq = seq; - } - - public void setDrivingStatus(int drivingStatus) { - this.drivingStatus = drivingStatus; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public String getCityCode() { - return cityCode; - } - - public double getGcjLon() { - return gcjLon; - } - - public double getGcjLat() { - return gcjLat; - } - - public int getBusinessType() { - return businessType; - } - - public int getStatus() { - return status; - } - - public int getSiteId() { - return siteId; - } - - public int getSeq() { - return seq; - } - - public int getDrivingStatus() { - return drivingStatus; - } - - public double getLon() { - return lon; - } - - public double getLat() { - return lat; - } - - public void setIfStop(int ifStop) { - this.ifStop = ifStop; - } - - public int getIfStop() { - return ifStop; - } - - public void setLeaving(boolean leaving) { - this.leaving = leaving; - } - - public boolean isLeaving() { - return leaving; - } - - @Override - public String toString() { - return "OchBusStation{" + - "name='" + name + '\'' + - ", description='" + description + '\'' + - ", cityCode='" + cityCode + '\'' + - ", lon=" + lon + - ", lat=" + lat + - ", businessType=" + businessType + - ", status=" + status + - ", siteId=" + siteId + - ", seq=" + seq + - ", drivingStatus=" + drivingStatus + - ", ifStop=" + ifStop + - ", leaving=" + leaving + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - BusPassengerStation that = (BusPassengerStation) o; - return Double.compare(that.lon, lon) == 0 - && Double.compare(that.lat, lat) == 0 - && Double.compare(that.gcjLon, gcjLon) == 0 - && Double.compare(that.gcjLat, gcjLat) == 0 - && businessType == that.businessType - && status == that.status - && siteId == that.siteId - && seq == that.seq - && drivingStatus == that.drivingStatus - && ifStop == that.ifStop - && leaving == that.leaving - && Objects.equals(name, that.name) - && Objects.equals(cityCode, that.cityCode); - } - - @Override - public int hashCode() { - return Objects.hash(name, description, cityCode, lon, lat, gcjLon, gcjLat, businessType, status, siteId, seq, drivingStatus, ifStop, leaving); - } -} diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/model/BusPassengerModel.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/model/BusPassengerModel.java index cef59202c7..0c0e1574e8 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/model/BusPassengerModel.java +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/model/BusPassengerModel.java @@ -28,8 +28,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant; import com.mogo.eagle.core.utilcode.util.GsonUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.och.shuttle.passenger.R; -import com.mogo.och.shuttle.passenger.bean.BusPassengerOperationStatusResponse; -import com.mogo.och.shuttle.passenger.bean.BusPassengerRoutesResponse; import com.mogo.och.common.module.bean.dpmsg.AppConnectMsg; import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg; import com.mogo.och.common.module.bean.dpmsg.DPMsgType; @@ -52,6 +50,8 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.commons.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.NetworkUtils; +import com.mogo.och.shuttle.passenger.bean.response.PassengerOperationStatusResponse; +import com.mogo.och.shuttle.passenger.bean.response.PassengerRoutesResponse; import com.mogo.och.shuttle.passenger.callback.IBusPassegerDriverStatusCallback; import com.mogo.och.shuttle.passenger.callback.IBusPassengerADASStatusCallback; import com.mogo.och.shuttle.passenger.callback.IBusPassengerAutopilotPlanningCallback; @@ -59,7 +59,6 @@ import com.mogo.och.shuttle.passenger.callback.IBusPassengerControllerStatusCall import com.mogo.och.shuttle.passenger.callback.IBusPassengerRouteLineInfoCallback; import com.mogo.och.shuttle.passenger.constant.BusPassengerConst; import com.mogo.och.shuttle.passenger.network.BusPassengerModelLoopManager; -import com.mogo.och.shuttle.passenger.network.BusPassengerServiceManager; import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; @@ -67,6 +66,7 @@ import com.mogo.och.common.module.utils.RxUtils; import com.mogo.och.data.bean.BusRoutesResult; import com.mogo.och.data.bean.BusStationBean; import com.mogo.och.data.bean.BusTransferData; +import com.mogo.och.shuttle.passenger.network.PassengerServiceManager; import java.util.ArrayList; import java.util.List; @@ -166,10 +166,10 @@ public class BusPassengerModel { } private void queryDriverOperationStatus() { - BusPassengerServiceManager.queryDriverOperationStatus(mContext - , new OchCommonServiceCallback() { + PassengerServiceManager.queryDriverOperationStatus(mContext + , new OchCommonServiceCallback() { @Override - public void onSuccess(BusPassengerOperationStatusResponse data) { + public void onSuccess(PassengerOperationStatusResponse data) { if (data == null || data.data == null) return; if (mDriverStatusCallback != null) { CallerLogger.d( M_BUS_P + TAG, "queryDriverOperationStatus = %s", data.data.plateNumber ); @@ -196,10 +196,10 @@ public class BusPassengerModel { } public void queryDriverSiteByCoordinate(){ - BusPassengerServiceManager.queryDriverSiteByCoordinate(mContext - , new OchCommonServiceCallback() { + PassengerServiceManager.queryDriverSiteByCoordinate(mContext + , new OchCommonServiceCallback() { @Override - public void onSuccess(BusPassengerRoutesResponse data) { + public void onSuccess(PassengerRoutesResponse data) { if ( data == null || data.getResult() == null) { CallerLogger.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = null"); clearLocalRouteResult(); @@ -225,18 +225,18 @@ public class BusPassengerModel { @Override public void onError() { CallerLogger.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = onError =" - + ", sn = " +BusPassengerServiceManager.INSTANCE.getDriverAppSn()); + + ", sn = " +PassengerServiceManager.INSTANCE.getDriverAppSn()); queryDriverByLocalDriver(); } @Override public void onFail(int code, String msg) { CallerLogger.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = %s", msg - + ", sn = " +BusPassengerServiceManager.INSTANCE.getDriverAppSn()); + + ", sn = " +PassengerServiceManager.INSTANCE.getDriverAppSn()); if (code == 1003){ queryDriverOperationDelay(); } - if (BusPassengerServiceManager.INSTANCE.getDriverAppSn().isEmpty()){ + if (PassengerServiceManager.INSTANCE.getDriverAppSn().isEmpty()){ //此处拦截是为了防止过程中乘客屏和司机端断连,拿不到司机端sn, 造成请求失败去刷新了界面 return; } @@ -402,6 +402,7 @@ public class BusPassengerModel { @Override public void onReceivedServerSn(@Nullable String sn) { + Logger.d(SceneConstant.M_BUS_P + TAG, "司机屏sn:"+sn ); } @Override diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/BusPassengerModelLoopManager.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/BusPassengerModelLoopManager.java index 1a722f16b9..09f7837cf5 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/BusPassengerModelLoopManager.java +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/BusPassengerModelLoopManager.java @@ -33,8 +33,6 @@ public class BusPassengerModelLoopManager { } private Disposable mQueryLineDisposable; //心跳轮询 - private CompositeDisposable mRouteWipeDisposable; - private CompositeDisposable mCalculateRouteDisposable; //每隔2s计算一次剩余里程和时间 public void startQueryDriverLineLoop() { if (mQueryLineDisposable != null && !mQueryLineDisposable.isDisposed()) { diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/ShettlePassengerServiceApi.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/ShettlePassengerServiceApi.java deleted file mode 100644 index 411eb33a14..0000000000 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/ShettlePassengerServiceApi.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mogo.och.shuttle.passenger.network; - -import com.mogo.och.shuttle.passenger.bean.BusPassengerOperationStatusResponse; -import com.mogo.och.shuttle.passenger.bean.BusPassengerQueryLineRequest; -import com.mogo.och.shuttle.passenger.bean.BusPassengerRoutesResponse; - -import io.reactivex.Observable; -import retrofit2.http.Body; -import retrofit2.http.GET; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.POST; -import retrofit2.http.Query; - -/** - * Created on 2022/3/31 - * - * Bus乘客端接口定义 - */ -interface ShettlePassengerServiceApi { - /** - * 查询bus司机端绑定路线 - * @return 接口返回数据 - */ - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) - @POST( "/och-shuttle-cabin/api/business/v1/passenger/lineDataWithDriver/query" ) - Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Body BusPassengerQueryLineRequest request); - - /** - * 查询司机端的登陆状态 - * @param sn - * @return - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) -// @GET("/autopilot-car-hailing/car/v2/driver/bus/passenger/takeOrderStatus/query") - @GET("/och-shuttle-cabin/api/business/v1/passenger/loginStatus") - Observable queryDriverOperationStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); - - -} diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java index f16af0997b..c43544112c 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java @@ -19,7 +19,7 @@ import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.commons.storage.SharedPrefsMgr; import com.mogo.och.shuttle.passenger.R; -import com.mogo.och.shuttle.passenger.adapter.BusPassengerLineStationsAdapter; +import com.mogo.och.shuttle.passenger.ui.adapter.BusPassengerLineStationsAdapter; import com.mogo.och.shuttle.passenger.constant.BusPassengerConst; import com.mogo.och.shuttle.passenger.presenter.BaseBusPassengerPresenter; import com.mogo.och.shuttle.passenger.ui.layoutmanager.CenterLayoutManager; diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/adapter/BusPassengerLineStationsAdapter.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/adapter/BusPassengerLineStationsAdapter.java similarity index 99% rename from OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/adapter/BusPassengerLineStationsAdapter.java rename to OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/adapter/BusPassengerLineStationsAdapter.java index 15a89f2b66..ed9c65b87f 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/adapter/BusPassengerLineStationsAdapter.java +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/adapter/BusPassengerLineStationsAdapter.java @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.passenger.adapter; +package com.mogo.och.shuttle.passenger.ui.adapter; import android.content.Context; import android.text.TextUtils; diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2RoutesResult.java b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2RoutesResult.java deleted file mode 100644 index d120747432..0000000000 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2RoutesResult.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.mogo.och.shuttle.passenger.bean; - -import java.util.List; -import java.util.Objects; - -/** - * 网约车小巴路线接口返回接口数据封装 - * - * @author tongchenfei - */ -public class PM2RoutesResult { - private List sites; - private int lineId; - private String name; //线路名称 - private int lineType; //线路类型,0:环形 - private String description; - private int status; - private String runningDur; //运营时间 - private long taskTime; //线路时间班次 - - public List getSites() { - return sites; - } - - public int getLineId() { - return lineId; - } - - public String getName() { - return name; - } - - public int getLineType() { - return lineType; - } - - public String getDescription() { - return description; - } - - public int getStatus() { - return status; - } - - public String getRunningDur() { - return runningDur; - } - - @Override - public String toString() { - return "BusPassengerRoutesResult{" + - "sites=" + sites + - ", lineId=" + lineId + - ", name='" + name + '\'' + - ", lineType=" + lineType + - ", description='" + description + '\'' + - ", status=" + status + - ", runningDur='" + runningDur + '\'' + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - PM2RoutesResult that = (PM2RoutesResult) o; - return lineId == that.lineId - && lineType == that.lineType - && status == that.status - && sites.equals(that.sites) - && name.equals(that.name) - && runningDur.equals(that.runningDur); - } - - @Override - public int hashCode() { - return Objects.hash(sites, lineId, name, lineType, description, status, runningDur); - } -} diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2Station.java b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2Station.java deleted file mode 100644 index 767da50f10..0000000000 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/bean/PM2Station.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.mogo.och.shuttle.passenger.bean; - -import java.util.Objects; - -/** - * 单个网约车小巴车站信息 - * - * @author wangmingjun - */ -public class PM2Station { - - private String name; - private String description; - private String cityCode; - private double lon; //高精坐标 - private double lat; //高精坐标 - private double gcjLon; //高德坐标 - private double gcjLat; //高德坐标 - private int businessType; //站点类型,9:taxi,10:bus - private int status; - private int siteId; - private int seq; - private int drivingStatus;//行驶信息,0初始值;1已经过;2当前站;3未到站 - private int ifStop = 1; // 是否需要停靠、1需要、0不需要 // TODO: 2021/10/19 原来站点里有设计是否需要停靠字段,现设计暂无,默认都需要停靠 - private boolean leaving; - - public void setName(String name) { - this.name = name; - } - - public void setDescription(String description) { - this.description = description; - } - - public void setCityCode(String cityCode) { - this.cityCode = cityCode; - } - - public void setLon(double lon) { - this.lon = lon; - } - - public void setLat(double lat) { - this.lat = lat; - } - - public void setBusinessType(int businessType) { - this.businessType = businessType; - } - - public void setStatus(int status) { - this.status = status; - } - - public void setSiteId(int siteId) { - this.siteId = siteId; - } - - public void setSeq(int seq) { - this.seq = seq; - } - - public void setDrivingStatus(int drivingStatus) { - this.drivingStatus = drivingStatus; - } - - public String getName() { - return name; - } - - public String getDescription() { - return description; - } - - public String getCityCode() { - return cityCode; - } - - public double getGcjLon() { - return gcjLon; - } - - public double getGcjLat() { - return gcjLat; - } - - public int getBusinessType() { - return businessType; - } - - public int getStatus() { - return status; - } - - public int getSiteId() { - return siteId; - } - - public int getSeq() { - return seq; - } - - public int getDrivingStatus() { - return drivingStatus; - } - - public double getLon() { - return lon; - } - - public double getLat() { - return lat; - } - - public void setIfStop(int ifStop) { - this.ifStop = ifStop; - } - - public int getIfStop() { - return ifStop; - } - - public void setLeaving(boolean leaving) { - this.leaving = leaving; - } - - public boolean isLeaving() { - return leaving; - } - - @Override - public String toString() { - return "OchBusStation{" + - "name='" + name + '\'' + - ", description='" + description + '\'' + - ", cityCode='" + cityCode + '\'' + - ", lon=" + lon + - ", lat=" + lat + - ", businessType=" + businessType + - ", status=" + status + - ", siteId=" + siteId + - ", seq=" + seq + - ", drivingStatus=" + drivingStatus + - ", ifStop=" + ifStop + - ", leaving=" + leaving + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - PM2Station that = (PM2Station) o; - return Double.compare(that.lon, lon) == 0 - && Double.compare(that.lat, lat) == 0 - && Double.compare(that.gcjLon, gcjLon) == 0 - && Double.compare(that.gcjLat, gcjLat) == 0 - && businessType == that.businessType - && status == that.status - && siteId == that.siteId - && seq == that.seq - && drivingStatus == that.drivingStatus - && ifStop == that.ifStop - && leaving == that.leaving - && Objects.equals(name, that.name) - && Objects.equals(cityCode, that.cityCode); - } - - @Override - public int hashCode() { - return Objects.hash(name, description, cityCode, lon, lat, gcjLon, gcjLat, businessType, status, siteId, seq, drivingStatus, ifStop, leaving); - } -} diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt index 4e5f1a568f..c4eebf5beb 100644 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt +++ b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt @@ -33,11 +33,8 @@ import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.shuttle.passenger.R import com.mogo.och.shuttle.passenger.constant.BusPassengerConst -import com.mogo.och.shuttle.passenger.bean.PM2OperationStatusResponse -import com.mogo.och.shuttle.passenger.bean.PM2RoutesResponse import com.mogo.och.shuttle.passenger.callback.AutoPilotStatusCallback import com.mogo.och.shuttle.passenger.callback.DrivingInfoCallback -import com.mogo.och.shuttle.passenger.model.PM2ServiceManager.driverAppSn import com.mogo.och.shuttle.passenger.network.PM2ModelLoopManager import com.mogo.och.common.module.bean.dpmsg.* import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.pushAppOperationalMsgBox @@ -49,6 +46,9 @@ import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.BusTransferData +import com.mogo.och.shuttle.passenger.bean.response.PassengerOperationStatusResponse +import com.mogo.och.shuttle.passenger.bean.response.PassengerRoutesResponse +import com.mogo.och.shuttle.passenger.network.PassengerServiceManager import io.reactivex.disposables.Disposable import mogo.telematics.pad.MessagePad import kotlin.math.abs @@ -78,7 +78,7 @@ class PM2DrivingModel private constructor() { private var mDrivingInfoCallback: DrivingInfoCallback? = null //行程信息 private var mAutoStatusCallback: AutoPilotStatusCallback? = null //自动驾驶状态 - private var operationStatus: PM2OperationStatusResponse.Result? = null + private var operationStatus: PassengerOperationStatusResponse.Result? = null @Volatile private var globalPathTruncation: Disposable? = null @@ -328,17 +328,17 @@ class PM2DrivingModel private constructor() { private fun queryDriverOperationStatus() { mContext?.let { - PM2ServiceManager.queryDriverOperationStatus( + PassengerServiceManager.queryDriverOperationStatus( it, - object : OchCommonServiceCallback { - override fun onSuccess(data: PM2OperationStatusResponse?) { + object : OchCommonServiceCallback { + override fun onSuccess(data: PassengerOperationStatusResponse?) { if (data?.data == null) return if (data.data.driverStatus != operationStatus?.driverStatus || data.data.plateNumber != operationStatus?.plateNumber){ d(SceneConstant.M_BUS_P+TAG, "queryDriverOperationStatus ===== 车牌或者登陆状态有变更") mDrivingInfoCallback?.changeOperationStatus(data.data.driverStatus == 1) } - operationStatus = data.data as PM2OperationStatusResponse.Result + operationStatus = data.data as PassengerOperationStatusResponse.Result // mDrivingInfoCallback?.updatePlateNumber(data.data.plateNumber) } @@ -362,9 +362,9 @@ class PM2DrivingModel private constructor() { fun queryDriverSiteByCoordinate(){ mContext?.let { - PM2ServiceManager.queryDriverSiteByCoordinate(it, - object : OchCommonServiceCallback{ - override fun onSuccess(data: PM2RoutesResponse?) { + PassengerServiceManager.queryDriverSiteByCoordinate(it, + object : OchCommonServiceCallback{ + override fun onSuccess(data: PassengerRoutesResponse?) { if (data == null || data.result == null){ if (routesResult != null) { @@ -396,7 +396,7 @@ class PM2DrivingModel private constructor() { CallerLogger.d( SceneConstant.Companion.M_BUS_P + TAG, "queryDriverSiteByCoordinate = onError =" - + ", sn = " + driverAppSn + + ", sn = " + PassengerServiceManager.driverAppSn ) queryDriverByLocalDriver() } @@ -406,7 +406,7 @@ class PM2DrivingModel private constructor() { if (code == 1003){ queryDriverOperationDelay() } - if (PM2ServiceManager.driverAppSn.isEmpty()){ + if (PassengerServiceManager.driverAppSn.isEmpty()){ return } if (code == 1003) { diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2ServiceManager.kt b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2ServiceManager.kt deleted file mode 100644 index 4301b1de54..0000000000 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2ServiceManager.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.mogo.och.shuttle.passenger.model - -import android.content.Context -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken -import com.mogo.cloud.passport.MoGoAiCloudClientConfig -import com.mogo.eagle.core.network.MoGoRetrofitFactory -import com.mogo.commons.storage.SharedPrefsMgr -import com.mogo.och.shuttle.passenger.bean.PM2OperationStatusResponse -import com.mogo.och.shuttle.passenger.bean.PM2QueryLineRequest -import com.mogo.och.shuttle.passenger.bean.PM2RoutesResponse -import com.mogo.och.shuttle.passenger.network.PM2ServiceApi -import com.mogo.och.common.module.biz.constant.OchCommonConst -import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl -import com.mogo.och.common.module.biz.network.interceptor.transformTry - -/** - * Created on 2022/3/31 - */ -object PM2ServiceManager { - - private var mBusPassengerServiceApi = - MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create(PM2ServiceApi::class.java) - - private var driverSnCache = "" - /** - * 获取Bus司机端的sn - * @return - */ - public val driverAppSn: String - get(){ - val serverToken = getServerToken() - if (serverToken != driverSnCache && serverToken.isNotEmpty()) { - driverSnCache = serverToken - } - return driverSnCache - } - - /** - * 查询绑定行驶的小巴车路线 - * @param context - * @param callback - */ - @JvmStatic - fun queryDriverSiteByCoordinate( - context: Context, callback: OchCommonServiceCallback? - ) { - mBusPassengerServiceApi.queryDriverSiteByCoordinate( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - PM2QueryLineRequest( - driverAppSn - ) - ).transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate=sn =$driverAppSn")) - - } - - /** - * 查询司机端出车收车状态,以及车牌号 - * @param context - * @param callback - */ - @JvmStatic - fun queryDriverOperationStatus( - context: Context, - callback: OchCommonServiceCallback? - ) { - mBusPassengerServiceApi.queryDriverOperationStatus( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - driverAppSn - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus=sn =$driverAppSn")) - - } -} \ No newline at end of file diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/network/PM2ServiceApi.java b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/network/PM2ServiceApi.java deleted file mode 100644 index 8797caf27e..0000000000 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/network/PM2ServiceApi.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mogo.och.shuttle.passenger.network; - -import com.mogo.och.shuttle.passenger.bean.PM2OperationStatusResponse; -import com.mogo.och.shuttle.passenger.bean.PM2QueryLineRequest; -import com.mogo.och.shuttle.passenger.bean.PM2RoutesResponse; - -import io.reactivex.Observable; -import retrofit2.http.Body; -import retrofit2.http.GET; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.POST; -import retrofit2.http.Query; - -/** - * Created on 2022/3/31 - * - * Bus乘客端接口定义 - */ -public interface PM2ServiceApi { - /** - * 查询bus司机端绑定路线 - * @return 接口返回数据 - */ - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) - @POST( "/och-shuttle-cabin/api/business/v1/passenger/lineDataWithDriver/query" ) - Observable queryDriverSiteByCoordinate(@Header("appId") String appId, @Header("ticket") String ticket, @Body PM2QueryLineRequest request); - - /** - * 查询司机端的登陆状态 - * @param sn - * @return - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) -// @GET("/autopilot-car-hailing/car/v2/driver/bus/passenger/takeOrderStatus/query") - @GET("/och-shuttle-cabin/api/business/v1/passenger/loginStatus") - Observable queryDriverOperationStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); - - -} diff --git a/OCH/shuttle/passenger/src/main/res/drawable/scanner_qr_code.xml b/OCH/shuttle/passenger/src/main/res/drawable/scanner_qr_code.xml new file mode 100644 index 0000000000..7b205e5aed --- /dev/null +++ b/OCH/shuttle/passenger/src/main/res/drawable/scanner_qr_code.xml @@ -0,0 +1,28 @@ + + + diff --git a/OCH/shuttle/passenger/src/main/res/jinlv/layout/shuttle_p_jl_view_status_bar.xml b/OCH/shuttle/passenger/src/main/res/jinlv/layout/shuttle_p_jl_view_status_bar.xml index 2be462cb64..f48c5371bc 100644 --- a/OCH/shuttle/passenger/src/main/res/jinlv/layout/shuttle_p_jl_view_status_bar.xml +++ b/OCH/shuttle/passenger/src/main/res/jinlv/layout/shuttle_p_jl_view_status_bar.xml @@ -8,6 +8,17 @@ tools:ignore="MissingDefaultResource" android:background="@drawable/shuttle_p_jl_bg_status_bar"> + + @@ -31,18 +42,15 @@ android:layout_gravity="center" android:layout_marginStart="@dimen/dp_40" /> - - - - + app:layout_constraintStart_toEndOf="@+id/wifiStateView" + android:layout_width="@dimen/dp_24" + android:layout_height="@dimen/dp_24" + android:src="@drawable/scanner_qr_code" + android:layout_gravity="center" + android:layout_marginStart="@dimen/dp_40"/> \ No newline at end of file diff --git a/OCH/shuttle/passenger/src/main/res/m2/layout/shuttle_p_m2_view_status_bar.xml b/OCH/shuttle/passenger/src/main/res/m2/layout/shuttle_p_m2_view_status_bar.xml index 2aac7be30f..a2d86ad7bd 100644 --- a/OCH/shuttle/passenger/src/main/res/m2/layout/shuttle_p_m2_view_status_bar.xml +++ b/OCH/shuttle/passenger/src/main/res/m2/layout/shuttle_p_m2_view_status_bar.xml @@ -19,7 +19,7 @@ android:layout_marginStart="@dimen/dp_40" /> - { TYPE_EXCEPTION_EXIT_PARALLEL_DRIVING.poiTypeStr } + //核销成功 + TYPE_VERIFICATION_SUCCESSFUL.poiType ->{ + TYPE_VERIFICATION_SUCCESSFUL.poiTypeStr + } + //核销异常 + TYPE_ABNORMAL_VERIFICATION.poiType ->{ + TYPE_ABNORMAL_VERIFICATION.poiTypeStr + } + //设备状态正常 + TYPE_DEVICE_STATUS_NORMAL.poiType ->{ + TYPE_DEVICE_STATUS_NORMAL.poiTypeStr + } + //设备状态异常 + TYPE_DEVICE_STATUS_ABNORMAL.poiType ->{ + TYPE_DEVICE_STATUS_ABNORMAL.poiTypeStr + } //机动车 TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType ->{ TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiTypeStr @@ -1189,6 +1244,22 @@ enum class EventTypeEnumNew( TYPE_EXCEPTION_EXIT_PARALLEL_DRIVING.poiType->{ R.drawable.icon_warning_take_over } + //核销成功 + TYPE_VERIFICATION_SUCCESSFUL.poiType->{ + R.drawable.icon_warning_v2x_verification_successful + } + //核销异常 + TYPE_ABNORMAL_VERIFICATION.poiType->{ + R.drawable.icon_warning_take_over + } + //设备状态正常 + TYPE_DEVICE_STATUS_NORMAL.poiType->{ + R.drawable.icon_warning_v2x_verification_successful + } + //设备状态异常 + TYPE_DEVICE_STATUS_ABNORMAL.poiType->{ + R.drawable.icon_default + } //机动车 TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType -> { R.drawable.icon_warning_v2x_motorcycle_collision 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