From cdd6963d011d301f54921f1a055f65679b969433 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 11 Nov 2024 16:58:18 +0800 Subject: [PATCH 01/36] =?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 02/36] [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 03/36] =?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 04/36] [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 05/36] =?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 06/36] =?UTF-8?q?[6.8.0]=20[fea]=20[=E6=94=B9=E9=80=A0line?= =?UTF-8?q?Repository]?= 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 65d254249f7e73ac43516fd61a7e123fc5b5f2ff Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 12 Nov 2024 16:03:49 +0800 Subject: [PATCH 07/36] =?UTF-8?q?[6.7.3]=20[fix]=20[=E4=B9=98=E5=AE=A2?= =?UTF-8?q?=E5=B1=8F=E5=B9=BF=E5=91=8A=E4=BF=AE=E5=A4=8D]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/common/module/wigets/media/MediaPlayerFragment.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt index 0c3ba2dc4f..e4f2d06745 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt @@ -62,9 +62,9 @@ class MediaPlayerFragment : arrayListOf.addAll(list) UiThreadHandler.post { if (isNewData) { - imageVideoRotationView.setNewMediaData(arrayListOf) + imageVideoRotationView?.setNewMediaData(arrayListOf) } else { - imageVideoRotationView.setMediaData(arrayListOf) + imageVideoRotationView?.setMediaData(arrayListOf) } } } From 15504a3eecf1b2f198c5be08ac31191b4eafa6f1 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 12 Nov 2024 18:37:21 +0800 Subject: [PATCH 08/36] =?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 */ From 04ce74a69c73ee9b985c2bd64141965b1bfaa0b6 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 12 Nov 2024 19:20:17 +0800 Subject: [PATCH 09/36] [6.7.3] [fix] [mogo dir create] --- .../main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt index 590ba5a8ab..a765107464 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt @@ -12,6 +12,7 @@ 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.util.FileUtils import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean import com.mogo.och.weaknet.repository.db.bean.EventDataBean import com.mogo.och.weaknet.repository.db.bean.LineDataBean @@ -82,6 +83,8 @@ abstract class MyDataBase : RoomDatabase() { } } + FileUtils.createOrExistsDir(ROOT_PATH) + return Room.databaseBuilder( AbsMogoApplication.getApp()!!.applicationContext, MyDataBase::class.java, ROOT_PATH+roomName ) From d26c761e681191cef7ffc0b4f8d0e4d5c6870a9b Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 13 Nov 2024 10:37:13 +0800 Subject: [PATCH 10/36] =?UTF-8?q?[6.7.3]=20[fix]=20[offline=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=A4=E7=A9=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/offline/model/OrderModel.java | 18 ++++++++++++------ .../och/offline/util/BusTrajectoryManager.java | 15 +++++---------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/OrderModel.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/OrderModel.java index 7f04703625..ca3026abb2 100644 --- a/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/OrderModel.java +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/OrderModel.java @@ -1085,12 +1085,18 @@ public class OrderModel { parameters.vehicleType = VEHICLE_TYPE; if (parameters.autoPilotLine == null) { parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine( - busRoutesResult.getLineId(), busRoutesResult.getName(), - busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, - busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, - busRoutesResult.contrailSaveTime, busRoutesResult.carModel, - busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, - busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, + busRoutesResult.getLineId(), + busRoutesResult.getName(), + busRoutesResult.csvFileUrl==null?"":busRoutesResult.csvFileUrl, + busRoutesResult.csvFileMd5==null?"":busRoutesResult.csvFileMd5, + busRoutesResult.txtFileUrl==null?"":busRoutesResult.txtFileUrl, + busRoutesResult.txtFileMd5==null?"":busRoutesResult.txtFileMd5, + busRoutesResult.contrailSaveTime, + busRoutesResult.carModel, + busRoutesResult.csvFileUrlDPQP, + busRoutesResult.csvFileMd5DPQP, + busRoutesResult.txtFileUrlDPQP, + busRoutesResult.txtFileMd5DPQP, busRoutesResult.contrailSaveTimeDPQP); } diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusTrajectoryManager.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusTrajectoryManager.java index 4370689618..39005ec077 100644 --- a/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusTrajectoryManager.java +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusTrajectoryManager.java @@ -129,17 +129,12 @@ public class BusTrajectoryManager { } else { mAutoPilotLine.setLineId(routesResult.getLineId()); mAutoPilotLine.setLineName(routesResult.getName()); - mAutoPilotLine.setTrajUrl(routesResult.csvFileUrl); - mAutoPilotLine.setTrajMd5(routesResult.csvFileMd5); - mAutoPilotLine.setStopUrl(routesResult.txtFileUrl); - mAutoPilotLine.setStopMd5(routesResult.txtFileMd5); + mAutoPilotLine.setTrajUrl(routesResult.csvFileUrl==null?"":routesResult.csvFileUrl); + mAutoPilotLine.setTrajMd5(routesResult.csvFileMd5==null?"":routesResult.csvFileMd5); + mAutoPilotLine.setStopUrl(routesResult.txtFileUrl==null?"":routesResult.txtFileUrl); + mAutoPilotLine.setStopMd5(routesResult.txtFileMd5==null?"":routesResult.txtFileMd5); mAutoPilotLine.setTimestamp(routesResult.contrailSaveTime); - mAutoPilotLine.setVehicleModel(routesResult.carModel); - mAutoPilotLine.setTrajUrl_dpqp(routesResult.csvFileUrlDPQP); - mAutoPilotLine.setTrajMd5_dpqp(routesResult.csvFileMd5DPQP); - mAutoPilotLine.setStopUrl_dpqp(routesResult.txtFileUrlDPQP); - mAutoPilotLine.setStopMd5_dpqp(routesResult.txtFileMd5DPQP); - mAutoPilotLine.setTimestamp_dpqp(routesResult.contrailSaveTimeDPQP); + mAutoPilotLine.setVehicleModel(routesResult.carModel==null?"":routesResult.carModel); } } } From 0f4eb095466e0b21604b1cc72c2b99b9db0af7aa Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 13 Nov 2024 10:53:30 +0800 Subject: [PATCH 11/36] =?UTF-8?q?[6.7.3]=20[fix]=20[offline=20UI=E5=B1=95?= =?UTF-8?q?=E7=A4=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../driver/src/main/res/layout/offline_base_fragment.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OCH/offline/driver/src/main/res/layout/offline_base_fragment.xml b/OCH/offline/driver/src/main/res/layout/offline_base_fragment.xml index 34c7b6a068..64b4c69814 100644 --- a/OCH/offline/driver/src/main/res/layout/offline_base_fragment.xml +++ b/OCH/offline/driver/src/main/res/layout/offline_base_fragment.xml @@ -72,11 +72,11 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_71" - app:layout_constraintEnd_toEndOf="@+id/viewLimitingVelocity" + app:layout_constraintEnd_toEndOf="parent" app:layout_goneMarginEnd="40dp" app:layout_goneMarginTop="@dimen/dp_236" android:visibility="invisible" - app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/> + app:layout_constraintTop_toBottomOf="@+id/ivCameraIcon"/> Date: Wed, 13 Nov 2024 11:21:58 +0800 Subject: [PATCH 12/36] =?UTF-8?q?[6.7.3]=20[fix]=20[=E9=AB=98=E5=BA=A6?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/shuttle_weak_base_fragment.xml | 2 +- OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml | 2 +- .../src/main/res/layout/unmanned_taxi_base_fragment.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_base_fragment.xml b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_base_fragment.xml index c06ce1320a..ca6121f7c8 100644 --- a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_base_fragment.xml +++ b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_weak_base_fragment.xml @@ -7,7 +7,7 @@ diff --git a/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml b/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml index 0122d3af7d..a71da62b6f 100644 --- a/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml @@ -7,7 +7,7 @@ diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_taxi_base_fragment.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_taxi_base_fragment.xml index da0470911f..85d7e6d4f1 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_taxi_base_fragment.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_taxi_base_fragment.xml @@ -8,7 +8,7 @@ From d062307cf417561ea718b8eb599441a29f0940b2 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 11 Nov 2024 16:58:18 +0800 Subject: [PATCH 13/36] =?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 4a4659e300fd2d1f9218e6f9755aae1e653f0bdc Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 11 Nov 2024 18:35:38 +0800 Subject: [PATCH 14/36] [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 15:15:56 +0800 Subject: [PATCH 15/36] =?UTF-8?q?[6.8.0]=20[fea]=20[=E6=94=B9=E9=80=A0line?= =?UTF-8?q?Repository]?= 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 4420086918b722f1b825180bc5293dbdf4aeb555 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 12 Nov 2024 18:37:21 +0800 Subject: [PATCH 16/36] =?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 */ From ced4cf7517113d666276299fbc47f18b24041d24 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 13 Nov 2024 16:15:48 +0800 Subject: [PATCH 17/36] =?UTF-8?q?[6.8.0]=20[fea]=20[=E5=AF=B9=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=BF=9B=E8=A1=8C=E6=8E=92=E5=BA=8F]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/och/weaknet/repository/db/dao/TaskDataDao.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskDataDao.kt index 752574ad4b..8ac85696f1 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/TaskDataDao.kt @@ -38,7 +38,7 @@ interface TaskDataDao { @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and status = ${TaskDataBean.useing}") fun queryRunningTaskByStatus(zeroTime:Long = DateTimeUtil.getCurrentDateZero()): List? - @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and status = ${TaskDataBean.unUse} and line_id = :lineId") + @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and status = ${TaskDataBean.unUse} and line_id = :lineId order by task_start_time") fun queryUnuseTask(lineId: Long,zeroTime:Long = DateTimeUtil.getCurrentDateZero()): Observable?> @Query("DELETE FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and line_id = :lineId") From 74546bf626ad541578eb934cc3a5920eb276fa14 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 13 Nov 2024 16:31:15 +0800 Subject: [PATCH 18/36] =?UTF-8?q?[6.7.3]=20[fix]=20[=E8=87=AA=E9=A9=BE?= =?UTF-8?q?=E4=B8=AD=E5=90=AF=E5=8A=A8=E8=87=AA=E9=A9=BE=E7=9A=84=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E6=83=85=E5=86=B5=E3=80=81=E6=97=A5=E5=BF=97=E7=BB=A7?= =?UTF-8?q?=E7=BB=AD=E4=B8=8A=E6=8A=A5=20UI=E4=BF=AE=E5=A4=8D]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/module/wigets/autopilot/AutopilotStateModel.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/autopilot/AutopilotStateModel.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/autopilot/AutopilotStateModel.kt index 80a50bbcdc..10ddb920c9 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/autopilot/AutopilotStateModel.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/autopilot/AutopilotStateModel.kt @@ -159,7 +159,11 @@ class AutopilotStateModel : ViewModel(), IOchAutopilotStatusListener, ILineCall override fun startAutopilotFailure(startFailedCode: String?, startFailedMessage: String?) { OchChainLogManager.writeChainLog("自驾信息","底盘强制失败原因:${startFailedCode}_${startFailedMessage}") - startAutopilotFail() + if(OchAutoPilotStatusListenerManager.autopilotState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + autopilotStateChange() + }else { + startAutopilotFail() + } } private fun startAutopilotFail(){ From e22821e7c8ec05fdb1e3339fd0ceb62053a2f175 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 14 Nov 2024 11:09:03 +0800 Subject: [PATCH 19/36] =?UTF-8?q?[6.7.3]=20[fix]=20[taxi=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=87=8D=E8=AF=95=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt index fc0bc0cee0..6f7aec6b0c 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt @@ -58,6 +58,7 @@ import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations import com.mogo.och.common.module.utils.OCHThreadPoolManager +import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.data.bean.LineInfo import com.mogo.och.data.taxi.QueryCarOrderByNoRespBean @@ -637,6 +638,9 @@ object TaxiTaskModel { ToastUtils.showShort("到站接口请求出现异常,请稍后重试") DebugView.printErrorMsg("[上报ArriveSite] 到站接口请求出现异常,请稍后重试") } + RxUtils.createSubscribe { + submitArriveSite(siteId, isArriveAtEndSite,isArrivedNearestStation) + } } override fun onFail(code: Int, msg: String?) { @@ -644,6 +648,11 @@ object TaxiTaskModel { DebugView.printErrorMsg("[上报ArriveSite] failed, code=$code, msg=$msg") d(TAG, "code=$code msg=$msg") ToastUtils.showShort("到站接口请求出现异常,请稍后重试,code=$code msg=$msg") + if(msg?.contains("驾舱操作过快,请稍后重试")==true){ + RxUtils.createSubscribe { + submitArriveSite(siteId, isArriveAtEndSite,isArrivedNearestStation) + } + } } }) } From 8016638ac6de0f9aaa59d2052b9720146fb82c0d Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 14 Nov 2024 11:24:08 +0800 Subject: [PATCH 20/36] =?UTF-8?q?[6.7.3]=20[fix]=20[=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E7=89=88=E6=9C=AC=E4=B8=8D=E5=85=BC=E5=AE=B9=20?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E9=87=8D=E5=BB=BA=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt index a765107464..06a27df739 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt @@ -90,6 +90,7 @@ abstract class MyDataBase : RoomDatabase() { ) .addMigrations(Migration1_2(1,2)) .addMigrations(Migration2_3(2,3)) + .fallbackToDestructiveMigration() .build() } val ROOT_PATH = Environment.getExternalStorageDirectory().absolutePath + File.separator + "Mogo" + File.separator + "APP_cache" + File.separator //程序外部存储跟目录 From ad532478e7a947d2ee17eda0b7f247298a5cdb22 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 14 Nov 2024 16:09:16 +0800 Subject: [PATCH 21/36] =?UTF-8?q?[6.8.4]=20[fea]=20[=E6=A0=B8=E9=94=80?= =?UTF-8?q?=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/scnner/ScannerClientManager.kt | 61 ++ .../module/manager/scnner/ScannerManager.kt | 54 +- .../manager/socket/lan/bean/DPMsgType.kt | 1 + .../manager/socket/lan/bean/DataBean.kt | 5 + .../4.json | 703 ++++++++++++++++++ .../mogo/och/weaknet/ShuttleDriverProvider.kt | 5 +- .../com/mogo/och/weaknet/model/TicketModel.kt | 336 +++------ .../passenger/ShuttlePassengerProvider.kt | 4 +- .../weaknet/passenger/model/TicketModel.kt | 21 +- 9 files changed, 955 insertions(+), 235 deletions(-) create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerClientManager.kt create mode 100644 OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerClientManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerClientManager.kt new file mode 100644 index 0000000000..b1292352ff --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerClientManager.kt @@ -0,0 +1,61 @@ +package com.mogo.och.common.module.manager.scnner + +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.och.common.module.manager.socket.lan.bean.WriteOffDevicesMsg +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 + +object ScannerClientManager { + + private val TAG = "ScannerClientManager" + + private val writeOfDevicefMsg = object : ILanMessageListener { + override fun targetLan(): Class = WriteOffDevicesMsg::class.java + override fun onLanMsgReceived(writeOffDevicesMsg: WriteOffDevicesMsg?){ + writeOffDevicesMsg?.let { + if (it.isConnectScanner != null) { + val reason = it.reason ?: "" + if (it.isConnectScanner==true) { // 链接成功 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.poiType, + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.tts, + "" + ) + ) + ) + } else { // 核验失败 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.poiType, + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.tts, + "" + ) + ) + ) + } + } + } + } + } + + fun load(){ + // 核销设备信息 + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type,writeOfDevicefMsg) + } + + fun release(){ + LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type,writeOfDevicefMsg) + } +} diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerManager.kt index 847d1eadfc..8eb720eb12 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerManager.kt @@ -2,6 +2,11 @@ package com.mogo.och.common.module.manager.scnner import android.net.Uri import com.mogo.commons.AbsMogoApplication +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.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P @@ -10,10 +15,12 @@ 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.manager.socket.lan.bean.WriteOffDevicesMsg -import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffMsg import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager +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.support.serialport.client.SerialPortManager import com.mogo.support.serialport.client.SerialPortManager.SERVICE_STATE import com.mogo.support.serialport.client.listener.OnDeviceVerificationListener @@ -89,7 +96,6 @@ object ScannerManager : IOchLanPassengerStatusListener { OchChainLogManager.writeChainLogScanner(TAG +"onActiveDataReceive","扫码结果:data:${data}") data?.let { if(data.unpackStatus==UnpackStatus.SUCCEED){ - "数据类型${it.dataType.name}" CallerLogger.d(M_BUS_P + TAG, "data $it") if(!StringUtils.isEmpty(it.payload)){ parseParams(it.payload) @@ -142,9 +148,47 @@ object ScannerManager : IOchLanPassengerStatusListener { } + private val writeOfDevicefMsg = object : ILanMessageListener { + override fun targetLan(): Class = WriteOffDevicesMsg::class.java + override fun onLanMsgReceived(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, + V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.poiType, + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.tts, + "" + ) + ) + ) + } else { // 核验失败 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.poiType, + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.tts, + "" + ) + ) + ) + } + } + } + } + } + init { //监听司机端消息 LoginLanPassengerSocket.addListener(TAG,this) + // 核销设备信息 + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type,writeOfDevicefMsg) serialPortManager.bindService(AbsMogoApplication.getApp(), onSerialPortListener)//绑定服务 } @@ -155,6 +199,10 @@ object ScannerManager : IOchLanPassengerStatusListener { stateChanageListeners[tag] = listener } + fun removeListener(tag:String){ + stateChanageListeners.remove(tag) + } + override fun onDriverConnectChangeListener(isConnect: Boolean) { super.onDriverConnectChangeListener(isConnect) if(isConnect) { @@ -197,7 +245,7 @@ object ScannerManager : IOchLanPassengerStatusListener { * 打开设备后数据异常 */ private fun sendWriteOffMessage2Driver(message:String){ - val msg = WriteOffMsg(false, "", 0, "", message,"") + val msg = WriteOffDetialMsg(code = 10001, msg = message) CallerLogger.d(M_BUS_P + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)) LanSocketManager.sendMsgToServer(msg) } 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 d6e9a8b177..60ac74237b 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 @@ -20,5 +20,6 @@ enum class DPMsgType(val type: Int) { TYPE_CHANGE_BUSINESS_TYPE(10), //业务模式切换 TYPE_ENV_CHECK(11), //环境核验 TYPE_WRITEOFF_INFO_DETAIL(13), //核销信息 + TYPE_WRITEOFF_INFO_RESULT(14), //核销结果 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 c229ad68c8..b1cf0e7339 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 @@ -85,6 +85,11 @@ data class WriteOffDetialMsg( val ticketName: String?=null, ) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type) +data class WriteOffResultMsg( + val code:Int,// 1成功 其他失败 + val phone:String,// 手机号 +) : BaseDPMsg(DPMsgType.TYPE_WRITEOFF_INFO_RESULT.type) + data class WriteOffDevicesMsg( val isConnectScanner: Boolean?, val reason: String? diff --git a/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json new file mode 100644 index 0000000000..a32693df86 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json @@ -0,0 +1,703 @@ +{ + "formatVersion": 1, + "database": { + "version": 4, + "identityHash": "b0f45b39cb8086ad1700c5f46bc8ee82", + "entities": [ + { + "tableName": "contrail_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `line_id` INTEGER, `csv_file_url` TEXT, `csv_file_md5` TEXT, `txt_file_url` TEXT, `txt_file_md5` TEXT, `contrail_save_time` INTEGER, `md5` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "csvFileUrl", + "columnName": "csv_file_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "csvFileMd5", + "columnName": "csv_file_md5", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "txtFileUrl", + "columnName": "txt_file_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "txtFileMd5", + "columnName": "txt_file_md5", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "contrailSaveTime", + "columnName": "contrail_save_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "md5", + "columnName": "md5", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_contrail_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_contrail_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + }, + { + "name": "index_contrail_data_table_md5", + "unique": false, + "columnNames": [ + "md5" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_contrail_data_table_md5` ON `${TABLE_NAME}` (`md5`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "line_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `line_id` INTEGER, `line_name` TEXT, `end_station_name` TEXT, `line_get_time` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineName", + "columnName": "line_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "endStationName", + "columnName": "end_station_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "linegetTime", + "columnName": "line_get_time", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_line_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_line_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "site_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `site_id` INTEGER, `line_id` INTEGER, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `introduction` TEXT, `is_play_tts` INTEGER, `md5` TEXT, `videoList` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "nameKr", + "columnName": "name_kr", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "seq", + "columnName": "seq", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "gcjLon", + "columnName": "gcj_lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "gcjLat", + "columnName": "gcj_lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lon", + "columnName": "lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lat", + "columnName": "lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "introduction", + "columnName": "introduction", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isPlayTts", + "columnName": "is_play_tts", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "md5", + "columnName": "md5", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "videoListDB", + "columnName": "videoList", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_site_data_table_site_id", + "unique": false, + "columnNames": [ + "site_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_site_data_table_site_id` ON `${TABLE_NAME}` (`site_id`)" + }, + { + "name": "index_site_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_site_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "task_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `task_data` INTEGER, `task_start_time` INTEGER, `start_time` INTEGER, `end_time` INTEGER, `task_get_time` INTEGER NOT NULL, `status` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskDate", + "columnName": "task_data", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskStartTime", + "columnName": "task_start_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "startTime", + "columnName": "start_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "endtime", + "columnName": "end_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskgetTime", + "columnName": "task_get_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "status", + "columnName": "status", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_task_data_table_task_id", + "unique": false, + "columnNames": [ + "task_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_task_data_table_task_id` ON `${TABLE_NAME}` (`task_id`)" + }, + { + "name": "index_task_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_task_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "used_task_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `line_name` TEXT, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `driving_status` INTEGER, `leaving` INTEGER, `arrived_time` INTEGER, `leave_time` INTEGER, `introduction` TEXT, `is_play_tts` INTEGER, `event_save_time` INTEGER NOT NULL, `videoList` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineName", + "columnName": "line_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "nameKr", + "columnName": "name_kr", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "seq", + "columnName": "seq", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "gcjLon", + "columnName": "gcj_lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "gcjLat", + "columnName": "gcj_lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lon", + "columnName": "lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lat", + "columnName": "lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "drivingStatus", + "columnName": "driving_status", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "leaving", + "columnName": "leaving", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "arrivedTime", + "columnName": "arrived_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "leaveTime", + "columnName": "leave_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "introduction", + "columnName": "introduction", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isPlayTts", + "columnName": "is_play_tts", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "eventSaveTime", + "columnName": "event_save_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "videoList", + "columnName": "videoList", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "event_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT, `lineId` INTEGER, `lineName` TEXT, `task_id` INTEGER, `task_start_time` INTEGER, `business_time` INTEGER, `write_version` INTEGER, `site_id` INTEGER, `seq` INTEGER, `driver_id` INTEGER, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "eventType", + "columnName": "event_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "lineId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineName", + "columnName": "lineName", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskStartTime", + "columnName": "task_start_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "businessTime", + "columnName": "business_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "writeVersion", + "columnName": "write_version", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "seq", + "columnName": "seq", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "driverId", + "columnName": "driver_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "eventSaveTime", + "columnName": "event_save_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updateStatus", + "columnName": "update_status", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_event_data_table_event_save_time", + "unique": false, + "columnNames": [ + "event_save_time" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_event_data_table_event_save_time` ON `${TABLE_NAME}` (`event_save_time`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "writeoff_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `expiry_time` INTEGER, `booking_time` INTEGER, `type` INTEGER, `task_id` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `remaining_times` INTEGER, `order_no` TEXT, `uid` TEXT, `seq` TEXT, `tick_size` INTEGER, `tick_name` TEXT, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "expiryTime", + "columnName": "expiry_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bookingTime", + "columnName": "booking_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "remainingTimes", + "columnName": "remaining_times", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "orderNo", + "columnName": "order_no", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "uid", + "columnName": "uid", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "phone", + "columnName": "seq", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "ticketSize", + "columnName": "tick_size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "ticketName", + "columnName": "tick_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "eventSaveTime", + "columnName": "event_save_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updateStatus", + "columnName": "update_status", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_writeoff_data_table_event_save_time", + "unique": false, + "columnNames": [ + "event_save_time" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_writeoff_data_table_event_save_time` ON `${TABLE_NAME}` (`event_save_time`)" + } + ], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b0f45b39cb8086ad1700c5f46bc8ee82')" + ] + } +} \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ShuttleDriverProvider.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ShuttleDriverProvider.kt index b36287aece..c3cc6e99b2 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ShuttleDriverProvider.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ShuttleDriverProvider.kt @@ -11,6 +11,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.biz.provider.CommonServiceImpl import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutopilotAnalytics +import com.mogo.och.common.module.manager.scnner.ScannerClientManager 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 @@ -48,7 +49,8 @@ class ShuttleDriverProvider : CommonServiceImpl() { busFragment = ShuttleFragment() } OchAutopilotAnalytics.ochEventKey = BusAnalyticsManager - LineModel.init(); + LineModel.init() + ScannerClientManager.load() return busFragment!! } @@ -56,6 +58,7 @@ class ShuttleDriverProvider : CommonServiceImpl() { busFragment = null OchAutopilotAnalytics.ochEventKey = null LineModel.release() + ScannerClientManager.release() RepositoryManager.release() } 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 6934c92ef5..1c212f063a 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 @@ -22,8 +22,7 @@ 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.manager.socket.lan.bean.WriteOffResultMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.bean.WriteOffPassenger @@ -39,7 +38,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers -object TicketModel : IOchOnMessageListener{ +object TicketModel { private const val TAG = "TicketModel" @@ -47,18 +46,42 @@ object TicketModel : IOchOnMessageListener{ private var emitterMain: ObservableEmitter>?=null - private val observable = Observable.create(ObservableOnSubscribe> { emitter -> emitterMain = emitter }) - - private val writeOfDevicefMsg = object : ILanMessageListener { - override fun targetLan(): Class = WriteOffDevicesMsg::class.java - override fun onLanMsgReceived(obj: WriteOffDevicesMsg?) = receiveWrteOffDevicesInfo(obj) - } - - private val writeOfDevicefDetialMsg = object : ILanMessageListener { + /** + * 接受乘客端扫码数据进行云端和本地核销 + */ + private val writeOffDetialMsg = object : ILanMessageListener { override fun targetLan(): Class = WriteOffDetialMsg::class.java override fun onLanMsgReceived(obj: WriteOffDetialMsg?) = receiveWrteOffDefailtInfo(obj) } + /** + * 接受乘客端扫码数据进行云端和本地核销 + */ + private val writeOffOnlineMsg = object : IOchOnMessageListener { + override fun target(): Class { + return WriteOffPassenger::class.java + } + + override fun onMsgReceived(passenger: WriteOffPassenger?) { + //进行播报 + i(SceneConstant.M_BUS + TAG, "后台socket 核验:passenger = " + GsonUtil.jsonFromObject(passenger)) + if(passenger==null||passenger.passengerSize==0){ + return + } + writeOffSuccess( + passenger.passengerSize, + passenger.phone ?: "", + passenger.ticketName?:"", + ) + TODO("服务器端核销需要在本地报备一下 用于计算数据") + } + } + + private val observable = Observable.create(ObservableOnSubscribe> { emitter -> emitterMain = emitter }) + + fun getWriteOffCountObservable():Observable>{ + return observable + } fun load(){ // 3s轮训站点核销人数 人数本地核销 直接计算就好 @@ -69,42 +92,20 @@ object TicketModel : IOchOnMessageListener{ ) } // 核销信息 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type,writeOfDevicefDetialMsg) - // 核销设备信息 - LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type,writeOfDevicefMsg) + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type,writeOffDetialMsg) + //监听核销乘客 - OCHSocketMessageManager.registerSocketMessageListener(OCHSocketMessageManager.msgWriteOffPassengerType, this) + OCHSocketMessageManager.registerSocketMessageListener(OCHSocketMessageManager.msgWriteOffPassengerType, writeOffOnlineMsg) } fun release(){ if(RepositoryManager.supportWriteOff()) { BizLoopManager.removeLoopFunction(SELECTWRITEOFFCOUNT) } - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type,writeOfDevicefDetialMsg) - LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type,writeOfDevicefMsg) + LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_DETAIL.type,writeOffDetialMsg) OCHSocketMessageManager.releaseSocketMessageListener(OCHSocketMessageManager.msgWriteOffPassengerType) } - override fun target(): Class { - return WriteOffPassenger::class.java - } - - // 收到服务器的核验信息 - override fun onMsgReceived(passenger: WriteOffPassenger?) { - //进行播报 - i(SceneConstant.M_BUS + TAG, "后台socket 核验:passenger = " + GsonUtil.jsonFromObject(passenger)) - if(passenger==null||passenger.passengerSize==0){ - return - } - playPassenger( - passenger.passengerSize, - passenger.phone ?: "", - passenger.ticketName?:"", - ) - TODO("服务器端核销需要在本地报备一下 用于计算数据") - selectWriteOffCount() - } - private fun selectWriteOffCount(){ LineManager.getStations().first?.let { firstStation-> LineModel.currentTask?.let { currentTask-> @@ -138,56 +139,15 @@ object TicketModel : IOchOnMessageListener{ d(SceneConstant.M_BUS + TAG, "线路或者站点未空") } - fun getWriteOffCountObservable():Observable>{ - return observable - } - private fun receiveWrteOffInfo(writeOffMsg: WriteOffMsg?) { - if(writeOffMsg!=null) { - if (writeOffMsg.isScuccess != null) { - if (writeOffMsg.isScuccess == true) { // 核验成功 - if(writeOffMsg.ticketSize==null||writeOffMsg.ticketSize==0){ - return - } - } else { // 核验失败 - ShuttleVoiceManager.writeOffFaile(writeOffMsg.failedReason ?: "") - var tempPhone = writeOffMsg.phone - tempPhone?.let { - if (it.length > 8) { - //截取电话号码前三位 - val phoneNumPre = it.substring(0, 3) - //截取电话号码后四位 - val phoneNumFix = it.substring(7) - tempPhone = "$phoneNumPre****$phoneNumFix" - } - } - val reaseonAndPhone = if(tempPhone.isNullOrEmpty()) { - "${writeOffMsg.failedReason}" - }else{ - "${writeOffMsg.failedReason};乘客:${tempPhone}" - } - saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, V2XMsg( - EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.poiType, - reaseonAndPhone, - EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.tts, - "" - ) - ) - ) - } - } - } - } private fun receiveWrteOffDefailtInfo(writeOffDetialMsg: WriteOffDetialMsg?) { writeOffDetialMsg?.let { - if(writeOffDetialMsg.code!=0){ + if (writeOffDetialMsg.code != 0) { sendMessage2Driver( - writeOffDetialMsg.msg?:"", - writeOffDetialMsg.phone ?: "" + writeOffDetialMsg.msg ?: "", + writeOffDetialMsg.phone ?: "",false ) - }else { + } else { RepositoryManager.writeOff(writeOffDetialMsg) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) @@ -200,116 +160,7 @@ object TicketModel : IOchOnMessageListener{ 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 ?: "" - ) - } - } - } - } + parseData(e.code,e.msg?:"",writeOffDetialMsg.phone?:"") } } @@ -319,57 +170,86 @@ object TicketModel : IOchOnMessageListener{ override fun onNext(data: PassengerWriteOffResponse.Result) { d(TAG, "queryBusLines onNext ${data}") - selectWriteOffCount() - playPassenger( + writeOffSuccess( 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, - V2XMsg( - EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.poiType, - reason, - EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.tts, - "" - ) - ) - ) - } else { // 核验失败 - saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.poiType, - reason, - EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.tts, - "" - ) - ) - ) + /** + * 解析错误原因 + */ + private fun parseData(code:Int,msg:String,phone: String){ + when (code) { + 6002 -> sendMessage2Driver("同一订单核销间隔时间需大于2分钟", phone) + 1009 -> sendMessage2Driver("车票所选乘车日期非今日", phone) + 1005 -> sendMessage2Driver("车辆未登录、或没有任务", phone) + 1006 -> sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合", phone) + 1008 -> sendMessage2Driver("车票剩余可用次数为0", phone) + 6001 -> sendMessage2Driver("二维码已过期", phone) + 1012 -> sendMessage2Driver("当前用户下单路线非当前的车辆所属公司", phone) + else -> { + try { + val tempcode=msg.toInt() + parseData(tempcode,msg,phone) + }catch (e:Exception){ + sendMessage2Driver(msg, phone) } } } } - private fun playPassenger(ticketSize: Int,phone:String,ticketName:String) { + /** + * 验票失败 + */ + private fun sendMessage2Driver(message:String,phone:String,send2Source:Boolean=true){ + // 发送乘客屏 通过蓝牙告知小程序 + LanSocketManager.sendMsgToClient(WriteOffResultMsg(code = -1,phone = phone)) + val failedReason = "验票失败,${message}" + ShuttleVoiceManager.writeOffFaile(failedReason) + var tempPhone = phone + tempPhone.let { + if (it.length > 8) { + //截取电话号码前三位 + val phoneNumPre = it.substring(0, 3) + //截取电话号码后四位 + val phoneNumFix = it.substring(7) + tempPhone = "$phoneNumPre****$phoneNumFix" + } + } + val reaseonAndPhone = if(tempPhone.isNullOrEmpty()) { + failedReason + }else{ + "${failedReason};乘客:${tempPhone}" + } + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, V2XMsg( + EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.poiType, + reaseonAndPhone, + EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.tts, + "" + ) + ) + ) + } + + /** + * 验票成功 + * 1、本地核销 + * 2、云端核销 + */ + private fun writeOffSuccess(ticketSize: Int, phone:String, ticketName:String) { + + // 发送乘客屏 通过蓝牙告知小程序 + LanSocketManager.sendMsgToClient(WriteOffResultMsg(code = 1,phone = phone)) + + selectWriteOffCount() ShuttleVoiceManager.writeOffCount(ticketSize) 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 0f0dac8e79..ecf118c567 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 @@ -30,7 +30,7 @@ class ShuttlePassengerProvider : CommonServiceImpl() { private var mPM2Fragment: Fragment?=null override fun init(context: Context) { - TicketModel.load() + } override fun getStatusBarView(context: Context): View { @@ -59,11 +59,13 @@ class ShuttlePassengerProvider : CommonServiceImpl() { BusPassengerRouteFragment() } } + TicketModel.load() return mPM2Fragment!! } override fun resetFragment() { super.resetFragment() + TicketModel.release() mPM2Fragment = null } 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 17ca6e69b2..bc0f0c661c 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 @@ -7,18 +7,35 @@ import com.mogo.eagle.core.utilcode.util.RegexUtils import com.mogo.och.common.module.manager.socket.lan.LanSocketManager 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.ILanMessageListener +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.WriteOffResultMsg object TicketModel : StateChangeListener { private const val TAG = "TicketModel" init { - ScannerManager.addStateChangeListener(TAG, this) + } - fun load(){ + private val writeOffResultMsg = object : ILanMessageListener { + override fun targetLan(): Class = WriteOffResultMsg::class.java + override fun onLanMsgReceived(obj: WriteOffResultMsg?) { + // 收到核销结果扫描蓝牙并写会核销结果 + } + } + + fun load(){ + ScannerManager.addStateChangeListener(TAG, this) + // 核销信息 + LanSocketManager.registerSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_RESULT.type,writeOffResultMsg) + } + fun release(){ + ScannerManager.removeListener(TAG) + LanSocketManager.unRegisterSocketMessageListener(DPMsgType.TYPE_WRITEOFF_INFO_RESULT.type,writeOffResultMsg) } override fun parseData(params: MutableMap, payload: String?) { From 52f1a15b06479fdce05847339cbdaee81c6e29e3 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 14 Nov 2024 18:54:38 +0800 Subject: [PATCH 22/36] =?UTF-8?q?[6.7.3]=20[fix]=20[event=20=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E6=8E=A5=E5=8F=A3=E6=8C=89=E7=85=A7=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/weaknet/model/EventModel.kt | 3 +++ 1 file changed, 3 insertions(+) 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..5faf76a06d 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 @@ -55,6 +55,9 @@ object EventModel : EventDb.EventCallback { private fun updateEvent(){ + if(isUpdating.get()){ + return + } isUpdating.set(true) createDefault.onNext(isUpdating.get()) ThreadUtils.getSinglePool().submit { From 7b942cde7440bf545459aacc2bfc3b0cf3107f02 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 14 Nov 2024 18:58:18 +0800 Subject: [PATCH 23/36] =?UTF-8?q?[6.7.3]=20[fix]=20[writeversion=20?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=90=8E=20?= =?UTF-8?q?=E5=86=8D=E5=86=99=E5=85=A5=E4=B8=8A=E6=8A=A5=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E6=97=B6=E9=97=B4]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/weaknet/model/EventModel.kt | 1 + 1 file changed, 1 insertion(+) 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 5faf76a06d..ae731df66f 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 @@ -75,6 +75,7 @@ object EventModel : EventDb.EventCallback { override fun onSuccess(data: BaseData?) { waitUpdateEvent.forEach { it.updateStatus = EventDataBean.updated + it.writeVersion = System.currentTimeMillis() } OchChainLogManager.writeChainLogDb("上报event成功","$transformDb2Net ${Thread.currentThread().name}") EventDb.saveUpdateSuccess(waitUpdateEvent) From 56315a27e2e8d73eb68fbe68f531be8b5dd00a73 Mon Sep 17 00:00:00 2001 From: renwj Date: Thu, 14 Nov 2024 19:42:56 +0800 Subject: [PATCH 24/36] =?UTF-8?q?[6.7.3][=E8=BF=90=E8=90=A5=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF]=20=E4=BF=AE=E6=AD=A3=E7=BB=BF=E6=B3=A2=E9=80=9A?= =?UTF-8?q?=E8=A1=8C=E5=BC=80=E5=85=B3=E7=8A=B6=E6=80=81=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E6=9C=AA=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt index 3d5ed6d25d..f6e84b1335 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt @@ -521,7 +521,7 @@ internal object V2NIdentifyDrawer: IEventDismissListener { } private fun drawGreenWave(crossSpeed: V2nCrossSpeed) { - if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nTotalSwitch) { + if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nTotalSwitch && FunctionBuildConfig.v2nGreenWave) { handler.removeMessages(MSG_WHAT_DRAW_GREEN_WAVE) handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_GREEN_WAVE, crossSpeed)) } @@ -587,4 +587,4 @@ internal object V2NIdentifyDrawer: IEventDismissListener { // val targetIds = event.exts.split(",") // } } -} \ No newline at end of file +} From 412452d5ac761641e10d973d79fc45be6b30a323 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 15 Nov 2024 10:33:56 +0800 Subject: [PATCH 25/36] =?UTF-8?q?[6.7.3]=20[fix]=20[=E6=B7=BB=E5=8A=A0=20m?= =?UTF-8?q?sgId=E5=92=8Cupdate=5Ftime]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/weaknet/model/EventModel.kt | 3 ++- .../och/weaknet/repository/db/MyDataBase.kt | 20 ++++++++++++++++++- .../repository/db/bean/EventDataBean.kt | 8 +++++++- .../repository/db/repository/EventDb.kt | 5 +++++ 4 files changed, 33 insertions(+), 3 deletions(-) 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 ae731df66f..daa2818b82 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 @@ -56,6 +56,7 @@ object EventModel : EventDb.EventCallback { private fun updateEvent(){ if(isUpdating.get()){ + OchChainLogManager.writeChainLogDb("上报event","正在上传 等待下一次轮训 ${Thread.currentThread().name}") return } isUpdating.set(true) @@ -75,7 +76,7 @@ object EventModel : EventDb.EventCallback { override fun onSuccess(data: BaseData?) { waitUpdateEvent.forEach { it.updateStatus = EventDataBean.updated - it.writeVersion = System.currentTimeMillis() + it.upDateTime = System.currentTimeMillis() } OchChainLogManager.writeChainLogDb("上报event成功","$transformDb2Net ${Thread.currentThread().name}") EventDb.saveUpdateSuccess(waitUpdateEvent) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt index 06a27df739..3d6e448dc8 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt @@ -31,7 +31,7 @@ import java.io.File //entities指定该数据库有哪些表,多张表就逗号分隔 //version指定数据库版本号,升级时需要用到 //数据库继承自RoomDatabase -@Database(entities = [ContrailDataBean::class, LineDataBean::class, SiteDataBean::class, TaskDataBean::class, TaskSiteDataBean::class, EventDataBean::class], version = 3) +@Database(entities = [ContrailDataBean::class, LineDataBean::class, SiteDataBean::class, TaskDataBean::class, TaskSiteDataBean::class, EventDataBean::class], version = 4) abstract class MyDataBase : RoomDatabase() { override fun getOpenHelper(): SupportSQLiteOpenHelper { @@ -90,6 +90,8 @@ abstract class MyDataBase : RoomDatabase() { ) .addMigrations(Migration1_2(1,2)) .addMigrations(Migration2_3(2,3)) + .addMigrations(Migration3_4(3,4)) + .addMigrations(Migration2_4(2,4)) .fallbackToDestructiveMigration() .build() } @@ -115,4 +117,20 @@ abstract class MyDataBase : RoomDatabase() { database.execSQL("ALTER TABLE ${TaskSiteDataBean.usedTaskDataTable} ADD COLUMN videoList TEXT"); } } + + class Migration3_4(val startVersion:Int,val endVersion:Int): Migration(startVersion,endVersion) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL("ALTER TABLE ${EventDataBean.evnetDataTable} ADD COLUMN msg_id TEXT") + database.execSQL("ALTER TABLE ${EventDataBean.evnetDataTable} ADD COLUMN update_time INTEGER") + } + } + + class Migration2_4(val startVersion:Int,val endVersion:Int): Migration(startVersion,endVersion) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL("ALTER TABLE ${SiteDataBean.siteDataTable} ADD COLUMN videoList TEXT"); + database.execSQL("ALTER TABLE ${TaskSiteDataBean.usedTaskDataTable} ADD COLUMN videoList TEXT"); + database.execSQL("ALTER TABLE ${EventDataBean.evnetDataTable} ADD COLUMN msg_id TEXT") + database.execSQL("ALTER TABLE ${EventDataBean.evnetDataTable} ADD COLUMN update_time INTEGER") + } + } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt index 9481b8222c..427697e63c 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt @@ -80,7 +80,13 @@ data class EventDataBean( val eventSaveTime: Long = System.currentTimeMillis(), @ColumnInfo(name = "update_status", typeAffinity = ColumnInfo.INTEGER) - var updateStatus:Int = 0 + var updateStatus:Int = 0, + + @ColumnInfo(name = "msg_id", typeAffinity = ColumnInfo.TEXT) + var msgId:String = "", + + @ColumnInfo(name = "update_time", typeAffinity = ColumnInfo.INTEGER) + var upDateTime:Long = 0L, ) { companion object { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt index a689f5d744..c375fe910a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt @@ -1,6 +1,7 @@ package com.mogo.och.weaknet.repository.db.repository import com.mogo.och.common.module.biz.login.LoginStatusManager +import com.mogo.och.common.module.manager.cache.OchSPManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.utils.DateTimeUtil @@ -40,6 +41,7 @@ object EventDb: IDbRepository { event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1 event.siteId = 0L event.seq = 0 + event.msgId = "${OchSPManager.getSn()}_${DateTimeUtil.getCurrentTimeStamp()}" BizLoopManager.runInIoThread { eventDataDao?.insert(event) eventCallback?.notifySyn() @@ -65,6 +67,7 @@ object EventDb: IDbRepository { event.siteId = siteId event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1 event.seq = seq + event.msgId = "${OchSPManager.getSn()}_${DateTimeUtil.getCurrentTimeStamp()}" BizLoopManager.runInIoThread { eventDataDao?.insert(event) eventCallback?.notifySyn() @@ -90,6 +93,7 @@ object EventDb: IDbRepository { event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1L event.siteId = siteId event.seq = seq + event.msgId = "${OchSPManager.getSn()}_${DateTimeUtil.getCurrentTimeStamp()}" BizLoopManager.runInIoThread { eventDataDao?.insert(event) eventCallback?.notifySyn() @@ -108,6 +112,7 @@ object EventDb: IDbRepository { event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1L event.siteId = 0L event.seq = 0 + event.msgId = "${OchSPManager.getSn()}_${DateTimeUtil.getCurrentTimeStamp()}" BizLoopManager.runInIoThread { eventDataDao?.insert(event) eventCallback?.notifySyn() From ac73ef625bd9a6a21bbd851bf3acbfe89079f9ce Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 15 Nov 2024 10:38:08 +0800 Subject: [PATCH 26/36] =?UTF-8?q?[6.7.3]=20[fix]=20[media=20sn=20=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/common/module/wigets/media/MediaDataSourceManager.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaDataSourceManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaDataSourceManager.kt index 24d297a733..62e247f538 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaDataSourceManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaDataSourceManager.kt @@ -14,6 +14,7 @@ import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.OchCommonSubscribeImpl @@ -188,7 +189,7 @@ object MediaDataSourceManager { private fun getMediaDataFromMis(callback: OchCommonServiceCallback) { MediaPlayLogger.printInfoLog("getMediaDataFromMis:准备发送请求,driverSn=$driverSn") mNetworkService - ?.queryMediaDataFromMis(sn = driverSn, screenType = "2",) + ?.queryMediaDataFromMis(sn = LoginLanPassengerSocket.driverSn, screenType = "2",) ?.transformTry() ?.subscribe(OchCommonSubscribeImpl(context, callback, "getMediaDataFromMis")) } From 4d89031d225feea5342eb2b20be8b8392b45c5cc Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 15 Nov 2024 11:07:07 +0800 Subject: [PATCH 27/36] =?UTF-8?q?[6.7.3]=20[fix]=20[=E5=89=8D=E5=8F=B0?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E6=98=AF=E5=90=A6=E6=9C=89=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E4=BB=BB=E5=8A=A1=E3=80=81loading=20=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E5=A4=84=E7=90=86]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../4.json | 601 ++++++++++++++++++ .../com/mogo/och/weaknet/model/OrderModel.kt | 4 + .../och/weaknet/repository/IRepository.kt | 4 + .../weaknet/repository/RepositoryManager.kt | 4 + .../repository/impl/WeaknetRepository.kt | 8 + .../och/weaknet/ui/bizswitch/SwitchBizView.kt | 14 +- .../weaknet/ui/bizswitch/SwtichBizeModel.kt | 6 + .../src/main/res/values/strings.xml | 1 + 8 files changed, 641 insertions(+), 1 deletion(-) create mode 100644 OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json diff --git a/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json new file mode 100644 index 0000000000..1b4e1be442 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json @@ -0,0 +1,601 @@ +{ + "formatVersion": 1, + "database": { + "version": 4, + "identityHash": "ab78007616874d2ef2c8ce5b4fb27869", + "entities": [ + { + "tableName": "contrail_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `line_id` INTEGER, `csv_file_url` TEXT, `csv_file_md5` TEXT, `txt_file_url` TEXT, `txt_file_md5` TEXT, `contrail_save_time` INTEGER, `md5` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "csvFileUrl", + "columnName": "csv_file_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "csvFileMd5", + "columnName": "csv_file_md5", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "txtFileUrl", + "columnName": "txt_file_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "txtFileMd5", + "columnName": "txt_file_md5", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "contrailSaveTime", + "columnName": "contrail_save_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "md5", + "columnName": "md5", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_contrail_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_contrail_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + }, + { + "name": "index_contrail_data_table_md5", + "unique": false, + "columnNames": [ + "md5" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_contrail_data_table_md5` ON `${TABLE_NAME}` (`md5`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "line_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `line_id` INTEGER, `line_name` TEXT, `end_station_name` TEXT, `line_get_time` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineName", + "columnName": "line_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "endStationName", + "columnName": "end_station_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "linegetTime", + "columnName": "line_get_time", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_line_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_line_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "site_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `site_id` INTEGER, `line_id` INTEGER, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `introduction` TEXT, `is_play_tts` INTEGER, `md5` TEXT, `videoList` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "nameKr", + "columnName": "name_kr", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "seq", + "columnName": "seq", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "gcjLon", + "columnName": "gcj_lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "gcjLat", + "columnName": "gcj_lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lon", + "columnName": "lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lat", + "columnName": "lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "introduction", + "columnName": "introduction", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isPlayTts", + "columnName": "is_play_tts", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "md5", + "columnName": "md5", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "videoListDB", + "columnName": "videoList", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_site_data_table_site_id", + "unique": false, + "columnNames": [ + "site_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_site_data_table_site_id` ON `${TABLE_NAME}` (`site_id`)" + }, + { + "name": "index_site_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_site_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "task_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `task_data` INTEGER, `task_start_time` INTEGER, `start_time` INTEGER, `end_time` INTEGER, `task_get_time` INTEGER NOT NULL, `status` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskDate", + "columnName": "task_data", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskStartTime", + "columnName": "task_start_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "startTime", + "columnName": "start_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "endtime", + "columnName": "end_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskgetTime", + "columnName": "task_get_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "status", + "columnName": "status", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_task_data_table_task_id", + "unique": false, + "columnNames": [ + "task_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_task_data_table_task_id` ON `${TABLE_NAME}` (`task_id`)" + }, + { + "name": "index_task_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_task_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "used_task_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `line_name` TEXT, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `driving_status` INTEGER, `leaving` INTEGER, `arrived_time` INTEGER, `leave_time` INTEGER, `introduction` TEXT, `is_play_tts` INTEGER, `event_save_time` INTEGER NOT NULL, `videoList` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineName", + "columnName": "line_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "nameKr", + "columnName": "name_kr", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "seq", + "columnName": "seq", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "gcjLon", + "columnName": "gcj_lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "gcjLat", + "columnName": "gcj_lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lon", + "columnName": "lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lat", + "columnName": "lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "drivingStatus", + "columnName": "driving_status", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "leaving", + "columnName": "leaving", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "arrivedTime", + "columnName": "arrived_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "leaveTime", + "columnName": "leave_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "introduction", + "columnName": "introduction", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isPlayTts", + "columnName": "is_play_tts", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "eventSaveTime", + "columnName": "event_save_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "videoList", + "columnName": "videoList", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "event_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT, `lineId` INTEGER, `lineName` TEXT, `task_id` INTEGER, `task_start_time` INTEGER, `business_time` INTEGER, `write_version` INTEGER, `site_id` INTEGER, `seq` INTEGER, `driver_id` INTEGER, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL, `msg_id` TEXT NOT NULL, `update_time` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "eventType", + "columnName": "event_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "lineId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineName", + "columnName": "lineName", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskStartTime", + "columnName": "task_start_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "businessTime", + "columnName": "business_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "writeVersion", + "columnName": "write_version", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "seq", + "columnName": "seq", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "driverId", + "columnName": "driver_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "eventSaveTime", + "columnName": "event_save_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updateStatus", + "columnName": "update_status", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "msgId", + "columnName": "msg_id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "upDateTime", + "columnName": "update_time", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_event_data_table_event_save_time", + "unique": false, + "columnNames": [ + "event_save_time" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_event_data_table_event_save_time` ON `${TABLE_NAME}` (`event_save_time`)" + } + ], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'ab78007616874d2ef2c8ce5b4fb27869')" + ] + } +} \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt index acc8b5caac..b78c7fff71 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt @@ -457,6 +457,10 @@ object OrderModel { ToastUtils.showShort(ResourcesUtils.getString(R.string.shuttle_logout_error)) return@execute } + if(RepositoryManager.haveRunningTask()){ + ToastUtils.showShort(ResourcesUtils.getString(R.string.shuttle_logout_error_running)) + return@execute + } MapMakerManager.removeAllMapMarkerByOwner(TAG) BusTrajectoryManager.getInstance().stopTrajReqLoop(); LoginStatusManager.loginOut() 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/IRepository.kt index 63c45f2f9d..575f7f61df 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/IRepository.kt @@ -32,6 +32,10 @@ interface IRepository { fun reportCabinEvent(context: Context?, data: ShuttleEventRequest?, callback: OchCommonServiceCallback?) + fun haveRunningTask(): Boolean{ + return false + } + fun release() } \ No newline at end of file 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..4f79fda2f0 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 @@ -96,6 +96,10 @@ object RepositoryManager { repository?.queryWriteoffCount(context,taskId,siteId,callback) } + fun haveRunningTask():Boolean{ + return repository?.haveRunningTask()?:false + } + fun haveDataWaitSyn(): Boolean { if(ProjectUtils.isSaas()&&AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { 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/impl/WeaknetRepository.kt index 6536b6d70f..9d8daaabdb 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/impl/WeaknetRepository.kt @@ -337,6 +337,14 @@ class WeaknetRepository : IRepository { weakNetInterface?.reportCabinEvent(context,data,callback) } + override fun haveRunningTask(): Boolean { + if(LineModel.currentTask==null){ + return false + }else{ + return true + } + } + override fun release() { weakNetInterface = null CallerLogger.d(TAG,"重置 weakNetInterface") diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwitchBizView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwitchBizView.kt index 4c0bda28a9..6731c0d998 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwitchBizView.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwitchBizView.kt @@ -7,10 +7,13 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.findViewTreeViewModelStoreOwner import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.utils.ResourcesUtils +import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.wigets.WindowRelativeLayout import com.mogo.och.shuttle.weaknet.R import com.mogo.och.weaknet.repository.db.bean.LineDataBean +import io.reactivex.disposables.Disposable import kotlinx.android.synthetic.main.shuttle_weak_switch_biz.view.loading_biz import kotlinx.android.synthetic.main.shuttle_weak_switch_biz.view.swtichLine import kotlinx.android.synthetic.main.shuttle_weak_switch_biz.view.swtichTask @@ -34,6 +37,8 @@ class SwitchBizView: WindowRelativeLayout, SwtichBizeModel.SwtichLineViewCallbac private var viewModel: SwtichBizeModel?=null + private var queryTimeout: Disposable? = null + init { LayoutInflater.from(context).inflate(R.layout.shuttle_weak_switch_biz, this, true) @@ -57,9 +62,14 @@ class SwitchBizView: WindowRelativeLayout, SwtichBizeModel.SwtichLineViewCallbac // 展示loading页面 override fun showLoadingView(){ startLoading = System.currentTimeMillis() + CallerLogger.d(TAG,"开始展示 lading 时间:${startLoading}") loading_biz.visibility = VISIBLE swtichLine.visibility = GONE swtichTask.visibility = GONE + queryTimeout = RxUtils.createSubscribe(10_1000) { + OchChainLogManager.writeChainLog("Loading超时","loading 展示了10s") + viewModel?.queryRuningTask() + } } @@ -78,8 +88,8 @@ class SwitchBizView: WindowRelativeLayout, SwtichBizeModel.SwtichLineViewCallbac // 展示选择任务页面 override fun showSwitchTaskInfo() { + RxUtils.disposeSubscribe(queryTimeout) val endLoading = System.currentTimeMillis() - val dex = (100-(endLoading - startLoading)).takeIf { it>=0 }?:0 CallerLogger.d(TAG,"展示任务 lading 展示了 ${dex}毫秒") @@ -93,6 +103,7 @@ class SwitchBizView: WindowRelativeLayout, SwtichBizeModel.SwtichLineViewCallbac // 展示选择线路页面 override fun showSwtichLineView() { + RxUtils.disposeSubscribe(queryTimeout) val endLoading = System.currentTimeMillis() val dex = (100-(endLoading - startLoading)).takeIf { it>=0 }?:0 CallerLogger.d(TAG,"展示线路 lading 展示了 ${dex}毫秒") @@ -106,6 +117,7 @@ class SwitchBizView: WindowRelativeLayout, SwtichBizeModel.SwtichLineViewCallbac } // 展示正在进行的任务 override fun loadRunningTask() { + RxUtils.disposeSubscribe(queryTimeout) val endLoading = System.currentTimeMillis() val dex = (100-(endLoading - startLoading)).takeIf { it>=0 }?:0 CallerLogger.d(TAG,"展示运行中任务 lading 展示了 ${dex}毫秒") diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwtichBizeModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwtichBizeModel.kt index 3b8eff028a..aec2d1be72 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwtichBizeModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/bizswitch/SwtichBizeModel.kt @@ -36,6 +36,12 @@ class SwtichBizeModel : ViewModel(), IBusLinesCallback { } } + fun queryRuningTask(){ + ThreadUtils.getIoPool().execute { + OrderModel.queryBusRoutes() + } + } + fun loadingSwitchTask(lineInfo: LineDataBean) { d(LineModel.TAG, "loadingSwitchTask 查询线路的任务线路信息:${lineInfo}") viewCallback?.showSwitchTaskByLineInfo(lineInfo) diff --git a/OCH/shuttle/driver_weaknet/src/main/res/values/strings.xml b/OCH/shuttle/driver_weaknet/src/main/res/values/strings.xml index 0d9eb141fa..f72f9d99eb 100644 --- a/OCH/shuttle/driver_weaknet/src/main/res/values/strings.xml +++ b/OCH/shuttle/driver_weaknet/src/main/res/values/strings.xml @@ -47,6 +47,7 @@ 取消 请在网络良好的区域完成任务信息同步后退出 + 请结束任务后再退出登录 暂无任务 核销%1$d人 From 68f5567d9e72695529ce72afa67e0a00ea4d71cb Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 15 Nov 2024 12:14:24 +0800 Subject: [PATCH 28/36] =?UTF-8?q?[6.7.3]=20[fix]=20[=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=8F=98=E6=9B=B4]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../4.json | 10 +++++----- .../och/weaknet/repository/db/bean/EventDataBean.kt | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json index 1b4e1be442..83d629ad24 100644 --- a/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json +++ b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/4.json @@ -2,7 +2,7 @@ "formatVersion": 1, "database": { "version": 4, - "identityHash": "ab78007616874d2ef2c8ce5b4fb27869", + "identityHash": "1d1bd5c3b1770e4bc24252f26791f036", "entities": [ { "tableName": "contrail_data_table", @@ -479,7 +479,7 @@ }, { "tableName": "event_data_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT, `lineId` INTEGER, `lineName` TEXT, `task_id` INTEGER, `task_start_time` INTEGER, `business_time` INTEGER, `write_version` INTEGER, `site_id` INTEGER, `seq` INTEGER, `driver_id` INTEGER, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL, `msg_id` TEXT NOT NULL, `update_time` INTEGER NOT NULL)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT, `lineId` INTEGER, `lineName` TEXT, `task_id` INTEGER, `task_start_time` INTEGER, `business_time` INTEGER, `write_version` INTEGER, `site_id` INTEGER, `seq` INTEGER, `driver_id` INTEGER, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL, `msg_id` TEXT, `update_time` INTEGER)", "fields": [ { "fieldPath": "id", @@ -563,13 +563,13 @@ "fieldPath": "msgId", "columnName": "msg_id", "affinity": "TEXT", - "notNull": true + "notNull": false }, { "fieldPath": "upDateTime", "columnName": "update_time", "affinity": "INTEGER", - "notNull": true + "notNull": false } ], "primaryKey": { @@ -595,7 +595,7 @@ "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'ab78007616874d2ef2c8ce5b4fb27869')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '1d1bd5c3b1770e4bc24252f26791f036')" ] } } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt index 427697e63c..bfd343051b 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt @@ -83,10 +83,10 @@ data class EventDataBean( var updateStatus:Int = 0, @ColumnInfo(name = "msg_id", typeAffinity = ColumnInfo.TEXT) - var msgId:String = "", + var msgId:String? = "", @ColumnInfo(name = "update_time", typeAffinity = ColumnInfo.INTEGER) - var upDateTime:Long = 0L, + var upDateTime:Long? = 0L, ) { companion object { From 260a881d86ade5000814b1767592a95feee14eca Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 15 Nov 2024 12:14:45 +0800 Subject: [PATCH 29/36] =?UTF-8?q?[6.7.3]=20[fix]=20[=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E8=AE=BE=E7=BD=AE=E7=8A=B6=E6=80=81]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/module/wigets/autopilot/AutopilotStateModel.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/autopilot/AutopilotStateModel.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/autopilot/AutopilotStateModel.kt index 10ddb920c9..22cc906d09 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/autopilot/AutopilotStateModel.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/autopilot/AutopilotStateModel.kt @@ -154,7 +154,11 @@ class AutopilotStateModel : ViewModel(), IOchAutopilotStatusListener, ILineCall override fun startAutopilotTimeOut() { OchChainLogManager.writeChainLog("自驾信息","启动自驾超时失败") - startAutopilotFail() + if(OchAutoPilotStatusListenerManager.autopilotState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + autopilotStateChange() + }else { + startAutopilotFail() + } } override fun startAutopilotFailure(startFailedCode: String?, startFailedMessage: String?) { From 124f3642cbe86cd1c96beedad6f8e1f95bf74293 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 15 Nov 2024 14:41:04 +0800 Subject: [PATCH 30/36] =?UTF-8?q?[6.7.3]=20[fix]=20[msgid+null=20=E5=A4=84?= =?UTF-8?q?=E7=90=86]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weaknet/bean/request/ShuttleEventRequest.kt | 5 +++-- .../weaknet/bean/response/BusRoutesResponse.kt | 15 ++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/request/ShuttleEventRequest.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/request/ShuttleEventRequest.kt index 0e10757b59..c68457ddab 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/request/ShuttleEventRequest.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/request/ShuttleEventRequest.kt @@ -17,7 +17,7 @@ data class ShuttleEventRequest(val requestId: String, val sn: String, val busine var tempEvent: Event?=null waitUpdateEvent.forEach { tempEvent = Event(it.eventType, - EventData(it.taskId,it.businessTime,it.writeVersion,it.siteId,it.seq,it.driverId) + EventData(it.taskId,it.businessTime,it.writeVersion,it.siteId,it.seq,it.driverId,it.msgId) ) eventList4Request.add(tempEvent!!) } @@ -35,5 +35,6 @@ data class EventData( var writeVersion: Long?, var siteId: Long?, var seq: Int?, - var driverId:Long? + var driverId:Long?, + var msgId:String? ) \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/BusRoutesResponse.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/BusRoutesResponse.kt index 59ac0563bc..3ca25f85b0 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/BusRoutesResponse.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/BusRoutesResponse.kt @@ -54,11 +54,16 @@ class BusRoutesResponse : BaseData() { temp?.seq = (taskAndsite.seq ?: 0) temp?.siteId = if (taskAndsite.siteId == null) 0 else taskAndsite.siteId!!.toInt() if(!taskAndsite.videoList.isNullOrEmpty()){ - val list = GsonUtils.fromJson>( - taskAndsite.videoList, - object : TypeToken?>() {}.type - ) - temp?.videoList = list.toMutableList() + try { + val list = GsonUtils.fromJson>( + taskAndsite.videoList, + object : TypeToken?>() {}.type + ) + temp?.videoList = list.toMutableList() + }catch (e:Exception){ + temp?.videoList = null + } + } result.add(temp!!) // 正在进行中的任务 From e66b8ec900f9719b057820d7fc738f198e222406 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 15 Nov 2024 15:52:15 +0800 Subject: [PATCH 31/36] =?UTF-8?q?[6.7.3]=20[fix]=20[add=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=A4=9A=E4=BD=99=E6=93=8D=E4=BD=9C]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/och/weaknet/ui/writeoff/WriteOffView.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/writeoff/WriteOffView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/writeoff/WriteOffView.kt index 22d3e2efa5..665c35d960 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/writeoff/WriteOffView.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/writeoff/WriteOffView.kt @@ -6,11 +6,10 @@ import androidx.appcompat.widget.AppCompatTextView import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.findViewTreeViewModelStoreOwner import com.mogo.commons.AbsMogoApplication -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.shuttle.weaknet.R import com.mogo.och.weaknet.repository.RepositoryManager +import com.mogo.och.weaknet.ui.taskrunning.TaskRunningAdapter class WriteOffView : AppCompatTextView, WriteOffViewModel.IwriteOffViewCallback { @@ -41,11 +40,9 @@ class WriteOffView : AppCompatTextView, WriteOffViewModel.IwriteOffViewCallback private fun startListenerWriteOff(){ viewModel?.setWriteOffCallback(this) - visibility = VISIBLE } private fun stopListenerWriteOff(){ viewModel?.setWriteOffCallback(null) - visibility = GONE if(RepositoryManager.supportWriteOff()) { val showText = AbsMogoApplication.getApp().getString(R.string.shuttle_write_off_count, 0) From f5ae2824798c78b7718147854069aa44969195ee Mon Sep 17 00:00:00 2001 From: donghongyu-pc Date: Fri, 15 Nov 2024 16:13:51 +0800 Subject: [PATCH 32/36] =?UTF-8?q?[6.7.2]=201=E3=80=81=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC=E7=9A=84Pad=E5=B1=8F=E5=B9=95?= =?UTF-8?q?=E9=80=82=E9=85=8D=E5=8F=B3=E4=B8=8B=E8=A7=92=E5=B0=8F=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E6=98=BE=E7=A4=BA=E8=B4=B4=E8=BE=B9=20=E6=97=A7?= =?UTF-8?q?=E6=AC=BE=EF=BC=9ALenovo=20TB-J706F=20=20=20=201600*2560=20?= =?UTF-8?q?=E6=96=B0=E6=AC=BE=EF=BC=9ATB138FC=20=20=20=201536*2560?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/hmi/map/MapContainerLayout.kt | 10 ++++++++++ .../src/main/res/layout/view_map_container.xml | 12 ++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt index 6d508bcc45..e24cc16dc4 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt @@ -12,6 +12,8 @@ import android.view.LayoutInflater import android.view.View import android.view.animation.AccelerateDecelerateInterpolator import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.marginBottom +import androidx.core.view.marginEnd import androidx.core.view.marginStart import androidx.core.view.marginTop import com.mogo.eagle.core.data.config.FunctionBuildConfig @@ -44,6 +46,8 @@ class MapContainerLayout @JvmOverloads constructor( private var mapMaxHeight = 0 private var maxMarginStart = 0 private var maxMarginTop = 0 + private var maxMarginEnd = 0 + private var maxMarginBottom = 0 private var zoomInAnimator: ValueAnimator? = null private var zoomOutAnimator: ValueAnimator? = null @@ -102,6 +106,8 @@ class MapContainerLayout @JvmOverloads constructor( mapMinHeight = overMapView.height maxMarginStart = overMapView.marginStart maxMarginTop = overMapView.marginTop + maxMarginEnd = overMapView.marginEnd + maxMarginBottom = overMapView.marginBottom } override fun onAttachedToWindow() { @@ -164,6 +170,8 @@ class MapContainerLayout @JvmOverloads constructor( layoutParams.height = evaluator.evaluate(it.animatedFraction, mapMinHeight, mapMaxHeight) layoutParams.leftMargin = evaluator.evaluate(it.animatedFraction, maxMarginStart, 0) layoutParams.topMargin = evaluator.evaluate(it.animatedFraction, maxMarginTop, 0) + layoutParams.rightMargin = evaluator.evaluate(it.animatedFraction, maxMarginEnd, 0) + layoutParams.bottomMargin = evaluator.evaluate(it.animatedFraction, maxMarginBottom, 0) } } zoomInAnimator?.interpolator = AccelerateDecelerateInterpolator() @@ -181,6 +189,8 @@ class MapContainerLayout @JvmOverloads constructor( layoutParams.height = evaluator.evaluate(it.animatedFraction, mapMaxHeight, mapMinHeight) layoutParams.leftMargin = evaluator.evaluate(it.animatedFraction, 0, maxMarginStart) layoutParams.topMargin = evaluator.evaluate(it.animatedFraction, 0, maxMarginTop) + layoutParams.rightMargin = evaluator.evaluate(it.animatedFraction, 0, maxMarginEnd) + layoutParams.bottomMargin = evaluator.evaluate(it.animatedFraction, 0, maxMarginBottom) } } zoomOutAnimator?.interpolator = AccelerateDecelerateInterpolator() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_map_container.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_map_container.xml index 71e98b3e88..7551ca0d15 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_map_container.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_map_container.xml @@ -23,21 +23,21 @@ android:id="@+id/overMapView" android:layout_width="270dp" android:layout_height="270dp" - android:layout_marginStart="1530dp" - android:layout_marginTop="1204dp" + android:layout_marginEnd="40dp" + android:layout_marginBottom="40dp" + android:focusable="false" + android:focusableInTouchMode="false" app:bottomPadding="160" app:compassDrawable="@drawable/taxt_u_p_map_car_light" app:endPointDrawable="@drawable/taxi_overmap_endpoint" app:globalPathColor="#39BA90" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" app:leftPadding="70" app:mapStyleExtraPath="over_view_style_extra.data" app:mapStylePath="over_view_style.data" app:resetDrawable="@null" app:rightPadding="70" - android:focusable="false" - android:focusableInTouchMode="false" app:roadRangeDrawable="@drawable/taxi_overmap_road_range" app:roadTrajectoryDrawable="@drawable/taxi_orvermap_road_trajectory" app:startPointDrawable="@drawable/taxi_overmap_startpoint" From 1bd92600c3232d923f610248af44752fef33816e Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 15 Nov 2024 16:27:25 +0800 Subject: [PATCH 33/36] =?UTF-8?q?[6.7.3]=20[fix]=20[=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=20=E4=BF=9D=E7=95=99=E6=AD=A3?= =?UTF-8?q?=E5=9C=A8=E6=89=A7=E8=A1=8C=E5=92=8C=E5=B7=B2=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E4=BB=BB=E5=8A=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weaknet/repository/db/repository/TaskDb.kt | 9 ++++++++- .../hmi/ui/setting/DebugSettingView.kt | 18 ++++++++++++++++++ .../src/main/res/layout/view_debug_setting.xml | 13 ++++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt index c3e4d98a37..c56453a56f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt @@ -56,8 +56,15 @@ object TaskDb : IDbRepository { taskDataDao.insert(*needAddDatas.toTypedArray()) } if (needMinusDatas.isNotEmpty()) { + val needSaveTask = mutableListOf() // 删除任务 - taskDataDao.delete(*needMinusDatas.toTypedArray()) + needMinusDatas.forEach { + if(it.status==TaskDataBean.useing||it.status==TaskDataBean.used){ + needSaveTask.add(it) + } + } + val failneedMinusDatas = needMinusDatas-needSaveTask + taskDataDao.delete(*failneedMinusDatas.toTypedArray()) } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index e4c3bc988c..909a5e1e78 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -9,6 +9,8 @@ import android.content.Intent import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Build +import android.os.Environment +import android.os.Environment.* import android.os.Process import android.text.Html import android.text.TextUtils @@ -115,6 +117,7 @@ import com.mogo.eagle.core.utilcode.util.AppUtils import com.mogo.eagle.core.utilcode.util.BarUtils import com.mogo.eagle.core.utilcode.util.CommonUtils import com.mogo.eagle.core.utilcode.util.DeviceUtils +import com.mogo.eagle.core.utilcode.util.FileUtils import com.mogo.eagle.core.utilcode.util.KeyboardUtils import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ParseVersionUtils @@ -140,6 +143,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.btChangeEnv import kotlinx.android.synthetic.main.view_debug_setting.view.btnAppReboot import kotlinx.android.synthetic.main.view_debug_setting.view.btnBrakeThreshold import kotlinx.android.synthetic.main.view_debug_setting.view.btnConnectServerIp +import kotlinx.android.synthetic.main.view_debug_setting.view.btnDeleteDB import kotlinx.android.synthetic.main.view_debug_setting.view.btnDisconnectIpc import kotlinx.android.synthetic.main.view_debug_setting.view.btnDrawFusion import kotlinx.android.synthetic.main.view_debug_setting.view.btnHdVisualAdjust @@ -315,6 +319,8 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg +import java.io.File +import java.io.File.* import java.text.SimpleDateFormat import java.util.Date import java.util.Timer @@ -1375,6 +1381,18 @@ internal class DebugSettingView @JvmOverloads constructor( CallerAutoPilotControlManager.connectSpecifiedServer(ip) } } + btnDeleteDB.setOnClickListener { + try{ + val ROOT_PATH = getExternalStorageDirectory().absolutePath + separator + "Mogo" + separator + "APP_cache" + separator + val dbDir = File(ROOT_PATH) + if(dbDir.exists()&&dbDir.isDirectory){ + FileUtils.deleteFilesInDir(dbDir) + } + }catch (e:Exception){ + + } + + } //是否开启异常上报 tbReportWarning.isChecked = FunctionBuildConfig.isReportWarning diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index e7453824c8..cf29f61bc1 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -1328,12 +1328,23 @@ +