diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/LineManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/LineManager.kt index fe6eff2ba7..3e73f29436 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/LineManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/line/LineManager.kt @@ -3,6 +3,7 @@ package com.mogo.och.common.module.manager.autopilot.line import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.function.call.map.CallerMapGlobalTrajectoryDrawManager import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.utils.CallerBase import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.ContraiInfo @@ -34,6 +35,59 @@ object LineManager : CallerBase() { */ var endStation: BusStationBean? = null + /** + * 设置站点信息 + */ + fun setStartAndEndStation(startStation: BusStationBean?,endStation: BusStationBean?){ + this.startStation = startStation + this.endStation = endStation + OchChainLogManager.writeChainLogAutopilot("自驾参数","${startStation}---${endStation}") + } + + fun getStations(function: (start:BusStationBean,end:BusStationBean) -> Unit){ + startStation?.let { start-> + endStation?.let { end -> + function.invoke(start,end) + } + } + } + fun getStationsWithContrai(function: (start:BusStationBean,end:BusStationBean,contrai: ContraiInfo) -> Unit){ + startStation?.let { start-> + endStation?.let { end -> + contraiInfo?.let {contrai-> + function.invoke(start,end,contrai) + } + } + } + } + + fun getStationsWithLine(function: (start:BusStationBean,end:BusStationBean,lineInfo: LineInfo) -> Unit){ + startStation?.let { start-> + endStation?.let { end -> + lineInfos?.let {line-> + function.invoke(start,end, line) + } + } + } + } + fun getStationsWithLineAndContrai(function: (start:BusStationBean,end:BusStationBean,lineInfo: LineInfo,contrai: ContraiInfo) -> Unit){ + startStation?.let { start-> + endStation?.let { end -> + lineInfos?.let {line-> + contraiInfo?.let { contrai -> + function.invoke(start,end, line,contrai) + } + } + } + } + } + + fun getStartStation(function: (start:BusStationBean) -> Unit){ + startStation?.let { start -> + function.invoke(start) + } + } + @JvmStatic fun setLineInfo(lineInfo: LineInfo?){ if(lineInfo==null){ diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt index ccf997dd39..0394150ed2 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt @@ -43,7 +43,7 @@ object OchChainLogManager { // 局域网内socket 连接状态流转 const val EVENT_KEY_INFO_SCANNER = "analytics_event_och_scanner" - // 局域网内socket 连接状态流转 + // 自动驾驶日志群 const val EVENT_KEY_INFO_AUTOPILOT = "analytics_event_och_autopilot" const val EVENT_KEY_INFO_VOICE_TTS = "analytics_event_och_voice_tts" diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java index a7560f399c..980f6ecaee 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java @@ -144,6 +144,7 @@ public class BusStationBean { return "BusStationBean{" + "siteId=" + siteId + ", name='" + name + '\'' + + ", nameKr='" + nameKr + '\'' + ", seq=" + seq + ", gcjLon=" + gcjLon + ", gcjLat=" + gcjLat + @@ -151,8 +152,8 @@ public class BusStationBean { ", lat=" + lat + ", drivingStatus=" + drivingStatus + ", leaving=" + leaving + + ", introduction='" + introduction + '\'' + + ", isPlayTts=" + isPlayTts + '}'; } - - } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskRepository.kt index 9a38600a6f..89ad00b521 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskRepository.kt @@ -81,10 +81,12 @@ object TaskRepository { it.status = TaskDataBean.useing // 更新任务状态 taskDataDao?.insert(it) + OchChainLogManager.writeChainLogDb("开始任务", "变更线路:${lineId}_${lineName}_task:${taskId} 为正在使用的状态") } CallerLogger.d(TAG,"更新任务状态用时:${System.currentTimeMillis()-startTime}") startTime = System.currentTimeMillis() updateCount = TaskSiteRepository.startTask(taskId, lineId, lineName) + OchChainLogManager.writeChainLogDb("开始任务", "把正在使用的数据更新到RunningTask表格一共${updateCount}行数据") CallerLogger.d(TAG,"插入正在运行的线路用时:${System.currentTimeMillis()-startTime}") } catch (e: Exception) { if (e is DataException) { @@ -95,6 +97,7 @@ object TaskRepository { it.status = TaskDataBean.unUse // 更新任务状态 taskDataDao?.insert(it) + OchChainLogManager.writeChainLogDb("开始任务", "异常情况${lineId}_${lineName}_task:${taskId} 为未使用的状态 原因:${e.message}") } } updateCount = null diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/BusLineModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/BusLineModel.kt index 4ae7010d17..003db0cab4 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/BusLineModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/BusLineModel.kt @@ -286,16 +286,17 @@ object BusLineModel { // 获取正在进行中的具体信息 val runnintTaskAndSites = TaskSiteRepository.queryRunningTask(it) if(runnintTaskAndSites.isNullOrEmpty()||runnintTaskAndSites.size<2){ - // TODO: 错误数据需要上报一下 有进行中的任务 在正在跑的任务重没有数据 + OchChainLogManager.writeChainLogDb("加载任务", "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}") return } val db2Beans = BusRoutesResponse.db2Beans(runnintTaskAndSites) stationList = db2Beans.first startStationIndex = db2Beans.second stationList?.let {stationlist-> - LineManager.startStation = stationlist[startStationIndex] + val startStation = stationlist[startStationIndex] if (startStationIndex < stationlist.size-1) { - LineManager.endStation = stationlist[startStationIndex + 1] + val endStation = stationlist[startStationIndex + 1] + LineManager.setStartAndEndStation(startStation,endStation) } } @@ -324,6 +325,7 @@ object BusLineModel { } TaskRepository.addOrUpdate(*tempList.toTypedArray()) OrderModel.queryBusRoutes() + OchChainLogManager.writeChainLogDb("加载任务", "异常情况:多个正在进行的任务 task:${runningTaskInfo} event:${queryLastData.taskId}有一个和event表对应使用相同的一个 另一个置为已使用") return } } @@ -331,6 +333,7 @@ object BusLineModel { runningTaskInfo.forEach { it.status = TaskDataBean.used } + OchChainLogManager.writeChainLogDb("加载任务", "异常情况:多个正在进行的任务 task:${runningTaskInfo} 全部置为已使用 从后台加载正在使用的任务") TaskRepository.addOrUpdate(*runningTaskInfo.toTypedArray()) loadServerRuningTask() } @@ -345,7 +348,7 @@ object BusLineModel { if(queryTaskById==null||queryTaskById.status!=TaskDataBean.used) { OchChainLogManager.writeChainLogDb( "业务数据", - "本地没有正在运行的数据,服务器端有" + "本地没有正在运行的数据,服务器端有${it}" ) LineRepository.saveRunningInfo( it.lineId, @@ -395,27 +398,26 @@ object BusLineModel { // 滑动出发 fun leaveStation(){ //开始站点: leaving false->true - LineManager.startStation?.let { startStation -> - startStation.drivingStatus = TaskSiteDataBean.drivingStatusCurrent - startStation.isLeaving = true + LineManager.getStartStation { + it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + it.isLeaving = true if (currentTask != null && currentTask!!.taskId != null) { currentTask?.let { task -> if (task.taskId!=null&&task.lineId!=null) { - TaskSiteRepository.updateLeave(task.taskId!!, startStation.siteId.toLong(), true) + TaskSiteRepository.updateLeave(task.taskId!!, it.siteId.toLong(), true) + OchChainLogManager.writeChainLogDb("滑动出发", "task:${currentTask}__taskId:${currentTask?.taskId}") // 设置滑动出发任务 LineManager.lineInfos?.lineName?.let { lineName-> EventRepository.saveEventTaskLeaveSite( task.taskId!!, task.lineId!!, - startStation.siteId.toLong(), - startStation.seq, + it.siteId.toLong(), + it.seq, task.taskStartTime, lineName ) } - } - } } else { OchChainLogManager.writeChainLog( @@ -430,41 +432,43 @@ object BusLineModel { } // 到站 fun arrivedStation() { - // 开始站点:leaving true->false drivingStatus 2->1 - LineManager.startStation?.let { - it.drivingStatus = TaskSiteDataBean.drivingStatusPassed - it.isLeaving = false + LineManager.getStations { start, end -> + // 开始站点:leaving true->false drivingStatus 2->1 + start.drivingStatus = TaskSiteDataBean.drivingStatusPassed + start.isLeaving = false if(currentTask!=null&& currentTask!!.taskId!=null){ currentTask?.let { task-> if (task.taskId!=null&&task.lineId!=null) { - TaskSiteRepository.updateDrivingStatusAndLeave(task.taskId!!,it.siteId.toLong(),TaskSiteDataBean.drivingStatusPassed,false) + TaskSiteRepository.updateDrivingStatusAndLeave(task.taskId!!,start.siteId.toLong(),TaskSiteDataBean.drivingStatusPassed,false) // 设置到站任务 LineManager.lineInfos?.let {lineInfo -> - EventRepository.saveEventTaskArriveSite(task.taskId!!,task.lineId!!,it.siteId.toLong(),it.seq,task.taskStartTime,lineInfo.lineName) + EventRepository.saveEventTaskArriveSite(task.taskId!!,task.lineId!!,start.siteId.toLong(),start.seq,task.taskStartTime,lineInfo.lineName) } } } }else{ OchChainLogManager.writeChainLog("到站_数据更新_error","task:${currentTask}__taskId:${currentTask?.taskId}") } - } - // 结束站点: drivingStatus 3-2 - LineManager.endStation?.let { - it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + // 结束站点: drivingStatus 3-2 + end.drivingStatus = TaskSiteDataBean.drivingStatusCurrent if(currentTask!=null&& currentTask!!.taskId!=null){ currentTask?.taskId?.let { taskId-> - TaskSiteRepository.updateDrivingStatus(taskId,it.siteId.toLong(),TaskSiteDataBean.drivingStatusCurrent) + TaskSiteRepository.updateDrivingStatus(taskId,end.siteId.toLong(),TaskSiteDataBean.drivingStatusCurrent) } }else{ OchChainLogManager.writeChainLog("到站_数据更新_error","task:${currentTask}__taskId:${currentTask?.taskId}") } + val changeInfo = + "taskId:${currentTask?.taskId}--lineId:${currentTask?.lineId}--currentStationName:${start.name}--finalNextStationName:${end.name}" + OchChainLogManager.writeChainLog("到站", changeInfo) } stationList?.let { startStationIndex+=1 - LineManager.startStation = LineManager.endStation + val startStation = LineManager.endStation if(startStationIndex+1< it.size){ - LineManager.endStation = it[startStationIndex+1] + val endStation = it[startStationIndex+1] + LineManager.setStartAndEndStation(startStation,endStation) } } } @@ -494,11 +498,12 @@ object BusLineModel { } } } + val changeInfo = "taskId:${currentTask?.taskId}--lineInfo:${LineManager.lineInfos}" + OchChainLogManager.writeChainLog("结束任务", changeInfo) currentTask = null LineManager.lineInfos = null - LineManager.startStation = null - LineManager.endStation = null + LineManager.setStartAndEndStation(null,null) stationList = mutableListOf() startStationIndex = 0 } 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 ad59c6ddd2..09299e9c12 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 @@ -327,27 +327,18 @@ object OrderModel { */ private fun leaveStationSuccess() { onStartAutopilot() - - if(LineManager.startStation!=null&&LineManager.endStation!=null&&LineManager.lineInfos!=null){ - LineManager.startStation?.let {startStation-> - LineManager.endStation?.let {endStation-> - leaveTTSTips(endStation.name, startStation.nameKr) - - //给bus外屏发送 - LedScreenManager.sendTripInfo2Led( - LedScreenManager.LEAVE_STATION, - LineManager.lineInfos!!.lineName, - startStation.name, - endStation.name, - BusLineModel.isLastStation()==true - ) - } - } - }else{ - ToastUtils.showShort("未设置起始或终点站点") + LineManager.getStations { start, end -> + leaveTTSTips(end.name, end.nameKr) + //给bus外屏发送 + LedScreenManager.sendTripInfo2Led( + LedScreenManager.LEAVE_STATION, + LineManager.lineInfos!!.lineName, + start.name, + end.name, + BusLineModel.isLastStation()==true + ) } - BusLineModel.leaveStation() updateBusStatus() @@ -461,22 +452,16 @@ object OrderModel { } private fun arriveStationSuccess() { - if(LineManager.startStation!=null&&LineManager.endStation!=null&&LineManager.lineInfos!=null){ - LineManager.startStation?.let {startStation-> - LineManager.endStation?.let {endStation-> - ShuttleVoiceManager.arrivedStationBus(endStation.name, endStation.nameKr) - //给bus外屏发送 - LedScreenManager.sendTripInfo2Led( - LedScreenManager.ARRIVE_STATION, - LineManager.lineInfos!!.lineName, - startStation.name, - endStation.name, - BusLineModel.isLastStation()==true - ) - } - } - }else{ - ToastUtils.showShort("未设置起始或终点站点") + LineManager.getStations { start, end -> + ShuttleVoiceManager.arrivedStationBus(end.name, end.nameKr) + //给bus外屏发送 + LedScreenManager.sendTripInfo2Led( + LedScreenManager.ARRIVE_STATION, + LineManager.lineInfos!!.lineName, + start.name, + end.name, + BusLineModel.isLastStation()==true + ) } BusLineModel.arrivedStation() updateBusStatus() @@ -560,8 +545,8 @@ object OrderModel { BusLineModel.setDemoMode() - LineManager.startStation?.let {startStation -> - if (startStation.isLeaving) { + LineManager.getStartStation { + if (it.isLeaving) { mADASStatusCallback?.hideSlidePanel() isGoingToNextStation = true }else{ @@ -704,21 +689,18 @@ object OrderModel { @JvmStatic fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean,source:Int) { - LineManager.startStation?.let {startStation-> - LineManager.endStation?.let {endStation-> - OchAutopilotAnalytics.triggerStartAutopilotEvent( - isRestart, - send, - startStation.name, - endStation.name, - LineManager.lineInfos!!.lineId.toInt(), - "", - System.currentTimeMillis(), - source - ) - } + LineManager.getStations { start, end -> + OchAutopilotAnalytics.triggerStartAutopilotEvent( + isRestart, + send, + start.name, + end.name, + LineManager.lineInfos!!.lineId.toInt(), + "", + System.currentTimeMillis(), + source + ) } - } fun triggerUpdateStartAutoPilotSessionId(sessionId: Long) { @@ -726,15 +708,11 @@ object OrderModel { } fun triggerUnableStartAPReasonEvent() { - LineManager.startStation?.let {startStation-> - LineManager.endStation?.let {endStation-> - if(LineManager.lineInfos!=null){ - OchAutopilotAnalytics.triggerUnableStartAPReasonEvent( - startStation.name, endStation.name,LineManager.lineInfos!!.lineId.toString() , "", - OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason - ) - } - } + LineManager.getStationsWithLine { start, end, line -> + OchAutopilotAnalytics.triggerUnableStartAPReasonEvent( + start.name, end.name,line.lineId.toString() , "", + OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + ) } } @@ -757,40 +735,36 @@ object OrderModel { } private fun initAutopilotControlParameters(): AutopilotControlParameters? { - if(LineManager.startStation!=null&&LineManager.endStation!=null&&LineManager.lineInfos!=null&&LineManager.contraiInfo!=null){ - LineManager.startStation?.let {startStation-> - LineManager.endStation?.let {endStation-> - val parameters = AutopilotControlParameters() - parameters.routeID = LineManager.lineInfos!!.lineId.toInt() - parameters.routeName = LineManager.lineInfos!!.lineName - parameters.startName = startStation.name - parameters.endName = endStation.name - parameters.startLatLon = AutoPilotLonLat(startStation.lat, startStation.lon) - parameters.endLatLon = AutoPilotLonLat(endStation.lat, endStation.lon) - parameters.vehicleType = VEHICLE_TYPE + var parameters:AutopilotControlParameters? = null + LineManager.getStationsWithLineAndContrai { start, end, lineInfo, contrai -> + parameters = AutopilotControlParameters() + parameters?.routeID = lineInfo.lineId.toInt() + parameters?.routeName = lineInfo.lineName + parameters?.startName = start.name + parameters?.endName = end.name + parameters?.startLatLon = AutoPilotLonLat(start.lat, start.lon) + parameters?.endLatLon = AutoPilotLonLat(end.lat, end.lon) + parameters?.vehicleType = VEHICLE_TYPE - if (parameters.autoPilotLine == null) { - parameters.autoPilotLine = AutoPilotLine( - LineManager.lineInfos!!.lineId, - LineManager.lineInfos!!.lineName, - LineManager.contraiInfo!!.csvFileUrl, - LineManager.contraiInfo!!.csvFileMd5, - LineManager.contraiInfo!!.txtFileUrl, - LineManager.contraiInfo!!.txtFileMd5, - LineManager.contraiInfo!!.contrailSaveTime, - "", - "", - "", - "", - "", - 0L - ) - } - - return parameters - } + if (parameters?.autoPilotLine == null) { + parameters?.autoPilotLine = AutoPilotLine( + lineInfo.lineId, + lineInfo.lineName, + contrai.csvFileUrl, + contrai.csvFileMd5, + contrai.txtFileUrl, + contrai.txtFileMd5, + contrai.contrailSaveTime, + "", + "", + "", + "", + "", + 0L + ) } - }else{ + } + if(parameters==null){ ToastUtils.showShort("未设置起始或终点站点") } return null @@ -801,21 +775,15 @@ object OrderModel { TrajectoryAndDistanceManager.setStationPoint(null, null, null) return } - if(LineManager.startStation!=null&&LineManager.endStation!=null&&LineManager.lineInfos!=null){ - LineManager.startStation?.let {startStation-> - LineManager.endStation?.let {endStation-> - val startStationLocation = MogoLocation() - startStationLocation.latitude = startStation.gcjLat - startStationLocation.longitude = startStation.gcjLon + LineManager.getStationsWithLine { start, end, lineInfo -> + val startStationLocation = MogoLocation() + startStationLocation.latitude = start.gcjLat + startStationLocation.longitude = start.gcjLon - val endStationLocation = MogoLocation() - endStationLocation.latitude = endStation.gcjLat - endStationLocation.longitude = endStation.gcjLon - TrajectoryAndDistanceManager.setStationPoint(startStationLocation, endStationLocation, LineManager.lineInfos!!.lineId) - } - } - }else{ - ToastUtils.showShort("未设置起始或终点站点") + val endStationLocation = MogoLocation() + endStationLocation.latitude = end.gcjLat + endStationLocation.longitude = end.gcjLon + TrajectoryAndDistanceManager.setStationPoint(startStationLocation, endStationLocation, lineInfo.lineId) } } }