diff --git a/OCH/mogo-och-charter/build.gradle b/OCH/mogo-och-charter/build.gradle index f3fdddfcc8..ed923ad613 100644 --- a/OCH/mogo-och-charter/build.gradle +++ b/OCH/mogo-och-charter/build.gradle @@ -55,7 +55,7 @@ dependencies { implementation rootProject.ext.dependencies.kotlinstdlibjdk7 implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.arouter - annotationProcessor rootProject.ext.dependencies.aroutercompiler + kapt rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.amapnavi3dmap diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterProvider.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterProvider.kt index e5debe4c7f..b711a4f238 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterProvider.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterProvider.kt @@ -4,9 +4,9 @@ import android.content.Context import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import com.alibaba.android.arouter.facade.annotation.Route -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.magic.mogo.och.charter.constant.CharterConst import com.magic.mogo.och.charter.fragment.DriverM1Fragment +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d /** @@ -17,18 +17,19 @@ import com.magic.mogo.och.charter.fragment.DriverM1Fragment class CharterProvider: ICharterOCH{ private var mActivity: FragmentActivity? = null - private var mContainerId = 0 + private var mContainerId: Int? = 0 private var driverM1Fragment: Fragment? = null override fun createCoverage(activity: FragmentActivity?, containerId: Int) {} - override fun createCoverage(activity: FragmentActivity?, containerId: Int?): Fragment? { - mActivity = activity - mContainerId = containerId!! + override fun createCoverage(fragmentActivity: FragmentActivity?, integer: Int?): Fragment? { + this.mContainerId = integer + this.mActivity = fragmentActivity showFragment() return null } + private fun showFragment() { val supportFragmentManager = mActivity?.supportFragmentManager @@ -41,10 +42,11 @@ class CharterProvider: ICharterOCH{ DriverM1Fragment() } if (!driverM1Fragment!!.isAdded) { - supportFragmentManager?.beginTransaction() - ?.add(mContainerId, driverM1Fragment!!, DriverM1Fragment.TAG)?.commitAllowingStateLoss() + mContainerId?.let { + supportFragmentManager?.beginTransaction() + ?.add(it, driverM1Fragment!!, DriverM1Fragment.TAG)?.commitAllowingStateLoss() + } } - return } d(TAG, "准备show fragment") supportFragmentManager?.beginTransaction()?.show(driverM1Fragment!!)?.commitAllowingStateLoss() @@ -55,7 +57,7 @@ class CharterProvider: ICharterOCH{ } override val functionName: String - get() = "och-charter-driver-m1" + get() = "" override fun onDestroy() { // 若不调用finish, 设置中打开关闭UITouch,会造成och fragment 重叠 diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/CheckOrderCountDownResponse.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/CheckOrderCountDownResponse.kt new file mode 100644 index 0000000000..64d9a58139 --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/CheckOrderCountDownResponse.kt @@ -0,0 +1,16 @@ +package com.magic.mogo.och.charter.bean + +import com.mogo.eagle.core.data.BaseData + +/** + * @author: wangmingjun + * @date: 2023/2/24 + */ +data class CheckOrderCountDownResponse(var data: Result):BaseData(){ + data class Result( + var currentTime: Long, + var startTime: Long, + var endTime: Long + ) +} + diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryBusinessStatusResponse.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryBusinessStatusResponse.kt new file mode 100644 index 0000000000..85f2f77bcf --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryBusinessStatusResponse.kt @@ -0,0 +1,14 @@ +package com.magic.mogo.och.charter.bean + +import com.mogo.eagle.core.data.BaseData + +/** + * @author: wangmingjun + * @date: 2023/2/24 + */ +data class QueryBusinessStatusResponse(var data: Result):BaseData(){ + data class Result(var orderNo: String, var businessStatus: Int) + //1: 闲置 2:orderNo = "" 当前并没有核销的订单, orderNo != "" 当前车辆需还车状态 +} + + diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt new file mode 100644 index 0000000000..475345a1e4 --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/QueryCurrentOrderResponse.kt @@ -0,0 +1,25 @@ +package com.magic.mogo.och.charter.bean + +import com.mogo.eagle.core.data.BaseData + +/** + * @author: wangmingjun + * @date: 2023/2/24 + */ +data class QueryCurrentOrderResponse(var data: Result):BaseData(){ //线路id , 线路名, 当前站点和坐标, 目的站点和坐标, 包车时间, 乘客信息 + data class Result( + var sn: String, + var productType: Int, + var orderNo: String, + var lineId: Int, + var lineName: String, + var siteId: Int, + var siteName: String, + var wgs84Lon: Double, + var wgs84Lat: Double, + var startTime: Long, + var endTime: Long, + var passengerPhone: String + ) +} + diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt new file mode 100644 index 0000000000..0505130487 --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt @@ -0,0 +1,7 @@ +package com.magic.mogo.och.charter.bean + +/** + * @author: wangmingjun + * @date: 2023/2/24 + */ +data class RequestChangeDest(var sn: String,var lineId: Int,var siteId: Int) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/Station.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/Station.kt new file mode 100644 index 0000000000..7a8a8ce957 --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/Station.kt @@ -0,0 +1,7 @@ +package com.magic.mogo.och.charter.bean + +/** + * @author: wangmingjun + * @date: 2023/2/23 + */ +data class Station(var siteId: Int, var siteName: String, var seq: Int) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/ChangeDestCallback.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/ChangeDestCallback.kt new file mode 100644 index 0000000000..2c46965bd0 --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/ChangeDestCallback.kt @@ -0,0 +1,9 @@ +package com.magic.mogo.och.charter.callback + +/** + * @author: wangmingjun + * @date: 2023/2/24 + */ +interface ChangeDestCallback { + fun showCommitDialog(title: String,content: String) +} \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/DriverM1OrderCallback.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/DriverM1OrderCallback.kt new file mode 100644 index 0000000000..3e4edd3453 --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/DriverM1OrderCallback.kt @@ -0,0 +1,13 @@ +package com.magic.mogo.och.charter.callback + +import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse + +/** + * @author: wangmingjun + * @date: 2023/2/23 + */ +interface DriverM1OrderCallback { + fun updateOrderUI(orderStatus: QueryCurrentOrderResponse.Result) // 到达站 + fun updateOverCountDown(minutes: Int) //倒计时 分钟 + fun updateReturnCarStatus(returnSuccess: Boolean) +} \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/IDriverM1ControllerStatusCallback.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/IDriverM1ControllerStatusCallback.kt index 8420b661a7..d4881f53de 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/IDriverM1ControllerStatusCallback.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/callback/IDriverM1ControllerStatusCallback.kt @@ -8,9 +8,6 @@ import com.mogo.eagle.core.data.map.MogoLocation * Model->Presenter回调:状态控制器监听(accOn、adas ui show、voice ui show、push ui show、v2x ui show等等) */ interface IDriverM1ControllerStatusCallback { - // 是否vr map模式 - fun onVRModeChanged(isVRMode: Boolean) - // 自车定位 fun onCarLocationChanged(location: MogoLocation?) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt index bcb7519be4..36a92a0c26 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt @@ -3,16 +3,21 @@ package com.magic.mogo.och.charter.fragment import android.os.Bundle import android.view.View import com.alibaba.android.arouter.launcher.ARouter -import com.charter.driverm1.view.SlidePanelView import com.magic.mogo.och.charter.R import com.magic.mogo.och.charter.base.CharterBaseFragment +import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse import com.magic.mogo.och.charter.net.login.LoginDriverM1Impl import com.magic.mogo.och.charter.presenter.DriverM1Presenter +import com.magic.mogo.och.charter.view.SlidePanelView import com.mogo.eagle.core.data.temp.EventLogout import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.provider.LoginService +import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.wigets.OCHCommitDialog +import kotlinx.android.synthetic.driverm1.bus_no_line_view.* +import kotlinx.android.synthetic.driverm1.fragment_driver_m1.* import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -21,8 +26,9 @@ import org.greenrobot.eventbus.ThreadMode * @date: 2023/2/22 */ class DriverM1Fragment : CharterBaseFragment(), - SlidePanelView.OnSlidePanelMoveToEndListener, View.OnClickListener { + SlidePanelView.OnSlidePanelMoveToEndListener{ private var loginService: LoginService? = null + private var ochCommitDialog: OCHCommitDialog? = null companion object{ val TAG: String = DriverM1Fragment::class.java.name @@ -33,16 +39,42 @@ class DriverM1Fragment : CharterBaseFragment aLong + 1 } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { + DriverM1Model.get().queryCurrentServiceStatus() + } + } + + fun stopQueryDriverLineLoop() { + if (mQueryLineDisposable != null) { + CallerLogger.i(SceneConstant.M_BUS_P + TAG, "stopQueryDriverLineLoop()") + mQueryLineDisposable!!.dispose() + mQueryLineDisposable = null + } + } + + fun starCountDownLoop() { + if (mQueryCountDownDisposable != null && !mQueryCountDownDisposable!!.isDisposed) { + return + } + CallerLogger.i(SceneConstant.M_BUS_P + TAG, "starCountDownLoop()") + mQueryCountDownDisposable = Observable.interval( + CharterConst.LOOP_DELAY, + CharterConst.LOOP_5M, TimeUnit.MINUTES + ) + .map { aLong: Long -> aLong + 1 } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { + DriverM1Model.get().checkOrderCountDown() + } + } + + fun stopCountDownLoop() { + if (mQueryCountDownDisposable != null) { + CallerLogger.i(SceneConstant.M_BUS_P + TAG, "stopCountDownLoop()") + mQueryCountDownDisposable!!.dispose() + mQueryCountDownDisposable = null + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index 3975e2ad07..dd048a79db 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -1,35 +1,51 @@ package com.magic.mogo.och.charter.model import android.content.Context +import android.net.ConnectivityManager import android.os.Handler import com.alibaba.android.arouter.launcher.ARouter +import com.alibaba.android.arouter.utils.TextUtils import com.elegant.network.utils.GsonUtil +import com.magic.mogo.och.charter.bean.CheckOrderCountDownResponse +import com.magic.mogo.och.charter.bean.QueryBusinessStatusResponse +import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse +import com.magic.mogo.och.charter.callback.ChangeDestCallback +import com.magic.mogo.och.charter.callback.DriverM1OrderCallback import com.magic.mogo.och.charter.callback.IADASStatusCallback import com.magic.mogo.och.charter.callback.IDriverM1ControllerStatusCallback +import com.magic.mogo.och.charter.net.DriverM1ServiceManager +import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.commons.AbsMogoApplication -import com.mogo.commons.module.status.IMogoStatusChangedListener -import com.mogo.commons.module.status.MogoStatusManager -import com.mogo.commons.module.status.StatusDescriptor +import com.mogo.commons.module.intent.IMogoIntentListener +import com.mogo.commons.module.intent.IntentManager +import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.map.MogoLocation -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.data.telematic.TelematicConstant import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setIPCDemoMode import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setIgnoreConditionDraw import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.startAutoPilot import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager -import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.sendMsgToAllClients import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e 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.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.common.module.bean.dpmsg.* import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager +import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.pushAppOperationalMsgBox import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.releaseSocketMessageListener +import com.mogo.och.common.module.biz.common.socketmessage.data.* 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.provider.LoginService import com.mogo.och.common.module.callback.OchAdasStartFailureCallback import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager.startLoopAbnormalFactors @@ -49,9 +65,6 @@ class DriverM1Model { private var backgroundCurrentStationIndex = 0 //A->B 此处值是A站点索引 - - @Volatile - private var sInstance: DriverM1Model? = null var mLongitude = 0.0 var mLatitude = 0.0 private var mContext: Context? = null @@ -62,26 +75,38 @@ class DriverM1Model { private var isGoingToNextStation = false // 运营类型 - private val VEHICLE_TYPE = 10 - private val MSG_QUERY_BUS_STATION = 1001 + private val MSG_QUERY_BUS_STATION: Int = 1001 private val QUERY_BUS_STATION_DELAY: Long = 5000 -// private var slidePanelHideCallback: ISlidePannelHideCallback? = null private var mControllerStatusCallback //Model->Presenter:VR mode等 : IDriverM1ControllerStatusCallback? = null private var mADASStatusCallback: IADASStatusCallback? = null + private var mOrderCallback: DriverM1OrderCallback? = null - @Volatile - private var isArrivedStation = false + private var mChangeDestCallback: ChangeDestCallback? = null + + private var mCurrentOrder: QueryCurrentOrderResponse.Result? = null + + private var currentChangeDestMsg: ChangeDestMsg? = null //0: 代表没有启动过 1代表是启动第一次,当>=1 代表是重试 每次到站/路线结束清空置为0 - @Volatile - private var firstStartAutopilot = 0 private var loginService: LoginService? = null + companion object { + val TAG = DriverM1Model::class.java.simpleName + private var INSTANCE: DriverM1Model? = null + @Synchronized + fun get(): DriverM1Model{ + if (INSTANCE == null) { + INSTANCE = DriverM1Model() + } + return INSTANCE!! + } + } + private val handler = Handler(Handler.Callback { msg -> if (msg.what == MSG_QUERY_BUS_STATION) { return@Callback true @@ -89,64 +114,63 @@ class DriverM1Model { false }) - companion object { - val TAG = DriverM1Model::class.java.simpleName - const val MSG_QUERY_BUS_P_STATION = 1001 - val INSTANCE: DriverM1Model by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { - DriverM1Model() - } - } fun init() { mContext = AbsMogoApplication.getApp() - loginService = ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService // 定位监听 CallerChassisLocationGCJ02ListenerManager.addListener(TAG, mMapLocationListener) - MogoStatusManager.getInstance().registerStatusChangedListener( - TAG, - StatusDescriptor.VR_MODE, - mMogoStatusChangedListener - ) - - //自动驾驶路线规划接口 - CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener) //开启自驾后 异常信息返回 OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener) -// registerSocketMessageListener( //监听运营消息 -// OCHSocketMessageManager.msgMonitorType, -// mMogoOnMessageListener -// ) -// registerSocketMessageListener( //监听核销乘客 -// OCHSocketMessageManager.msgWriteOffPassengerType, -// mWriteOffPassengeOnMessageListener -// ) + + // 监听运营信息 + OCHSocketMessageManager.registerSocketMessageListener( + OCHSocketMessageManager.msgMonitorType, + mMogoOnMessageListener) + //监听开门 + OCHSocketMessageManager.registerSocketMessageListener( + OCHSocketMessageManager.msgOperateDoorType, + mMogoOnMessageListener) + //监听订单结束 + OCHSocketMessageManager.registerSocketMessageListener( + OCHSocketMessageManager.msgOrderClosedType, + mMogoOnMessageListener) + + //监听乘客屏发来的消息 + CallerTelematicListenerManager.addListener(TAG,mReceivedMsgListener) + + //定位,长连接等异常提示 startLoopAbnormalFactors(mContext!!) + //网络监听 + IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener) + + loginService = ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService + //2022.1.28 // 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃 // The exception could not be delivered to the consumer because it has already canceled/disposed // the flow or the excTeption has nowhere to go to begin with - RxJavaPlugins.setErrorHandler(object : Consumer{ + RxJavaPlugins.setErrorHandler(object : Consumer { override fun accept(e: Throwable?) { var e = e if (e is UndeliverableException) { e = e.cause!! - d(SceneConstant.M_BUS + TAG, "UndeliverableException") + d(SceneConstant.M_CHARTER_D + TAG, "UndeliverableException") } if (e is IOException) { // // fine, irrelevant network problem or API that throws on cancellation - d(SceneConstant.M_BUS + TAG, "IOException") + d(SceneConstant.M_CHARTER_D + TAG, "IOException") return } if (e is InterruptedException) { // fine, some blocking code was interrupted by a dispose call - d(SceneConstant.M_BUS + TAG, "InterruptedException") + d(SceneConstant.M_CHARTER_D + TAG, "InterruptedException") return } if (e is NullPointerException || e is IllegalArgumentException) { // that's likely a bug in the application - d(SceneConstant.M_BUS + TAG, "NullPointerException or IllegalArgumentException") + d(SceneConstant.M_CHARTER_D + TAG, "NullPointerException or IllegalArgumentException") Thread.currentThread().uncaughtExceptionHandler.uncaughtException( Thread.currentThread(), e @@ -168,82 +192,102 @@ class DriverM1Model { }) } -// private val mMogoOnMessageListener: IMogoOnMessageListener = -// object : IMogoOnMessageListener { -// override fun target(): Class { -// return OCHOperationalMessage::class.java -// } -// -// fun onMsgReceived(obj: OCHOperationalMessage) { -// if (obj == null) { -// d(SceneConstant.M_BUS + TAG, "onMsgReceived = null") -// return -// } -// i(SceneConstant.M_BUS + TAG, "onMsgReceived = " + obj.message) -// pushAppOperationalMsgBox( -// obj.pushTimeStamp, -// obj.message -// ) -// } -// } + /** + * 接收乘客屏发来确认信息 + */ + private val mReceivedMsgListener: IReceivedMsgListener = + object : IReceivedMsgListener { + override fun onReceivedMsg(type: Int, byteArray: ByteArray) { + if (TelematicConstant.BUSINESS_STRING == type){ + try { + val msg = GsonUtils.fromJson(String(byteArray), + BaseDPMsg::class.java) as BaseDPMsg + if (msg.type == DPMsgType.TYPE_CHANGE_DEST.type){ + val changeDestMsg = GsonUtils.fromJson(String(byteArray), + ChangeDestMsg::class.java) as ChangeDestMsg + currentChangeDestMsg = changeDestMsg + showChangerDestCommitDialog(changeDestMsg) + } + d(SceneConstant.M_CHARTER_D,"onReceivedMsg = "+ GsonUtils.toJson(msg)) + }catch (e: Exception){ + d(SceneConstant.M_CHARTER_D,"onReceivedMsg = "+"消息解析错误") + } -// private val mWriteOffPassengeOnMessageListener: IMogoOnMessageListener = -// object : IMogoOnMessageListener { -// 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 -// if (mPassengerCallback != null) { -// mPassengerCallback.playPassenger(passenger) -// } -// } -// } + } + } + } + + private fun showChangerDestCommitDialog(changeDestMsg: ChangeDestMsg) { + if (changeDestMsg.destSiteName !== ""){ + UiThreadHandler.post{ + mChangeDestCallback?.showCommitDialog("确认站点", + "请确认是否前往"+ changeDestMsg.destSiteName + "站点") + } + }else if (changeDestMsg.lineName !== ""){ + UiThreadHandler.post{ + mChangeDestCallback?.showCommitDialog("确认路线", + "请确认是否切换"+ changeDestMsg.lineName + "路线") + } + } + } + + private val mMogoOnMessageListener = + object : IMogoOnMessageListener { + override fun onMsgReceived(obj: DataBaseMsg) { + if (obj == null) { + d(SceneConstant.M_CHARTER_D + TAG, "onMsgReceived = null") + return + } + d(SceneConstant.M_CHARTER_D + TAG, "onMsgReceived = " + obj.msgType) + + when(obj.msgType){ + OCHSocketMessageManager.msgMonitorType ->{ + val msg = obj as SystemMsg + pushAppOperationalMsgBox(obj.pushTimeStamp, msg.context) + + val list = msg.screenList + if (list.size > 1){ //发送乘客屏 + } + } + OCHSocketMessageManager.msgOperateDoorType ->{ + val msg = obj as OperateDoorMsg +// pushAppOperationalMsgBox(obj.pushTimeStamp, msg.) + sendMsgToClient(DPOperateDoorMsg(true)) + } + OCHSocketMessageManager.msgOrderClosedType ->{ + val msg = obj as OrderCloseMsg + pushAppOperationalMsgBox(obj.pushTimeStamp, msg.message) + sendMsgToClient(DPOrderClosedMsg()) + } + } + + } + + override fun target(): Class { + return DataBaseMsg::class.java + } + } fun setAdasStatusCallback(callback: IADASStatusCallback?) { mADASStatusCallback = callback } -// fun setSlidePanelHideCallback(callback: ISlidePannelHideCallback?) { -// slidePanelHideCallback = callback -// } + fun setChangeDestCallback(callback: ChangeDestCallback?){ + mChangeDestCallback = callback + } + + fun setDriverM1OrderCallback(callback: DriverM1OrderCallback?) { + mOrderCallback = callback + } fun setControllerStatusCallback(callback: IDriverM1ControllerStatusCallback?) { mControllerStatusCallback = callback } - private val moGoAutopilotPlanningListener: IMoGoPlanningRottingListener = - object : IMoGoPlanningRottingListener { - override fun onAutopilotRotting(routeList: GlobalPathResp?) { - if (null != routeList && routeList.getWayPointsList().size() > 0) { -// points.clear() -// points.addAll( -// coordinateConverterWgsToGcjList( -// mContext, -// routeList.getWayPointsList() -// )!! -// ) -// updateOrderRoute() - } - } - } - fun release() { -// startOrStopOrderLoop(false) - MogoStatusManager.getInstance().unregisterStatusChangedListener( - TAG, - StatusDescriptor.VR_MODE, - mMogoStatusChangedListener - ) - // 注销定位监听 CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) - //自动驾驶路线规划接口 - CallerPlanningRottingListenerManager.removeListener(moGoAutopilotPlanningListener) loginService = null OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null) releaseSocketMessageListener( @@ -255,20 +299,6 @@ class DriverM1Model { stopLoopAbnormalFactors() } - private fun readResolve(): Any? { - // 阻止反序列化,必须实现 Serializable 接口 - return sInstance - } - - private val mMogoStatusChangedListener: IMogoStatusChangedListener = - IMogoStatusChangedListener { descriptor, isTrue -> - - // VR mode变更回调 - if (StatusDescriptor.VR_MODE == descriptor) { - mControllerStatusCallback?.onVRModeChanged(isTrue) - } - } - private val mAdasStartFailureListener: OchAdasStartFailureCallback = object : OchAdasStartFailureCallback { override fun onStartAutopilotFailure( @@ -282,11 +312,22 @@ class DriverM1Model { // SceneConstant.M_BUS + TAG, // "mAdasStartFailureListener = $startFailedMessage" // ) -// mADASStatusCallback.onStartAdasFailure() +// mADASStatusCallback?.onStartAdasFailure() // } } } + //监听网络变化,避免启动机器时无网导致无法更新订单信息 + private val mNetWorkIntentListener = + IMogoIntentListener { intentStr, _ -> + d(SceneConstant.M_TAXI + TAG, "onIntentReceived = %s", intentStr) + if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) { + if (NetworkUtils.isConnected(mContext)) { + loginService!!.queryLoginStatusByNet() + } + } + } + // 自车定位 private val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = object : IMoGoChassisLocationGCJ02Listener { @@ -294,14 +335,14 @@ class DriverM1Model { if (null == gnssInfo) return mLongitude = gnssInfo.longitude mLatitude = gnssInfo.latitude -// if (mControllerStatusCallback != null) { -// mControllerStatusCallback.onCarLocationChanged(gnssInfo) -// } + if (mControllerStatusCallback != null) { + mControllerStatusCallback?.onCarLocationChanged(gnssInfo) + } //是否到站的围栏判断 离站状态并且自动驾驶还未触发到站 - if (isGoingToNextStation && !isArrivedStation) { - judgeArrivedStation(gnssInfo) - } +// if (isGoingToNextStation && !isArrivedStation) { +// judgeArrivedStation(gnssInfo) +// } } } @@ -328,24 +369,12 @@ class DriverM1Model { // } } - private fun onStartAutopilot(leaveIndex: Int) { - //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 - isGoingToNextStation = true - if (getAutoPilotStatusInfo().state - == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING - ) { - startAutopilot(false, leaveIndex) - } else { - firstStartAutopilot = 0 - } - } - /** * 开启自动驾驶 * * @param isRestart */ - private fun startAutopilot(isRestart: Boolean, leaveIndex: Int) { + private fun startAutopilot() { if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { ToastUtils.showLong( OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + @@ -354,99 +383,67 @@ class DriverM1Model { triggerUnableStartAPReasonEvent() return } - firstStartAutopilot++ - triggerStartServiceEvent(isRestart, false) - val parameters = initAutopilotControlParameters(leaveIndex) + triggerStartServiceEvent(true, false) + val parameters = initAutopilotControlParameters() if (null == parameters) { - e(SceneConstant.M_BUS + TAG, "行程日志-AutopilotControlParameters is empty.") + d(SceneConstant.M_BUS + TAG, "行程日志-AutopilotControlParameters is empty.") return } startAutoPilot(parameters) d( SceneConstant.M_BUS + TAG, "行程日志-开启自动驾驶====" + GsonUtil.jsonFromObject(parameters) - + " startLatLon=" + parameters.startName + ",endLatLon=" + parameters.endName + - "isRestart = " + isRestart + + " startLatLon=" + parameters.startName + ",endLatLon=" + parameters.endName ) if (mControllerStatusCallback != null) { mControllerStatusCallback?.startOpenAutopilot() } } - //车站10s后播报 -// private fun leaveTTSTips(nextStation: String) { -// showNotice( -// String.format( -// mContext -// .getString(R.string.bus_leave_station_tip), -// nextStation -// ), CharterConst.Companion.DELAY_10S -// ) -// } - /** - * 关闭美化模式 - */ - fun closeBeautificationMode() { - if (FunctionBuildConfig.isDemoMode) { //收车结束美化 - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = - false //是否强制绘制引导线 - setIgnoreConditionDraw(false) // 同步给乘客屏 - setIPCDemoMode(false) //是否自动启动自驾 - d(SceneConstant.M_BUS + TAG, "美化模式-ignore:置为false") - } + /** + * 关闭美化模式 + */ + fun closeBeautificationMode() { + if (FunctionBuildConfig.isDemoMode) { //收车结束美化 + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = + false //是否强制绘制引导线 + setIgnoreConditionDraw(false) // 同步给乘客屏 + setIPCDemoMode(false) //是否自动启动自驾 + d(SceneConstant.M_BUS + TAG, "美化模式-ignore:置为false") } + } - fun clearStartAutopilotTag() { - firstStartAutopilot = 0 - } - - fun startBeautificationMode() { - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true - setIgnoreConditionDraw(true) - setIPCDemoMode(true) - } + fun startBeautificationMode() { + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true + setIgnoreConditionDraw(true) + setIPCDemoMode(true) + } - /** - * 延时查询站点信心 - */ - fun queryBusStationDelay() { - handler.sendEmptyMessageDelayed(MSG_QUERY_BUS_STATION, QUERY_BUS_STATION_DELAY) - } + /** + * 延时查询站点信心 + */ + fun queryBusStationDelay() { + handler.sendEmptyMessageDelayed(MSG_QUERY_BUS_STATION, QUERY_BUS_STATION_DELAY) + } - /** - * 在踩刹车、控制方向盘等操作后,会停止自动驾驶,重启自动驾驶的话相当于重新设置自动驾驶目的地 - */ - fun restartAutopilot() { - d(SceneConstant.M_BUS + TAG, "行程日志-重启自动驾驶===$isGoingToNextStation") - //只去启动自动驾驶,不再去上报离站 - startAutopilot(firstStartAutopilot >= 1, -1) - } + /** + * 在踩刹车、控制方向盘等操作后,会停止自动驾驶,重启自动驾驶的话相当于重新设置自动驾驶目的地 + */ + fun restartAutopilot() { + d(SceneConstant.M_BUS + TAG, "司机端-启动自动驾驶===$isGoingToNextStation") + //只去启动自动驾驶 + startAutopilot() + } - fun isRestartAutopilot(): Boolean { - return firstStartAutopilot > 1 - } + fun isGoingToNextStation(): Boolean { + return isGoingToNextStation + } - fun isGoingToNextStation(): Boolean { - return isGoingToNextStation - } - - fun sendWriteOffNumToClient(msg: String?) {} - - -// fun startOrStopOrderLoop(start: Boolean) { -// d(SceneConstant.M_BUS + TAG, "startOrStopOrderLoop() $start") -// if (start) { -// BusModelLoopManager.getInstance().startHeartbeatLoop() -// } else { -// BusModelLoopManager.getInstance().stopHeartbeatLoop() -// } -// } - - // 登出 - fun logout() { - loginService!!.loginOut(mLatitude, mLongitude) - } + // 登出 + fun logout() { + loginService!!.loginOut(mLatitude, mLongitude) + } fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) { // if (stationList == null || backgroundCurrentStationIndex >= stationList.size - 1) { @@ -460,7 +457,7 @@ class DriverM1Model { // ) } - fun triggerUnableStartAPReasonEvent() { + fun triggerUnableStartAPReasonEvent() { // if (stationList == null || backgroundCurrentStationIndex >= stationList.size - 1) { // return // } @@ -470,32 +467,32 @@ class DriverM1Model { // currentStation.getName(), nextStation.getName(), currentLineId, // OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason // ) - } + } - fun getCurrentStationIndex(): Int { - return backgroundCurrentStationIndex - } + fun getCurrentStationIndex(): Int { + return backgroundCurrentStationIndex + } - /** - * 将业务订单信息保存,鹰眼可取用 - */ - fun updateAutopilotControlParameters() { - // TODO: 业务信息保存 - val parameters = initAutopilotControlParameters(-1) - if (null == parameters) { - e(SceneConstant.M_BUS + TAG, "AutopilotControlParameters is empty.") - return - } - d(SceneConstant.M_BUS + TAG, "AutopilotControlParameters is update.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) + /** + * 将业务订单信息保存,鹰眼可取用 + */ + fun updateAutopilotControlParameters() { + // TODO: 业务信息保存 + val parameters = initAutopilotControlParameters() + if (null == parameters) { + d(SceneConstant.M_CHARTER_D + TAG, "AutopilotControlParameters is empty.") + return } + d(SceneConstant.M_CHARTER_D + TAG, "AutopilotControlParameters is update.") + CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) + } - fun clearAutopilotControlParameters() { - d(SceneConstant.M_BUS + TAG, "AutopilotControlParameters is clear.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) - } + fun clearAutopilotControlParameters() { + d(SceneConstant.M_CHARTER_D + TAG, "AutopilotControlParameters is clear.") + CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) + } - fun initAutopilotControlParameters(leaveIndex: Int): AutopilotControlParameters? { + fun initAutopilotControlParameters(): AutopilotControlParameters? { // var currentStation: BusStationBean? = null // var nextStation: BusStationBean? = null // if (leaveIndex < 0) { @@ -513,7 +510,7 @@ class DriverM1Model { // currentStation = stationList[leaveIndex] // nextStation = stationList[leaveIndex + 1] // } - var parameters = AutopilotControlParameters() + var parameters = AutopilotControlParameters() // parameters.routeID = busRoutesResult.getLineId() // parameters.routeName = busRoutesResult.getName() // parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.getName()) @@ -532,6 +529,134 @@ class DriverM1Model { // busRoutesResult.contrailSaveTimeDPQP // ) // } - return parameters + return parameters + } + + fun startQueryCurrentOrder(){ + DriverM1LooperManager.startQueryDriverLineLoop() + } + + fun stopQueryCurrentOrder(){ + DriverM1LooperManager.stopQueryDriverLineLoop() + } + + /** + * 司机端发送消息给乘客屏 + */ + fun sendCommitMsgToClient(isConfirmed: Boolean) { + if (currentChangeDestMsg !== null) { + currentChangeDestMsg?.isConfirmed = isConfirmed + sendMsgToClient(currentChangeDestMsg) } + } + + private fun sendMsgToClient(msg: BaseDPMsg?){ + sendMsgToAllClients( + TelematicConstant.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + } + + fun driverEndLease() { + DriverM1ServiceManager.driverEndLease(mContext,object : OchCommonServiceCallback{ + override fun onSuccess(data: BaseData?) { + if (data != null && data.code == 0){ + mOrderCallback?.updateReturnCarStatus(true) + } + } + + override fun onFail(code: Int, msg: String?) { + ToastUtilsOch.toastRequestError(mContext,msg) + } + + }) + } + + fun queryCurrentServiceStatus() { + DriverM1ServiceManager.queryCurrentServiceStatus(mContext + ,object: OchCommonServiceCallback{ + override fun onSuccess(data: QueryBusinessStatusResponse?) { + if (data == null || data.code != 0){ + return + } + if (data.data.businessStatus == 2){ + if (TextUtils.isEmpty(data.data.orderNo)){//还未换车,显示还车状态 + mOrderCallback?.updateReturnCarStatus(false) + startOrStopCheckCountDown(false) + }else{ // 去查询订单 + mOrderCallback?.updateReturnCarStatus(true) + queryCurrentOrder() + } + }else{ + startOrStopCheckCountDown(false) + } + } + + override fun onFail(code: Int, msg: String?) { + ToastUtilsOch.toastRequestError(mContext,msg) + } + }) + } + + fun queryCurrentOrder(){ + DriverM1ServiceManager.queryCurrentOrder(mContext + ,object: OchCommonServiceCallback{ + override fun onSuccess(data: QueryCurrentOrderResponse?) { + if (data == null || data.code == 0 || mCurrentOrder === data.data) return + mCurrentOrder = data.data + mOrderCallback?.updateOrderUI(data.data) + // 倒计时校验开始 + startOrStopCheckCountDown(true) + } + + override fun onFail(code: Int, msg: String?) { + TODO("Not yet implemented") + } + }) + } + + private fun startOrStopCheckCountDown(start: Boolean) { + if (start){ + DriverM1LooperManager.starCountDownLoop() + }else{ + DriverM1LooperManager.stopCountDownLoop() + } + } + + fun checkOrderCountDown() { + DriverM1ServiceManager.checkOrderCountDown(mContext, + object: OchCommonServiceCallback{ + override fun onSuccess(data: CheckOrderCountDownResponse?) { + if (data?.data == null || data.code != 0){ + return + } + val gap = data.data.endTime - data.data.currentTime + if (gap >= 0){ + mOrderCallback?.updateOverCountDown((gap/1000/60).toInt()) + } + } + + override fun onFail(code: Int, msg: String?) { + TODO("Not yet implemented") + } + + }) + } + + fun changeDest(){ + if (currentChangeDestMsg == null) return + DriverM1ServiceManager.changeDest(mContext,currentChangeDestMsg!!.lineId, + currentChangeDestMsg!!.destSiteId, + object : OchCommonServiceCallback{ + override fun onSuccess(data: BaseData?) { + if (data != null && data.code == 0){ + sendCommitMsgToClient(true) + } + } + + override fun onFail(code: Int, msg: String?) { + TODO("Not yet implemented") + } + }) + } } \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt new file mode 100644 index 0000000000..a13db84d9f --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt @@ -0,0 +1,81 @@ +package com.magic.mogo.och.charter.net + +import android.content.Context +import com.magic.mogo.och.charter.bean.CheckOrderCountDownResponse +import com.magic.mogo.och.charter.bean.QueryBusinessStatusResponse +import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse +import com.magic.mogo.och.charter.bean.RequestChangeDest +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.och.common.module.biz.constant.OchCommonConst +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.MoGoRetrofitFactory +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 by pangfan on 2021/8/19 + */ +object DriverM1ServiceManager { + + private val mDriverM1ServiceApi: IDriverM1Service = + MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create( + IDriverM1Service::class.java + ) + + /** + * 司机还车 + * @param context + * @param callback + */ + @JvmStatic + fun driverEndLease( + context: Context?, + callback: OchCommonServiceCallback? + ) { + mDriverM1ServiceApi.driverEndLease( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + )?.transformTry() + ?.subscribe(OchCommonSubscribeImpl(context!!, callback, "driverEndLease")) + } + + fun queryCurrentServiceStatus(context: Context?, + callback: OchCommonServiceCallback?){ + mDriverM1ServiceApi.queryBusinessStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + )?.transformTry() + ?.subscribe(OchCommonSubscribeImpl(context!!, callback, "queryCurrentServiceStatus")) + } + + fun queryCurrentOrder(context: Context?, + callback: OchCommonServiceCallback?){ + mDriverM1ServiceApi.queryCurrentOrder(MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + )?.transformTry() + ?.subscribe(OchCommonSubscribeImpl(context!!, callback, "queryCurrentOrder")) + } + + fun checkOrderCountDown(context: Context?, + callback: OchCommonServiceCallback?){ + mDriverM1ServiceApi.checkOrderCountDown(MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + )?.transformTry() + ?.subscribe(OchCommonSubscribeImpl(context!!, callback, "checkOrderCountDown")) + } + + fun changeDest(context: Context?,lineId: Int,siteId: Int, + callback: OchCommonServiceCallback?){ + mDriverM1ServiceApi.changeDest(MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + RequestChangeDest(MoGoAiCloudClientConfig.getInstance().sn,lineId,siteId) + )?.transformTry() + ?.subscribe(OchCommonSubscribeImpl(context!!, callback, "changeDest")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/IDriverM1Service.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/IDriverM1Service.kt index 45e87e0328..22a1293aca 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/IDriverM1Service.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/IDriverM1Service.kt @@ -1,10 +1,55 @@ package com.magic.mogo.och.charter.net + +import com.magic.mogo.och.charter.bean.CheckOrderCountDownResponse +import com.magic.mogo.och.charter.bean.QueryBusinessStatusResponse +import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse +import com.magic.mogo.och.charter.bean.RequestChangeDest +import com.mogo.eagle.core.data.BaseData +import io.reactivex.Observable +import retrofit2.http.* + /** * @author: wangmingjun * @date: 2023/2/22 */ interface IDriverM1Service { + /** + * 司机还车 + * @param sn + * @return + */ + @Headers("Content-type:application/json;charset=UTF-8") + @GET("/och-rental-cabin/api/flow/v1/driver/endLease") + fun driverEndLease(@Header("appId") appId: String?, @Header("ticket") ticket: String?, + @Query("sn") sn: String?): Observable? + /** + * 查询当前订单信息 + */ + @Headers("Content-type:application/json;charset=UTF-8") + @GET("/och-rental-cabin/api/business/v1/driver/order") + fun queryCurrentOrder(@Header("appId") appId: String?, @Header("ticket") ticket: String?, + @Query("sn") sn: String?): Observable? + /** + * 查询车辆服务状态 + */ + @Headers("Content-type:application/json;charset=UTF-8") + @GET("/och-rental-cabin/api/business/v1/driver/businessStatus") + fun queryBusinessStatus(@Header("appId") appId: String?, @Header("ticket") ticket: String?, + @Query("sn") sn: String?): Observable? + + /** + * 确认更换目的地成功 + */ + @Headers("Content-Type:application/json;charset=UTF-8") + @POST("/och-rental-cabin/api/flow/v1/driver/changeDest") + fun changeDest(@Header("appId") appId: String?, @Header("ticket") ticket: String? + ,@Body request: RequestChangeDest): Observable? + + @Headers("Content-type:application/json;charset=UTF-8") + @GET("/och-rental-cabin/api/business/v1/driver/queryBusinessTime") + fun checkOrderCountDown(@Header("appId") appId: String?, @Header("ticket") ticket: String?, + @Query("sn") sn: String?): Observable? } \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt index 55f924e7c0..57ee0946ec 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt @@ -1,8 +1,16 @@ package com.magic.mogo.och.charter.presenter +import androidx.lifecycle.LifecycleOwner +import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse +import com.magic.mogo.och.charter.callback.ChangeDestCallback +import com.magic.mogo.och.charter.callback.DriverM1OrderCallback import com.magic.mogo.och.charter.fragment.DriverM1Fragment import com.magic.mogo.och.charter.model.DriverM1Model import com.mogo.commons.mvp.Presenter +import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean @@ -14,25 +22,113 @@ import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin * @date: 2023/2/22 */ class DriverM1Presenter(view: DriverM1Fragment?) : - Presenter(view),ILoginCallback{ + Presenter(view),ILoginCallback, DriverM1OrderCallback, ChangeDestCallback, + IMoGoAutopilotStatusListener { private val TAG = DriverM1Presenter::class.java.name + private var mCurrentAutopilotStatus : Int = -1 + + init { + DriverM1Model.get().init() + registerListener() + } + + private fun registerListener() { + //2021.11.1 鹰眼架构整合,由IMoGoAutopilotStatusListener逐步替代IMogoAdasOCHCallback接口 + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + DriverM1Model.get().setDriverM1OrderCallback(this) + DriverM1Model.get().setChangeDestCallback(this) + } + + private fun releaseListener() { + DriverM1Model.get().setDriverM1OrderCallback(null) + DriverM1Model.get().setChangeDestCallback(null) + } + + override fun onDestroy(owner: LifecycleOwner) { + super.onDestroy(owner) + releaseListener() + DriverM1Model.get().release() + } override fun loginSuccess(data: DriverStatusQueryRespBean?) { d(SceneConstant.M_BUS + TAG, " loginStatus =" + isLogin()) if (isLogin()) { - // todo 已经登陆 + // 查询服务状态 + DriverM1Model.get().queryCurrentServiceStatus() } else { - // todo 未登陆 + DriverM1Model.get().stopQueryCurrentOrder() } } override fun loginFail(isLogin: Boolean) { - //todo 登陆失败 + DriverM1Model.get().stopQueryCurrentOrder() } // 登出 fun logout() { - DriverM1Model.INSTANCE.logout() + DriverM1Model.get().logout() + } + + fun restartAutopilot() { + // todo 启动自驾必须有订单路线 + if (DriverM1Model.get().isGoingToNextStation()) { + DriverM1Model.get().restartAutopilot() + } + } + + fun driverEndLease() { + DriverM1Model.get().driverEndLease() + } + + override fun updateOrderUI(orderStatus: QueryCurrentOrderResponse.Result) { + mView?.updateOrderUI(orderStatus) + } + + override fun updateOverCountDown(minutes: Int) { + mView?.updateCountDown(minutes) + } + + override fun updateReturnCarStatus(returnSuccess: Boolean) { + mView?.updateReturnCarStatus(returnSuccess) + } + + override fun showCommitDialog(title: String,content: String) { + mView?.showCommitDialog(title,content) + } + + fun sendCommitMsgToClient(isAffirm: Boolean){ + DriverM1Model.get().sendCommitMsgToClient(isAffirm) + } + + fun changeDest(){ + DriverM1Model.get().changeDest() + } + + override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + val status = autoPilotStatusInfo.state + if (mCurrentAutopilotStatus == status) return + + if (FunctionBuildConfig.isDemoMode){ //todo 此处要加上判断订单状态 美化模式生效 + mView?.onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) + }else{ + mView?.onAutopilotStatusChanged(status) + } + +// when(status){ +// +// IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> { // +// +// } +// IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING ->{ +// +// } +// IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE ->{ +// +// } +// IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING ->{ +// +// } +// } } } diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/view/SlidePanelView.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/view/SlidePanelView.kt index 41b256ae46..651e857ef5 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/view/SlidePanelView.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/view/SlidePanelView.kt @@ -1,4 +1,4 @@ -package com.charter.driverm1.view +package com.magic.mogo.och.charter.view import android.animation.ObjectAnimator import android.animation.ValueAnimator @@ -8,6 +8,7 @@ import android.util.AttributeSet import android.view.MotionEvent import android.view.View import android.view.animation.DecelerateInterpolator +import com.magic.mogo.och.charter.R import com.mogo.commons.AbsMogoApplication import me.jessyan.autosize.AutoSizeConfig import me.jessyan.autosize.utils.AutoSizeUtils @@ -62,7 +63,7 @@ class SlidePanelView @JvmOverloads constructor( } private fun init() { - bgRectF = RectF(0, 0, 0, 0) + bgRectF = RectF(0F, 0F, 0F, 0F) bgPaint.color = Color.parseColor("#CC0F1325") bgPaint.style = Paint.Style.FILL textPaint.style = Paint.Style.FILL @@ -70,22 +71,23 @@ class SlidePanelView @JvmOverloads constructor( textPaint.textAlign = Paint.Align.LEFT textGradient = LinearGradient( -GRADIENT_OFFSET, - 0, - 0, - 0, + 0f, + 0f, + 0f, intArrayOf(0x33ffffff, -0x1, 0x33ffffff), null, Shader.TileMode.CLAMP ) + textGradient!!.setLocalMatrix(gradientMatrix) textPaint.shader = textGradient textPaint.getFontMetrics(blockTextMetrics) val size = AutoSizeUtils.dp2px(context, 120f) val opts = BitmapFactory.Options() opts.inDensity = AutoSizeConfig.getInstance().initDensity.toInt() - bmBlock = BitmapFactory.decodeResource(resources, R.drawable.bus_base_slide_block, opts) - bmBlock = Bitmap.createScaledBitmap(bmBlock, size, size, true) - blockWidth = bmBlock.getWidth() + bmBlock = BitmapFactory.decodeResource(resources, R.drawable.bus_base_slide_block, opts) as Bitmap + bmBlock = Bitmap.createScaledBitmap(bmBlock!!, size, size, true) as Bitmap + blockWidth = bmBlock!!.width } override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { @@ -233,7 +235,7 @@ class SlidePanelView @JvmOverloads constructor( private var SHORT_TEXT_MARGIN_LEFT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), 60f) private var SHORT_TEXT_MARGIN_RIGHT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), 70f) private const val STRING_SLIDE_TO_RIGHT = "向右滑动" - private const val GRADIENT_OFFSET = 200 + private const val GRADIENT_OFFSET = 200f } init { diff --git a/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml b/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml index 2b7f8c45c3..c55fe1aeb0 100644 --- a/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml +++ b/OCH/mogo-och-charter/src/driverm1/res/layout/fragment_driver_m1.xml @@ -5,7 +5,9 @@ android:id="@+id/module_och_bus_order_status_stationInfo" android:layout_width="@dimen/module_mogo_och_autopilot_order_bg_width" android:layout_height="wrap_content" + android:minHeight="@dimen/dp_754" android:background="@drawable/bus_line_panel_bg" + android:paddingBottom="@dimen/dp_90" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -138,6 +140,7 @@ app:layout_constraintRight_toLeftOf="@+id/driverm1StationName2Tv" app:layout_constraintTop_toTopOf="@+id/driverm1StationName2Tv" app:layout_constraintBottom_toBottomOf="@+id/driverm1StationName2Tv"/> + + + + + + + driverm1StationName2Tv,driverm1nextCircleIv,driverm1CircleIvBg,driverm1ArrowBg + ,line3,during_time,passenger_phone"/> + \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/res/values/attrs.xml b/OCH/mogo-och-charter/src/driverm1/res/values/attrs.xml new file mode 100644 index 0000000000..396db92f74 --- /dev/null +++ b/OCH/mogo-och-charter/src/driverm1/res/values/attrs.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/res/values/strings.xml b/OCH/mogo-och-charter/src/driverm1/res/values/strings.xml index 75d31d69a4..173a67f36a 100644 --- a/OCH/mogo-och-charter/src/driverm1/res/values/strings.xml +++ b/OCH/mogo-och-charter/src/driverm1/res/values/strings.xml @@ -1,4 +1,7 @@ - 剩余—分钟 + 剩余%1$s分钟 + 包车时间:%1$s + 乘客信息:%1$s + diff --git a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/ICharterOCH.java b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/ICharterOCH.java index bd442dc496..2f8ecd62bb 100644 --- a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/ICharterOCH.java +++ b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/ICharterOCH.java @@ -5,14 +5,13 @@ import androidx.fragment.app.FragmentActivity; import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; -public /** * @author congtaowang * @since 2021/1/15 * * 网约车抽象接口 */ -interface ICharterOCH extends IMoGoFunctionProvider { +public interface ICharterOCH extends IMoGoFunctionProvider { /** * 初始化网约车容器 diff --git a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt index 73b81690f1..a14e3c85bc 100644 --- a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt +++ b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/base/CharterBaseFragment.kt @@ -11,6 +11,7 @@ import android.widget.* import androidx.constraintlayout.widget.Group import com.magic.mogo.och.charter.R import com.magic.mogo.och.charter.constant.CharterConst +import com.magic.mogo.och.charter.view.SlidePanelView import com.mogo.commons.mvp.IView import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.mvp.Presenter @@ -63,9 +64,7 @@ abstract class CharterBaseFragment?>() : private var mapBizView: MapBizView? = null private var groupTestPanel: Group? = null private var mTrafficDataView: TrafficDataView? = null - // private BusTrafficLightView mTrafficLightView; - - // private BusTrafficLightView mTrafficLightView; + protected var slidePanelView: SlidePanelView? = null //远景和中景的切换 private var mSwitchMapModeImage: ImageView? = null private var mSwitchMapModeLayout: LinearLayout? = null @@ -93,6 +92,9 @@ abstract class CharterBaseFragment?>() : ctvAutopilotStatusTv = findViewById(R.id.bus_autopolot_btn_tv) flStationPanelContainer = findViewById(R.id.module_mogo_och_station_panel_container) + slidePanelView = findViewById(R.id.charter_slide_panel) + slidePanelView?.setOnSlidePanelMoveToEndListener(onSlideToEndListener) + mTrafficDataView = findViewById(R.id.bus_arc) as TrafficDataView? LayoutInflater.from(context).inflate(getStationPanelViewId(), flStationPanelContainer) mSwitchMapModeLayout = findViewById(R.id.bus_switch_model_layout) @@ -155,8 +157,6 @@ abstract class CharterBaseFragment?>() : ) } - // 模拟 自动驾驶网约车回调数据 - findViewById(R.id.btnAutopilotRoute)!!.setOnClickListener { view: View? -> debugArrivedRoute() } mSettingBtn = findViewById(R.id.module_mogo_och_setting_layout) mSettingBtn!!.setOnClickListener { v: View? -> // TODO: 2021/12/9 @@ -212,6 +212,38 @@ abstract class CharterBaseFragment?>() : return super.onCreateView(inflater, container, savedInstanceState) } + private val onSlideToEndListener = object : SlidePanelView.OnSlidePanelMoveToEndListener{ + override fun moveToEnd() { + // 此处做一个代理,处理一下共有情况 + if (getSlidePanelOnEndListener() != null) { + getSlidePanelOnEndListener()?.moveToEnd() + } + } + } + + open fun getSlidePanelOnEndListener(): SlidePanelView.OnSlidePanelMoveToEndListener? { + return null + } + + /** + * 展示滑动按钮 + * + * @param text 指定的文字 + */ + fun showSlidePanel(text: String?) { + requireActivity().runOnUiThread { + slidePanelView?.setText(text!!) + slidePanelView?.visibility = View.VISIBLE + } + } + + /** + * 隐藏滑动按钮 + */ + fun hideSlidePanel() { + requireActivity().runOnUiThread { slidePanelView?.visibility = View.GONE } + } + private fun updateSwitchMapIcon() { val controller = getMapUIController() if (controller != null) { @@ -225,10 +257,6 @@ abstract class CharterBaseFragment?>() : } } - private fun debugArrivedRoute() { -// BDRouteDataTestUtils.converToRouteData() - } - override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) mapBizView!!.onSaveInstanceState(outState) @@ -257,7 +285,7 @@ abstract class CharterBaseFragment?>() : } - open fun playDI() { + fun playDI() { SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) } @@ -266,8 +294,8 @@ abstract class CharterBaseFragment?>() : * * @param autopilotStatus 0:不可用 1:可用状态 2:自动驾驶中 */ - open fun onAutopilotStatusChanged(autopilotStatus: Int) { - activity?.runOnUiThread { + fun onAutopilotStatusChanged(autopilotStatus: Int) { + requireActivity().runOnUiThread { changeAutopilotBtnView( autopilotStatus, isAnimateRunning @@ -275,7 +303,7 @@ abstract class CharterBaseFragment?>() : } } - open fun setAutopilotBtnStatus(autopilotStatus: Int) { + private fun setAutopilotBtnStatus(autopilotStatus: Int) { if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE == autopilotStatus ) { //0不可用 @@ -344,7 +372,7 @@ abstract class CharterBaseFragment?>() : * 展示【自动驾驶】按钮 */ open fun showAutopilotBiz() { - activity?.runOnUiThread { ctvAutopilotStatus!!.visibility = View.VISIBLE } + requireActivity().runOnUiThread { ctvAutopilotStatus!!.visibility = View.VISIBLE } } /** diff --git a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt index c75012f070..cc3137bb8f 100644 --- a/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt +++ b/OCH/mogo-och-charter/src/main/java/com/magic/mogo/och/charter/constant/CharterConst.kt @@ -7,7 +7,7 @@ class CharterConst { companion object { // OCH arouter 路由path - const val PATH = "/och/api" + const val PATH = "/driver/api" // 测试用的广播 const val BROADCAST_TEST_BUS_CONTROL_TYPE_EXTRA_KEY = "sceneType" @@ -66,9 +66,9 @@ class CharterConst { const val ARRIVE_AT_END_STATION_DISTANCE = 10 // 轮询 - const val LOOP_PASSENGER_5S = 5 * 1000L - const val LOOP_PASSENGER_2S = 2 * 1000L - const val LOOP_PASSENGER_1S = 1 * 1000L + const val LOOP_5M = 3 * 1000L + const val LOOP_2S = 2 * 1000L + const val LOOP_1S = 1 * 1000L const val LOOP_DELAY_500 = 500L const val DELAY_10S = 10 * 1000L diff --git a/OCH/mogo-och-charter/src/main/res/layout/charter_base_fragment.xml b/OCH/mogo-och-charter/src/main/res/layout/charter_base_fragment.xml index e0b25c915c..9d79f5934a 100644 --- a/OCH/mogo-och-charter/src/main/res/layout/charter_base_fragment.xml +++ b/OCH/mogo-och-charter/src/main/res/layout/charter_base_fragment.xml @@ -366,4 +366,22 @@ app:layout_constraintEnd_toEndOf="parent" /> + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOperateDoorMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOperateDoorMsg.kt new file mode 100644 index 0000000000..20b8443827 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOperateDoorMsg.kt @@ -0,0 +1,9 @@ +package com.mogo.och.common.module.bean.dpmsg + +/** + * @author: wangmingjun + * @date: 2023/2/24 + */ +data class DPOperateDoorMsg( + var open: Boolean = false // true: 开门, false: 关门 +): BaseDPMsg(DPMsgType.TYPE_CHANGE_DEST.type) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOrderClosedMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOrderClosedMsg.kt new file mode 100644 index 0000000000..1b5e4c5a15 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOrderClosedMsg.kt @@ -0,0 +1,9 @@ +package com.mogo.och.common.module.bean.dpmsg + +/** + * @author: wangmingjun + * @date: 2023/2/24 + */ +data class DPOrderClosedMsg( + var closed: Boolean = true // true: 开门, false: 关门 +): BaseDPMsg(DPMsgType.TYPE_CHANGE_DEST.type) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/OCHSocketMessageManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/OCHSocketMessageManager.kt index 0439ca7842..443ad5469d 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/OCHSocketMessageManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/OCHSocketMessageManager.kt @@ -12,8 +12,10 @@ import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager * 统一管理业务长链消息推送 */ object OCHSocketMessageManager { - const val msgMonitorType:Int = 6295553 - const val msgWriteOffPassengerType:Int = 6295554 + public const val msgMonitorType:Int = 6295553 //后台运营消息 + public const val msgWriteOffPassengerType:Int = 6295554 //核销消息 + public const val msgOperateDoorType = 6295554 // 开/关门消息 + public const val msgOrderClosedType = 6295555 //订单结束消息 fun registerSocketMessageListener(msgType:Int, mogoOnMessageListener :IMogoOnMessageListener){ diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/DataBaseMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/DataBaseMsg.kt new file mode 100644 index 0000000000..813ff0d5b2 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/DataBaseMsg.kt @@ -0,0 +1,7 @@ +package com.mogo.och.common.module.biz.common.socketmessage.data + +/** + * @author: wangmingjun + * @date: 2023/2/25 + */ +open class DataBaseMsg (var msgType: Int,var pushTimeStamp: Long = System.currentTimeMillis()) \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/OperateDoorMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/OperateDoorMsg.kt new file mode 100644 index 0000000000..c5eefb403a --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/OperateDoorMsg.kt @@ -0,0 +1,12 @@ +package com.mogo.och.common.module.biz.common.socketmessage.data + +import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.msgOperateDoorType + +/** + * @author: wangmingjun + * @date: 2023/2/25 + */ +data class OperateDoorMsg( + var orderNo: String, + var message: String +):DataBaseMsg(msgOperateDoorType) //{"orderNo":"","message":""} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/OrderCloseMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/OrderCloseMsg.kt new file mode 100644 index 0000000000..09635d4b6a --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/OrderCloseMsg.kt @@ -0,0 +1,12 @@ +package com.mogo.och.common.module.biz.common.socketmessage.data + +import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.msgOrderClosedType + +/** + * @author: wangmingjun + * @date: 2023/2/25 + */ +data class OrderCloseMsg( + var orderNo: String, + var message: String +):DataBaseMsg(msgOrderClosedType) //{"orderNo":"","message":""} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/SystemMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/SystemMsg.kt new file mode 100644 index 0000000000..0f33831838 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/data/SystemMsg.kt @@ -0,0 +1,13 @@ +package com.mogo.och.common.module.biz.common.socketmessage.data + +import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.msgMonitorType + +/** + * @author: wangmingjun + * @date: 2023/2/25 + */ +data class SystemMsg( + var context: String, + var screenList: MutableList +):DataBaseMsg(msgMonitorType) // {"context":"","screenList":[]} 1:司机屏 2:乘客屏 + diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt index cac280afa6..ce48f0d692 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt @@ -60,7 +60,6 @@ class TaxiLoginDialogFragment : super.onCreate(savedInstanceState) setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏 } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -99,7 +98,8 @@ class TaxiLoginDialogFragment : //出租车司机 acivLoginBg.setImageResource(R.drawable.taxi_ic_login_bg) } else if ((AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) - || AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) && + || AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode) + || AppIdentityModeUtils.isCharter(FunctionBuildConfig.appIdentityMode)) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { //小巴车司机 acivLoginBg.setImageResource(R.drawable.bus_ic_login_bg) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt index 14e2610598..d004bcd8bf 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt @@ -4,6 +4,7 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_CHARTER_D import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_SWEEPER import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P @@ -13,7 +14,7 @@ object CallerLoggerUtils { AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ //出租车司机 M_TAXI - }else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)&& + }else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ //小巴车司机 M_BUS @@ -28,6 +29,10 @@ object CallerLoggerUtils { }else if (AppIdentityModeUtils.isSweeper(FunctionBuildConfig.appIdentityMode)){ //清扫车 M_SWEEPER + }else if (AppIdentityModeUtils.isCharter(FunctionBuildConfig.appIdentityMode) && + AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ + //M1司机端 + M_CHARTER_D } else{ "" diff --git a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt index f6921d05cc..588ffec05c 100644 --- a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt @@ -89,8 +89,11 @@ object ConfigStartUp { HdMapBuildConfig.currentCarVrIconRes = R.raw.huanwei } else if (AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)){ HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaobache + } else if (AppIdentityModeUtils.isCharter(FunctionBuildConfig.appIdentityMode)){ + HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaobache } + if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { //是否显示 限速UI diff --git a/core/mogo-core-res/src/main/res/drawable-xhdpi/operation_order_icon.png b/core/mogo-core-res/src/main/res/drawable-xhdpi/operation_order_icon.png new file mode 100755 index 0000000000..d1363d1a96 Binary files /dev/null and b/core/mogo-core-res/src/main/res/drawable-xhdpi/operation_order_icon.png differ diff --git a/core/mogo-core-res/src/main/res/drawable-xhdpi/pnc_icon.png b/core/mogo-core-res/src/main/res/drawable-xhdpi/pnc_icon.png new file mode 100755 index 0000000000..1ba1c633ec Binary files /dev/null and b/core/mogo-core-res/src/main/res/drawable-xhdpi/pnc_icon.png differ diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt index aaf68dc862..daa67e941d 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt @@ -41,5 +41,7 @@ class SceneConstant { //清扫车 const val M_SWEEPER = "M_SWEEPER-" + //M1司机端 + const val M_CHARTER_D = "M_CHARTER_D-" } } \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/screen/ScreenHelper.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/screen/ScreenHelper.java index d9d9338019..49ca031de5 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/screen/ScreenHelper.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/screen/ScreenHelper.java @@ -21,7 +21,8 @@ public class ScreenHelper { int baseHeight = 1600; boolean baseOnWidth = true; - if (AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode)) { + if (AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode) && + AppIdentityModeUtils.isPassenger((FunctionBuildConfig.appIdentityMode))) { baseWidth = 1920; baseHeight = 1080; } else if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {