From cdd6963d011d301f54921f1a055f65679b969433 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 11 Nov 2024 16:58:18 +0800 Subject: [PATCH 1/7] =?UTF-8?q?[6.8.0]=20[fea]=20[=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=98=E6=9B=B4]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index bb52091df5..2d60eec418 100644 --- a/gradle.properties +++ b/gradle.properties @@ -92,8 +92,8 @@ WEBSOCKET_VERSION=1.1.7 applicationId=com.mogo.launcer applicationName=IntelligentPilot # RoboBus司机端:2.5.1;RoboTaxi司机端:2.5.1;RoboTaxi乘客端:1.0.0 -versionCode=6007003 -versionName=6.7.3 +versionCode=6008000 +versionName=6.8.0 ################# 新架构模块Maven版本管理 ################# MOGO_CORE_FUNCTION_HMI_VERSION=0.0.58.10 @@ -151,7 +151,7 @@ MATRIX_VERSION=2.0.8 # 公交模式司机端版本号 -DRIVER_VERSION=6.7.3 +DRIVER_VERSION=6.8.0 # 公交模式乘客端端版本号 -PASSENGER_VERSION=5.7.3 +PASSENGER_VERSION=5.8.0 From 930cb9a5e3f5e062bd2957ce9401a557135af3bc Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 11 Nov 2024 18:35:38 +0800 Subject: [PATCH 2/7] [6.8.0] [fea] [bus shuttle code] --- .../passenger/ShuttlePassengerProvider.kt | 2 +- .../passenger/callback/ADASCallback.kt | 0 .../passenger/callback/ICommonCallback.java | 27 ++ .../weaknet/passenger/model/CommonModel.kt | 356 +++++++++++++++- .../weaknet/passenger/model/LineModel.kt | 346 ---------------- .../IBusPassegerDriverStatusCallback.java | 9 - .../IBusPassengerADASStatusCallback.java | 18 - ...BusPassengerAutopilotPlanningCallback.java | 9 - ...IBusPassengerControllerStatusCallback.java | 13 - .../IBusPassengerRouteLineInfoCallback.java | 16 - .../passenger/model/BusPassengerModel.kt | 390 ------------------ .../presenter/BaseBusPassengerPresenter.kt | 129 ++---- .../ui/BusPassengerRouteFragment.java | 40 +- .../ui/{ => widget}/BusPBlueToothView.kt | 2 +- .../ui/{ => widget}/BusPStatusBarView.kt | 4 +- .../BusPassengerTrafficLightView.kt | 2 +- .../callback/AutoPilotStatusCallback.kt | 14 - .../passenger/callback/DrivingInfoCallback.kt | 18 - .../presenter/PM2DrivingPresenter.kt | 30 +- .../weaknet/passenger/ui/PM2BaseFragment.kt | 12 - .../passenger/ui/PM2DrivingInfoFragment.kt | 182 ++++---- .../shuttle_p_weak_jl_no_data_common_view.xml | 2 +- .../shuttle_p_weak_jl_view_status_bar.xml | 2 +- 23 files changed, 520 insertions(+), 1103 deletions(-) rename OCH/shuttle/passenger_weaknet/src/main/java/{m2 => }/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt (100%) create mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/LineModel.kt delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassegerDriverStatusCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerADASStatusCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerAutopilotPlanningCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerControllerStatusCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerRouteLineInfoCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/model/BusPassengerModel.kt rename OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/{ => widget}/BusPBlueToothView.kt (95%) rename OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/{ => widget}/BusPStatusBarView.kt (95%) rename OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/{ => widget}/BusPassengerTrafficLightView.kt (99%) delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/AutoPilotStatusCallback.kt delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/DrivingInfoCallback.kt diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/ShuttlePassengerProvider.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/ShuttlePassengerProvider.kt index f991e74e61..0f0dac8e79 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/ShuttlePassengerProvider.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/ShuttlePassengerProvider.kt @@ -13,7 +13,7 @@ import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.biz.provider.CommonServiceImpl import com.mogo.och.common.module.wigets.media.MediaPlayerActivity import com.mogo.och.shuttle.weaknet.passenger.model.TicketModel -import com.mogo.och.shuttle.weaknet.passenger.ui.BusPStatusBarView +import com.mogo.och.shuttle.weaknet.passenger.ui.widget.BusPStatusBarView import com.mogo.och.shuttle.weaknet.passenger.ui.BusPassengerRouteFragment import com.mogo.och.shuttle.weaknet.passenger.ui.PM2BaseFragment import com.mogo.och.shuttle.weaknet.passenger.ui.widget.M2StatusBarView diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt similarity index 100% rename from OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt rename to OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java new file mode 100644 index 0000000000..4a39fa1348 --- /dev/null +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java @@ -0,0 +1,27 @@ +package com.mogo.och.shuttle.weaknet.passenger.callback; + +import com.mogo.och.data.bean.BusStationBean; + +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2022/4/6 + */ +public interface ICommonCallback { + void updateLineInfo(String lineName); + void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived); + void updateSpeed(int location); + void updateRemainMT(long meters, long timeInSecond); + void showNoTaskView(boolean isTrue); + + /** + * false: 未开启自驾, true : 开启自驾 + */ + void updateAutoStatus(boolean isOpen); + + default void updateLineStations(List stations){} + + default void clearCustomPolyline(){} + +} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt index 19b590dc2c..a2473d8c4c 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt @@ -1,26 +1,120 @@ package com.mogo.och.shuttle.weaknet.passenger.model +import android.annotation.SuppressLint +import android.content.Context import com.mogo.commons.AbsMogoApplication import com.mogo.commons.env.ProjectUtils +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.function.api.autopilot.IMoGoChassisLocationGCJ02Listener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +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.util.GsonUtils +import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.och.common.module.biz.lansocket.IOchLanPassengerStatusListener +import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket +import com.mogo.och.common.module.biz.media.MediaManager +import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener +import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager +import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager +import com.mogo.och.common.module.manager.distance.IDistanceListener +import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager import com.mogo.och.common.module.manager.download.DownloadManager +import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager +import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener import com.mogo.och.common.module.manager.socket.lan.LanSocketManager +import com.mogo.och.common.module.manager.socket.lan.bean.AppConnectMsg import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType +import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.PinYinUtil +import com.mogo.och.common.module.voice.VoiceNotice.showNotice +import com.mogo.och.common.module.wigets.media.MediaItem +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.weaknet.passenger.bean.response.ResponseSiteIntroduce +import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback +import com.mogo.och.shuttle.weaknet.passenger.constant.BusPassengerConst import com.mogo.och.shuttle.weaknet.passenger.network.PassengerServiceManager +import kotlin.math.abs + +@SuppressLint("StaticFieldLeak") +object CommonModel { + + private val TAG: String = CommonModel::class.java.simpleName + + var mContext: Context? = null + + + private var mCommonCallback: ICommonCallback? = null // bus路线信息更新 + + var mStations = mutableListOf() + var mNextStationIndex = 0 // A-B要到达站的index + @Volatile + var isGoingToNextStation = false //是否前往下一站过程中 + + var routesResult: BusRoutesResult? = null + + + + fun init(context: Context) { + mContext = context.applicationContext + initListeners() + queryDriverByLocalDriver() + } + + + private fun initListeners() { + //自动驾驶状态监听 + OchAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener) + // 定位监听 + OchLocationManager.addGCJ02Listener(TAG, 3, mMapLocationListener) + // 监听站点距离 + TrajectoryAndDistanceManager.addDistanceListener(TAG, trajectoryListener) + // 通用监听 + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_COMMON.type, LanSocketManager.commonListener) + // 监听站点信息 + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type, typeTaskDetails) + // 注册监听和司机屏连接情况 + LoginLanPassengerSocket.addListener(TAG, connectDriverListener) + } + + fun releaseListeners() { + //自动驾驶状态监听 + CallerAutoPilotStatusListenerManager.removeListener(TAG) + // 定位监听 + OchLocationManager.removeGCJ02Listener(TAG) + // 监听站点距离 + TrajectoryAndDistanceManager.removeListener(TAG) + LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_COMMON.type, LanSocketManager.commonListener) + LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type, typeTaskDetails) + LoginLanPassengerSocket.removeListener(TAG) + cleanStation("release") + } + + + fun setRouteLineInfoCallback(callback: ICommonCallback?) { + this.mCommonCallback = callback + } -open class CommonModel { val connectDriverListener = object : IOchLanPassengerStatusListener { + // 和司机屏连接发生变化后 override fun onDriverConnectChangeListener(isConnect: Boolean) { super.onDriverConnectChangeListener(isConnect) if(isConnect){ queryDriverByLocalDriver() } } - + // 司机屏sn 发生变化后 override fun onDriverSnChagneListner(sn: String?) { super.onDriverSnChagneListner(sn) sn?.let { @@ -29,12 +123,170 @@ open class CommonModel { } } + val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = + object : IMoGoChassisLocationGCJ02Listener { + override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { + if (null == mogoLocation) return + updateSpeed(mogoLocation) + } + } + + val mAutoPilotStatusListener: IOchAutopilotStatusListener = + object : IOchAutopilotStatusListener { + + override fun onAutopilotStatusResponse(state: Int) { + d(SceneConstant.M_BUS_P, "onAutopilotStatusResponse ===== $state") + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != state){ + //美化模式下且行程中 + if (FunctionBuildConfig.isDemoMode && + mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1 + && isGoingToNextStation + ){ + mCommonCallback?.updateAutoStatus(true) + }else{//非美化模式下 + mCommonCallback?.updateAutoStatus(false) + } + }else{//自驾状态 2 + mCommonCallback?.updateAutoStatus(true) + } + } + } + + val trajectoryListener: IDistanceListener = object : IDistanceListener { + override fun distanceCallback(distance: Float) { + val lastTime = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒 + d(SceneConstant.M_BUS_P, "轨迹排查==lastSumLength = $distance") + if (routesResult != null) { + for (site in routesResult!!.sites) { + if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { + return + } + } + } + // 小于200m 播报站点介绍 + if (distance < 200) { + val stationNext = mStations[mNextStationIndex] + if (!stationNext.isPlayTts) { + if (!StringUtils.isEmpty(stationNext.introduction)) { + showNotice(stationNext.introduction) + stationNext.isPlayTts = true + } + } + } + mCommonCallback?.updateRemainMT( + distance.toLong(), + lastTime.toLong() + ) + } + } + + val typeTaskDetails = object : ILanMessageListener { + override fun targetLan(): Class { + return TaskDetailsMsg::class.java + } + + override fun onLanMsgReceived(first: TaskDetailsMsg?) { + first?.let { + + if (first.msg?.isEmpty() == true) { + clearLocalRouteResult() + return + } + val result = GsonUtils.fromJson(first.msg, BusTransferData::class.java) + if (result != null && result.routesResult == null) { + clearLocalRouteResult() + } + + if (result != null) { + routesResult = result.routesResult + updatePassengerRouteInfo(routesResult) + } + } + } + } + + val b1CommonListener = object : ILanMessageListener { + override fun targetLan(): Class = AppConnectMsg::class.java + + override fun onLanMsgReceived(first: AppConnectMsg?) { + first?.let { + if (it.isViewShow) { //消息盒子显示内容 + OCHSocketMessageManager.pushAppOperationalMsgBox( + DateTimeUtil.getCurrentTimeStamp(), it.msg, + OCHSocketMessageManager.OPERATION_SYSTEM + ) + } + } + } + } + + fun clearLocalRouteResult(){ + routesResult = null + mNextStationIndex = 0 + cleanStation("queryDriverSiteByCoordinate") + isGoingToNextStation = false + mCommonCallback?.showNoTaskView(true) + } + + + fun updatePassengerRouteInfo(result: BusRoutesResult?) { + if (result == null) { + clearLocalRouteResult() + return + } + + if (routesResult != null && routesResult!!.lineId != result.lineId) { + d(SceneConstant.M_BUS_P + TAG, "lineId change= clearCustomPolyline") + mCommonCallback?.clearCustomPolyline() + } + + d(SceneConstant.M_BUS_P + TAG, "queryDriverSiteByCoordinate = update") + routesResult = result + + if (result.sites != null) { + mCommonCallback?.updateLineInfo(result.name) + mCommonCallback?.showNoTaskView(false) + if (result.sites != null) { + val stations = result.sites + mStations.clear() + mStations.addAll(stations) + mCommonCallback?.updateLineStations(mStations) + for (i in stations.indices) { + val station = stations[i] + if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED + && station.isLeaving && i + 1 < stations.size + ) { + isGoingToNextStation = true + mCommonCallback?.updateStationsInfo(stations, i + 1, false) + mNextStationIndex = i + 1 + val startStation = mStations[i] + val endStation = mStations[i + 1] + startStationVideo(endStation) + setTrajectoryStation(startStation, endStation, result.lineId) + updateAutopilotControlParameters(result, i) + return + } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { + if (i == stations.size - 1) { + cleanStation("updatePassengerRouteInfo最后一个站点") + } + isGoingToNextStation = false + Logger.d(SceneConstant.M_BUS_P + TAG, "order = station= arrive") + mCommonCallback?.updateStationsInfo(stations, i, true) + clearAutopilotControlParameters() + return + } + } + } + } + } + + // 向司机屏请求业务数据 fun queryDriverByLocalDriver() { //本地去请求司机端 val msg = TaskDetailsMsg("task", BusinessType.shuttle) LanSocketManager.sendMsgToServer(msg) } - + // 查询sn 所配置的所有站点介绍视频 private fun querySiteIntroduce(){ AbsMogoApplication.getApp()?.let { if (ProjectUtils.isSaas()) { @@ -54,7 +306,7 @@ open class CommonModel { } } } - + // 去统一下载站点介绍 private fun downloadSiteIntroduce(response: ResponseSiteIntroduce) { response.data?.forEach {siteIntroduceInfo -> siteIntroduceInfo.introduceList.forEach {introduceInfo -> @@ -63,5 +315,101 @@ open class CommonModel { } } + fun updateAutopilotControlParameters( + busRoutesResult: BusRoutesResult, + leaveIndex: Int + ) { + val parameters = initAutopilotControlParameters(busRoutesResult, leaveIndex) + if (null == parameters) { + CallerLogger.e(SceneConstant.M_BUS_P, "AutopilotControlParameters is empty.") + return + } + CallerLogger.d(SceneConstant.M_BUS_P, "AutopilotControlParameters is update.") + CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) + } + + fun initAutopilotControlParameters( + busRoutesResult: BusRoutesResult, + leaveIndex: Int + ): AutopilotControlParameters? { + if (busRoutesResult.sites == null) { + return null + } + val stations = busRoutesResult.sites + if (leaveIndex + 1 > stations.size - 1) { + CallerLogger.e(SceneConstant.M_BUS_P, "行程日志-mismatch condition1.") + return null + } + val currentStation = stations[leaveIndex] + val nextStation = stations[leaveIndex + 1] + val parameters = AutopilotControlParameters() + parameters.routeID = busRoutesResult.lineId + parameters.routeName = busRoutesResult.name + parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.name) + parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.name) + parameters.startLatLon = + AutopilotControlParameters.AutoPilotLonLat(currentStation.lat, currentStation.lon) + parameters.endLatLon = + AutopilotControlParameters.AutoPilotLonLat(nextStation.lat, nextStation.lon) + parameters.vehicleType = 10 + if (parameters.autoPilotLine == null) { + parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( + busRoutesResult.lineId.toLong(), busRoutesResult.name, + busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, + busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, + busRoutesResult.contrailSaveTime, busRoutesResult.carModel, + busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, + busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, + busRoutesResult.contrailSaveTimeDPQP + ) + } + return parameters + } + + fun clearAutopilotControlParameters() { + CallerLogger.d(SceneConstant.M_BUS_P, "AutopilotControlParameters is clear.") + CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) + } + + fun startStationVideo(startStationInfo: BusStationBean){ + val introductionList = mutableListOf() + startStationInfo.videoList?.forEach { + if(it.type==1) { + introductionList.add( + MediaItem( + MediaItem.PrioritySite, it.url, + MediaItem.MEDIA_TYPE_VIDEO,"","") + ) + } + } + MediaManager.postSiteIntroduceInfo(introductionList) + } + + fun setTrajectoryStation( + startStationInfo: BusStationBean, + endStationInfo: BusStationBean, + lineId: Int + ) { + val startStation = MogoLocation() + startStation.longitude = startStationInfo.gcjLon + startStation.latitude = startStationInfo.gcjLat + val endStation = MogoLocation() + endStation.longitude = endStationInfo.gcjLon + endStation.latitude = endStationInfo.gcjLat + TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId.toLong()) + } + + fun cleanStation(type: String) { + d(SceneConstant.M_BUS_P, "清理站点:$type") + TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) + } + + + fun updateSpeed(mogoLocation: MogoLocation) { + // km/h + val speedKM = (abs(mogoLocation.gnssSpeed) * 3.6f).toInt() + + mCommonCallback?.updateSpeed(speedKM) + } } \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/LineModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/LineModel.kt deleted file mode 100644 index 9c6629570a..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/LineModel.kt +++ /dev/null @@ -1,346 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.model - -import android.annotation.SuppressLint -import android.content.Context -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.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -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.GsonUtils -import com.mogo.eagle.core.utilcode.util.StringUtils -import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket -import com.mogo.och.common.module.biz.media.MediaManager -import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener -import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager -import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager -import com.mogo.och.common.module.manager.distance.IDistanceListener -import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager -import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener -import com.mogo.och.common.module.manager.socket.lan.LanSocketManager -import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType -import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType -import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg -import com.mogo.och.common.module.utils.PinYinUtil -import com.mogo.och.common.module.voice.VoiceNotice.showNotice -import com.mogo.och.common.module.wigets.media.MediaItem -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.weaknet.passenger.callback.AutoPilotStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.DrivingInfoCallback -import com.mogo.och.shuttle.weaknet.passenger.constant.BusPassengerConst -import kotlin.math.abs - -/** - * @author: wangmingjun - * @date: 2023/1/31 - */ -@SuppressLint("StaticFieldLeak") -object LineModel:CommonModel(){ - - private var mContext: Context? = null - - private var routesResult: BusRoutesResult? = null - private val TAG: String = LineModel::class.java.simpleName - - var mStations = mutableListOf() - private var mNextStationIndex = 0 // A-B要到达站的index - private var isGoingToNextStation = false //是否前往下一站过程中 - - private var mDrivingInfoCallback: DrivingInfoCallback? = null //行程信息 - private var mAutoStatusCallback: AutoPilotStatusCallback? = null //自动驾驶状态 - - fun init(context: Context) { - mContext = context - initListener() - queryDriverByLocalDriver() - } - - - - private fun initListener() { - //自动驾驶状态监听 - OchAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener) - - // 定位监听 - OchLocationManager.addGCJ02Listener(TAG, 3, mMapLocationListener) - // 监听站点距离 - TrajectoryAndDistanceManager.addDistanceListener(TAG, trajectoryListener) - // 通用监听 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_COMMON.type,LanSocketManager.commonListener) - // 监听站点信息 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type,typeTaskDetails) - - LoginLanPassengerSocket.addListener(TAG, connectDriverListener) - - } - - fun releaseListener() { - //自动驾驶状态监听 - CallerAutoPilotStatusListenerManager.removeListener(TAG) - - // 定位监听 - OchLocationManager.removeGCJ02Listener(TAG) - // 监听站点距离 - cleanStation("release") - - TrajectoryAndDistanceManager.removeListener(TAG) - - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_COMMON.type,LanSocketManager.commonListener) - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type,typeTaskDetails) - - LoginLanPassengerSocket.removeListener(TAG) - - } - - fun setDrivingInfoCallback(drivingInfoCallback : DrivingInfoCallback?){ - mDrivingInfoCallback = drivingInfoCallback - } - - fun setAutoStatusCallback(autoPilotStatusCallback: AutoPilotStatusCallback?){ - mAutoStatusCallback = autoPilotStatusCallback - } - - private val typeTaskDetails = object : ILanMessageListener { - override fun targetLan(): Class { - return TaskDetailsMsg::class.java - } - - override fun onLanMsgReceived(first: TaskDetailsMsg?) { - first?.let { - - if (first.msg?.isEmpty() == true) { - updateLocalOrder() - return - } - val result = GsonUtils.fromJson(first.msg, BusTransferData::class.java) - if (result != null && result.routesResult == null){ - updateLocalOrder() - } - - if (result != null) { - routesResult = result.routesResult - updatePassengerRouteInfo(routesResult!!) - } - } - } - } - - private val trajectoryListener: IDistanceListener = object : IDistanceListener { - override fun distanceCallback(distance: Float) { - val lastTime = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒 - d(SceneConstant.M_BUS_P + TAG, "轨迹排查==lastSumLength = $distance") - if (routesResult != null) { - for (site in routesResult!!.sites) { - if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { - return - } - } - } - // 小于200m 播报站点介绍 - if (distance < 200) { - val stationNext = mStations[mNextStationIndex] - if (!stationNext.isPlayTts) { - if (!StringUtils.isEmpty(stationNext.introduction)) { - showNotice(stationNext.introduction) - stationNext.isPlayTts = true - } - } - } - mDrivingInfoCallback?.updateRemainMT( - distance.toLong(), - lastTime.toLong() - ) - } - } - - private val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = - object : IMoGoChassisLocationGCJ02Listener{ - override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { - if (null == mogoLocation) return - updateSpeed(mogoLocation) - } - } - - private fun updateSpeed(mogoLocation: MogoLocation) { - // km/h - val speedKM = (abs(mogoLocation.gnssSpeed) * 3.6f).toInt() - - mDrivingInfoCallback?.updateSpeed(speedKM) - } - - private val mAutoPilotStatusListener: IOchAutopilotStatusListener = - object : IOchAutopilotStatusListener { - - override fun onAutopilotStatusResponse(state: Int) { - super.onAutopilotStatusResponse(state) - d(SceneConstant.M_BUS_P+ TAG, "onAutopilotStatusResponse ===== $state") - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != state){ - //美化模式下且行程中 - if (FunctionBuildConfig.isDemoMode && - mNextStationIndex>= 0 && mNextStationIndex <= mStations.size - 1 - && isGoingToNextStation){ - mAutoStatusCallback?.updateAutoStatus(true) - }else{//非美化模式下 - mAutoStatusCallback?.updateAutoStatus(false) - } - }else{//自驾状态 2 - mAutoStatusCallback?.updateAutoStatus(true) - } - } - - } - - - private fun updateLocalOrder(){ - routesResult = null - mNextStationIndex = 0 - cleanStation("queryDriverSiteByCoordinate") - isGoingToNextStation = false - mDrivingInfoCallback?.showNoTaskView(true) - } - - private fun updatePassengerRouteInfo(result: BusRoutesResult) { - if (routesResult != null && routesResult!!.lineId != result.lineId){ - d(SceneConstant.M_BUS_P+ TAG, "lineId change= clearCustomPolyline") - mDrivingInfoCallback?.clearCustomPolyline() - } - - d(SceneConstant.M_BUS_P+ TAG, "queryDriverSiteByCoordinate= update") - routesResult = result - - mDrivingInfoCallback?.updateLine(result.name) - if (result.sites != null) { - mDrivingInfoCallback?.showNoTaskView(false) - val stations: List = result.sites - mStations.clear() - mStations.addAll(stations) - mDrivingInfoCallback?.updateLineStations(mStations) - for (i in stations.indices) { - val station: BusStationBean = stations[i] - if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED - && station.isLeaving && i + 1 < stations.size) { - mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i + 1, false) - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--start ") - isGoingToNextStation = true - mNextStationIndex = i + 1 - val startStation = mStations[i] - val endStation = mStations[i + 1] - startStationVideo(endStation) - setTrajectoryStation(startStation, endStation, result.lineId) - updateAutopilotControlParameters(result,i) - return - } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--arrived ") - if (i == stations.size - 1) { - cleanStation("updatePassengerRouteInfo最后一个站点") - } - isGoingToNextStation = false - mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i, true) - clearAutopilotControlParameters() - return - }else{ -// d(SceneConstant.M_BUS_P+TAG,"och-rotting--BusStationBean = " + GsonUtils.toJson(station)) - } - } - } - - } - - private fun setTrajectoryStation( - startStationInfo: BusStationBean, - endStationInfo: BusStationBean, - lineId: Int - ) { - val startStation = MogoLocation() - startStation.longitude = startStationInfo.gcjLon - startStation.latitude = startStationInfo.gcjLat - val endStation = MogoLocation() - endStation.longitude = endStationInfo.gcjLon - endStation.latitude = endStationInfo.gcjLat - TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId.toLong()) - } - - private fun startStationVideo(startStationInfo: BusStationBean){ - val introductionList = mutableListOf() - startStationInfo.videoList?.forEach { - if(it.type==1) { - introductionList.add( - MediaItem( - MediaItem.PrioritySite, it.url, - MediaItem.MEDIA_TYPE_VIDEO,"","") - ) - } - } - MediaManager.postSiteIntroduceInfo(introductionList) - } - - private fun cleanStation(type: String) { - d(SceneConstant.M_BUS_P + TAG, "清理站点:$type") - TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) - } - - private fun updateAutopilotControlParameters( - busRoutesResult: BusRoutesResult, - leaveIndex: Int - ) { - val parameters = initAutopilotControlParameters(busRoutesResult, leaveIndex) - if (null == parameters) { - CallerLogger.e(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is empty.") - return - } - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is update.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) - } - - private fun initAutopilotControlParameters( - busRoutesResult: BusRoutesResult, - leaveIndex: Int - ): AutopilotControlParameters? { - if (busRoutesResult.sites == null) { - return null - } - val stations = busRoutesResult.sites - if (leaveIndex + 1 > stations.size - 1) { - CallerLogger.e(SceneConstant.M_BUS_P + TAG, "行程日志-mismatch condition1.") - return null - } - val currentStation = stations[leaveIndex] - val nextStation = stations[leaveIndex + 1] - val parameters = AutopilotControlParameters() - parameters.routeID = busRoutesResult.lineId - parameters.routeName = busRoutesResult.name - parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.name) - parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.name) - parameters.startLatLon = - AutopilotControlParameters.AutoPilotLonLat(currentStation.lat, currentStation.lon) - parameters.endLatLon = - AutopilotControlParameters.AutoPilotLonLat(nextStation.lat, nextStation.lon) - parameters.vehicleType = 10 - if (parameters.autoPilotLine == null) { - parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( - busRoutesResult.lineId.toLong(), busRoutesResult.name, - busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, - busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, - busRoutesResult.contrailSaveTime, busRoutesResult.carModel, - busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, - busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, - busRoutesResult.contrailSaveTimeDPQP - ) - } - return parameters - } - - - private fun clearAutopilotControlParameters() { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is clear.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) - } -} \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassegerDriverStatusCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassegerDriverStatusCallback.java deleted file mode 100644 index ec1a0ebc5f..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassegerDriverStatusCallback.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -/** - * @author: wangmingjun - * @date: 2021/10/22 - */ -public interface IBusPassegerDriverStatusCallback { - void changeOperationStatus(boolean changeStatus); -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerADASStatusCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerADASStatusCallback.java deleted file mode 100644 index f68f593932..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerADASStatusCallback.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -/** - * Created on 2022/3/31 - * - * Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等) - */ -public interface IBusPassengerADASStatusCallback { - - // 自动驾驶可用状态 - void onAutopilotEnable(); - - // 自动驾驶不可用状态 - void onAutopilotDisable(); - - // 自动驾驶运行中 - void onAutopilotRunning(); -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerAutopilotPlanningCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerAutopilotPlanningCallback.java deleted file mode 100644 index 2bf2d2ea0e..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerAutopilotPlanningCallback.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -/** - * Created on 2022/3/31 - */ -public interface IBusPassengerAutopilotPlanningCallback { - void routePlanningToNextStationChanged(long meters, long timeInSecond); - -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerControllerStatusCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerControllerStatusCallback.java deleted file mode 100644 index 08c3b3344a..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerControllerStatusCallback.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -import com.mogo.eagle.core.data.map.MogoLocation; - -/** - * Created on 2022/3/31 - * - * Model->Presenter回调:状态控制器监听(accOn、adas ui show、voice ui show、push ui show、v2x ui show等等) - */ -public interface IBusPassengerControllerStatusCallback { - // 自车定位 - void onCarLocationChanged(MogoLocation location); -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerRouteLineInfoCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerRouteLineInfoCallback.java deleted file mode 100644 index ebe945edfe..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerRouteLineInfoCallback.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -import com.mogo.och.data.bean.BusStationBean; - -import java.util.List; - -/** - * @author: wangmingjun - * @date: 2022/4/6 - */ -public interface IBusPassengerRouteLineInfoCallback { - void updateLineInfo(String lineName); - void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived); - void showNoTaskView(); - void hideNoTaskView(); -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/model/BusPassengerModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/model/BusPassengerModel.kt deleted file mode 100644 index e52ac3a4c6..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/model/BusPassengerModel.kt +++ /dev/null @@ -1,390 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.model - -import android.annotation.SuppressLint -import android.content.Context -import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager -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.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d -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.util.GsonUtils -import com.mogo.eagle.core.utilcode.util.StringUtils -import com.mogo.och.common.module.biz.lansocket.IOchLanPassengerStatusListener -import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket -import com.mogo.och.common.module.biz.media.MediaManager -import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener -import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager -import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager -import com.mogo.och.common.module.manager.distance.IDistanceListener -import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager -import com.mogo.och.common.module.manager.socket.cloud.AbnormalFactorsLoopManager -import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager -import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener -import com.mogo.och.common.module.manager.socket.lan.LanSocketManager -import com.mogo.och.common.module.manager.socket.lan.bean.AppConnectMsg -import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType -import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType -import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg -import com.mogo.och.common.module.utils.DateTimeUtil -import com.mogo.och.common.module.utils.PinYinUtil -import com.mogo.och.common.module.voice.VoiceNotice.showNotice -import com.mogo.och.common.module.wigets.media.MediaItem -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.weaknet.passenger.callback.IBusPassegerDriverStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerADASStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerAutopilotPlanningCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerControllerStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerRouteLineInfoCallback -import com.mogo.och.shuttle.weaknet.passenger.constant.BusPassengerConst -import java.util.concurrent.ConcurrentHashMap - -/** - * Created on 2022/3/31 - */ -@SuppressLint("StaticFieldLeak") -object BusPassengerModel :CommonModel(){ - private val TAG: String = BusPassengerModel::class.java.simpleName - private var mContext: Context? = null - private var mADASStatusCallback: IBusPassengerADASStatusCallback? = null //Model->Presenter:自动驾驶状态相关 - private var mAutopilotPlanningCallback: IBusPassengerAutopilotPlanningCallback? = null //Model->Presenter:自动驾驶线路规划 - private val mControllerStatusCallbackMap: MutableMap = ConcurrentHashMap() - - private var mDriverStatusCallback: IBusPassegerDriverStatusCallback? = null //出车收车状态 - private var mRouteLineInfoCallback: IBusPassengerRouteLineInfoCallback? = null // bus路线信息更新 - - private var routesResult: BusRoutesResult? = null - - var mStations: MutableList = ArrayList() - private var mNextStationIndex = 0 // 要到达站的index - - @Volatile - private var isGoingToNextStation = false - - fun init(context: Context) { - mContext = context.applicationContext - initListeners() - queryDriverByLocalDriver() - } - - fun setDriverStatusCallback(callback: IBusPassegerDriverStatusCallback?) { - this.mDriverStatusCallback = callback - } - - fun setRouteLineInfoCallback(callback: IBusPassengerRouteLineInfoCallback?) { - this.mRouteLineInfoCallback = callback - } - - fun setMoGoAutopilotPlanningListener(moGoAutopilotPlanningCallback: IBusPassengerAutopilotPlanningCallback?) { - this.mAutopilotPlanningCallback = moGoAutopilotPlanningCallback - } - - fun setADASStatusCallback(callback: IBusPassengerADASStatusCallback?) { - this.mADASStatusCallback = callback - } - - fun setControllerStatusCallback( - tag: String?, - callback: IBusPassengerControllerStatusCallback? - ) { - if (tag == null || "" == tag) return - if (callback == null) { - mControllerStatusCallbackMap.remove(tag) - return - } - mControllerStatusCallbackMap[tag] = callback - } - - - private fun clearLocalRouteResult() { - if (routesResult != null) { - routesResult = null - } - mNextStationIndex = 0 - cleanStation("queryDriverSiteByCoordinate") - if (mRouteLineInfoCallback != null) { - mRouteLineInfoCallback!!.showNoTaskView() - } - } - - private fun updatePassengerRouteInfo(result: BusRoutesResult?) { - if (result == null) { - clearLocalRouteResult() - return - } - d(SceneConstant.M_BUS_P + TAG, "queryDriverSiteByCoordinate = update") - routesResult = result - - if (mRouteLineInfoCallback != null) { - mRouteLineInfoCallback!!.updateLineInfo(result.name) - mRouteLineInfoCallback!!.hideNoTaskView() - if (result.sites != null) { - val stations = result.sites - mStations.clear() - mStations.addAll(stations) - for (i in stations.indices) { - val station = stations[i] - if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && station.isLeaving && i + 1 < stations.size) { - Logger.d(SceneConstant.M_BUS_P + TAG, "order = station= leave") - isGoingToNextStation = true - mRouteLineInfoCallback!!.updateStationsInfo(stations, i + 1, false) - mNextStationIndex = i + 1 - val startStation = mStations[i] - val endStation = mStations[i + 1] - startStationVideo(endStation) - setTrajectoryStation(startStation, endStation, result.lineId) - updateAutopilotControlParameters(result,i) - return - } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { - if (i == stations.size - 1) { - cleanStation("updatePassengerRouteInfo最后一个站点") - } - isGoingToNextStation = false - Logger.d(SceneConstant.M_BUS_P + TAG, "order = station= arrive") - mRouteLineInfoCallback!!.updateStationsInfo(stations, i, true) - clearAutopilotControlParameters() - return - } - } - } - } - } - - fun release() { - releaseListeners() - cleanStation("release") - } - - private fun initListeners() { - // 2021.11.1重构自动驾驶 实现接口 IMoGoAutopilotStatusListener 注册监听 替换IMogoAdasOCHCallback接口 - - OchAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener) - OchLocationManager.addGCJ02Listener(TAG, 3, mMapLocationListener) - - // 通用监听 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_COMMON.type, commonListener) - // 监听站点信息 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type, typeTaskDetails) - - AbnormalFactorsLoopManager.startLoopAbnormalFactors(mContext!!) - TrajectoryAndDistanceManager.addDistanceListener(TAG, trajectoryListener) - - LoginLanPassengerSocket.addListener(TAG,connectDriverListener) - } - - private fun releaseListeners() { - // 注销定位监听 - - OchLocationManager.removeGCJ02Listener(TAG) - - MogoAiCloudSocketManager.getInstance(mContext) - .unregisterLifecycleListener(10010) - - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_COMMON.type, commonListener) - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type, typeTaskDetails) - - AbnormalFactorsLoopManager.stopLoopAbnormalFactors() - LoginLanPassengerSocket.removeListener(TAG) - } - - private val commonListener = object : ILanMessageListener { - override fun targetLan(): Class = AppConnectMsg::class.java - - override fun onLanMsgReceived(first: AppConnectMsg?) { - first?.let { - if (it.isViewShow) { //消息盒子显示内容 - OCHSocketMessageManager.pushAppOperationalMsgBox( - DateTimeUtil.getCurrentTimeStamp(), it.msg, - OCHSocketMessageManager.OPERATION_SYSTEM - ) - } - } - } - } - - private val typeTaskDetails = object : ILanMessageListener { - override fun targetLan(): Class = TaskDetailsMsg::class.java - - override fun onLanMsgReceived(first: TaskDetailsMsg?) { - first?.let { - if (first.msg!!.isEmpty()) { - clearLocalRouteResult() - return - } - val result = GsonUtils.fromJson(first.msg, BusTransferData::class.java) - - if (result != null && result.routesResult == null){ - clearLocalRouteResult() - } - - mDriverStatusCallback?.changeOperationStatus(result!!.loginStatus == 1) - if (result != null) { //已司机端传来的为准 - routesResult = result.routesResult - updatePassengerRouteInfo(routesResult) - } - } - } - } - - private val trajectoryListener: IDistanceListener = object : IDistanceListener { - override fun distanceCallback(distance: Float) { - val lastTime = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒 - d(SceneConstant.M_BUS_P + TAG, "轨迹排查==lastSumLength = $distance") - if (routesResult != null) { - for (site in routesResult!!.sites) { - if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { - return - } - } - } - // 小于200m 播报站点介绍 - if (distance < 200) { - val stationNext = mStations[mNextStationIndex] - if (!stationNext.isPlayTts) { - if (!StringUtils.isEmpty(stationNext.introduction)) { - showNotice(stationNext.introduction) - stationNext.isPlayTts = true - } - } - } - mAutopilotPlanningCallback!!.routePlanningToNextStationChanged( - distance.toLong(), lastTime.toLong() - ) - } - } - - private val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = - object : IMoGoChassisLocationGCJ02Listener { - override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { - if (null == mogoLocation) return - for (callback in mControllerStatusCallbackMap.values) { - callback.onCarLocationChanged(mogoLocation) - } - } - } - - private val mGoAutopilotStatusListener: IOchAutopilotStatusListener = - object : IOchAutopilotStatusListener { - override fun onAutopilotStatusResponse(state: Int) { - if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - //2022.7.20 自动驾驶更换成带档位的 - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotRunning() - } else { - if (FunctionBuildConfig.isDemoMode && mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1 && isGoingToNextStation) { - Logger.d( - SceneConstant.M_BUS_P + TAG, - "FunctionBuildConfig.isDemoMode is true" - ) - return - } - - if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotEnable() - } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotDisable() - } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotRunning() - } - } - } - } - - private fun setTrajectoryStation( - startStationInfo: BusStationBean, - endStationInfo: BusStationBean, - lineId: Int - ) { - val startStation = MogoLocation() - startStation.longitude = startStationInfo.gcjLon - startStation.latitude = startStationInfo.gcjLat - val endStation = MogoLocation() - endStation.longitude = endStationInfo.gcjLon - endStation.latitude = endStationInfo.gcjLat - TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId.toLong()) - } - - - private fun startStationVideo(startStationInfo: BusStationBean){ - val introductionList = mutableListOf() - startStationInfo.videoList?.forEach { - if(it.type==1) { - introductionList.add( - MediaItem( - MediaItem.PrioritySite, it.url, - MediaItem.MEDIA_TYPE_VIDEO,"","") - ) - } - } - MediaManager.postSiteIntroduceInfo(introductionList) - } - - private fun cleanStation(type: String) { - d(SceneConstant.M_BUS_P + TAG, "清理站点:$type") - TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) - } - - private fun updateAutopilotControlParameters( - busRoutesResult: BusRoutesResult, - leaveIndex: Int - ) { - val parameters = initAutopilotControlParameters(busRoutesResult, leaveIndex) - if (null == parameters) { - CallerLogger.e(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is empty.") - return - } - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is update.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) - } - - private fun initAutopilotControlParameters( - busRoutesResult: BusRoutesResult, - leaveIndex: Int - ): AutopilotControlParameters? { - if (busRoutesResult.sites == null) { - return null - } - val stations = busRoutesResult.sites - if (leaveIndex + 1 > stations.size - 1) { - CallerLogger.e(SceneConstant.M_BUS_P + TAG, "行程日志-mismatch condition1.") - return null - } - val currentStation = stations[leaveIndex] - val nextStation = stations[leaveIndex + 1] - val parameters = AutopilotControlParameters() - parameters.routeID = busRoutesResult.lineId - parameters.routeName = busRoutesResult.name - parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.name) - parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.name) - parameters.startLatLon = - AutopilotControlParameters.AutoPilotLonLat(currentStation.lat, currentStation.lon) - parameters.endLatLon = - AutopilotControlParameters.AutoPilotLonLat(nextStation.lat, nextStation.lon) - parameters.vehicleType = 10 - if (parameters.autoPilotLine == null) { - parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( - busRoutesResult.lineId.toLong(), busRoutesResult.name, - busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, - busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, - busRoutesResult.contrailSaveTime, busRoutesResult.carModel, - busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, - busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, - busRoutesResult.contrailSaveTimeDPQP - ) - } - return parameters - } - - - private fun clearAutopilotControlParameters() { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is clear.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) - } - -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/presenter/BaseBusPassengerPresenter.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/presenter/BaseBusPassengerPresenter.kt index bdb1a005ba..827112c551 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/presenter/BaseBusPassengerPresenter.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/presenter/BaseBusPassengerPresenter.kt @@ -3,31 +3,24 @@ package com.mogo.och.shuttle.weaknet.passenger.presenter import androidx.lifecycle.LifecycleOwner import com.mogo.commons.AbsMogoApplication import com.mogo.commons.mvp.Presenter -import com.mogo.eagle.core.data.map.MogoLocation -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener 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.UiThreadHandler +import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.data.bean.BusStationBean -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassegerDriverStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerADASStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerAutopilotPlanningCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerControllerStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerRouteLineInfoCallback -import com.mogo.och.shuttle.weaknet.passenger.model.BusPassengerModel +import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback +import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel import com.mogo.och.shuttle.weaknet.passenger.ui.BusPassengerRouteFragment /** * Created on 2022/3/31 */ class BaseBusPassengerPresenter(view: BusPassengerRouteFragment?) : - Presenter(view), IBusPassengerADASStatusCallback, - IBusPassengerControllerStatusCallback, IBusPassegerDriverStatusCallback, - IBusPassengerRouteLineInfoCallback, IBusPassengerAutopilotPlanningCallback { + Presenter(view), + ICommonCallback { private val TAG: String = BaseBusPassengerPresenter::class.java.simpleName init { - BusPassengerModel.init(AbsMogoApplication.getApp()) + CommonModel.init(AbsMogoApplication.getApp()) initListeners() } @@ -40,77 +33,27 @@ class BaseBusPassengerPresenter(view: BusPassengerRouteFragment?) : super.onDestroy(owner) releaseListeners() - BusPassengerModel.release() + CommonModel.releaseListeners() } private fun initListeners() { - BusPassengerModel.setADASStatusCallback(this) - BusPassengerModel.setControllerStatusCallback(TAG, this) - BusPassengerModel.setDriverStatusCallback(this) - BusPassengerModel.setRouteLineInfoCallback(this) - BusPassengerModel.setMoGoAutopilotPlanningListener(this) + CommonModel.setRouteLineInfoCallback(this) } private fun releaseListeners() { - BusPassengerModel.setADASStatusCallback(null) - BusPassengerModel.setControllerStatusCallback(TAG, null) - BusPassengerModel.setDriverStatusCallback(null) - BusPassengerModel.setRouteLineInfoCallback(null) - BusPassengerModel.setMoGoAutopilotPlanningListener(null) + CommonModel.setRouteLineInfoCallback(null) } - override fun onAutopilotEnable() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.onAutopilotStatusChanged( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE - ) - } - }, UiThreadHandler.MODE.QUEUE) - } - - override fun onAutopilotDisable() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.onAutopilotStatusChanged( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE - ) - } - }, UiThreadHandler.MODE.QUEUE) - } - - override fun onAutopilotRunning() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.onAutopilotStatusChanged( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING - ) - } - }, UiThreadHandler.MODE.QUEUE) - } - - override fun onCarLocationChanged(location: MogoLocation) { - UiThreadHandler.post({ - if (location != null && mView != null) { - mView!!.onCarLocationChanged(location) - } - }, UiThreadHandler.MODE.QUEUE) - } - - override fun changeOperationStatus(changeStatus: Boolean) { - UiThreadHandler.post({ - if (mView != null) { - mView!!.changeOperationStatus(changeStatus) - } - }, UiThreadHandler.MODE.QUEUE) + override fun updateSpeed(location: Int) { + BizLoopManager.runInMainThread{ + mView?.onCarLocationChanged(location) + } } override fun updateLineInfo(lineName: String) { - UiThreadHandler.post({ - if (mView != null) { - mView!!.updateLineInfo(lineName) - } - }, UiThreadHandler.MODE.QUEUE) + BizLoopManager.runInMainThread{ + mView?.updateLineInfo(lineName) + } } override fun updateStationsInfo( @@ -118,34 +61,30 @@ class BaseBusPassengerPresenter(view: BusPassengerRouteFragment?) : currentStationIndex: Int, isArrived: Boolean ) { - UiThreadHandler.post({ - if (mView != null) { - mView!!.updateStationsInfo(stations, currentStationIndex, isArrived) - } - }, UiThreadHandler.MODE.QUEUE) + BizLoopManager.runInMainThread{ + mView?.updateStationsInfo(stations, currentStationIndex, isArrived) + } } - override fun showNoTaskView() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.showNoTaskView() + override fun showNoTaskView(isShow:Boolean) { + BizLoopManager.runInMainThread{ + if(isShow) { + mView?.showNoTaskView() + }else{ + mView?.hideNoTaskView() } - }, UiThreadHandler.MODE.QUEUE) + } } - override fun hideNoTaskView() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.hideNoTaskView() - } - }, UiThreadHandler.MODE.QUEUE) + override fun updateAutoStatus(isOpen: Boolean) { + BizLoopManager.runInMainThread{ + mView?.onAutopilotStatusChanged(isOpen) + } } - override fun routePlanningToNextStationChanged(meters: Long, timeInSecond: Long) { - UiThreadHandler.post({ - if (mView != null) { - mView!!.updateRoutePlanningToNextStation(meters, timeInSecond) - } - }, UiThreadHandler.MODE.QUEUE) + override fun updateRemainMT(meters: Long, timeInSecond: Long) { + BizLoopManager.runInMainThread{ + mView?.updateRoutePlanningToNextStation(meters, timeInSecond) + } } } diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerRouteFragment.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerRouteFragment.java index 2beab5a584..339a416291 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerRouteFragment.java @@ -62,13 +62,6 @@ public class BusPassengerRouteFragment extends private AppCompatTextView mCurrentArriveTip; private AppCompatImageView mSpeakArrivedIv; - /** - * 改变自动驾驶状态 - * - * @param status 2 - running 1 - enable 2 - disable - */ - private int mPrevAPStatus = -1; - @Override public int getStationPanelViewId() { return R.layout.shuttle_p_weak_jl_route_fragment; @@ -179,18 +172,6 @@ public class BusPassengerRouteFragment extends } } - public void changeOperationStatus(boolean status) { - if (!status) { - emptyTv.setText(getString(R.string.shuttle_p_jl_no_out)); - mNoLineInfoView.setVisibility(View.VISIBLE); - mRouteInfoView.setVisibility(View.GONE); - mLineName.setText(getContext().getString(R.string.shuttle_p_jl_no_line)); - updateArrivedStation(null,0,true); - clearMapView(); - clearMapMarkers(); - } - } - public void showNoTaskView(){ if (mNoLineInfoView.getVisibility() == View.GONE){ mNoLineInfoView.setVisibility(View.VISIBLE); @@ -279,13 +260,8 @@ public class BusPassengerRouteFragment extends // lastBearing = bearing; // } - public void onCarLocationChanged(MogoLocation location) { - updateSpeedView((float) location.getGnssSpeed()); - } - - public void updateSpeedView(float speed){ - int speedKM = (int) (Math.abs(speed) * 3.6F); - mSpeedTv.setText(String.valueOf(speedKM)); + public void onCarLocationChanged(int location) { + mSpeedTv.setText(String.valueOf(location)); } public void updateCurrentStation(int position) { @@ -355,21 +331,17 @@ public class BusPassengerRouteFragment extends mCurrentArriveTip.setText(Html.fromHtml(str)); } - public void onAutopilotStatusChanged(int status) { + public void onAutopilotStatusChanged(boolean isOpen) { UiThreadHandler.post(new Runnable() { @Override public void run() { - // 3. 其他过程直接更新 - if (mPrevAPStatus != status){ - AutopilotStatusChanged(status); - } - mPrevAPStatus = status; + AutopilotStatusChanged(isOpen); } }); } - public void AutopilotStatusChanged(int status) { - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) { + public void AutopilotStatusChanged(boolean isOpen) { + if (isOpen) { mAutopilotIv.setImageResource(R.drawable.shuttle_p_jl_auto_open); } else { mAutopilotIv.setImageResource(R.drawable.shuttle_p_jl_auto_close); diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPBlueToothView.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPBlueToothView.kt similarity index 95% rename from OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPBlueToothView.kt rename to OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPBlueToothView.kt index 2606e8fcdc..d646acab18 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPBlueToothView.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPBlueToothView.kt @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.weaknet.passenger.ui +package com.mogo.och.shuttle.weaknet.passenger.ui.widget import android.content.Context import android.util.AttributeSet diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPStatusBarView.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPStatusBarView.kt similarity index 95% rename from OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPStatusBarView.kt rename to OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPStatusBarView.kt index c0c3f1a182..073bc9778b 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPStatusBarView.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPStatusBarView.kt @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.weaknet.passenger.ui +package com.mogo.och.shuttle.weaknet.passenger.ui.widget import android.annotation.* import android.content.Context @@ -11,11 +11,9 @@ import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager -import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.util.AppUtils import com.mogo.och.shuttle.weaknet.passenger.R import kotlinx.android.synthetic.main.shuttle_p_weak_jl_view_status_bar.view.tv_shuttle_b1_p_version -import kotlinx.coroutines.* import me.jessyan.autosize.utils.AutoSizeUtils /** diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerTrafficLightView.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPassengerTrafficLightView.kt similarity index 99% rename from OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerTrafficLightView.kt rename to OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPassengerTrafficLightView.kt index e353b04f2e..fa8e30d04e 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerTrafficLightView.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPassengerTrafficLightView.kt @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.weaknet.passenger.ui +package com.mogo.och.shuttle.weaknet.passenger.ui.widget import android.content.Context import android.util.AttributeSet diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/AutoPilotStatusCallback.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/AutoPilotStatusCallback.kt deleted file mode 100644 index 1f68457985..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/AutoPilotStatusCallback.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback - -/** - * @author: wangmingjun - * @date: 2023/2/13 - */ -interface AutoPilotStatusCallback { - /** - * false: 未开启自驾, true : 开启自驾 - */ - fun updateAutoStatus(isOpen: Boolean) - - fun updateAutoStatus(status: Int) -} \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/DrivingInfoCallback.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/DrivingInfoCallback.kt deleted file mode 100644 index ef9974051d..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/DrivingInfoCallback.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback - -import com.mogo.och.data.bean.BusStationBean - -/** - * @author: wangmingjun - * @date: 2023/2/2 - */ -interface DrivingInfoCallback { - fun updateSpeed(speed: Int) - fun updatePlateNumber(carNum: String) - fun updateLine(lineName: String) - fun updateRemainMT(meters : Long, timeInSecond : Long) // 米,秒 - fun showNoTaskView(isTrue : Boolean) - fun updateLineStations(stations: MutableList) - fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean) - fun clearCustomPolyline() -} \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2DrivingPresenter.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2DrivingPresenter.kt index 89e8b10363..b82b61eef0 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2DrivingPresenter.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2DrivingPresenter.kt @@ -4,18 +4,18 @@ import androidx.lifecycle.LifecycleOwner import com.amap.api.maps.model.LatLng import com.mogo.commons.mvp.Presenter import com.mogo.eagle.core.utilcode.util.ThreadUtils -import com.mogo.och.shuttle.weaknet.passenger.callback.AutoPilotStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.DrivingInfoCallback import com.mogo.och.shuttle.weaknet.passenger.model.PM2ADASModel -import com.mogo.och.shuttle.weaknet.passenger.model.LineModel import com.mogo.och.shuttle.weaknet.passenger.ui.PM2DrivingInfoFragment import com.mogo.och.data.bean.BusStationBean +import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback +import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) : - Presenter(view), DrivingInfoCallback, AutoPilotStatusCallback { + Presenter(view), + ICommonCallback { init { - LineModel.init(context) + CommonModel.init(context) PM2ADASModel.INSTANCE.init(context) initListener() } @@ -23,17 +23,15 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) : override fun onDestroy(owner: LifecycleOwner) { super.onDestroy(owner) destroyListener() - LineModel.releaseListener() + CommonModel.releaseListeners() } private fun initListener(){ - LineModel.setDrivingInfoCallback(this) - LineModel.setAutoStatusCallback(this) + CommonModel.setRouteLineInfoCallback(this) } private fun destroyListener(){ - LineModel.setDrivingInfoCallback(null) - LineModel.setAutoStatusCallback(null) + CommonModel.setRouteLineInfoCallback(null) } override fun updateSpeed(speed: Int) { @@ -45,13 +43,7 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) : } } - override fun updatePlateNumber(carNum: String) { - ThreadUtils.runOnUiThread { - mView?.updateCarPlateNum(carNum) - } - } - - override fun updateLine(lineName: String) { + override fun updateLineInfo(lineName: String) { ThreadUtils.runOnUiThread { mView?.updateTaskName(lineName) } @@ -128,9 +120,5 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) : } } - override fun updateAutoStatus(status: Int) { - - } - } \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2BaseFragment.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2BaseFragment.kt index fd4a77054a..3e18fa7aee 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2BaseFragment.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2BaseFragment.kt @@ -28,23 +28,11 @@ class PM2BaseFragment : } override fun initViews() { - //横竖屏 -// setScreenDirection() tv_shuttle_b2_p_version.text = "版本:${AppUtils.getAppVersionName()}" //隐藏小地图 initFragment() } -// private fun setScreenDirection() { -// var ro = Settings.System.getInt(context?.contentResolver, -// Settings.System.USER_ROTATION,Surface.ROTATION_270) -// if (ro != Surface.ROTATION_270){ -// ro = Surface.ROTATION_270 -// } -// Settings.System.putInt(context?.contentResolver, -// Settings.System.USER_ROTATION,ro) -// } - /** * 初始化行程信息,高静地图,宣传 三个fragment */ diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2DrivingInfoFragment.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2DrivingInfoFragment.kt index 133c1de460..82911ed8aa 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2DrivingInfoFragment.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2DrivingInfoFragment.kt @@ -15,6 +15,7 @@ import com.mogo.och.shuttle.weaknet.passenger.R import com.mogo.och.shuttle.weaknet.passenger.presenter.PM2DrivingPresenter import com.mogo.och.common.module.utils.DateTimeUtil.* import com.mogo.och.common.module.utils.NumberFormatUtil +import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.data.bean.BusStationBean import kotlinx.android.synthetic.main.shuttle_p_m2_driving_info_fragment.auto_tv import kotlinx.android.synthetic.main.shuttle_p_m2_driving_info_fragment.clg_distance_left_time @@ -41,16 +42,24 @@ import kotlin.math.roundToInt class PM2DrivingInfoFragment : MvpFragment() { - val stationIcon = BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, R.drawable.shuttle_p_m2_map_staton_icon) - val stationPassIcon = BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, R.drawable.shuttle_p_m2_map_staton_arrived_icon) - val startStationIcon = BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, R.drawable.shuttle_p_m2_map_start_icon) - val endStationIcon = BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, R.drawable.shuttle_p_m2_map_end_icon) + private val stationIcon = BitmapFactory.decodeResource( + AbsMogoApplication.getApp().resources, + R.drawable.shuttle_p_m2_map_staton_icon + ) + private val stationPassIcon = BitmapFactory.decodeResource( + AbsMogoApplication.getApp().resources, + R.drawable.shuttle_p_m2_map_staton_arrived_icon + ) + private val startStationIcon = BitmapFactory.decodeResource( + AbsMogoApplication.getApp().resources, + R.drawable.shuttle_p_m2_map_start_icon + ) + private val endStationIcon = BitmapFactory.decodeResource( + AbsMogoApplication.getApp().resources, + R.drawable.shuttle_p_m2_map_end_icon + ) + - /** - * 改变自动驾驶状态 - * - * @param status 2 - running 1 - enable 2 - disable - */ override fun getLayoutId(): Int { return R.layout.shuttle_p_m2_driving_info_fragment } @@ -65,38 +74,14 @@ class PM2DrivingInfoFragment : true } - line_name_tv.setTextColor(resources.getColor(R.color.shuttle_p_m2_line_name_tv_color)) - station_name_tv.setTextColor(resources.getColor(R.color.shuttle_p_m2_line_name_tv_color)) + line_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_line_name_tv_color)) + station_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_line_name_tv_color)) speed_tv.setVertrial(true) val intArrayOf = intArrayOf( - requireContext().resources.getColor(R.color.shuttle_p_m2_color_43cefe), - requireContext().resources.getColor(R.color.shuttle_p_m2_color_1466fb) + ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe), + ResourcesUtils.getColor(R.color.shuttle_p_m2_color_1466fb), ) speed_tv.setmColorList(intArrayOf) - -// current_time_tv.onClick { - -// //测试V2X消息 -// CallerMsgBoxManager.saveMsgBox( -// MsgBoxBean( -// MsgBoxType.V2X, -// V2XMsg( -// "6666", -// "超速行驶", -// "" -// ) -// ) -// ) -// -// val noticeTrafficStylePushData = NoticeTrafficStylePushData() -// noticeTrafficStylePushData.content= "测试公告布局" -// val noticeFromCloudMsg = NoticeFrCloudMsg(null, noticeTrafficStylePushData, 1) -// CallerMsgBoxManager.saveMsgBox( -// MsgBoxBean( -// MsgBoxType.NOTICE, noticeFromCloudMsg) -// ) -// BPRouteDataTestUtils.converToRouteData() -// } } override fun initViews(savedInstanceState: Bundle?) { @@ -111,50 +96,34 @@ class PM2DrivingInfoFragment : override fun onResume() { super.onResume() - overMapView?.let{ - it.onResume() - } + overMapView?.onResume() } override fun onPause() { super.onPause() - overMapView?.let{ - it.onPause() - } + overMapView?.onPause() } override fun onDestroyView() { overMapView?.onDestroy() - if (mPresenter != null) { - mPresenter?.onDestroy(this) - } + mPresenter?.onDestroy(this) super.onDestroyView() } - fun updateSpeed(speed: Int){ + fun updateSpeed(speed: Int) { speed_tv.text = speed.toString() } - fun updateCarPlateNum(plateNum : String){ - - } - - fun updateTaskName(name: String){ + fun updateTaskName(name: String) { line_name_tv.text = name } - fun changeOperationStatus(status:Boolean){ - if (!status){ - updateNoOrderUI() - } - } - - fun showNoTaskView(haveTask: Boolean){ + fun showNoTaskView(haveTask: Boolean) { setLineInfoView(haveTask) } - private fun setLineInfoView(isShow: Boolean){ - if (!isShow){ + private fun setLineInfoView(isShow: Boolean) { + if (!isShow) { updateNoOrderUI() } } @@ -162,19 +131,16 @@ class PM2DrivingInfoFragment : private fun updateNoOrderUI() { line_name_tv.text = resources.getString(R.string.shuttle_p_m2_not_select_line_content) updateNoStationView() - overMapView?.let { - it.clearSiteMarkers() - } + overMapView?.clearSiteMarkers() clearCustomPolyline() } - fun clearCustomPolyline(){ - overMapView?.let { - it.clearCustomPolyline() - } + fun clearCustomPolyline() { + overMapView?.clearCustomPolyline() } - private fun updateNoStationView(){ - station_name_tv.setTextColor(resources.getColor(R.color.shuttle_p_m2_next_tv_color)) + + private fun updateNoStationView() { + station_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_next_tv_color)) station_name_tv.text = resources.getString(R.string.shuttle_p_m2_empty_tv) tv_distance.text = resources.getString(R.string.shuttle_p_m2_empty_remain_km) tv_left_time.text = resources.getString(R.string.shuttle_p_m2_empty_remain_minute) @@ -186,12 +152,32 @@ class PM2DrivingInfoFragment : } fun updateAutoStatus(isAutoPilot: Boolean) { - if (isAutoPilot){ - context?.let { auto_tv.setTextColor(ContextCompat.getColor(it,R.color.shuttle_p_m2_white_color)) } - context?.let { auto_tv.background = ContextCompat.getDrawable(it,R.drawable.shuttle_p_m2_auto_button_bg) } - }else{ - context?.let { auto_tv.setTextColor(ContextCompat.getColor(it,R.color.shuttle_p_m2_color_7094ad)) } - context?.let { auto_tv.background = ContextCompat.getDrawable(it,R.drawable.shuttle_p_m2_bg_p_m2_auto) } + if (isAutoPilot) { + context?.let { + auto_tv.setTextColor( + ContextCompat.getColor( + it, + R.color.shuttle_p_m2_white_color + ) + ) + } + context?.let { + auto_tv.background = + ContextCompat.getDrawable(it, R.drawable.shuttle_p_m2_auto_button_bg) + } + } else { + context?.let { + auto_tv.setTextColor( + ContextCompat.getColor( + it, + R.color.shuttle_p_m2_color_7094ad + ) + ) + } + context?.let { + auto_tv.background = + ContextCompat.getDrawable(it, R.drawable.shuttle_p_m2_bg_p_m2_auto) + } } } @@ -200,38 +186,40 @@ class PM2DrivingInfoFragment : stationsPass: MutableList, startStation: LatLng?, endStation: LatLng? - ){ + ) { overMapView?.let { val stationsList: MutableList = mutableListOf() - startStation?.let { start-> - stationsList.add(SiteMarkerBean(start,startStationIcon,0.5f,0.5f)) + startStation?.let { start -> + stationsList.add(SiteMarkerBean(start, startStationIcon, 0.5f, 0.5f)) } - for (stationsPass in stationsPass) { - stationsList.add(SiteMarkerBean(stationsPass,stationPassIcon,0.5f,0.5f)) + for (stationPass in stationsPass) { + stationsList.add(SiteMarkerBean(stationPass, stationPassIcon, 0.5f, 0.5f)) } - for (stationsPass in stations) { - stationsList.add(SiteMarkerBean(stationsPass,stationIcon,0.5f,0.5f)) + for (stationPass in stations) { + stationsList.add(SiteMarkerBean(stationPass, stationIcon, 0.5f, 0.5f)) } - endStation?.let {end-> - stationsList.add(SiteMarkerBean(end,endStationIcon,0.5f,0.5f)) + endStation?.let { end -> + stationsList.add(SiteMarkerBean(end, endStationIcon, 0.5f, 0.5f)) } it.drawSiteMarkers(stationsList) } } - fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean){ + fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean) { if (stations.size == 0) return - if (0<= i && i + android:text="@string/shuttle_p_jl_no_task"/> \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/jinlv/layout/shuttle_p_weak_jl_view_status_bar.xml b/OCH/shuttle/passenger_weaknet/src/main/res/jinlv/layout/shuttle_p_weak_jl_view_status_bar.xml index 4101251a11..74e9b46cd2 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/res/jinlv/layout/shuttle_p_weak_jl_view_status_bar.xml +++ b/OCH/shuttle/passenger_weaknet/src/main/res/jinlv/layout/shuttle_p_weak_jl_view_status_bar.xml @@ -32,7 +32,7 @@ android:layout_marginStart="@dimen/dp_40" /> - Date: Mon, 11 Nov 2024 16:58:18 +0800 Subject: [PATCH 3/7] =?UTF-8?q?[6.8.0]=20[fea]=20[=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=98=E6=9B=B4]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index bb52091df5..2d60eec418 100644 --- a/gradle.properties +++ b/gradle.properties @@ -92,8 +92,8 @@ WEBSOCKET_VERSION=1.1.7 applicationId=com.mogo.launcer applicationName=IntelligentPilot # RoboBus司机端:2.5.1;RoboTaxi司机端:2.5.1;RoboTaxi乘客端:1.0.0 -versionCode=6007003 -versionName=6.7.3 +versionCode=6008000 +versionName=6.8.0 ################# 新架构模块Maven版本管理 ################# MOGO_CORE_FUNCTION_HMI_VERSION=0.0.58.10 @@ -151,7 +151,7 @@ MATRIX_VERSION=2.0.8 # 公交模式司机端版本号 -DRIVER_VERSION=6.7.3 +DRIVER_VERSION=6.8.0 # 公交模式乘客端端版本号 -PASSENGER_VERSION=5.7.3 +PASSENGER_VERSION=5.8.0 From dbb21b615c5f6bb87750f27b7339beed12eaaaa7 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 11 Nov 2024 18:35:38 +0800 Subject: [PATCH 4/7] [6.8.0] [fea] [bus shuttle code] --- .../passenger/ShuttlePassengerProvider.kt | 2 +- .../passenger/callback/ADASCallback.kt | 0 .../passenger/callback/ICommonCallback.java | 27 ++ .../weaknet/passenger/model/CommonModel.kt | 356 +++++++++++++++- .../weaknet/passenger/model/LineModel.kt | 346 ---------------- .../IBusPassegerDriverStatusCallback.java | 9 - .../IBusPassengerADASStatusCallback.java | 18 - ...BusPassengerAutopilotPlanningCallback.java | 9 - ...IBusPassengerControllerStatusCallback.java | 13 - .../IBusPassengerRouteLineInfoCallback.java | 16 - .../passenger/model/BusPassengerModel.kt | 390 ------------------ .../presenter/BaseBusPassengerPresenter.kt | 129 ++---- .../ui/BusPassengerRouteFragment.java | 40 +- .../ui/{ => widget}/BusPBlueToothView.kt | 2 +- .../ui/{ => widget}/BusPStatusBarView.kt | 4 +- .../BusPassengerTrafficLightView.kt | 2 +- .../callback/AutoPilotStatusCallback.kt | 14 - .../passenger/callback/DrivingInfoCallback.kt | 18 - .../presenter/PM2DrivingPresenter.kt | 30 +- .../weaknet/passenger/ui/PM2BaseFragment.kt | 12 - .../passenger/ui/PM2DrivingInfoFragment.kt | 182 ++++---- .../shuttle_p_weak_jl_no_data_common_view.xml | 2 +- .../shuttle_p_weak_jl_view_status_bar.xml | 2 +- 23 files changed, 520 insertions(+), 1103 deletions(-) rename OCH/shuttle/passenger_weaknet/src/main/java/{m2 => }/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt (100%) create mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/LineModel.kt delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassegerDriverStatusCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerADASStatusCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerAutopilotPlanningCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerControllerStatusCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerRouteLineInfoCallback.java delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/model/BusPassengerModel.kt rename OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/{ => widget}/BusPBlueToothView.kt (95%) rename OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/{ => widget}/BusPStatusBarView.kt (95%) rename OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/{ => widget}/BusPassengerTrafficLightView.kt (99%) delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/AutoPilotStatusCallback.kt delete mode 100644 OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/DrivingInfoCallback.kt diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/ShuttlePassengerProvider.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/ShuttlePassengerProvider.kt index f991e74e61..0f0dac8e79 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/ShuttlePassengerProvider.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/ShuttlePassengerProvider.kt @@ -13,7 +13,7 @@ import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.biz.provider.CommonServiceImpl import com.mogo.och.common.module.wigets.media.MediaPlayerActivity import com.mogo.och.shuttle.weaknet.passenger.model.TicketModel -import com.mogo.och.shuttle.weaknet.passenger.ui.BusPStatusBarView +import com.mogo.och.shuttle.weaknet.passenger.ui.widget.BusPStatusBarView import com.mogo.och.shuttle.weaknet.passenger.ui.BusPassengerRouteFragment import com.mogo.och.shuttle.weaknet.passenger.ui.PM2BaseFragment import com.mogo.och.shuttle.weaknet.passenger.ui.widget.M2StatusBarView diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt similarity index 100% rename from OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt rename to OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ADASCallback.kt diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java new file mode 100644 index 0000000000..4a39fa1348 --- /dev/null +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java @@ -0,0 +1,27 @@ +package com.mogo.och.shuttle.weaknet.passenger.callback; + +import com.mogo.och.data.bean.BusStationBean; + +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2022/4/6 + */ +public interface ICommonCallback { + void updateLineInfo(String lineName); + void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived); + void updateSpeed(int location); + void updateRemainMT(long meters, long timeInSecond); + void showNoTaskView(boolean isTrue); + + /** + * false: 未开启自驾, true : 开启自驾 + */ + void updateAutoStatus(boolean isOpen); + + default void updateLineStations(List stations){} + + default void clearCustomPolyline(){} + +} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt index 19b590dc2c..a2473d8c4c 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt @@ -1,26 +1,120 @@ package com.mogo.och.shuttle.weaknet.passenger.model +import android.annotation.SuppressLint +import android.content.Context import com.mogo.commons.AbsMogoApplication import com.mogo.commons.env.ProjectUtils +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.function.api.autopilot.IMoGoChassisLocationGCJ02Listener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +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.util.GsonUtils +import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.och.common.module.biz.lansocket.IOchLanPassengerStatusListener +import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket +import com.mogo.och.common.module.biz.media.MediaManager +import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener +import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager +import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager +import com.mogo.och.common.module.manager.distance.IDistanceListener +import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager import com.mogo.och.common.module.manager.download.DownloadManager +import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager +import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener import com.mogo.och.common.module.manager.socket.lan.LanSocketManager +import com.mogo.och.common.module.manager.socket.lan.bean.AppConnectMsg import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType +import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.PinYinUtil +import com.mogo.och.common.module.voice.VoiceNotice.showNotice +import com.mogo.och.common.module.wigets.media.MediaItem +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.weaknet.passenger.bean.response.ResponseSiteIntroduce +import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback +import com.mogo.och.shuttle.weaknet.passenger.constant.BusPassengerConst import com.mogo.och.shuttle.weaknet.passenger.network.PassengerServiceManager +import kotlin.math.abs + +@SuppressLint("StaticFieldLeak") +object CommonModel { + + private val TAG: String = CommonModel::class.java.simpleName + + var mContext: Context? = null + + + private var mCommonCallback: ICommonCallback? = null // bus路线信息更新 + + var mStations = mutableListOf() + var mNextStationIndex = 0 // A-B要到达站的index + @Volatile + var isGoingToNextStation = false //是否前往下一站过程中 + + var routesResult: BusRoutesResult? = null + + + + fun init(context: Context) { + mContext = context.applicationContext + initListeners() + queryDriverByLocalDriver() + } + + + private fun initListeners() { + //自动驾驶状态监听 + OchAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener) + // 定位监听 + OchLocationManager.addGCJ02Listener(TAG, 3, mMapLocationListener) + // 监听站点距离 + TrajectoryAndDistanceManager.addDistanceListener(TAG, trajectoryListener) + // 通用监听 + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_COMMON.type, LanSocketManager.commonListener) + // 监听站点信息 + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type, typeTaskDetails) + // 注册监听和司机屏连接情况 + LoginLanPassengerSocket.addListener(TAG, connectDriverListener) + } + + fun releaseListeners() { + //自动驾驶状态监听 + CallerAutoPilotStatusListenerManager.removeListener(TAG) + // 定位监听 + OchLocationManager.removeGCJ02Listener(TAG) + // 监听站点距离 + TrajectoryAndDistanceManager.removeListener(TAG) + LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_COMMON.type, LanSocketManager.commonListener) + LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type, typeTaskDetails) + LoginLanPassengerSocket.removeListener(TAG) + cleanStation("release") + } + + + fun setRouteLineInfoCallback(callback: ICommonCallback?) { + this.mCommonCallback = callback + } -open class CommonModel { val connectDriverListener = object : IOchLanPassengerStatusListener { + // 和司机屏连接发生变化后 override fun onDriverConnectChangeListener(isConnect: Boolean) { super.onDriverConnectChangeListener(isConnect) if(isConnect){ queryDriverByLocalDriver() } } - + // 司机屏sn 发生变化后 override fun onDriverSnChagneListner(sn: String?) { super.onDriverSnChagneListner(sn) sn?.let { @@ -29,12 +123,170 @@ open class CommonModel { } } + val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = + object : IMoGoChassisLocationGCJ02Listener { + override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { + if (null == mogoLocation) return + updateSpeed(mogoLocation) + } + } + + val mAutoPilotStatusListener: IOchAutopilotStatusListener = + object : IOchAutopilotStatusListener { + + override fun onAutopilotStatusResponse(state: Int) { + d(SceneConstant.M_BUS_P, "onAutopilotStatusResponse ===== $state") + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != state){ + //美化模式下且行程中 + if (FunctionBuildConfig.isDemoMode && + mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1 + && isGoingToNextStation + ){ + mCommonCallback?.updateAutoStatus(true) + }else{//非美化模式下 + mCommonCallback?.updateAutoStatus(false) + } + }else{//自驾状态 2 + mCommonCallback?.updateAutoStatus(true) + } + } + } + + val trajectoryListener: IDistanceListener = object : IDistanceListener { + override fun distanceCallback(distance: Float) { + val lastTime = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒 + d(SceneConstant.M_BUS_P, "轨迹排查==lastSumLength = $distance") + if (routesResult != null) { + for (site in routesResult!!.sites) { + if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { + return + } + } + } + // 小于200m 播报站点介绍 + if (distance < 200) { + val stationNext = mStations[mNextStationIndex] + if (!stationNext.isPlayTts) { + if (!StringUtils.isEmpty(stationNext.introduction)) { + showNotice(stationNext.introduction) + stationNext.isPlayTts = true + } + } + } + mCommonCallback?.updateRemainMT( + distance.toLong(), + lastTime.toLong() + ) + } + } + + val typeTaskDetails = object : ILanMessageListener { + override fun targetLan(): Class { + return TaskDetailsMsg::class.java + } + + override fun onLanMsgReceived(first: TaskDetailsMsg?) { + first?.let { + + if (first.msg?.isEmpty() == true) { + clearLocalRouteResult() + return + } + val result = GsonUtils.fromJson(first.msg, BusTransferData::class.java) + if (result != null && result.routesResult == null) { + clearLocalRouteResult() + } + + if (result != null) { + routesResult = result.routesResult + updatePassengerRouteInfo(routesResult) + } + } + } + } + + val b1CommonListener = object : ILanMessageListener { + override fun targetLan(): Class = AppConnectMsg::class.java + + override fun onLanMsgReceived(first: AppConnectMsg?) { + first?.let { + if (it.isViewShow) { //消息盒子显示内容 + OCHSocketMessageManager.pushAppOperationalMsgBox( + DateTimeUtil.getCurrentTimeStamp(), it.msg, + OCHSocketMessageManager.OPERATION_SYSTEM + ) + } + } + } + } + + fun clearLocalRouteResult(){ + routesResult = null + mNextStationIndex = 0 + cleanStation("queryDriverSiteByCoordinate") + isGoingToNextStation = false + mCommonCallback?.showNoTaskView(true) + } + + + fun updatePassengerRouteInfo(result: BusRoutesResult?) { + if (result == null) { + clearLocalRouteResult() + return + } + + if (routesResult != null && routesResult!!.lineId != result.lineId) { + d(SceneConstant.M_BUS_P + TAG, "lineId change= clearCustomPolyline") + mCommonCallback?.clearCustomPolyline() + } + + d(SceneConstant.M_BUS_P + TAG, "queryDriverSiteByCoordinate = update") + routesResult = result + + if (result.sites != null) { + mCommonCallback?.updateLineInfo(result.name) + mCommonCallback?.showNoTaskView(false) + if (result.sites != null) { + val stations = result.sites + mStations.clear() + mStations.addAll(stations) + mCommonCallback?.updateLineStations(mStations) + for (i in stations.indices) { + val station = stations[i] + if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED + && station.isLeaving && i + 1 < stations.size + ) { + isGoingToNextStation = true + mCommonCallback?.updateStationsInfo(stations, i + 1, false) + mNextStationIndex = i + 1 + val startStation = mStations[i] + val endStation = mStations[i + 1] + startStationVideo(endStation) + setTrajectoryStation(startStation, endStation, result.lineId) + updateAutopilotControlParameters(result, i) + return + } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { + if (i == stations.size - 1) { + cleanStation("updatePassengerRouteInfo最后一个站点") + } + isGoingToNextStation = false + Logger.d(SceneConstant.M_BUS_P + TAG, "order = station= arrive") + mCommonCallback?.updateStationsInfo(stations, i, true) + clearAutopilotControlParameters() + return + } + } + } + } + } + + // 向司机屏请求业务数据 fun queryDriverByLocalDriver() { //本地去请求司机端 val msg = TaskDetailsMsg("task", BusinessType.shuttle) LanSocketManager.sendMsgToServer(msg) } - + // 查询sn 所配置的所有站点介绍视频 private fun querySiteIntroduce(){ AbsMogoApplication.getApp()?.let { if (ProjectUtils.isSaas()) { @@ -54,7 +306,7 @@ open class CommonModel { } } } - + // 去统一下载站点介绍 private fun downloadSiteIntroduce(response: ResponseSiteIntroduce) { response.data?.forEach {siteIntroduceInfo -> siteIntroduceInfo.introduceList.forEach {introduceInfo -> @@ -63,5 +315,101 @@ open class CommonModel { } } + fun updateAutopilotControlParameters( + busRoutesResult: BusRoutesResult, + leaveIndex: Int + ) { + val parameters = initAutopilotControlParameters(busRoutesResult, leaveIndex) + if (null == parameters) { + CallerLogger.e(SceneConstant.M_BUS_P, "AutopilotControlParameters is empty.") + return + } + CallerLogger.d(SceneConstant.M_BUS_P, "AutopilotControlParameters is update.") + CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) + } + + fun initAutopilotControlParameters( + busRoutesResult: BusRoutesResult, + leaveIndex: Int + ): AutopilotControlParameters? { + if (busRoutesResult.sites == null) { + return null + } + val stations = busRoutesResult.sites + if (leaveIndex + 1 > stations.size - 1) { + CallerLogger.e(SceneConstant.M_BUS_P, "行程日志-mismatch condition1.") + return null + } + val currentStation = stations[leaveIndex] + val nextStation = stations[leaveIndex + 1] + val parameters = AutopilotControlParameters() + parameters.routeID = busRoutesResult.lineId + parameters.routeName = busRoutesResult.name + parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.name) + parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.name) + parameters.startLatLon = + AutopilotControlParameters.AutoPilotLonLat(currentStation.lat, currentStation.lon) + parameters.endLatLon = + AutopilotControlParameters.AutoPilotLonLat(nextStation.lat, nextStation.lon) + parameters.vehicleType = 10 + if (parameters.autoPilotLine == null) { + parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( + busRoutesResult.lineId.toLong(), busRoutesResult.name, + busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, + busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, + busRoutesResult.contrailSaveTime, busRoutesResult.carModel, + busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, + busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, + busRoutesResult.contrailSaveTimeDPQP + ) + } + return parameters + } + + fun clearAutopilotControlParameters() { + CallerLogger.d(SceneConstant.M_BUS_P, "AutopilotControlParameters is clear.") + CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) + } + + fun startStationVideo(startStationInfo: BusStationBean){ + val introductionList = mutableListOf() + startStationInfo.videoList?.forEach { + if(it.type==1) { + introductionList.add( + MediaItem( + MediaItem.PrioritySite, it.url, + MediaItem.MEDIA_TYPE_VIDEO,"","") + ) + } + } + MediaManager.postSiteIntroduceInfo(introductionList) + } + + fun setTrajectoryStation( + startStationInfo: BusStationBean, + endStationInfo: BusStationBean, + lineId: Int + ) { + val startStation = MogoLocation() + startStation.longitude = startStationInfo.gcjLon + startStation.latitude = startStationInfo.gcjLat + val endStation = MogoLocation() + endStation.longitude = endStationInfo.gcjLon + endStation.latitude = endStationInfo.gcjLat + TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId.toLong()) + } + + fun cleanStation(type: String) { + d(SceneConstant.M_BUS_P, "清理站点:$type") + TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) + } + + + fun updateSpeed(mogoLocation: MogoLocation) { + // km/h + val speedKM = (abs(mogoLocation.gnssSpeed) * 3.6f).toInt() + + mCommonCallback?.updateSpeed(speedKM) + } } \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/LineModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/LineModel.kt deleted file mode 100644 index 9c6629570a..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/LineModel.kt +++ /dev/null @@ -1,346 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.model - -import android.annotation.SuppressLint -import android.content.Context -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.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -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.GsonUtils -import com.mogo.eagle.core.utilcode.util.StringUtils -import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket -import com.mogo.och.common.module.biz.media.MediaManager -import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener -import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager -import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager -import com.mogo.och.common.module.manager.distance.IDistanceListener -import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager -import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener -import com.mogo.och.common.module.manager.socket.lan.LanSocketManager -import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType -import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType -import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg -import com.mogo.och.common.module.utils.PinYinUtil -import com.mogo.och.common.module.voice.VoiceNotice.showNotice -import com.mogo.och.common.module.wigets.media.MediaItem -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.weaknet.passenger.callback.AutoPilotStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.DrivingInfoCallback -import com.mogo.och.shuttle.weaknet.passenger.constant.BusPassengerConst -import kotlin.math.abs - -/** - * @author: wangmingjun - * @date: 2023/1/31 - */ -@SuppressLint("StaticFieldLeak") -object LineModel:CommonModel(){ - - private var mContext: Context? = null - - private var routesResult: BusRoutesResult? = null - private val TAG: String = LineModel::class.java.simpleName - - var mStations = mutableListOf() - private var mNextStationIndex = 0 // A-B要到达站的index - private var isGoingToNextStation = false //是否前往下一站过程中 - - private var mDrivingInfoCallback: DrivingInfoCallback? = null //行程信息 - private var mAutoStatusCallback: AutoPilotStatusCallback? = null //自动驾驶状态 - - fun init(context: Context) { - mContext = context - initListener() - queryDriverByLocalDriver() - } - - - - private fun initListener() { - //自动驾驶状态监听 - OchAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener) - - // 定位监听 - OchLocationManager.addGCJ02Listener(TAG, 3, mMapLocationListener) - // 监听站点距离 - TrajectoryAndDistanceManager.addDistanceListener(TAG, trajectoryListener) - // 通用监听 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_COMMON.type,LanSocketManager.commonListener) - // 监听站点信息 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type,typeTaskDetails) - - LoginLanPassengerSocket.addListener(TAG, connectDriverListener) - - } - - fun releaseListener() { - //自动驾驶状态监听 - CallerAutoPilotStatusListenerManager.removeListener(TAG) - - // 定位监听 - OchLocationManager.removeGCJ02Listener(TAG) - // 监听站点距离 - cleanStation("release") - - TrajectoryAndDistanceManager.removeListener(TAG) - - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_COMMON.type,LanSocketManager.commonListener) - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type,typeTaskDetails) - - LoginLanPassengerSocket.removeListener(TAG) - - } - - fun setDrivingInfoCallback(drivingInfoCallback : DrivingInfoCallback?){ - mDrivingInfoCallback = drivingInfoCallback - } - - fun setAutoStatusCallback(autoPilotStatusCallback: AutoPilotStatusCallback?){ - mAutoStatusCallback = autoPilotStatusCallback - } - - private val typeTaskDetails = object : ILanMessageListener { - override fun targetLan(): Class { - return TaskDetailsMsg::class.java - } - - override fun onLanMsgReceived(first: TaskDetailsMsg?) { - first?.let { - - if (first.msg?.isEmpty() == true) { - updateLocalOrder() - return - } - val result = GsonUtils.fromJson(first.msg, BusTransferData::class.java) - if (result != null && result.routesResult == null){ - updateLocalOrder() - } - - if (result != null) { - routesResult = result.routesResult - updatePassengerRouteInfo(routesResult!!) - } - } - } - } - - private val trajectoryListener: IDistanceListener = object : IDistanceListener { - override fun distanceCallback(distance: Float) { - val lastTime = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒 - d(SceneConstant.M_BUS_P + TAG, "轨迹排查==lastSumLength = $distance") - if (routesResult != null) { - for (site in routesResult!!.sites) { - if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { - return - } - } - } - // 小于200m 播报站点介绍 - if (distance < 200) { - val stationNext = mStations[mNextStationIndex] - if (!stationNext.isPlayTts) { - if (!StringUtils.isEmpty(stationNext.introduction)) { - showNotice(stationNext.introduction) - stationNext.isPlayTts = true - } - } - } - mDrivingInfoCallback?.updateRemainMT( - distance.toLong(), - lastTime.toLong() - ) - } - } - - private val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = - object : IMoGoChassisLocationGCJ02Listener{ - override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { - if (null == mogoLocation) return - updateSpeed(mogoLocation) - } - } - - private fun updateSpeed(mogoLocation: MogoLocation) { - // km/h - val speedKM = (abs(mogoLocation.gnssSpeed) * 3.6f).toInt() - - mDrivingInfoCallback?.updateSpeed(speedKM) - } - - private val mAutoPilotStatusListener: IOchAutopilotStatusListener = - object : IOchAutopilotStatusListener { - - override fun onAutopilotStatusResponse(state: Int) { - super.onAutopilotStatusResponse(state) - d(SceneConstant.M_BUS_P+ TAG, "onAutopilotStatusResponse ===== $state") - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != state){ - //美化模式下且行程中 - if (FunctionBuildConfig.isDemoMode && - mNextStationIndex>= 0 && mNextStationIndex <= mStations.size - 1 - && isGoingToNextStation){ - mAutoStatusCallback?.updateAutoStatus(true) - }else{//非美化模式下 - mAutoStatusCallback?.updateAutoStatus(false) - } - }else{//自驾状态 2 - mAutoStatusCallback?.updateAutoStatus(true) - } - } - - } - - - private fun updateLocalOrder(){ - routesResult = null - mNextStationIndex = 0 - cleanStation("queryDriverSiteByCoordinate") - isGoingToNextStation = false - mDrivingInfoCallback?.showNoTaskView(true) - } - - private fun updatePassengerRouteInfo(result: BusRoutesResult) { - if (routesResult != null && routesResult!!.lineId != result.lineId){ - d(SceneConstant.M_BUS_P+ TAG, "lineId change= clearCustomPolyline") - mDrivingInfoCallback?.clearCustomPolyline() - } - - d(SceneConstant.M_BUS_P+ TAG, "queryDriverSiteByCoordinate= update") - routesResult = result - - mDrivingInfoCallback?.updateLine(result.name) - if (result.sites != null) { - mDrivingInfoCallback?.showNoTaskView(false) - val stations: List = result.sites - mStations.clear() - mStations.addAll(stations) - mDrivingInfoCallback?.updateLineStations(mStations) - for (i in stations.indices) { - val station: BusStationBean = stations[i] - if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED - && station.isLeaving && i + 1 < stations.size) { - mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i + 1, false) - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--start ") - isGoingToNextStation = true - mNextStationIndex = i + 1 - val startStation = mStations[i] - val endStation = mStations[i + 1] - startStationVideo(endStation) - setTrajectoryStation(startStation, endStation, result.lineId) - updateAutopilotControlParameters(result,i) - return - } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--mNextStationIndex = $mNextStationIndex , i = $i") - d(SceneConstant.M_BUS_P+ TAG,"och-rotting--arrived ") - if (i == stations.size - 1) { - cleanStation("updatePassengerRouteInfo最后一个站点") - } - isGoingToNextStation = false - mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i, true) - clearAutopilotControlParameters() - return - }else{ -// d(SceneConstant.M_BUS_P+TAG,"och-rotting--BusStationBean = " + GsonUtils.toJson(station)) - } - } - } - - } - - private fun setTrajectoryStation( - startStationInfo: BusStationBean, - endStationInfo: BusStationBean, - lineId: Int - ) { - val startStation = MogoLocation() - startStation.longitude = startStationInfo.gcjLon - startStation.latitude = startStationInfo.gcjLat - val endStation = MogoLocation() - endStation.longitude = endStationInfo.gcjLon - endStation.latitude = endStationInfo.gcjLat - TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId.toLong()) - } - - private fun startStationVideo(startStationInfo: BusStationBean){ - val introductionList = mutableListOf() - startStationInfo.videoList?.forEach { - if(it.type==1) { - introductionList.add( - MediaItem( - MediaItem.PrioritySite, it.url, - MediaItem.MEDIA_TYPE_VIDEO,"","") - ) - } - } - MediaManager.postSiteIntroduceInfo(introductionList) - } - - private fun cleanStation(type: String) { - d(SceneConstant.M_BUS_P + TAG, "清理站点:$type") - TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) - } - - private fun updateAutopilotControlParameters( - busRoutesResult: BusRoutesResult, - leaveIndex: Int - ) { - val parameters = initAutopilotControlParameters(busRoutesResult, leaveIndex) - if (null == parameters) { - CallerLogger.e(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is empty.") - return - } - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is update.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) - } - - private fun initAutopilotControlParameters( - busRoutesResult: BusRoutesResult, - leaveIndex: Int - ): AutopilotControlParameters? { - if (busRoutesResult.sites == null) { - return null - } - val stations = busRoutesResult.sites - if (leaveIndex + 1 > stations.size - 1) { - CallerLogger.e(SceneConstant.M_BUS_P + TAG, "行程日志-mismatch condition1.") - return null - } - val currentStation = stations[leaveIndex] - val nextStation = stations[leaveIndex + 1] - val parameters = AutopilotControlParameters() - parameters.routeID = busRoutesResult.lineId - parameters.routeName = busRoutesResult.name - parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.name) - parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.name) - parameters.startLatLon = - AutopilotControlParameters.AutoPilotLonLat(currentStation.lat, currentStation.lon) - parameters.endLatLon = - AutopilotControlParameters.AutoPilotLonLat(nextStation.lat, nextStation.lon) - parameters.vehicleType = 10 - if (parameters.autoPilotLine == null) { - parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( - busRoutesResult.lineId.toLong(), busRoutesResult.name, - busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, - busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, - busRoutesResult.contrailSaveTime, busRoutesResult.carModel, - busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, - busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, - busRoutesResult.contrailSaveTimeDPQP - ) - } - return parameters - } - - - private fun clearAutopilotControlParameters() { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is clear.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) - } -} \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassegerDriverStatusCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassegerDriverStatusCallback.java deleted file mode 100644 index ec1a0ebc5f..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassegerDriverStatusCallback.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -/** - * @author: wangmingjun - * @date: 2021/10/22 - */ -public interface IBusPassegerDriverStatusCallback { - void changeOperationStatus(boolean changeStatus); -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerADASStatusCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerADASStatusCallback.java deleted file mode 100644 index f68f593932..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerADASStatusCallback.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -/** - * Created on 2022/3/31 - * - * Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等) - */ -public interface IBusPassengerADASStatusCallback { - - // 自动驾驶可用状态 - void onAutopilotEnable(); - - // 自动驾驶不可用状态 - void onAutopilotDisable(); - - // 自动驾驶运行中 - void onAutopilotRunning(); -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerAutopilotPlanningCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerAutopilotPlanningCallback.java deleted file mode 100644 index 2bf2d2ea0e..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerAutopilotPlanningCallback.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -/** - * Created on 2022/3/31 - */ -public interface IBusPassengerAutopilotPlanningCallback { - void routePlanningToNextStationChanged(long meters, long timeInSecond); - -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerControllerStatusCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerControllerStatusCallback.java deleted file mode 100644 index 08c3b3344a..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerControllerStatusCallback.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -import com.mogo.eagle.core.data.map.MogoLocation; - -/** - * Created on 2022/3/31 - * - * Model->Presenter回调:状态控制器监听(accOn、adas ui show、voice ui show、push ui show、v2x ui show等等) - */ -public interface IBusPassengerControllerStatusCallback { - // 自车定位 - void onCarLocationChanged(MogoLocation location); -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerRouteLineInfoCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerRouteLineInfoCallback.java deleted file mode 100644 index ebe945edfe..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/callback/IBusPassengerRouteLineInfoCallback.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback; - -import com.mogo.och.data.bean.BusStationBean; - -import java.util.List; - -/** - * @author: wangmingjun - * @date: 2022/4/6 - */ -public interface IBusPassengerRouteLineInfoCallback { - void updateLineInfo(String lineName); - void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived); - void showNoTaskView(); - void hideNoTaskView(); -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/model/BusPassengerModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/model/BusPassengerModel.kt deleted file mode 100644 index e52ac3a4c6..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/model/BusPassengerModel.kt +++ /dev/null @@ -1,390 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.model - -import android.annotation.SuppressLint -import android.content.Context -import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager -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.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d -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.util.GsonUtils -import com.mogo.eagle.core.utilcode.util.StringUtils -import com.mogo.och.common.module.biz.lansocket.IOchLanPassengerStatusListener -import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket -import com.mogo.och.common.module.biz.media.MediaManager -import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener -import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager -import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager -import com.mogo.och.common.module.manager.distance.IDistanceListener -import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager -import com.mogo.och.common.module.manager.socket.cloud.AbnormalFactorsLoopManager -import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager -import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener -import com.mogo.och.common.module.manager.socket.lan.LanSocketManager -import com.mogo.och.common.module.manager.socket.lan.bean.AppConnectMsg -import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType -import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType -import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg -import com.mogo.och.common.module.utils.DateTimeUtil -import com.mogo.och.common.module.utils.PinYinUtil -import com.mogo.och.common.module.voice.VoiceNotice.showNotice -import com.mogo.och.common.module.wigets.media.MediaItem -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.weaknet.passenger.callback.IBusPassegerDriverStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerADASStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerAutopilotPlanningCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerControllerStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerRouteLineInfoCallback -import com.mogo.och.shuttle.weaknet.passenger.constant.BusPassengerConst -import java.util.concurrent.ConcurrentHashMap - -/** - * Created on 2022/3/31 - */ -@SuppressLint("StaticFieldLeak") -object BusPassengerModel :CommonModel(){ - private val TAG: String = BusPassengerModel::class.java.simpleName - private var mContext: Context? = null - private var mADASStatusCallback: IBusPassengerADASStatusCallback? = null //Model->Presenter:自动驾驶状态相关 - private var mAutopilotPlanningCallback: IBusPassengerAutopilotPlanningCallback? = null //Model->Presenter:自动驾驶线路规划 - private val mControllerStatusCallbackMap: MutableMap = ConcurrentHashMap() - - private var mDriverStatusCallback: IBusPassegerDriverStatusCallback? = null //出车收车状态 - private var mRouteLineInfoCallback: IBusPassengerRouteLineInfoCallback? = null // bus路线信息更新 - - private var routesResult: BusRoutesResult? = null - - var mStations: MutableList = ArrayList() - private var mNextStationIndex = 0 // 要到达站的index - - @Volatile - private var isGoingToNextStation = false - - fun init(context: Context) { - mContext = context.applicationContext - initListeners() - queryDriverByLocalDriver() - } - - fun setDriverStatusCallback(callback: IBusPassegerDriverStatusCallback?) { - this.mDriverStatusCallback = callback - } - - fun setRouteLineInfoCallback(callback: IBusPassengerRouteLineInfoCallback?) { - this.mRouteLineInfoCallback = callback - } - - fun setMoGoAutopilotPlanningListener(moGoAutopilotPlanningCallback: IBusPassengerAutopilotPlanningCallback?) { - this.mAutopilotPlanningCallback = moGoAutopilotPlanningCallback - } - - fun setADASStatusCallback(callback: IBusPassengerADASStatusCallback?) { - this.mADASStatusCallback = callback - } - - fun setControllerStatusCallback( - tag: String?, - callback: IBusPassengerControllerStatusCallback? - ) { - if (tag == null || "" == tag) return - if (callback == null) { - mControllerStatusCallbackMap.remove(tag) - return - } - mControllerStatusCallbackMap[tag] = callback - } - - - private fun clearLocalRouteResult() { - if (routesResult != null) { - routesResult = null - } - mNextStationIndex = 0 - cleanStation("queryDriverSiteByCoordinate") - if (mRouteLineInfoCallback != null) { - mRouteLineInfoCallback!!.showNoTaskView() - } - } - - private fun updatePassengerRouteInfo(result: BusRoutesResult?) { - if (result == null) { - clearLocalRouteResult() - return - } - d(SceneConstant.M_BUS_P + TAG, "queryDriverSiteByCoordinate = update") - routesResult = result - - if (mRouteLineInfoCallback != null) { - mRouteLineInfoCallback!!.updateLineInfo(result.name) - mRouteLineInfoCallback!!.hideNoTaskView() - if (result.sites != null) { - val stations = result.sites - mStations.clear() - mStations.addAll(stations) - for (i in stations.indices) { - val station = stations[i] - if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && station.isLeaving && i + 1 < stations.size) { - Logger.d(SceneConstant.M_BUS_P + TAG, "order = station= leave") - isGoingToNextStation = true - mRouteLineInfoCallback!!.updateStationsInfo(stations, i + 1, false) - mNextStationIndex = i + 1 - val startStation = mStations[i] - val endStation = mStations[i + 1] - startStationVideo(endStation) - setTrajectoryStation(startStation, endStation, result.lineId) - updateAutopilotControlParameters(result,i) - return - } else if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !station.isLeaving) { - if (i == stations.size - 1) { - cleanStation("updatePassengerRouteInfo最后一个站点") - } - isGoingToNextStation = false - Logger.d(SceneConstant.M_BUS_P + TAG, "order = station= arrive") - mRouteLineInfoCallback!!.updateStationsInfo(stations, i, true) - clearAutopilotControlParameters() - return - } - } - } - } - } - - fun release() { - releaseListeners() - cleanStation("release") - } - - private fun initListeners() { - // 2021.11.1重构自动驾驶 实现接口 IMoGoAutopilotStatusListener 注册监听 替换IMogoAdasOCHCallback接口 - - OchAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener) - OchLocationManager.addGCJ02Listener(TAG, 3, mMapLocationListener) - - // 通用监听 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_COMMON.type, commonListener) - // 监听站点信息 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type, typeTaskDetails) - - AbnormalFactorsLoopManager.startLoopAbnormalFactors(mContext!!) - TrajectoryAndDistanceManager.addDistanceListener(TAG, trajectoryListener) - - LoginLanPassengerSocket.addListener(TAG,connectDriverListener) - } - - private fun releaseListeners() { - // 注销定位监听 - - OchLocationManager.removeGCJ02Listener(TAG) - - MogoAiCloudSocketManager.getInstance(mContext) - .unregisterLifecycleListener(10010) - - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_COMMON.type, commonListener) - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_TASK_DETAILS.type, typeTaskDetails) - - AbnormalFactorsLoopManager.stopLoopAbnormalFactors() - LoginLanPassengerSocket.removeListener(TAG) - } - - private val commonListener = object : ILanMessageListener { - override fun targetLan(): Class = AppConnectMsg::class.java - - override fun onLanMsgReceived(first: AppConnectMsg?) { - first?.let { - if (it.isViewShow) { //消息盒子显示内容 - OCHSocketMessageManager.pushAppOperationalMsgBox( - DateTimeUtil.getCurrentTimeStamp(), it.msg, - OCHSocketMessageManager.OPERATION_SYSTEM - ) - } - } - } - } - - private val typeTaskDetails = object : ILanMessageListener { - override fun targetLan(): Class = TaskDetailsMsg::class.java - - override fun onLanMsgReceived(first: TaskDetailsMsg?) { - first?.let { - if (first.msg!!.isEmpty()) { - clearLocalRouteResult() - return - } - val result = GsonUtils.fromJson(first.msg, BusTransferData::class.java) - - if (result != null && result.routesResult == null){ - clearLocalRouteResult() - } - - mDriverStatusCallback?.changeOperationStatus(result!!.loginStatus == 1) - if (result != null) { //已司机端传来的为准 - routesResult = result.routesResult - updatePassengerRouteInfo(routesResult) - } - } - } - } - - private val trajectoryListener: IDistanceListener = object : IDistanceListener { - override fun distanceCallback(distance: Float) { - val lastTime = distance / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 //秒 - d(SceneConstant.M_BUS_P + TAG, "轨迹排查==lastSumLength = $distance") - if (routesResult != null) { - for (site in routesResult!!.sites) { - if (site.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED && !site.isLeaving) { - return - } - } - } - // 小于200m 播报站点介绍 - if (distance < 200) { - val stationNext = mStations[mNextStationIndex] - if (!stationNext.isPlayTts) { - if (!StringUtils.isEmpty(stationNext.introduction)) { - showNotice(stationNext.introduction) - stationNext.isPlayTts = true - } - } - } - mAutopilotPlanningCallback!!.routePlanningToNextStationChanged( - distance.toLong(), lastTime.toLong() - ) - } - } - - private val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = - object : IMoGoChassisLocationGCJ02Listener { - override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { - if (null == mogoLocation) return - for (callback in mControllerStatusCallbackMap.values) { - callback.onCarLocationChanged(mogoLocation) - } - } - } - - private val mGoAutopilotStatusListener: IOchAutopilotStatusListener = - object : IOchAutopilotStatusListener { - override fun onAutopilotStatusResponse(state: Int) { - if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - //2022.7.20 自动驾驶更换成带档位的 - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotRunning() - } else { - if (FunctionBuildConfig.isDemoMode && mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1 && isGoingToNextStation) { - Logger.d( - SceneConstant.M_BUS_P + TAG, - "FunctionBuildConfig.isDemoMode is true" - ) - return - } - - if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotEnable() - } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotDisable() - } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { - if (mADASStatusCallback != null) mADASStatusCallback!!.onAutopilotRunning() - } - } - } - } - - private fun setTrajectoryStation( - startStationInfo: BusStationBean, - endStationInfo: BusStationBean, - lineId: Int - ) { - val startStation = MogoLocation() - startStation.longitude = startStationInfo.gcjLon - startStation.latitude = startStationInfo.gcjLat - val endStation = MogoLocation() - endStation.longitude = endStationInfo.gcjLon - endStation.latitude = endStationInfo.gcjLat - TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId.toLong()) - } - - - private fun startStationVideo(startStationInfo: BusStationBean){ - val introductionList = mutableListOf() - startStationInfo.videoList?.forEach { - if(it.type==1) { - introductionList.add( - MediaItem( - MediaItem.PrioritySite, it.url, - MediaItem.MEDIA_TYPE_VIDEO,"","") - ) - } - } - MediaManager.postSiteIntroduceInfo(introductionList) - } - - private fun cleanStation(type: String) { - d(SceneConstant.M_BUS_P + TAG, "清理站点:$type") - TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) - } - - private fun updateAutopilotControlParameters( - busRoutesResult: BusRoutesResult, - leaveIndex: Int - ) { - val parameters = initAutopilotControlParameters(busRoutesResult, leaveIndex) - if (null == parameters) { - CallerLogger.e(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is empty.") - return - } - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is update.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) - } - - private fun initAutopilotControlParameters( - busRoutesResult: BusRoutesResult, - leaveIndex: Int - ): AutopilotControlParameters? { - if (busRoutesResult.sites == null) { - return null - } - val stations = busRoutesResult.sites - if (leaveIndex + 1 > stations.size - 1) { - CallerLogger.e(SceneConstant.M_BUS_P + TAG, "行程日志-mismatch condition1.") - return null - } - val currentStation = stations[leaveIndex] - val nextStation = stations[leaveIndex + 1] - val parameters = AutopilotControlParameters() - parameters.routeID = busRoutesResult.lineId - parameters.routeName = busRoutesResult.name - parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.name) - parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.name) - parameters.startLatLon = - AutopilotControlParameters.AutoPilotLonLat(currentStation.lat, currentStation.lon) - parameters.endLatLon = - AutopilotControlParameters.AutoPilotLonLat(nextStation.lat, nextStation.lon) - parameters.vehicleType = 10 - if (parameters.autoPilotLine == null) { - parameters.autoPilotLine = AutopilotControlParameters.AutoPilotLine( - busRoutesResult.lineId.toLong(), busRoutesResult.name, - busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, - busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, - busRoutesResult.contrailSaveTime, busRoutesResult.carModel, - busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, - busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, - busRoutesResult.contrailSaveTimeDPQP - ) - } - return parameters - } - - - private fun clearAutopilotControlParameters() { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "AutopilotControlParameters is clear.") - CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) - } - -} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/presenter/BaseBusPassengerPresenter.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/presenter/BaseBusPassengerPresenter.kt index bdb1a005ba..827112c551 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/presenter/BaseBusPassengerPresenter.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/presenter/BaseBusPassengerPresenter.kt @@ -3,31 +3,24 @@ package com.mogo.och.shuttle.weaknet.passenger.presenter import androidx.lifecycle.LifecycleOwner import com.mogo.commons.AbsMogoApplication import com.mogo.commons.mvp.Presenter -import com.mogo.eagle.core.data.map.MogoLocation -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener 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.UiThreadHandler +import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.data.bean.BusStationBean -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassegerDriverStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerADASStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerAutopilotPlanningCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerControllerStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.IBusPassengerRouteLineInfoCallback -import com.mogo.och.shuttle.weaknet.passenger.model.BusPassengerModel +import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback +import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel import com.mogo.och.shuttle.weaknet.passenger.ui.BusPassengerRouteFragment /** * Created on 2022/3/31 */ class BaseBusPassengerPresenter(view: BusPassengerRouteFragment?) : - Presenter(view), IBusPassengerADASStatusCallback, - IBusPassengerControllerStatusCallback, IBusPassegerDriverStatusCallback, - IBusPassengerRouteLineInfoCallback, IBusPassengerAutopilotPlanningCallback { + Presenter(view), + ICommonCallback { private val TAG: String = BaseBusPassengerPresenter::class.java.simpleName init { - BusPassengerModel.init(AbsMogoApplication.getApp()) + CommonModel.init(AbsMogoApplication.getApp()) initListeners() } @@ -40,77 +33,27 @@ class BaseBusPassengerPresenter(view: BusPassengerRouteFragment?) : super.onDestroy(owner) releaseListeners() - BusPassengerModel.release() + CommonModel.releaseListeners() } private fun initListeners() { - BusPassengerModel.setADASStatusCallback(this) - BusPassengerModel.setControllerStatusCallback(TAG, this) - BusPassengerModel.setDriverStatusCallback(this) - BusPassengerModel.setRouteLineInfoCallback(this) - BusPassengerModel.setMoGoAutopilotPlanningListener(this) + CommonModel.setRouteLineInfoCallback(this) } private fun releaseListeners() { - BusPassengerModel.setADASStatusCallback(null) - BusPassengerModel.setControllerStatusCallback(TAG, null) - BusPassengerModel.setDriverStatusCallback(null) - BusPassengerModel.setRouteLineInfoCallback(null) - BusPassengerModel.setMoGoAutopilotPlanningListener(null) + CommonModel.setRouteLineInfoCallback(null) } - override fun onAutopilotEnable() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.onAutopilotStatusChanged( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE - ) - } - }, UiThreadHandler.MODE.QUEUE) - } - - override fun onAutopilotDisable() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.onAutopilotStatusChanged( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE - ) - } - }, UiThreadHandler.MODE.QUEUE) - } - - override fun onAutopilotRunning() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.onAutopilotStatusChanged( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING - ) - } - }, UiThreadHandler.MODE.QUEUE) - } - - override fun onCarLocationChanged(location: MogoLocation) { - UiThreadHandler.post({ - if (location != null && mView != null) { - mView!!.onCarLocationChanged(location) - } - }, UiThreadHandler.MODE.QUEUE) - } - - override fun changeOperationStatus(changeStatus: Boolean) { - UiThreadHandler.post({ - if (mView != null) { - mView!!.changeOperationStatus(changeStatus) - } - }, UiThreadHandler.MODE.QUEUE) + override fun updateSpeed(location: Int) { + BizLoopManager.runInMainThread{ + mView?.onCarLocationChanged(location) + } } override fun updateLineInfo(lineName: String) { - UiThreadHandler.post({ - if (mView != null) { - mView!!.updateLineInfo(lineName) - } - }, UiThreadHandler.MODE.QUEUE) + BizLoopManager.runInMainThread{ + mView?.updateLineInfo(lineName) + } } override fun updateStationsInfo( @@ -118,34 +61,30 @@ class BaseBusPassengerPresenter(view: BusPassengerRouteFragment?) : currentStationIndex: Int, isArrived: Boolean ) { - UiThreadHandler.post({ - if (mView != null) { - mView!!.updateStationsInfo(stations, currentStationIndex, isArrived) - } - }, UiThreadHandler.MODE.QUEUE) + BizLoopManager.runInMainThread{ + mView?.updateStationsInfo(stations, currentStationIndex, isArrived) + } } - override fun showNoTaskView() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.showNoTaskView() + override fun showNoTaskView(isShow:Boolean) { + BizLoopManager.runInMainThread{ + if(isShow) { + mView?.showNoTaskView() + }else{ + mView?.hideNoTaskView() } - }, UiThreadHandler.MODE.QUEUE) + } } - override fun hideNoTaskView() { - UiThreadHandler.post({ - if (mView != null) { - mView!!.hideNoTaskView() - } - }, UiThreadHandler.MODE.QUEUE) + override fun updateAutoStatus(isOpen: Boolean) { + BizLoopManager.runInMainThread{ + mView?.onAutopilotStatusChanged(isOpen) + } } - override fun routePlanningToNextStationChanged(meters: Long, timeInSecond: Long) { - UiThreadHandler.post({ - if (mView != null) { - mView!!.updateRoutePlanningToNextStation(meters, timeInSecond) - } - }, UiThreadHandler.MODE.QUEUE) + override fun updateRemainMT(meters: Long, timeInSecond: Long) { + BizLoopManager.runInMainThread{ + mView?.updateRoutePlanningToNextStation(meters, timeInSecond) + } } } diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerRouteFragment.java b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerRouteFragment.java index 2beab5a584..339a416291 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerRouteFragment.java @@ -62,13 +62,6 @@ public class BusPassengerRouteFragment extends private AppCompatTextView mCurrentArriveTip; private AppCompatImageView mSpeakArrivedIv; - /** - * 改变自动驾驶状态 - * - * @param status 2 - running 1 - enable 2 - disable - */ - private int mPrevAPStatus = -1; - @Override public int getStationPanelViewId() { return R.layout.shuttle_p_weak_jl_route_fragment; @@ -179,18 +172,6 @@ public class BusPassengerRouteFragment extends } } - public void changeOperationStatus(boolean status) { - if (!status) { - emptyTv.setText(getString(R.string.shuttle_p_jl_no_out)); - mNoLineInfoView.setVisibility(View.VISIBLE); - mRouteInfoView.setVisibility(View.GONE); - mLineName.setText(getContext().getString(R.string.shuttle_p_jl_no_line)); - updateArrivedStation(null,0,true); - clearMapView(); - clearMapMarkers(); - } - } - public void showNoTaskView(){ if (mNoLineInfoView.getVisibility() == View.GONE){ mNoLineInfoView.setVisibility(View.VISIBLE); @@ -279,13 +260,8 @@ public class BusPassengerRouteFragment extends // lastBearing = bearing; // } - public void onCarLocationChanged(MogoLocation location) { - updateSpeedView((float) location.getGnssSpeed()); - } - - public void updateSpeedView(float speed){ - int speedKM = (int) (Math.abs(speed) * 3.6F); - mSpeedTv.setText(String.valueOf(speedKM)); + public void onCarLocationChanged(int location) { + mSpeedTv.setText(String.valueOf(location)); } public void updateCurrentStation(int position) { @@ -355,21 +331,17 @@ public class BusPassengerRouteFragment extends mCurrentArriveTip.setText(Html.fromHtml(str)); } - public void onAutopilotStatusChanged(int status) { + public void onAutopilotStatusChanged(boolean isOpen) { UiThreadHandler.post(new Runnable() { @Override public void run() { - // 3. 其他过程直接更新 - if (mPrevAPStatus != status){ - AutopilotStatusChanged(status); - } - mPrevAPStatus = status; + AutopilotStatusChanged(isOpen); } }); } - public void AutopilotStatusChanged(int status) { - if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status) { + public void AutopilotStatusChanged(boolean isOpen) { + if (isOpen) { mAutopilotIv.setImageResource(R.drawable.shuttle_p_jl_auto_open); } else { mAutopilotIv.setImageResource(R.drawable.shuttle_p_jl_auto_close); diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPBlueToothView.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPBlueToothView.kt similarity index 95% rename from OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPBlueToothView.kt rename to OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPBlueToothView.kt index 2606e8fcdc..d646acab18 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPBlueToothView.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPBlueToothView.kt @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.weaknet.passenger.ui +package com.mogo.och.shuttle.weaknet.passenger.ui.widget import android.content.Context import android.util.AttributeSet diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPStatusBarView.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPStatusBarView.kt similarity index 95% rename from OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPStatusBarView.kt rename to OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPStatusBarView.kt index c0c3f1a182..073bc9778b 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPStatusBarView.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPStatusBarView.kt @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.weaknet.passenger.ui +package com.mogo.och.shuttle.weaknet.passenger.ui.widget import android.annotation.* import android.content.Context @@ -11,11 +11,9 @@ import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager -import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.util.AppUtils import com.mogo.och.shuttle.weaknet.passenger.R import kotlinx.android.synthetic.main.shuttle_p_weak_jl_view_status_bar.view.tv_shuttle_b1_p_version -import kotlinx.coroutines.* import me.jessyan.autosize.utils.AutoSizeUtils /** diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerTrafficLightView.kt b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPassengerTrafficLightView.kt similarity index 99% rename from OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerTrafficLightView.kt rename to OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPassengerTrafficLightView.kt index e353b04f2e..fa8e30d04e 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/BusPassengerTrafficLightView.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/jinlv/com/mogo/och/shuttle/weaknet/passenger/ui/widget/BusPassengerTrafficLightView.kt @@ -1,4 +1,4 @@ -package com.mogo.och.shuttle.weaknet.passenger.ui +package com.mogo.och.shuttle.weaknet.passenger.ui.widget import android.content.Context import android.util.AttributeSet diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/AutoPilotStatusCallback.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/AutoPilotStatusCallback.kt deleted file mode 100644 index 1f68457985..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/AutoPilotStatusCallback.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback - -/** - * @author: wangmingjun - * @date: 2023/2/13 - */ -interface AutoPilotStatusCallback { - /** - * false: 未开启自驾, true : 开启自驾 - */ - fun updateAutoStatus(isOpen: Boolean) - - fun updateAutoStatus(status: Int) -} \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/DrivingInfoCallback.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/DrivingInfoCallback.kt deleted file mode 100644 index ef9974051d..0000000000 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/callback/DrivingInfoCallback.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.shuttle.weaknet.passenger.callback - -import com.mogo.och.data.bean.BusStationBean - -/** - * @author: wangmingjun - * @date: 2023/2/2 - */ -interface DrivingInfoCallback { - fun updateSpeed(speed: Int) - fun updatePlateNumber(carNum: String) - fun updateLine(lineName: String) - fun updateRemainMT(meters : Long, timeInSecond : Long) // 米,秒 - fun showNoTaskView(isTrue : Boolean) - fun updateLineStations(stations: MutableList) - fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean) - fun clearCustomPolyline() -} \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2DrivingPresenter.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2DrivingPresenter.kt index 89e8b10363..b82b61eef0 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2DrivingPresenter.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/presenter/PM2DrivingPresenter.kt @@ -4,18 +4,18 @@ import androidx.lifecycle.LifecycleOwner import com.amap.api.maps.model.LatLng import com.mogo.commons.mvp.Presenter import com.mogo.eagle.core.utilcode.util.ThreadUtils -import com.mogo.och.shuttle.weaknet.passenger.callback.AutoPilotStatusCallback -import com.mogo.och.shuttle.weaknet.passenger.callback.DrivingInfoCallback import com.mogo.och.shuttle.weaknet.passenger.model.PM2ADASModel -import com.mogo.och.shuttle.weaknet.passenger.model.LineModel import com.mogo.och.shuttle.weaknet.passenger.ui.PM2DrivingInfoFragment import com.mogo.och.data.bean.BusStationBean +import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback +import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) : - Presenter(view), DrivingInfoCallback, AutoPilotStatusCallback { + Presenter(view), + ICommonCallback { init { - LineModel.init(context) + CommonModel.init(context) PM2ADASModel.INSTANCE.init(context) initListener() } @@ -23,17 +23,15 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) : override fun onDestroy(owner: LifecycleOwner) { super.onDestroy(owner) destroyListener() - LineModel.releaseListener() + CommonModel.releaseListeners() } private fun initListener(){ - LineModel.setDrivingInfoCallback(this) - LineModel.setAutoStatusCallback(this) + CommonModel.setRouteLineInfoCallback(this) } private fun destroyListener(){ - LineModel.setDrivingInfoCallback(null) - LineModel.setAutoStatusCallback(null) + CommonModel.setRouteLineInfoCallback(null) } override fun updateSpeed(speed: Int) { @@ -45,13 +43,7 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) : } } - override fun updatePlateNumber(carNum: String) { - ThreadUtils.runOnUiThread { - mView?.updateCarPlateNum(carNum) - } - } - - override fun updateLine(lineName: String) { + override fun updateLineInfo(lineName: String) { ThreadUtils.runOnUiThread { mView?.updateTaskName(lineName) } @@ -128,9 +120,5 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) : } } - override fun updateAutoStatus(status: Int) { - - } - } \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2BaseFragment.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2BaseFragment.kt index fd4a77054a..3e18fa7aee 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2BaseFragment.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2BaseFragment.kt @@ -28,23 +28,11 @@ class PM2BaseFragment : } override fun initViews() { - //横竖屏 -// setScreenDirection() tv_shuttle_b2_p_version.text = "版本:${AppUtils.getAppVersionName()}" //隐藏小地图 initFragment() } -// private fun setScreenDirection() { -// var ro = Settings.System.getInt(context?.contentResolver, -// Settings.System.USER_ROTATION,Surface.ROTATION_270) -// if (ro != Surface.ROTATION_270){ -// ro = Surface.ROTATION_270 -// } -// Settings.System.putInt(context?.contentResolver, -// Settings.System.USER_ROTATION,ro) -// } - /** * 初始化行程信息,高静地图,宣传 三个fragment */ diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2DrivingInfoFragment.kt b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2DrivingInfoFragment.kt index 133c1de460..82911ed8aa 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2DrivingInfoFragment.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/m2/com/mogo/och/shuttle/weaknet/passenger/ui/PM2DrivingInfoFragment.kt @@ -15,6 +15,7 @@ import com.mogo.och.shuttle.weaknet.passenger.R import com.mogo.och.shuttle.weaknet.passenger.presenter.PM2DrivingPresenter import com.mogo.och.common.module.utils.DateTimeUtil.* import com.mogo.och.common.module.utils.NumberFormatUtil +import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.data.bean.BusStationBean import kotlinx.android.synthetic.main.shuttle_p_m2_driving_info_fragment.auto_tv import kotlinx.android.synthetic.main.shuttle_p_m2_driving_info_fragment.clg_distance_left_time @@ -41,16 +42,24 @@ import kotlin.math.roundToInt class PM2DrivingInfoFragment : MvpFragment() { - val stationIcon = BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, R.drawable.shuttle_p_m2_map_staton_icon) - val stationPassIcon = BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, R.drawable.shuttle_p_m2_map_staton_arrived_icon) - val startStationIcon = BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, R.drawable.shuttle_p_m2_map_start_icon) - val endStationIcon = BitmapFactory.decodeResource(AbsMogoApplication.getApp().resources, R.drawable.shuttle_p_m2_map_end_icon) + private val stationIcon = BitmapFactory.decodeResource( + AbsMogoApplication.getApp().resources, + R.drawable.shuttle_p_m2_map_staton_icon + ) + private val stationPassIcon = BitmapFactory.decodeResource( + AbsMogoApplication.getApp().resources, + R.drawable.shuttle_p_m2_map_staton_arrived_icon + ) + private val startStationIcon = BitmapFactory.decodeResource( + AbsMogoApplication.getApp().resources, + R.drawable.shuttle_p_m2_map_start_icon + ) + private val endStationIcon = BitmapFactory.decodeResource( + AbsMogoApplication.getApp().resources, + R.drawable.shuttle_p_m2_map_end_icon + ) + - /** - * 改变自动驾驶状态 - * - * @param status 2 - running 1 - enable 2 - disable - */ override fun getLayoutId(): Int { return R.layout.shuttle_p_m2_driving_info_fragment } @@ -65,38 +74,14 @@ class PM2DrivingInfoFragment : true } - line_name_tv.setTextColor(resources.getColor(R.color.shuttle_p_m2_line_name_tv_color)) - station_name_tv.setTextColor(resources.getColor(R.color.shuttle_p_m2_line_name_tv_color)) + line_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_line_name_tv_color)) + station_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_line_name_tv_color)) speed_tv.setVertrial(true) val intArrayOf = intArrayOf( - requireContext().resources.getColor(R.color.shuttle_p_m2_color_43cefe), - requireContext().resources.getColor(R.color.shuttle_p_m2_color_1466fb) + ResourcesUtils.getColor(R.color.shuttle_p_m2_color_43cefe), + ResourcesUtils.getColor(R.color.shuttle_p_m2_color_1466fb), ) speed_tv.setmColorList(intArrayOf) - -// current_time_tv.onClick { - -// //测试V2X消息 -// CallerMsgBoxManager.saveMsgBox( -// MsgBoxBean( -// MsgBoxType.V2X, -// V2XMsg( -// "6666", -// "超速行驶", -// "" -// ) -// ) -// ) -// -// val noticeTrafficStylePushData = NoticeTrafficStylePushData() -// noticeTrafficStylePushData.content= "测试公告布局" -// val noticeFromCloudMsg = NoticeFrCloudMsg(null, noticeTrafficStylePushData, 1) -// CallerMsgBoxManager.saveMsgBox( -// MsgBoxBean( -// MsgBoxType.NOTICE, noticeFromCloudMsg) -// ) -// BPRouteDataTestUtils.converToRouteData() -// } } override fun initViews(savedInstanceState: Bundle?) { @@ -111,50 +96,34 @@ class PM2DrivingInfoFragment : override fun onResume() { super.onResume() - overMapView?.let{ - it.onResume() - } + overMapView?.onResume() } override fun onPause() { super.onPause() - overMapView?.let{ - it.onPause() - } + overMapView?.onPause() } override fun onDestroyView() { overMapView?.onDestroy() - if (mPresenter != null) { - mPresenter?.onDestroy(this) - } + mPresenter?.onDestroy(this) super.onDestroyView() } - fun updateSpeed(speed: Int){ + fun updateSpeed(speed: Int) { speed_tv.text = speed.toString() } - fun updateCarPlateNum(plateNum : String){ - - } - - fun updateTaskName(name: String){ + fun updateTaskName(name: String) { line_name_tv.text = name } - fun changeOperationStatus(status:Boolean){ - if (!status){ - updateNoOrderUI() - } - } - - fun showNoTaskView(haveTask: Boolean){ + fun showNoTaskView(haveTask: Boolean) { setLineInfoView(haveTask) } - private fun setLineInfoView(isShow: Boolean){ - if (!isShow){ + private fun setLineInfoView(isShow: Boolean) { + if (!isShow) { updateNoOrderUI() } } @@ -162,19 +131,16 @@ class PM2DrivingInfoFragment : private fun updateNoOrderUI() { line_name_tv.text = resources.getString(R.string.shuttle_p_m2_not_select_line_content) updateNoStationView() - overMapView?.let { - it.clearSiteMarkers() - } + overMapView?.clearSiteMarkers() clearCustomPolyline() } - fun clearCustomPolyline(){ - overMapView?.let { - it.clearCustomPolyline() - } + fun clearCustomPolyline() { + overMapView?.clearCustomPolyline() } - private fun updateNoStationView(){ - station_name_tv.setTextColor(resources.getColor(R.color.shuttle_p_m2_next_tv_color)) + + private fun updateNoStationView() { + station_name_tv.setTextColor(ResourcesUtils.getColor(R.color.shuttle_p_m2_next_tv_color)) station_name_tv.text = resources.getString(R.string.shuttle_p_m2_empty_tv) tv_distance.text = resources.getString(R.string.shuttle_p_m2_empty_remain_km) tv_left_time.text = resources.getString(R.string.shuttle_p_m2_empty_remain_minute) @@ -186,12 +152,32 @@ class PM2DrivingInfoFragment : } fun updateAutoStatus(isAutoPilot: Boolean) { - if (isAutoPilot){ - context?.let { auto_tv.setTextColor(ContextCompat.getColor(it,R.color.shuttle_p_m2_white_color)) } - context?.let { auto_tv.background = ContextCompat.getDrawable(it,R.drawable.shuttle_p_m2_auto_button_bg) } - }else{ - context?.let { auto_tv.setTextColor(ContextCompat.getColor(it,R.color.shuttle_p_m2_color_7094ad)) } - context?.let { auto_tv.background = ContextCompat.getDrawable(it,R.drawable.shuttle_p_m2_bg_p_m2_auto) } + if (isAutoPilot) { + context?.let { + auto_tv.setTextColor( + ContextCompat.getColor( + it, + R.color.shuttle_p_m2_white_color + ) + ) + } + context?.let { + auto_tv.background = + ContextCompat.getDrawable(it, R.drawable.shuttle_p_m2_auto_button_bg) + } + } else { + context?.let { + auto_tv.setTextColor( + ContextCompat.getColor( + it, + R.color.shuttle_p_m2_color_7094ad + ) + ) + } + context?.let { + auto_tv.background = + ContextCompat.getDrawable(it, R.drawable.shuttle_p_m2_bg_p_m2_auto) + } } } @@ -200,38 +186,40 @@ class PM2DrivingInfoFragment : stationsPass: MutableList, startStation: LatLng?, endStation: LatLng? - ){ + ) { overMapView?.let { val stationsList: MutableList = mutableListOf() - startStation?.let { start-> - stationsList.add(SiteMarkerBean(start,startStationIcon,0.5f,0.5f)) + startStation?.let { start -> + stationsList.add(SiteMarkerBean(start, startStationIcon, 0.5f, 0.5f)) } - for (stationsPass in stationsPass) { - stationsList.add(SiteMarkerBean(stationsPass,stationPassIcon,0.5f,0.5f)) + for (stationPass in stationsPass) { + stationsList.add(SiteMarkerBean(stationPass, stationPassIcon, 0.5f, 0.5f)) } - for (stationsPass in stations) { - stationsList.add(SiteMarkerBean(stationsPass,stationIcon,0.5f,0.5f)) + for (stationPass in stations) { + stationsList.add(SiteMarkerBean(stationPass, stationIcon, 0.5f, 0.5f)) } - endStation?.let {end-> - stationsList.add(SiteMarkerBean(end,endStationIcon,0.5f,0.5f)) + endStation?.let { end -> + stationsList.add(SiteMarkerBean(end, endStationIcon, 0.5f, 0.5f)) } it.drawSiteMarkers(stationsList) } } - fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean){ + fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean) { if (stations.size == 0) return - if (0<= i && i + android:text="@string/shuttle_p_jl_no_task"/> \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/jinlv/layout/shuttle_p_weak_jl_view_status_bar.xml b/OCH/shuttle/passenger_weaknet/src/main/res/jinlv/layout/shuttle_p_weak_jl_view_status_bar.xml index 4101251a11..74e9b46cd2 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/res/jinlv/layout/shuttle_p_weak_jl_view_status_bar.xml +++ b/OCH/shuttle/passenger_weaknet/src/main/res/jinlv/layout/shuttle_p_weak_jl_view_status_bar.xml @@ -32,7 +32,7 @@ android:layout_marginStart="@dimen/dp_40" /> - Date: Tue, 12 Nov 2024 10:59:39 +0800 Subject: [PATCH 5/7] =?UTF-8?q?[6.7.3]=20[fix]=20[=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=A2=AB=E5=88=A0=E9=99=A4]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/och/weaknet/repository/db/bean/LineDataBean.kt | 3 +-- .../mogo/och/weaknet/ui/switchline/SwitchLineAdapter.kt | 8 ++------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/LineDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/LineDataBean.kt index 7be426037c..d2b7d38eb4 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/LineDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/LineDataBean.kt @@ -59,7 +59,6 @@ data class LineDataBean( if (lineId != other.lineId) return false if (lineName != other.lineName) return false - if (endStationName != other.endStationName) return false return true } @@ -67,7 +66,7 @@ data class LineDataBean( override fun hashCode(): Int { var result = lineId?.hashCode() ?: 0 result = 31 * result + (lineName?.hashCode() ?: 0) - result = 31 * result + (endStationName?.hashCode() ?: 0) return result } + } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchline/SwitchLineAdapter.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchline/SwitchLineAdapter.kt index d1b340a761..b3487fa0ce 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchline/SwitchLineAdapter.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchline/SwitchLineAdapter.kt @@ -28,10 +28,6 @@ class SwitchLineAdapter( private var mItemClickListener: LineItemClickListener? = null fun setDataList(dataList: List) { - if (this.mData == dataList) { - // 如果新旧列表一致,则直接返回 - return - } val diffResult = DiffUtil.calculateDiff(MyDiffCallback(this.mData, dataList)) this.mData.clear() @@ -95,13 +91,13 @@ class SwitchLineAdapter( override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { val oldItem = oldData[oldItemPosition] val newItem = newData[newItemPosition] - return oldItem == newItem + return oldItem == newItem && oldItem.endStationName == newItem.endStationName } override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { val oldItem = oldData[oldItemPosition] val newItem = newData[newItemPosition] - return oldItem == newItem + return oldItem == newItem && oldItem.endStationName == newItem.endStationName } } From aa5bd338dcfb51a26fe89b3a34a15cee79d419b0 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 12 Nov 2024 15:15:56 +0800 Subject: [PATCH 6/7] =?UTF-8?q?[6.8.0]=20[fea]=20[=E6=94=B9=E9=80=A0lineRe?= =?UTF-8?q?pository]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/socket/lan/bean/DPMsgType.kt | 1 + .../manager/socket/lan/bean/DataBean.kt | 13 ++++ .../com/mogo/och/data/bean/WriteOffBean.kt | 3 + .../com/mogo/och/weaknet/model/EventModel.kt | 2 +- .../com/mogo/och/weaknet/model/LineModel.kt | 2 + .../weaknet/repository/RepositoryManager.kt | 72 ++++++++++++++----- .../ILineRepository.kt} | 7 +- .../{ => line}/impl/NormalRepository.kt | 65 +++++++---------- .../{ => line}/impl/WeaknetRepository.kt | 26 +++---- .../weaknet/repository/net/NetInterface.java | 55 ++++++++++++++ .../request/PassengerWriteOffRequest.java | 50 +++++++++++++ .../response/PassengerWriteOffResponse.kt | 13 ++++ .../net/normal/NormalNetInterface.java | 31 -------- .../dali/bus/DaliBusServiceManager.kt | 11 +-- .../dali/bus/IDaliBusApiService.kt | 24 +++---- .../dali/shuttle/DaliShuttleServiceManager.kt | 6 +- .../dali/shuttle/IDaliShuttleApiService.java | 11 ++- .../mogo/bus/IMogoBusApiService.kt | 2 +- .../mogo/bus/MogoBusServiceManager.kt | 9 +-- .../mogo/shuttle/IMogoShuttleApiService.java | 2 +- .../mogo/shuttle/MogoShuttleServiceManager.kt | 9 +-- .../saas/bus/ISaasBusApiService.java | 11 ++- .../saas/bus/SaasBusServiceManager.kt | 7 +- .../saas/shuttle/ISaasShuttleApiService.java | 11 ++- .../saas/shuttle/SaasShuttleServiceManager.kt | 6 +- .../net/weaknet/WeakNetInterface.java | 35 --------- .../writeoff/IWriteOffRepository.kt | 15 ++++ .../writeoff/impl/WriteOffCacheRepository.kt | 66 +++++++++++++++++ .../impl/WriteOffNormallRepository.kt | 72 +++++++++++++++++++ .../weaknet/passenger/model/TicketModel.kt | 15 +++- .../weaknet/passenger/network/ServiceApi.java | 12 ---- 31 files changed, 457 insertions(+), 207 deletions(-) create mode 100644 OCH/common/data/src/main/java/com/mogo/och/data/bean/WriteOffBean.kt rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/{IRepository.kt => line/ILineRepository.kt} (82%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/{ => line}/impl/NormalRepository.kt (77%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/{ => line}/impl/WeaknetRepository.kt (95%) create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/request/PassengerWriteOffRequest.java create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/response/PassengerWriteOffResponse.kt delete mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/NormalNetInterface.java rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{normal => project}/dali/bus/DaliBusServiceManager.kt (90%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{normal => project}/dali/bus/IDaliBusApiService.kt (91%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{weaknet => project}/dali/shuttle/DaliShuttleServiceManager.kt (94%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{weaknet => project}/dali/shuttle/IDaliShuttleApiService.java (80%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{normal => project}/mogo/bus/IMogoBusApiService.kt (98%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{normal => project}/mogo/bus/MogoBusServiceManager.kt (93%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{normal => project}/mogo/shuttle/IMogoShuttleApiService.java (98%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{normal => project}/mogo/shuttle/MogoShuttleServiceManager.kt (93%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{weaknet => project}/saas/bus/ISaasBusApiService.java (80%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{weaknet => project}/saas/bus/SaasBusServiceManager.kt (93%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{weaknet => project}/saas/shuttle/ISaasShuttleApiService.java (80%) rename OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/{weaknet => project}/saas/shuttle/SaasShuttleServiceManager.kt (95%) delete mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/WeakNetInterface.java create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DPMsgType.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DPMsgType.kt index 9633fa762a..d6e9a8b177 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DPMsgType.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DPMsgType.kt @@ -19,5 +19,6 @@ enum class DPMsgType(val type: Int) { TYPE_WRITEOFF_DEVICES_INFO(9), //核销设备信息 TYPE_CHANGE_BUSINESS_TYPE(10), //业务模式切换 TYPE_ENV_CHECK(11), //环境核验 + TYPE_WRITEOFF_INFO_DETAIL(13), //核销信息 TYPE_CLIENT_REGISTER(12); //客户端注册 服务端需要 } \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt index 25e9b815a5..4d365e6e59 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt @@ -70,6 +70,19 @@ data class WriteOffMsg( val orderNo: String? ) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO.type) +data class WriteOffDetialMsg( + val expiryTime: Long?, + val bookingTime: Long?, + val businessType: Int?, + val lineId: Long?, + val remainingTimes: Int?, + val orderNo: String?, + val uid: String?, + val phone: String?, + val ticketSize: String?, + val ticketName: String?, +) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type) + data class WriteOffDevicesMsg( val isConnectScanner: Boolean?, val reason: String? diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/WriteOffBean.kt b/OCH/common/data/src/main/java/com/mogo/och/data/bean/WriteOffBean.kt new file mode 100644 index 0000000000..da29aca7ce --- /dev/null +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/WriteOffBean.kt @@ -0,0 +1,3 @@ +package com.mogo.och.data.bean + +data class WriteOffBean(val orderNo:String,val uid:String,val phone:String) \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt index 7827658f17..cae81a1a5a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt @@ -9,7 +9,7 @@ import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.WaitUploadLine import com.mogo.och.weaknet.bean.WaitUploadTask -import com.mogo.och.weaknet.repository.net.weaknet.dali.shuttle.DaliShuttleServiceManager +import com.mogo.och.weaknet.repository.net.project.dali.shuttle.DaliShuttleServiceManager import com.mogo.och.weaknet.repository.db.bean.EventDataBean import com.mogo.och.weaknet.repository.db.repository.EventDb import com.mogo.och.weaknet.repository.RepositoryManager diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt index 82b008de2d..c5f5c4a9c9 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt @@ -146,7 +146,9 @@ object LineModel { "数据发生变化", "接口信息发生变化 $lastChangeMd5 new md5${currentRequest}" ) + val startTime = System.currentTimeMillis() CarExecutableTaskResponse.save2Db(data) + CallerLogger.d(TAG,"更新数据耗时${System.currentTimeMillis()-startTime}___${Thread.currentThread().name}") RxUtils.createSubscribe(800) { // 等待写入数据库 mBusLinesCallbackMap.forEach { callback -> diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt index 73f1a9439a..c816ef009f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt @@ -15,14 +15,18 @@ import com.mogo.och.weaknet.repository.db.MyDataBase import com.mogo.och.weaknet.repository.db.bean.LineDataBean import com.mogo.och.weaknet.repository.db.bean.TaskDataBean import com.mogo.och.weaknet.repository.db.repository.EventDb -import com.mogo.och.weaknet.repository.impl.NormalRepository -import com.mogo.och.weaknet.repository.impl.WeaknetRepository +import com.mogo.och.weaknet.repository.line.ILineRepository +import com.mogo.och.weaknet.repository.line.impl.NormalRepository +import com.mogo.och.weaknet.repository.line.impl.WeaknetRepository +import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository +import com.mogo.och.weaknet.repository.writeoff.impl.WriteOffCacheRepository +import com.mogo.och.weaknet.repository.writeoff.impl.WriteOffNormallRepository import io.reactivex.Observable object RepositoryManager { private val TAG = "RepositoryManager" - private var repository: IRepository?=null + private var lineRepository: ILineRepository?=null get() { if(field==null){ when (ProjectUtils.getProjectType()) { @@ -59,41 +63,69 @@ object RepositoryManager { return field } + private var writeOffRepository: IWriteOffRepository?=null + get() { + if(field==null){ + when (ProjectUtils.getProjectType()) { + Project.SAAS -> { + if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { + field = WriteOffCacheRepository() + CallerLogger.d(TAG,"saas shuttle 核销缓存") + }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { + field = WriteOffCacheRepository() + CallerLogger.d(TAG,"saas bus 核销缓存") + } + } + Project.DALI -> { + if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { + field = WriteOffNormallRepository() + CallerLogger.d(TAG,"dali shuttle 不支持核销缓存") + }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { + field = WriteOffNormallRepository() + CallerLogger.d(TAG,"dali bus 不支持核销缓存") + } + } + else->{} + } + } + return field + } + fun release(){ closeDb() } fun loadCurrentTaskInfo():Observable?{ - return repository?.loadCurrentTaskInfo() + return lineRepository?.loadCurrentTaskInfo() } fun queryCanUseLine() : Observable?>? { - return repository?.queryCanUseLine() + return lineRepository?.queryCanUseLine() } fun queryCanUserTask(lineId: Long): Observable?>? { - return repository?.queryCanUserTask(lineId) + return lineRepository?.queryCanUserTask(lineId) } fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? { - return repository?.startTask(taskId,lineId,taskTime,lineName) + return lineRepository?.startTask(taskId,lineId,taskTime,lineName) } fun leaveStation(seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime:Long ): Observable?{ - return repository?.leaveStation(seq,siteId,taskId,lineId,taskStartTime) + return lineRepository?.leaveStation(seq,siteId,taskId,lineId,taskStartTime) } fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable?{ - return repository?.arriveStation(seq,siteId,taskId) + return lineRepository?.arriveStation(seq,siteId,taskId) } fun endTask(taskId: Long): Observable?{ - return repository?.endTask(taskId) + return lineRepository?.endTask(taskId) } fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback?){ - repository?.queryWriteoffCount(context,taskId,siteId,callback) + writeOffRepository?.queryWriteoffCount(context,taskId,siteId,callback) } @@ -123,8 +155,8 @@ object RepositoryManager { fun queryCarExecutableTaskList( ochCommonServiceCallback: OchCommonServiceCallback ) { - if (repository is WeaknetRepository) { - repository?.queryCarExecutableTaskList(ochCommonServiceCallback) + if (lineRepository is WeaknetRepository) { + lineRepository?.queryCarExecutableTaskList(ochCommonServiceCallback) } } @@ -133,19 +165,25 @@ object RepositoryManager { data: ShuttleEventRequest?, callback: OchCommonServiceCallback? ){ - if (repository is WeaknetRepository) { - repository?.reportCabinEvent(context,data,callback) + if (lineRepository is WeaknetRepository) { + lineRepository?.reportCabinEvent(context,data,callback) } } + fun writeOff(){ + writeOffRepository?.writeOffEvent() + } + fun closeDb() { if (supportDb()) { MyDataBase.instance?.close() CallerLogger.d(TAG,"关闭数据库") MyDataBase.instance = null CallerLogger.d(TAG,"重置数据库") - repository?.release() - repository = null + lineRepository?.release() + lineRepository = null + writeOffRepository?.release() + writeOffRepository = null CallerLogger.d(TAG,"重置 repository") } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/IRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt similarity index 82% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/IRepository.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt index 63c45f2f9d..af70364886 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/IRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt @@ -1,16 +1,15 @@ -package com.mogo.och.weaknet.repository +package com.mogo.och.weaknet.repository.line import android.content.Context import com.mogo.eagle.core.data.BaseData import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.db.bean.LineDataBean import com.mogo.och.weaknet.repository.db.bean.TaskDataBean import io.reactivex.Observable -interface IRepository { +interface ILineRepository { fun loadCurrentTaskInfo():Observable? @@ -26,8 +25,6 @@ interface IRepository { fun endTask( taskId: Long): Observable? - fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback?) - fun queryCarExecutableTaskList(ochCommonServiceCallback: OchCommonServiceCallback) fun reportCabinEvent(context: Context?, data: ShuttleEventRequest?, callback: OchCommonServiceCallback?) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/impl/NormalRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt similarity index 77% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/impl/NormalRepository.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt index b0bc27cf12..e1120f92e6 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/impl/NormalRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.impl +package com.mogo.och.weaknet.repository.line.impl import android.content.Context import com.mogo.commons.env.Project @@ -15,25 +15,23 @@ import com.mogo.och.data.bean.ContraiInfo import com.mogo.och.data.bean.LineInfo import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.model.LineModel import com.mogo.och.weaknet.repository.db.bean.LineDataBean import com.mogo.och.weaknet.repository.db.bean.TaskDataBean -import com.mogo.och.weaknet.repository.IRepository +import com.mogo.och.weaknet.repository.line.ILineRepository import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean +import com.mogo.och.weaknet.repository.net.NetInterface import com.mogo.och.weaknet.repository.net.exception.NetException -import com.mogo.och.weaknet.repository.net.normal.NormalNetInterface -import com.mogo.och.weaknet.repository.net.normal.dali.bus.DaliBusServiceManager -import com.mogo.och.weaknet.repository.net.normal.mogo.bus.MogoBusServiceManager -import com.mogo.och.weaknet.repository.net.normal.mogo.shuttle.MogoShuttleServiceManager -import com.mogo.och.weaknet.repository.net.weaknet.saas.bus.SaasBusServiceManager +import com.mogo.och.weaknet.repository.net.project.dali.bus.DaliBusServiceManager +import com.mogo.och.weaknet.repository.net.project.mogo.bus.MogoBusServiceManager +import com.mogo.och.weaknet.repository.net.project.mogo.shuttle.MogoShuttleServiceManager import io.reactivex.Observable -class NormalRepository: IRepository { +class NormalRepository: ILineRepository { - private val TAG = "NormalRepository" + private val tag = "NormalRepository" - private var normalNetInterface: NormalNetInterface?=null + private var normalLineInterface: NetInterface?=null get() { if(field==null){ when (ProjectUtils.getProjectType()) { @@ -48,7 +46,7 @@ class NormalRepository: IRepository { if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { throw NetException("非缓存weakNetInterface 初始化环境错误 isBus") }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { - field = DaliBusServiceManager() + field = DaliBusServiceManager } } Project.MOGO -> { @@ -67,7 +65,7 @@ class NormalRepository: IRepository { } override fun loadCurrentTaskInfo(): Observable? { - return normalNetInterface?.queryBusRoutes() + return normalLineInterface?.queryBusRoutes() ?.flatMap { busRoutesResult -> if (!busRoutesResult.sites.isNullOrEmpty() && busRoutesResult.sites.size > 1) { OchChainLogManager.writeChainLogDb( @@ -75,23 +73,23 @@ class NormalRepository: IRepository { "本地没有正在运行的数据,服务器端有${busRoutesResult}" ) val result = mutableListOf() - var temp: BusStationBean? = null + var temp: BusStationBean? var currentStationIndex = -1 var lineInfo: LineInfo?=null busRoutesResult.sites.forEachIndexed { index, taskAndsite -> temp = BusStationBean() - temp?.drivingStatus = (taskAndsite.drivingStatus ?: 0) - temp?.lat = (taskAndsite.lat ?: 0.0) - temp?.lon = (taskAndsite.lon ?: 0.0) - temp?.gcjLat = (taskAndsite.gcjLat ?: 0.0) - temp?.gcjLon = (taskAndsite.gcjLon ?: 0.0) + temp?.drivingStatus = taskAndsite.drivingStatus + temp?.lat = taskAndsite.lat + temp?.lon = taskAndsite.lon + temp?.gcjLat = taskAndsite.gcjLat + temp?.gcjLon = taskAndsite.gcjLon temp?.introduction = taskAndsite.introduction temp?.isLeaving = taskAndsite.isLeaving temp?.name = taskAndsite.name temp?.nameKr = taskAndsite.nameKr temp?.isPlayTts = java.lang.Boolean.TRUE == taskAndsite.isPlayTts - temp?.seq = (taskAndsite.seq ?: 0) - temp?.siteId = if (taskAndsite.siteId == null) 0 else taskAndsite.siteId!!.toInt() + temp?.seq = taskAndsite.seq + temp?.siteId = taskAndsite.siteId result.add(temp!!) // 正在进行中的任务 if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) { @@ -135,11 +133,11 @@ class NormalRepository: IRepository { } override fun queryCanUseLine(): Observable?>? { - return normalNetInterface?.queryBusLines() + return normalLineInterface?.queryBusLines() } override fun queryCanUserTask(lineId: Long): Observable?>? { - return normalNetInterface?.queryBusTaskByLineId(lineId) + return normalLineInterface?.queryBusTaskByLineId(lineId) } override fun startTask( @@ -148,7 +146,7 @@ class NormalRepository: IRepository { taskTime: Long, lineName: String ): Observable? { - return normalNetInterface?.switchLine(taskId) + return normalLineInterface?.switchLine(taskId) } override fun leaveStation( @@ -158,11 +156,11 @@ class NormalRepository: IRepository { lineId: Long, taskStartTime: Long ): Observable? { - return normalNetInterface?.leaveStation(seq, siteId, taskId, System.currentTimeMillis()) + return normalLineInterface?.leaveStation(seq, siteId, taskId, System.currentTimeMillis()) } override fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable? { - return normalNetInterface?.arriveSiteStation( + return normalLineInterface?.arriveSiteStation( seq, siteId, taskId, @@ -171,16 +169,7 @@ class NormalRepository: IRepository { } override fun endTask(taskId: Long): Observable? { - return normalNetInterface?.endTask(taskId) - } - - override fun queryWriteoffCount( - context: Context, - taskId: Long, - siteId: Long, - callback: OchCommonServiceCallback? - ) { - + return normalLineInterface?.endTask(taskId) } override fun queryCarExecutableTaskList(ochCommonServiceCallback: OchCommonServiceCallback) { @@ -196,8 +185,8 @@ class NormalRepository: IRepository { } override fun release() { - normalNetInterface=null - CallerLogger.d(TAG,"重置 normalNetInterface") + normalLineInterface=null + CallerLogger.d(tag,"重置 normalNetInterface") } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/impl/WeaknetRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt similarity index 95% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/impl/WeaknetRepository.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt index 6536b6d70f..05bd39b4eb 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/impl/WeaknetRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.impl +package com.mogo.och.weaknet.repository.line.impl import android.content.Context import com.mogo.commons.AbsMogoApplication @@ -14,7 +14,6 @@ import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.BusRoutesResponse import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.model.LineModel import com.mogo.och.weaknet.model.LineModel.currentTask import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean @@ -26,19 +25,19 @@ import com.mogo.och.weaknet.repository.db.repository.EventDb import com.mogo.och.weaknet.repository.db.repository.LineDb import com.mogo.och.weaknet.repository.db.repository.TaskDb import com.mogo.och.weaknet.repository.db.repository.TaskSiteDb -import com.mogo.och.weaknet.repository.IRepository +import com.mogo.och.weaknet.repository.line.ILineRepository import com.mogo.och.weaknet.repository.net.exception.NetException -import com.mogo.och.weaknet.repository.net.weaknet.WeakNetInterface -import com.mogo.och.weaknet.repository.net.weaknet.dali.shuttle.DaliShuttleServiceManager -import com.mogo.och.weaknet.repository.net.weaknet.saas.bus.SaasBusServiceManager -import com.mogo.och.weaknet.repository.net.weaknet.saas.shuttle.SaasShuttleServiceManager +import com.mogo.och.weaknet.repository.net.NetInterface +import com.mogo.och.weaknet.repository.net.project.dali.shuttle.DaliShuttleServiceManager +import com.mogo.och.weaknet.repository.net.project.saas.bus.SaasBusServiceManager +import com.mogo.och.weaknet.repository.net.project.saas.shuttle.SaasShuttleServiceManager import io.reactivex.Observable -class WeaknetRepository : IRepository { +class WeaknetRepository : ILineRepository { private val TAG = "ShuttleSaasRepository" private val context = AbsMogoApplication.getApp() - private var weakNetInterface: WeakNetInterface?=null + private var weakNetInterface: NetInterface?=null get() { if(field==null){ when (ProjectUtils.getProjectType()) { @@ -314,15 +313,6 @@ class WeaknetRepository : IRepository { } } - override fun queryWriteoffCount( - context: Context, - taskId: Long, - siteId: Long, - callback: OchCommonServiceCallback? - ) { - weakNetInterface?.writeOffCount(context,taskId,siteId,callback) - } - override fun queryCarExecutableTaskList( ochCommonServiceCallback: OchCommonServiceCallback ) { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java new file mode 100644 index 0000000000..b7b5f8583c --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java @@ -0,0 +1,55 @@ +package com.mogo.och.weaknet.repository.net; + +import android.content.Context; + +import com.mogo.och.common.module.network.OchCommonServiceCallback; +import com.mogo.och.data.bean.BusRoutesResult; +import com.mogo.och.weaknet.bean.request.ShuttleEventRequest; +import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse; +import com.mogo.och.weaknet.bean.response.WriteOffCountResponse; +import com.mogo.eagle.core.data.BaseData; +import com.mogo.och.weaknet.repository.db.bean.LineDataBean; +import com.mogo.och.weaknet.repository.db.bean.TaskDataBean; + +import java.util.ArrayList; +import java.util.List; + +import io.reactivex.Observable; + +public interface NetInterface { + + default Observable switchLine(long taskId){ + return null; + } + + default Observable endTask(long taskId){ + return Observable.just(true); + } + + default Observable leaveStation(int seq, long siteId, long taskId, long writeVersion){ + return Observable.just(true); + } + + default Observable arriveSiteStation(int seq, long siteId, long taskId, long writeVersion){ + return Observable.just(true); + } + + default Observable> queryBusLines(){ + return Observable.just(new ArrayList<>()); + } + + default Observable> queryBusTaskByLineId(long lineId){ + return Observable.just(new ArrayList<>()); + } + + + default Observable queryBusRoutes(){ + return Observable.just(new BusRoutesResult()); + } + + default void writeOffCount(Context context , Long taskId, Long siteId, OchCommonServiceCallback callback){} + + default void queryCarExecutableTaskList(Context context , OchCommonServiceCallback callback){} + + default void reportCabinEvent(Context context , ShuttleEventRequest data , OchCommonServiceCallback callback){} +} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/request/PassengerWriteOffRequest.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/request/PassengerWriteOffRequest.java new file mode 100644 index 0000000000..834549053a --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/request/PassengerWriteOffRequest.java @@ -0,0 +1,50 @@ +package com.mogo.och.weaknet.repository.net.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/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/response/PassengerWriteOffResponse.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/response/PassengerWriteOffResponse.kt new file mode 100644 index 0000000000..93a763cd8f --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/bean/response/PassengerWriteOffResponse.kt @@ -0,0 +1,13 @@ +package com.mogo.och.weaknet.repository.net.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/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/NormalNetInterface.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/NormalNetInterface.java deleted file mode 100644 index f842e53094..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/NormalNetInterface.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.mogo.och.weaknet.repository.net.normal; - -import android.content.Context; - -import com.mogo.och.common.module.network.OchCommonServiceCallback; -import com.mogo.och.data.bean.BusRoutesResult; -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse; -import com.mogo.och.weaknet.repository.db.bean.LineDataBean; -import com.mogo.och.weaknet.repository.db.bean.TaskDataBean; - -import java.util.List; - -import io.reactivex.Observable; - -public interface NormalNetInterface { - - Observable queryBusRoutes(); - - Observable switchLine(long taskId); - - Observable endTask(long taskId); - - Observable leaveStation(int seq, long siteId, long taskId, long writeVersion); - - Observable arriveSiteStation(int seq, long siteId, long taskId, long writeVersion); - - Observable> queryBusLines(); - - Observable> queryBusTaskByLineId(long lineId); - -} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/dali/bus/DaliBusServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/bus/DaliBusServiceManager.kt similarity index 90% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/dali/bus/DaliBusServiceManager.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/bus/DaliBusServiceManager.kt index c05b0445dd..832e005094 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/dali/bus/DaliBusServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/bus/DaliBusServiceManager.kt @@ -1,31 +1,26 @@ -package com.mogo.och.weaknet.repository.net.normal.dali.bus +package com.mogo.och.weaknet.repository.net.project.dali.bus -import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.network.OchCommonNet -import com.mogo.och.common.module.network.OchCommonServiceCallback -import com.mogo.och.common.module.network.OchCommonSubscribeImpl -import com.mogo.och.common.module.network.interceptor.transformIoTry import com.mogo.och.common.module.network.interceptor.transformTry import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.db.bean.LineDataBean import com.mogo.och.weaknet.repository.db.bean.TaskDataBean +import com.mogo.och.weaknet.repository.net.NetInterface import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest -import com.mogo.och.weaknet.repository.net.normal.NormalNetInterface import io.reactivex.Observable /** * @author: wangmingjun * @date: 2021/10/20 */ -class DaliBusServiceManager: NormalNetInterface { +object DaliBusServiceManager: NetInterface { private val mService: IDaliBusApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create( diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/dali/bus/IDaliBusApiService.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/bus/IDaliBusApiService.kt similarity index 91% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/dali/bus/IDaliBusApiService.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/bus/IDaliBusApiService.kt index 3e8c7db13d..c12dddc1b2 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/dali/bus/IDaliBusApiService.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/bus/IDaliBusApiService.kt @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.net.normal.dali.bus +package com.mogo.och.weaknet.repository.net.project.dali.bus import com.mogo.eagle.core.data.BaseData import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest @@ -9,8 +9,10 @@ import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineReque import com.mogo.och.weaknet.repository.net.bean.request.BusRoutePlanningUpdateReqBean import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest import com.mogo.och.weaknet.repository.net.bean.request.CarHeartbeatReqBean +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import io.reactivex.Observable import retrofit2.http.Body import retrofit2.http.GET @@ -66,19 +68,6 @@ interface IDaliBusApiService { fun arriveSiteStation(@Header("appId") appId: String?, @Header("ticket") ticket: String?, @Body request: BusUpdateSiteStatusRequest?): Observable - /** - * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 - * @param data - * @return - */ - @Headers("Content-type:application/json;charset=UTF-8") - @POST("/autopilot-car-hailing/location/v2/driver/bus/heartbeat") - fun runCarHeartbeat( - @Header("appId") appId: String?, - @Header("ticket") ticket: String?, - @Body data: CarHeartbeatReqBean? - ): Observable - /** * 查询车辆配置的所有路线 * @param appId @@ -152,5 +141,12 @@ interface IDaliBusApiService { @POST("/och-bus-cabin/cab/flow/v1/bus/driver/endTask") fun writeOffCount(@Header("appId") appId: String?, @Header("ticket") ticket: String?, @Query("taskId") taskId: Long , @Query("siteId")siteId: Long ): Observable + /** + * 核销接口 + */ + @Headers("Content-type:application/json;charset=UTF-8") + @POST("/och-vehicle/api/scanner/device/writeOff") + fun daliwriteOffTicket(@Header ("appId") appId:String, @Header("ticket") ticket:String, @Body request: PassengerWriteOffRequest):Observable + } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/dali/shuttle/DaliShuttleServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt similarity index 94% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/dali/shuttle/DaliShuttleServiceManager.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt index e3a3491541..ad0a3bb7c7 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/dali/shuttle/DaliShuttleServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.net.weaknet.dali.shuttle +package com.mogo.och.weaknet.repository.net.project.dali.shuttle import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig @@ -15,14 +15,14 @@ import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse import com.mogo.och.weaknet.bean.response.WriteOffCountResponse -import com.mogo.och.weaknet.repository.net.weaknet.WeakNetInterface +import com.mogo.och.weaknet.repository.net.NetInterface import io.reactivex.Observable /** * @author: wangmingjun * @date: 2021/10/20 */ -object DaliShuttleServiceManager: WeakNetInterface { +object DaliShuttleServiceManager: NetInterface { private val mService: IDaliShuttleApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( IDaliShuttleApiService::class.java diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/dali/shuttle/IDaliShuttleApiService.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/IDaliShuttleApiService.java similarity index 80% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/dali/shuttle/IDaliShuttleApiService.java rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/IDaliShuttleApiService.java index 6fa1916321..46ed25619f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/dali/shuttle/IDaliShuttleApiService.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/IDaliShuttleApiService.java @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.net.weaknet.dali.shuttle; +package com.mogo.och.weaknet.repository.net.project.dali.shuttle; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest; @@ -6,6 +6,8 @@ import com.mogo.och.weaknet.bean.request.ShuttleEventRequest; import com.mogo.och.weaknet.bean.response.BusRoutesResponse; import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse; import com.mogo.och.weaknet.bean.response.WriteOffCountResponse; +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest; +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse; import io.reactivex.Observable; import retrofit2.http.Body; @@ -41,6 +43,13 @@ public interface IDaliShuttleApiService { @GET("och-shuttle-cabin/api/business/v1/task/writeOffCount") Observable writeOffCount(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("taskId") String taskId, @Query("siteId") String siteId); + /** + * 实时核销 核销接口 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/och-vehicle/api/scanner/device/writeOff") + Observable daliwriteOffTicket(@Header ("appId") String appId, @Header("ticket") String ticket, @Body PassengerWriteOffRequest request); + /** * 同步 线路、站点、任务、自驾轨迹信息 */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/bus/IMogoBusApiService.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/bus/IMogoBusApiService.kt similarity index 98% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/bus/IMogoBusApiService.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/bus/IMogoBusApiService.kt index 97d33cd951..159f6d192f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/bus/IMogoBusApiService.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/bus/IMogoBusApiService.kt @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.net.normal.mogo.bus +package com.mogo.och.weaknet.repository.net.project.mogo.bus import com.mogo.eagle.core.data.BaseData import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/bus/MogoBusServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/bus/MogoBusServiceManager.kt similarity index 93% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/bus/MogoBusServiceManager.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/bus/MogoBusServiceManager.kt index 13d5a6bf49..e8532328c8 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/bus/MogoBusServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/bus/MogoBusServiceManager.kt @@ -1,29 +1,26 @@ -package com.mogo.och.weaknet.repository.net.normal.mogo.bus +package com.mogo.och.weaknet.repository.net.project.mogo.bus -import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.network.OchCommonNet -import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.interceptor.transformTry import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.db.bean.LineDataBean import com.mogo.och.weaknet.repository.db.bean.TaskDataBean +import com.mogo.och.weaknet.repository.net.NetInterface import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest -import com.mogo.och.weaknet.repository.net.normal.NormalNetInterface import io.reactivex.Observable /** * @author: wangmingjun * @date: 2021/10/20 */ -class MogoBusServiceManager: NormalNetInterface { +class MogoBusServiceManager: NetInterface { private val mService: IMogoBusApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create( diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/shuttle/IMogoShuttleApiService.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/shuttle/IMogoShuttleApiService.java similarity index 98% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/shuttle/IMogoShuttleApiService.java rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/shuttle/IMogoShuttleApiService.java index 7b0c036ae9..6045b299cf 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/shuttle/IMogoShuttleApiService.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/shuttle/IMogoShuttleApiService.java @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.net.normal.mogo.shuttle; +package com.mogo.och.weaknet.repository.net.project.mogo.shuttle; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest; diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/shuttle/MogoShuttleServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/shuttle/MogoShuttleServiceManager.kt similarity index 93% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/shuttle/MogoShuttleServiceManager.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/shuttle/MogoShuttleServiceManager.kt index 7b0cad8c1d..ce31bed2b5 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/normal/mogo/shuttle/MogoShuttleServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/mogo/shuttle/MogoShuttleServiceManager.kt @@ -1,29 +1,26 @@ -package com.mogo.och.weaknet.repository.net.normal.mogo.shuttle +package com.mogo.och.weaknet.repository.net.project.mogo.shuttle -import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.network.OchCommonNet -import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.interceptor.transformTry import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.db.bean.LineDataBean import com.mogo.och.weaknet.repository.db.bean.TaskDataBean +import com.mogo.och.weaknet.repository.net.NetInterface import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest -import com.mogo.och.weaknet.repository.net.normal.NormalNetInterface import io.reactivex.Observable /** * @author: wangmingjun * @date: 2021/10/20 */ -class MogoShuttleServiceManager: NormalNetInterface { +class MogoShuttleServiceManager: NetInterface { private val mService: IMogoShuttleApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( IMogoShuttleApiService::class.java diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/bus/ISaasBusApiService.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/ISaasBusApiService.java similarity index 80% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/bus/ISaasBusApiService.java rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/ISaasBusApiService.java index 4ff06ef54a..948e50d30c 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/bus/ISaasBusApiService.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/ISaasBusApiService.java @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.net.weaknet.saas.bus; +package com.mogo.och.weaknet.repository.net.project.saas.bus; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest; @@ -6,7 +6,9 @@ import com.mogo.och.weaknet.bean.response.BusRoutesResponse; import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse; import com.mogo.och.weaknet.bean.request.ShuttleEventRequest; import com.mogo.och.weaknet.bean.response.WriteOffCountResponse; +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest; import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean; +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse; import io.reactivex.Observable; import retrofit2.http.Body; @@ -42,6 +44,13 @@ public interface ISaasBusApiService { @POST("/och-vehicle/api/car/v2/task/site/writeOffCount") Observable writeOffCount(@Header ("appId") String appId, @Header("ticket") String ticket, @Body WriteOffCountReqBean writeOffCountReqBean); + /** + * 同步核销接口 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/och-vehicle/api/car/v2/device/writeOff") + Observable saaswriteOffTicket(@Header ("appId") String appId, @Header("ticket") String ticket, @Body PassengerWriteOffRequest request); + /** * 同步 线路、站点、任务、自驾轨迹信息 */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/bus/SaasBusServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt similarity index 93% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/bus/SaasBusServiceManager.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt index 7457794033..61ae1bc97c 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/bus/SaasBusServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.net.weaknet.saas.bus +package com.mogo.och.weaknet.repository.net.project.saas.bus import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig @@ -12,19 +12,18 @@ import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.OchCommonSubscribeImpl import com.mogo.och.common.module.network.interceptor.transformIoTry import com.mogo.och.data.bean.BusRoutesResult -import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean -import com.mogo.och.weaknet.repository.net.weaknet.WeakNetInterface +import com.mogo.och.weaknet.repository.net.NetInterface import io.reactivex.Observable /** * @author: wangmingjun * @date: 2021/10/20 */ -object SaasBusServiceManager: WeakNetInterface { +object SaasBusServiceManager: NetInterface { private val mService: ISaasBusApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create( ISaasBusApiService::class.java diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/shuttle/ISaasShuttleApiService.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/ISaasShuttleApiService.java similarity index 80% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/shuttle/ISaasShuttleApiService.java rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/ISaasShuttleApiService.java index e86002ceb1..eb26f0f714 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/shuttle/ISaasShuttleApiService.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/ISaasShuttleApiService.java @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.net.weaknet.saas.shuttle; +package com.mogo.och.weaknet.repository.net.project.saas.shuttle; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest; @@ -6,7 +6,9 @@ import com.mogo.och.weaknet.bean.response.BusRoutesResponse; import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse; import com.mogo.och.weaknet.bean.request.ShuttleEventRequest; import com.mogo.och.weaknet.bean.response.WriteOffCountResponse; +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest; import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean; +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse; import io.reactivex.Observable; import retrofit2.http.Body; @@ -42,6 +44,13 @@ public interface ISaasShuttleApiService { @POST("/och-vehicle/api/car/v2/task/site/writeOffCount") Observable writeOffCount(@Header ("appId") String appId, @Header("ticket") String ticket, @Body WriteOffCountReqBean writeOffCountReqBean); + /** + * 同步核销接口 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/och-vehicle/api/car/v2/device/writeOff") + Observable saaswriteOffTicket(@Header ("appId") String appId, @Header("ticket") String ticket, @Body PassengerWriteOffRequest request); + /** * 同步 线路、站点、任务、自驾轨迹信息 */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/shuttle/SaasShuttleServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt similarity index 95% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/shuttle/SaasShuttleServiceManager.kt rename to OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt index 42d02601b7..ae2dbcd25f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/saas/shuttle/SaasShuttleServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt @@ -1,4 +1,4 @@ -package com.mogo.och.weaknet.repository.net.weaknet.saas.shuttle +package com.mogo.och.weaknet.repository.net.project.saas.shuttle import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig @@ -17,14 +17,14 @@ import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean -import com.mogo.och.weaknet.repository.net.weaknet.WeakNetInterface +import com.mogo.och.weaknet.repository.net.NetInterface import io.reactivex.Observable /** * @author: wangmingjun * @date: 2021/10/20 */ -object SaasShuttleServiceManager: WeakNetInterface { +object SaasShuttleServiceManager: NetInterface { private val mService: ISaasShuttleApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( ISaasShuttleApiService::class.java diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/WeakNetInterface.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/WeakNetInterface.java deleted file mode 100644 index 5d6c7695de..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/weaknet/WeakNetInterface.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.mogo.och.weaknet.repository.net.weaknet; - -import android.content.Context; - -import com.mogo.och.common.module.network.OchCommonServiceCallback; -import com.mogo.och.data.bean.BusRoutesResult; -import com.mogo.och.weaknet.bean.request.ShuttleEventRequest; -import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse; -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse; -import com.mogo.eagle.core.data.BaseData; - -import io.reactivex.Observable; - -public interface WeakNetInterface { - - Observable queryBusRoutes(); - - void writeOffCount( - Context context , - Long taskId, - Long siteId, - OchCommonServiceCallback callback - ); - - void queryCarExecutableTaskList( - Context context , - OchCommonServiceCallback callback - ); - - void reportCabinEvent( - Context context , - ShuttleEventRequest data , - OchCommonServiceCallback callback - ); -} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt new file mode 100644 index 0000000000..06c4bdfa78 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt @@ -0,0 +1,15 @@ +package com.mogo.och.weaknet.repository.writeoff + +import android.content.Context +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.weaknet.bean.response.WriteOffCountResponse + +interface IWriteOffRepository { + + fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback?) + + fun writeOffEvent() + + fun release() + +} \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt new file mode 100644 index 0000000000..75eb33622f --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt @@ -0,0 +1,66 @@ +package com.mogo.och.weaknet.repository.writeoff.impl + +import android.content.Context +import com.mogo.commons.AbsMogoApplication +import com.mogo.commons.env.Project +import com.mogo.commons.env.ProjectUtils +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.weaknet.bean.response.WriteOffCountResponse +import com.mogo.och.weaknet.repository.net.exception.NetException +import com.mogo.och.weaknet.repository.net.NetInterface +import com.mogo.och.weaknet.repository.net.project.dali.shuttle.DaliShuttleServiceManager +import com.mogo.och.weaknet.repository.net.project.saas.bus.SaasBusServiceManager +import com.mogo.och.weaknet.repository.net.project.saas.shuttle.SaasShuttleServiceManager +import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository + +class WriteOffCacheRepository : IWriteOffRepository { + private val TAG = "ShuttleSaasRepository" + private val context = AbsMogoApplication.getApp() + + private var weakNetInterface: NetInterface?=null + get() { + if(field==null){ + when (ProjectUtils.getProjectType()) { + Project.SAAS -> { + if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { + field = SaasShuttleServiceManager + }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { + field = SaasBusServiceManager + } + } + Project.DALI -> { + throw NetException("缓存weakNetInterface 初始化环境错误 Dali") + } + Project.MOGO -> { + throw NetException("缓存weakNetInterface 初始化环境错误 MOGO") + } + else->{ + throw NetException("缓存weakNetInterface 初始化环境错误 未知") + } + } + } + return field + } + + + override fun queryWriteoffCount( + context: Context, + taskId: Long, + siteId: Long, + callback: OchCommonServiceCallback? + ) { + weakNetInterface?.writeOffCount(context,taskId,siteId,callback) + } + + override fun writeOffEvent() { + + } + + override fun release() { + weakNetInterface = null + CallerLogger.d(TAG,"重置 weakNetInterface") + } +} \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt new file mode 100644 index 0000000000..9c4b484ae6 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt @@ -0,0 +1,72 @@ +package com.mogo.och.weaknet.repository.writeoff.impl + +import android.content.Context +import com.mogo.commons.env.Project +import com.mogo.commons.env.ProjectUtils +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.weaknet.bean.response.WriteOffCountResponse +import com.mogo.och.weaknet.repository.net.NetInterface +import com.mogo.och.weaknet.repository.net.exception.NetException +import com.mogo.och.weaknet.repository.net.project.dali.bus.DaliBusServiceManager +import com.mogo.och.weaknet.repository.net.project.dali.shuttle.DaliShuttleServiceManager +import com.mogo.och.weaknet.repository.net.project.mogo.bus.MogoBusServiceManager +import com.mogo.och.weaknet.repository.net.project.mogo.shuttle.MogoShuttleServiceManager +import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository + +class WriteOffNormallRepository: IWriteOffRepository { + + private val TAG = "WriteOffNormallRepository" + + private var normalNetInterface: NetInterface?=null + get() { + if(field==null){ + when (ProjectUtils.getProjectType()) { + Project.SAAS -> { + throw NetException("writeoff 核销 初始化环境错误 SAAS") + } + Project.DALI -> { + if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { + field = DaliShuttleServiceManager + }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { + field = DaliBusServiceManager + } + } + Project.MOGO -> { + throw NetException("writeoff 核销 初始化环境错误 MOGO") + } + else->{ + throw NetException("writeoff 核销 初始化环境错误 未知") + } + } + } + return field + } + + init { + + } + + + override fun queryWriteoffCount( + context: Context, + taskId: Long, + siteId: Long, + callback: OchCommonServiceCallback? + ) { + normalNetInterface?.writeOffCount(context,taskId,siteId,callback) + } + + override fun writeOffEvent() { + + } + + override fun release() { + normalNetInterface=null + CallerLogger.d(TAG,"重置 normalNetInterface") + } + + +} \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt index 3b1e34943d..d848ddc538 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt @@ -12,6 +12,7 @@ import com.mogo.och.shuttle.weaknet.passenger.bean.request.PassengerWriteOffRequ import com.mogo.och.shuttle.weaknet.passenger.bean.response.PassengerWriteOffResponse import com.mogo.och.common.module.manager.scnner.ScannerManager import com.mogo.och.common.module.manager.scnner.StateChangeListener +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.shuttle.weaknet.passenger.network.PassengerServiceManager object TicketModel : StateChangeListener { @@ -27,9 +28,17 @@ object TicketModel : StateChangeListener { } override fun parseData(params: MutableMap, payload: String?) { + val expiryTime = params["expiryTime"] + val bookingTime = params["bookingTime"] + val businessType = params["businessType"] + val lineId = params["lineId"] + val remainingTimes = params["remainingTimes"] val orderNo = params["orderNo"] val uid = params["uid"] val phone = params["phone"] + val ticketSize = params["ticketSize"] + val ticketName = params["ticketName"] + if(orderNo is String && uid is String){ var phoneNum = "" if(phone is String){ @@ -37,7 +46,11 @@ object TicketModel : StateChangeListener { phoneNum = phone } } - writeOffTicket(orderNo,uid,phoneNum) + val writeOffDetail = WriteOffDetialMsg(expiryTime as Long,bookingTime as Long, + businessType as Int,lineId as Long,remainingTimes as Int, + orderNo,uid,phoneNum,ticketSize as String,ticketName as String) + CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(writeOffDetail)) + LanSocketManager.sendMsgToServer(writeOffDetail) }else{ // 通知司机屏二维码错误 sendMessage2Driver("参数错误:${payload}","") diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/ServiceApi.java b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/ServiceApi.java index 75d010abc4..b4cba989a0 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/ServiceApi.java +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/ServiceApi.java @@ -19,19 +19,7 @@ import retrofit2.http.Query; */ public interface ServiceApi { - /** - * 核销接口 - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) - @POST("/och-vehicle/api/scanner/device/writeOff") - Observable daliwriteOffTicket(@Header ("appId") String appId, @Header("ticket") String ticket, @Body PassengerWriteOffRequest request); - /** - * 核销接口 - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) - @POST("/och-vehicle/api/car/v2/device/writeOff") - Observable saaswriteOffTicket(@Header ("appId") String appId, @Header("ticket") String ticket, @Body PassengerWriteOffRequest request); /** * 查询车辆对应站点的所有视频介绍视频 From 15504a3eecf1b2f198c5be08ac31191b4eafa6f1 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 12 Nov 2024 18:37:21 +0800 Subject: [PATCH 7/7] =?UTF-8?q?[6.8.0]=20[fea]=20[=E6=A0=B8=E9=94=80]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/socket/lan/bean/DataBean.kt | 22 +- .../com/mogo/och/weaknet/model/TicketModel.kt | 197 ++++++++++++++++-- .../weaknet/repository/RepositoryManager.kt | 12 +- .../repository/exception/DataException.kt | 8 +- .../weaknet/repository/net/NetInterface.java | 12 +- .../dali/shuttle/DaliShuttleServiceManager.kt | 55 +++-- .../project/saas/bus/SaasBusServiceManager.kt | 30 +-- .../saas/shuttle/SaasShuttleServiceManager.kt | 27 --- .../writeoff/IWriteOffRepository.kt | 7 +- .../writeoff/impl/WriteOffCacheRepository.kt | 12 +- .../impl/WriteOffNormallRepository.kt | 18 +- .../weaknet/passenger/model/TicketModel.kt | 101 +-------- .../network/PassengerServiceManager.kt | 47 +---- 13 files changed, 295 insertions(+), 253 deletions(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt index 4d365e6e59..c229ad68c8 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/bean/DataBean.kt @@ -71,16 +71,18 @@ data class WriteOffMsg( ) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO.type) data class WriteOffDetialMsg( - val expiryTime: Long?, - val bookingTime: Long?, - val businessType: Int?, - val lineId: Long?, - val remainingTimes: Int?, - val orderNo: String?, - val uid: String?, - val phone: String?, - val ticketSize: String?, - val ticketName: String?, + val code:Int, + val msg:String?, + val expiryTime: Long?=null, + val bookingTime: Long?=null, + val businessType: Int?=null, + val lineId: Long?=null, + val remainingTimes: Int?=null, + val orderNo: String?=null, + val uid: String?=null, + val phone: String?=null, + val ticketSize: String?=null, + val ticketName: String?=null, ) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type) data class WriteOffDevicesMsg( diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt index 00176e97d8..6934c92ef5 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt @@ -2,15 +2,16 @@ package com.mogo.och.weaknet.model import com.elegant.network.utils.GsonUtil import com.mogo.commons.AbsMogoApplication -import com.mogo.commons.env.ProjectUtils 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.call.msgbox.CallerMsgBoxManager.saveMsgBox +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger 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.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager @@ -20,16 +21,22 @@ import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener import com.mogo.och.common.module.manager.socket.lan.LanSocketManager import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDevicesMsg import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.bean.WriteOffPassenger import com.mogo.och.weaknet.repository.RepositoryManager +import com.mogo.och.weaknet.repository.exception.DataException +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import com.mogo.och.weaknet.util.ShuttleVoiceManager import io.reactivex.Observable import io.reactivex.ObservableEmitter import io.reactivex.ObservableOnSubscribe +import io.reactivex.Observer +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers object TicketModel : IOchOnMessageListener{ @@ -42,26 +49,27 @@ object TicketModel : IOchOnMessageListener{ private val observable = Observable.create(ObservableOnSubscribe> { emitter -> emitterMain = emitter }) - private val writeOffMsg = object : ILanMessageListener { - override fun targetLan(): Class = WriteOffMsg::class.java - override fun onLanMsgReceived(obj: WriteOffMsg?) = receiveWrteOffInfo(obj) - } - private val writeOfDevicefMsg = object : ILanMessageListener { override fun targetLan(): Class = WriteOffDevicesMsg::class.java override fun onLanMsgReceived(obj: WriteOffDevicesMsg?) = receiveWrteOffDevicesInfo(obj) } + private val writeOfDevicefDetialMsg = object : ILanMessageListener { + override fun targetLan(): Class = WriteOffDetialMsg::class.java + override fun onLanMsgReceived(obj: WriteOffDetialMsg?) = receiveWrteOffDefailtInfo(obj) + } + + fun load(){ - // 3s轮训站点核销人数 - if(RepositoryManager.supportWriteOff()) { + // 3s轮训站点核销人数 人数本地核销 直接计算就好 + if (RepositoryManager.supportWriteOff() && RepositoryManager.supportWriteOffDb()) { BizLoopManager.setLoopFunction( SELECTWRITEOFFCOUNT, LoopInfo(3, TicketModel::selectWriteOffCount, scheduler = Schedulers.io()) ) } // 核销信息 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO.type,writeOffMsg) + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type,writeOfDevicefDetialMsg) // 核销设备信息 LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type,writeOfDevicefMsg) //监听核销乘客 @@ -72,7 +80,7 @@ object TicketModel : IOchOnMessageListener{ if(RepositoryManager.supportWriteOff()) { BizLoopManager.removeLoopFunction(SELECTWRITEOFFCOUNT) } - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO.type,writeOffMsg) + LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type,writeOfDevicefDetialMsg) LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type,writeOfDevicefMsg) OCHSocketMessageManager.releaseSocketMessageListener(OCHSocketMessageManager.msgWriteOffPassengerType) } @@ -92,8 +100,8 @@ object TicketModel : IOchOnMessageListener{ passenger.passengerSize, passenger.phone ?: "", passenger.ticketName?:"", - passenger.orderNo?:"" ) + TODO("服务器端核销需要在本地报备一下 用于计算数据") selectWriteOffCount() } @@ -172,12 +180,167 @@ object TicketModel : IOchOnMessageListener{ } } } + private fun receiveWrteOffDefailtInfo(writeOffDetialMsg: WriteOffDetialMsg?) { + writeOffDetialMsg?.let { + if(writeOffDetialMsg.code!=0){ + sendMessage2Driver( + writeOffDetialMsg.msg?:"", + writeOffDetialMsg.phone ?: "" + ) + }else { + RepositoryManager.writeOff(writeOffDetialMsg) + ?.subscribeOn(Schedulers.io()) + ?.observeOn(AndroidSchedulers.mainThread()) + ?.subscribe(object : Observer { + override fun onSubscribe(d: Disposable) { + d(TAG, "receiveWrteOffDefailtInfo onSubscribe") + } - private fun receiveWrteOffDevicesInfo(writeOffMsg: WriteOffDevicesMsg?) { - writeOffMsg?.let { - if (writeOffMsg.isConnectScanner != null) { - val reason = if (writeOffMsg.reason == null) "" else writeOffMsg.reason!! - if (writeOffMsg.isConnectScanner==true) { // 链接成功 + override fun onError(e: Throwable) { + d(TAG, "receiveWrteOffDefailtInfo onError${e.printStackTrace()}") + if (e is DataException) { + CallerLogger.d(M_BUS_P + TAG, "核销失败 ${e.code}-----${e.msg}") + when (e.code) { + 6002 -> { + sendMessage2Driver( + "同一订单核销间隔时间需大于2分钟", + writeOffDetialMsg.phone ?: "" + ) + } + + 1009 -> { + sendMessage2Driver( + "车票所选乘车日期非今日", + writeOffDetialMsg.phone ?: "" + ) + } + + 1005 -> { + sendMessage2Driver( + "车辆未登录、或没有任务", + writeOffDetialMsg.phone ?: "" + ) + } + + 1006 -> { + sendMessage2Driver( + "车票路线信息与当前车辆执行任务的路线信息不符合", + writeOffDetialMsg.phone ?: "" + ) + } + + 1008 -> { + sendMessage2Driver( + "车票剩余可用次数为0", + writeOffDetialMsg.phone ?: "" + ) + } + + 6001 -> { + sendMessage2Driver( + "二维码已过期", + writeOffDetialMsg.phone ?: "" + ) + } + + 1012 -> { + sendMessage2Driver( + "当前用户下单路线非当前的车辆所属公司", + writeOffDetialMsg.phone ?: "" + ) + } + + else -> { + when (e.msg) { + "6002" -> { + sendMessage2Driver( + "同一订单核销间隔时间需大于2分钟", + writeOffDetialMsg.phone ?: "" + ) + } + + "1009" -> { + sendMessage2Driver( + "车票所选乘车日期非今日", + writeOffDetialMsg.phone ?: "" + ) + } + + "1005" -> { + sendMessage2Driver( + "车辆未登录、或没有任务", + writeOffDetialMsg.phone ?: "" + ) + } + + "1006" -> { + sendMessage2Driver( + "车票路线信息与当前车辆执行任务的路线信息不符合", + writeOffDetialMsg.phone ?: "" + ) + } + + "1008" -> { + sendMessage2Driver( + "车票剩余可用次数为0", + writeOffDetialMsg.phone ?: "" + ) + } + + "6001" -> { + sendMessage2Driver( + "二维码已过期", + writeOffDetialMsg.phone ?: "" + ) + } + + "1012" -> { + sendMessage2Driver( + "当前用户下单路线非当前的车辆所属公司", + writeOffDetialMsg.phone ?: "" + ) + } + + else -> { + sendMessage2Driver( + e.msg, + writeOffDetialMsg.phone ?: "" + ) + } + } + } + } + } + } + + override fun onComplete() { + d(TAG, "receiveWrteOffDefailtInfo onComplete") + } + + override fun onNext(data: PassengerWriteOffResponse.Result) { + d(TAG, "queryBusLines onNext ${data}") + selectWriteOffCount() + playPassenger( + data.ticketSize ?: 0, + data.phone ?: "", + data.ticketName ?: "" + ) + } + + }) + } + } + } + private fun sendMessage2Driver(message:String,phone:String){ + val msg = WriteOffMsg(false, phone, 0, "", "验票失败,${message}","") + receiveWrteOffInfo(msg) + } + + private fun receiveWrteOffDevicesInfo(writeOffDevicesMsg: WriteOffDevicesMsg?) { + writeOffDevicesMsg?.let { + if (writeOffDevicesMsg.isConnectScanner != null) { + val reason = if (writeOffDevicesMsg.reason == null) "" else writeOffDevicesMsg.reason!! + if (writeOffDevicesMsg.isConnectScanner==true) { // 链接成功 saveMsgBox( MsgBoxBean( MsgBoxType.V2X, @@ -206,7 +369,7 @@ object TicketModel : IOchOnMessageListener{ } } - private fun playPassenger(ticketSize: Int,phone:String,ticketName:String,orderNo:String) { + private fun playPassenger(ticketSize: Int,phone:String,ticketName:String) { ShuttleVoiceManager.writeOffCount(ticketSize) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt index c816ef009f..c3194c786c 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt @@ -7,6 +7,7 @@ import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse @@ -18,6 +19,7 @@ import com.mogo.och.weaknet.repository.db.repository.EventDb import com.mogo.och.weaknet.repository.line.ILineRepository import com.mogo.och.weaknet.repository.line.impl.NormalRepository import com.mogo.och.weaknet.repository.line.impl.WeaknetRepository +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository import com.mogo.och.weaknet.repository.writeoff.impl.WriteOffCacheRepository import com.mogo.och.weaknet.repository.writeoff.impl.WriteOffNormallRepository @@ -151,6 +153,12 @@ object RepositoryManager { } return false } + fun supportWriteOffDb():Boolean{ + if(supportWriteOff()){ + return ProjectUtils.isSaas() + } + return false + } fun queryCarExecutableTaskList( ochCommonServiceCallback: OchCommonServiceCallback @@ -170,8 +178,8 @@ object RepositoryManager { } } - fun writeOff(){ - writeOffRepository?.writeOffEvent() + fun writeOff(writeOffDetialMsg: WriteOffDetialMsg): Observable? { + return writeOffRepository?.writeOffEvent(writeOffDetialMsg) } fun closeDb() { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/exception/DataException.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/exception/DataException.kt index 64b423bc46..91d5e1333a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/exception/DataException.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/exception/DataException.kt @@ -1,8 +1,14 @@ package com.mogo.och.weaknet.repository.exception class DataException: RuntimeException { + var code:Int = 0 + var msg:String = "" constructor() : super() - constructor(code:Int,message: String?) : super("${code}_${message}") + constructor(code:Int, message: String) : super("${code}_${message}"){ + this.code = code + this.msg = message + } + companion object{ val startTaskErrorCode = 10010 } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java index b7b5f8583c..11e5c5da1a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/NetInterface.java @@ -6,10 +6,11 @@ import com.mogo.och.common.module.network.OchCommonServiceCallback; import com.mogo.och.data.bean.BusRoutesResult; import com.mogo.och.weaknet.bean.request.ShuttleEventRequest; import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse; -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.weaknet.repository.db.bean.LineDataBean; import com.mogo.och.weaknet.repository.db.bean.TaskDataBean; +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest; +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse; import java.util.ArrayList; import java.util.List; @@ -47,7 +48,14 @@ public interface NetInterface { return Observable.just(new BusRoutesResult()); } - default void writeOffCount(Context context , Long taskId, Long siteId, OchCommonServiceCallback callback){} + default Observable writeOffCount(Context context , Long taskId, Long siteId){ + return Observable.just(0); + } + + default Observable writeOffTicket(Context context, + PassengerWriteOffRequest ticketInfo){ + return Observable.just(new PassengerWriteOffResponse.Result("",0,"",0L)); + } default void queryCarExecutableTaskList(Context context , OchCommonServiceCallback callback){} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt index ad0a3bb7c7..bbb7d5e50a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/dali/shuttle/DaliShuttleServiceManager.kt @@ -6,6 +6,7 @@ import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.cache.OchSPManager import com.mogo.och.common.module.network.OchCommonNet import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.OchCommonSubscribeImpl @@ -14,56 +15,53 @@ import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.NetInterface +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import io.reactivex.Observable /** * @author: wangmingjun * @date: 2021/10/20 */ -object DaliShuttleServiceManager: NetInterface { +object DaliShuttleServiceManager : NetInterface { - private val mService: IDaliShuttleApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( - IDaliShuttleApiService::class.java - ) + private val mService: IDaliShuttleApiService = + MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( + IDaliShuttleApiService::class.java + ) /** * 查询小巴车当前任务 - * @param context - * @param callback */ override fun queryBusRoutes(): Observable? { //获取当前高德坐标 - return mService.queryBusRoutes( + return mService.queryBusRoutes( MoGoAiCloudClientConfig.getInstance().serviceAppId, SharedPrefsMgr.getInstance().token, BusQueryLineStationsRequest() - ) .transformIoTry() - .flatMap(OchCommonNet("saas shuttle queryBusRoutes",false)) + ).transformIoTry() + .flatMap(OchCommonNet("saas shuttle queryBusRoutes", false)) .flatMap { - Observable.just(it.data?:BusRoutesResult()) + Observable.just(it.data ?: BusRoutesResult()) } } /** * 只发生在大理和saas环境 查询当前站点核销的人数 */ - override fun writeOffCount( - context: Context, - taskId: Long?, - siteId: Long?, - callback: OchCommonServiceCallback? - ) { - mService.writeOffCount( + override fun writeOffCount(context: Context?, taskId: Long?, siteId: Long?): Observable { + return mService.writeOffCount( MoGoAiCloudClientConfig.getInstance().serviceAppId, SharedPrefsMgr.getInstance().token, taskId?.toString(), siteId?.toString() ) - .transformIoTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount")) + .flatMap(OchCommonNet("saas shuttle writeOffCount", false)) + .flatMap { + Observable.just(it.data ?: 0) + } } /** @@ -98,5 +96,22 @@ object DaliShuttleServiceManager: NetInterface { .subscribe(OchCommonSubscribeImpl(context, callback, "reportCabinEvent")) } + override fun writeOffTicket( + context: Context, + ticketInfo: PassengerWriteOffRequest, + ): Observable? { + ticketInfo.sn = OchSPManager.getSn() + return mService.daliwriteOffTicket( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + ticketInfo + ) + .transformIoTry() + .flatMap(OchCommonNet("dali shuttle writeOffCount",false)) + .flatMap { + Observable.just(it.data) + } + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt index 61ae1bc97c..1c0a6170ad 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt @@ -14,7 +14,6 @@ import com.mogo.och.common.module.network.interceptor.transformIoTry import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse import com.mogo.och.weaknet.bean.request.ShuttleEventRequest -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean import com.mogo.och.weaknet.repository.net.NetInterface import io.reactivex.Observable @@ -51,24 +50,17 @@ object SaasBusServiceManager: NetInterface { /** * 只发生在大理和saas环境 查询当前站点核销的人数 */ - override fun writeOffCount( - context: Context, - taskId: Long, - siteId: Long, - callback: OchCommonServiceCallback? - ) { - OchSPManager.getSn()?.let { - mService.writeOffCount( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - WriteOffCountReqBean(it,taskId, - siteId, - ) - ) - .transformIoTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount")) - } - + override fun writeOffCount(context: Context?, taskId: Long?, siteId: Long?): Observable { + return mService.writeOffCount( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + WriteOffCountReqBean(OchSPManager.getSn()?:"",taskId?:0, siteId?:0,) + ) + .transformIoTry() + .flatMap(OchCommonNet("saas shuttle writeOffCount",false)) + .flatMap { + Observable.just(it.data?:0) + } } /** diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt index ae2dbcd25f..9af031601d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/shuttle/SaasShuttleServiceManager.kt @@ -15,8 +15,6 @@ import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse import com.mogo.och.weaknet.bean.request.ShuttleEventRequest -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse -import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean import com.mogo.och.weaknet.repository.net.NetInterface import io.reactivex.Observable @@ -33,8 +31,6 @@ object SaasShuttleServiceManager: NetInterface { /** * 查询小巴车当前任务 - * @param context - * @param callback */ override fun queryBusRoutes(): Observable? { //获取当前高德坐标 @@ -49,29 +45,6 @@ object SaasShuttleServiceManager: NetInterface { } } - /** - * 只发生在大理和saas环境 查询当前站点核销的人数 - */ - override fun writeOffCount( - context: Context, - taskId: Long, - siteId: Long, - callback: OchCommonServiceCallback? - ) { - OchSPManager.getSn()?.let { - mService.writeOffCount( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - WriteOffCountReqBean( - it, taskId, - siteId, - ) - ) - .transformIoTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount")) - } - } - /** * 同步 线路、站点、任务、自驾轨迹信息 */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt index 06c4bdfa78..aa7c7f0275 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt @@ -1,14 +1,17 @@ package com.mogo.och.weaknet.repository.writeoff import android.content.Context +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.response.WriteOffCountResponse +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse +import io.reactivex.Observable interface IWriteOffRepository { - fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback?) + fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback?): Observable? - fun writeOffEvent() + fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable? fun release() diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt index 75eb33622f..7fa2b1376f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt @@ -7,14 +7,16 @@ import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.exception.NetException import com.mogo.och.weaknet.repository.net.NetInterface -import com.mogo.och.weaknet.repository.net.project.dali.shuttle.DaliShuttleServiceManager +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import com.mogo.och.weaknet.repository.net.project.saas.bus.SaasBusServiceManager import com.mogo.och.weaknet.repository.net.project.saas.shuttle.SaasShuttleServiceManager import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository +import io.reactivex.Observable class WriteOffCacheRepository : IWriteOffRepository { private val TAG = "ShuttleSaasRepository" @@ -51,12 +53,12 @@ class WriteOffCacheRepository : IWriteOffRepository { taskId: Long, siteId: Long, callback: OchCommonServiceCallback? - ) { - weakNetInterface?.writeOffCount(context,taskId,siteId,callback) + ): Observable? { + TODO("本地计算核销数量 数据来源有两个地方 1、本地数据库计算 + 2、服务器核销") } - override fun writeOffEvent() { - + override fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable? { + TODO("Not yet implemented") } override fun release() { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt index 9c4b484ae6..ac14e39e2d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt @@ -1,20 +1,23 @@ package com.mogo.och.weaknet.repository.writeoff.impl import android.content.Context +import com.mogo.commons.AbsMogoApplication import com.mogo.commons.env.Project import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.NetInterface +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import com.mogo.och.weaknet.repository.net.exception.NetException import com.mogo.och.weaknet.repository.net.project.dali.bus.DaliBusServiceManager import com.mogo.och.weaknet.repository.net.project.dali.shuttle.DaliShuttleServiceManager -import com.mogo.och.weaknet.repository.net.project.mogo.bus.MogoBusServiceManager -import com.mogo.och.weaknet.repository.net.project.mogo.shuttle.MogoShuttleServiceManager import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository +import io.reactivex.Observable class WriteOffNormallRepository: IWriteOffRepository { @@ -55,12 +58,17 @@ class WriteOffNormallRepository: IWriteOffRepository { taskId: Long, siteId: Long, callback: OchCommonServiceCallback? - ) { - normalNetInterface?.writeOffCount(context,taskId,siteId,callback) + ): Observable? { + return normalNetInterface?.writeOffCount(context,taskId,siteId) } - override fun writeOffEvent() { + override fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable? { + val passengerWriteOffRequest = PassengerWriteOffRequest(writeOffDetialMsg.orderNo, writeOffDetialMsg.uid) + return normalNetInterface?.writeOffTicket( + AbsMogoApplication.getApp(), + passengerWriteOffRequest, + ) } override fun release() { diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt index d848ddc538..17ca6e69b2 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt @@ -1,19 +1,13 @@ package com.mogo.och.shuttle.weaknet.passenger.model -import com.mogo.commons.AbsMogoApplication 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.eagle.core.utilcode.util.RegexUtils -import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffMsg import com.mogo.och.common.module.manager.socket.lan.LanSocketManager -import com.mogo.och.common.module.network.OchCommonServiceCallback -import com.mogo.och.shuttle.weaknet.passenger.bean.request.PassengerWriteOffRequest -import com.mogo.och.shuttle.weaknet.passenger.bean.response.PassengerWriteOffResponse import com.mogo.och.common.module.manager.scnner.ScannerManager import com.mogo.och.common.module.manager.scnner.StateChangeListener import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg -import com.mogo.och.shuttle.weaknet.passenger.network.PassengerServiceManager object TicketModel : StateChangeListener { @@ -46,103 +40,16 @@ object TicketModel : StateChangeListener { phoneNum = phone } } - val writeOffDetail = WriteOffDetialMsg(expiryTime as Long,bookingTime as Long, + val writeOffDetail = WriteOffDetialMsg(0,"",expiryTime as Long,bookingTime as Long, businessType as Int,lineId as Long,remainingTimes as Int, orderNo,uid,phoneNum,ticketSize as String,ticketName as String) CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(writeOffDetail)) LanSocketManager.sendMsgToServer(writeOffDetail) }else{ // 通知司机屏二维码错误 - sendMessage2Driver("参数错误:${payload}","") + val writeOffDetail = WriteOffDetialMsg(code = -1, msg = "参数错误:${payload}") + CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(writeOffDetail)) + LanSocketManager.sendMsgToServer(writeOffDetail) } } - - private fun writeOffTicket(orderNo: String, uid: String, phoneNum: 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("同一订单核销间隔时间需大于2分钟",phoneNum) - } - 1009 -> { - sendMessage2Driver("车票所选乘车日期非今日",phoneNum) - } - 1005 -> { - sendMessage2Driver("车辆未登录、或没有任务",phoneNum) - } - 1006 -> { - sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合",phoneNum) - } - 1008 -> { - sendMessage2Driver("车票剩余可用次数为0",phoneNum) - } - 6001 -> { - sendMessage2Driver("二维码已过期",phoneNum) - } - 1012 -> { - sendMessage2Driver("当前用户下单路线非当前的车辆所属公司",phoneNum) - } - else -> { - when (msg) { - "6002" -> { - sendMessage2Driver("同一订单核销间隔时间需大于2分钟",phoneNum) - } - "1009" -> { - sendMessage2Driver("车票所选乘车日期非今日",phoneNum) - } - "1005" -> { - sendMessage2Driver("车辆未登录、或没有任务",phoneNum) - } - "1006" -> { - sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合",phoneNum) - } - "1008" -> { - sendMessage2Driver("车票剩余可用次数为0",phoneNum) - } - "6001" -> { - sendMessage2Driver("二维码已过期",phoneNum) - } - "1012" -> { - sendMessage2Driver("当前用户下单路线非当前的车辆所属公司",phoneNum) - } - else -> { - sendMessage2Driver(msg?:"",phoneNum) - } - } - } - } - } - - override fun onError(message: String) { - sendMessage2Driver("网络错误",phoneNum) - } - } - ) - } - - private fun sendMessage2Driver(message:String,phone:String){ - val msg = WriteOffMsg(false, phone, 0, "", "验票失败,${message}","") - CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) - LanSocketManager.sendMsgToServer(msg) - } - 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)) - LanSocketManager.sendMsgToServer(msg) - } - - } \ No newline at end of file diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/PassengerServiceManager.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/PassengerServiceManager.kt index c6bd01848c..5f6e5c705c 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/PassengerServiceManager.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/network/PassengerServiceManager.kt @@ -2,22 +2,13 @@ package com.mogo.och.shuttle.weaknet.passenger.network import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig -import com.mogo.commons.env.ProjectUtils 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.lansocket.LoginLanPassengerSocket import com.mogo.och.common.module.constant.OchCommonConst -import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.OchCommonSubscribeImpl import com.mogo.och.common.module.network.interceptor.transformTry -import com.mogo.och.shuttle.weaknet.passenger.bean.request.PassengerQueryLineRequest -import com.mogo.och.shuttle.weaknet.passenger.bean.request.PassengerWriteOffRequest -import com.mogo.och.shuttle.weaknet.passenger.bean.response.PassengerOperationStatusResponse -import com.mogo.och.shuttle.weaknet.passenger.bean.response.PassengerRoutesResponse -import com.mogo.och.shuttle.weaknet.passenger.bean.response.PassengerWriteOffResponse import com.mogo.och.shuttle.weaknet.passenger.bean.response.ResponseSiteIntroduce /** @@ -32,43 +23,7 @@ object PassengerServiceManager { ServiceApi::class.java) /** - * 查询司机端出车收车状态,以及车牌号 - * @param context - * @param callback - */ - @JvmStatic - fun writeOffTicket( - context: Context, - ticketInfo: PassengerWriteOffRequest, - callback: OchCommonServiceCallback?, - ) { - ticketInfo.sn = LoginLanPassengerSocket.driverSn - if(StringUtils.isEmpty(LoginLanPassengerSocket.driverSn)){ - ToastUtils.showShort("请链接司机屏${ticketInfo.uid}") - OchChainLogManager.writeChainLogScanner(TAG +"onError","无司机屏sn请处理") - return - } - if(ProjectUtils.isSaas()) { - mShuttleBusPassengerServiceApi.saaswriteOffTicket( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - ticketInfo - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOff")) - }else if(ProjectUtils.isDali()) { - mShuttleBusPassengerServiceApi.daliwriteOffTicket( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - ticketInfo - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "writeOff")) - } - } - - /** - * 查询绑定行驶的小巴车路线 + * 查询绑定行驶的小巴车路线包含站点的站点广告 * @param context * @param callback */