diff --git a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/BridgeProvider.kt b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/BridgeProvider.kt index 217e99139d..070350fc48 100644 --- a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/BridgeProvider.kt +++ b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/BridgeProvider.kt @@ -7,6 +7,7 @@ import com.mogo.eagle.core.function.call.base.CallerBase import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON import com.mogo.eagle.core.utilcode.util.CoordinateUtils +import com.mogo.och.bridge.autopilot.line.LineManager import com.mogo.och.bridge.autopilot.location.OchLocationManager import com.mogo.och.bridge.distance.TrajectoryAndDistanceManager import com.mogo.och.bridge.bridge.OchBridgeManager @@ -68,6 +69,19 @@ class BridgeProvider : BridgeService, CallerBase() { removeListener(tag) } + override fun startAutopilot(type: Int) { + when (type) { + 0 -> {LineManager.unmannedStartAutopilot(false)} + 1 -> {LineManager.unmanneAutopilotContinue(false)} + 2 -> {} + else -> {} + } + } + + override fun taskManager(type: Int, index: Int) { + invokeTaskManagerTestArrived(index) + } + override fun doSomeAfterAddListener(tag: String, listener: BridgeListener) { // 轨迹和距离回调 TrajectoryManager.doSomeAfterBridgeListener() @@ -133,5 +147,11 @@ class BridgeProvider : BridgeService, CallerBase() { } } + fun invokeTaskManagerTestArrived(indexStation:Int){ + M_LISTENERS.forEach { + it.value.onTestArrivedStation(indexStation) + } + } + } \ No newline at end of file diff --git a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/IOchAutopilotStatusListener.java b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/IOchAutopilotStatusListener.java index 1f77f40952..e07a6c0222 100644 --- a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/IOchAutopilotStatusListener.java +++ b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/IOchAutopilotStatusListener.java @@ -3,6 +3,10 @@ package com.mogo.och.bridge.autopilot.autopilot; import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters; import com.mogo.och.bridge.autopilot.autopilot.bean.ArrivedStation; import com.zhjt.mogo.adas.data.AdasConstants; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification; + +import org.jetbrains.annotations.Nullable; import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; @@ -40,6 +44,23 @@ public interface IOchAutopilotStatusListener { default void onAutopilotArriveAtStation(ArrivedStation arrivalNotification) { } + /** + * 自动驾驶离站 + * @param taskId + * @param taskStartNotification + */ + default void onAutopilotLeaveStation(Long taskId, TaskStartNotification taskStartNotification){ + } + + /** + * 自动驾驶离站 + * @param taskId + * @param taskStartNotification + */ + default void onArriveAtStationByTaskManager(Long taskId, TaskArrivalNotification taskStartNotification){ + } + + /** * 工控机获取SN */ diff --git a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotManager.kt b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotManager.kt index 4fc28a7efb..77cb11714b 100644 --- a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotManager.kt +++ b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotManager.kt @@ -122,8 +122,8 @@ object OchAutoPilotManager { * 继续启动自驾 */ @JvmStatic - fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory, vehicleSite : VehicleSite, parameters: AutopilotControlParameters): Long { - val sessionId = CallerAutoPilotControlManager.unmannedAutoPilotContinue(taskId, traj,vehicleSite, parameters) + fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory, startStation : VehicleSite,endStation : VehicleSite, parameters: AutopilotControlParameters): Long { + val sessionId = CallerAutoPilotControlManager.unmannedAutoPilotContinue(taskId, traj,startStation,endStation, parameters) globalSessionId.set(SessionWithTime(sessionId, System.currentTimeMillis(), -1L)) OchAutoPilotStatusListenerManager.fsmBackSessionId.set(-1L) OchAutopilotAnalytics.triggerStartAutopilotParameters(traj, parameters, sessionId) diff --git a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt index 03897ba137..ff6854b42e 100644 --- a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt +++ b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt @@ -23,6 +23,8 @@ import com.zhjt.mogo.adas.common.MessageType import com.zhjt.mogo.adas.data.AdasConstants import com.zhjt.mogo.adas.data.bean.ReceivedAck import com.zhjt.mogo.adas.data.bean.ReceivedAck.Status +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification import fsm.Fsm2024 import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg @@ -239,6 +241,23 @@ object OchAutoPilotStatusListenerManager : CallerBase() { return } } - /** - * 存在Session - */ - if (!OchAutoPilotManager.canStartAutopilotBySessionId()) { - return - } OchAutopilotAnalytics.triggerClickStartAutopilotTime(System.currentTimeMillis()) //1、判断轨迹url是否可用 if (_contraiInfo == null) { @@ -759,12 +753,6 @@ object LineManager : CallerBase() { return } } - /** - * 存在Session - */ - if (!OchAutoPilotManager.canStartAutopilotBySessionId()) { - return - } OchAutopilotAnalytics.triggerClickStartAutopilotTime(System.currentTimeMillis()) //1、判断轨迹url是否可用 if (_contraiInfo == null) { @@ -793,10 +781,10 @@ object LineManager : CallerBase() { return } _lineInfos?.let { lineInfo -> - startStation?.let { start-> + getStations { start, end -> val wayPoints = ArrayList() val blackPoints = ArrayList() - val vehicleSite = VehicleSite.builder() + val startStation = VehicleSite.builder() .coordinateType(AutopilotCoordinateTypeEnum.WGS84.code) .point(AutopilotPoint.builder().x(start.lon).y(start.lat).build()) .station(StationEnum.SITE.code) @@ -805,7 +793,17 @@ object LineManager : CallerBase() { .stationSeq(start.seq) .tag(start.tag) .build() - wayPoints.add(vehicleSite) + val endStation = VehicleSite.builder() + .coordinateType(AutopilotCoordinateTypeEnum.WGS84.code) + .point(AutopilotPoint.builder().x(end.lon).y(end.lat).build()) + .station(StationEnum.SITE.code) + .stationId(end.siteId.toLong()) + .stationName(end.name) + .stationSeq(end.seq) + .tag(end.tag) + .build() + wayPoints.add(startStation) + wayPoints.add(endStation) val traj = Trajectory.builder() .id(lineInfo.lineId) .name(lineInfo.lineName) @@ -817,7 +815,7 @@ object LineManager : CallerBase() { .wayPoints(wayPoints) .blackPoints(blackPoints) .build() - val sessionId = OchAutoPilotManager.unmannedAutoPilotContinue(lineInfo.taskId, traj,vehicleSite, parameters) + val sessionId = OchAutoPilotManager.unmannedAutoPilotContinue(lineInfo.taskId, traj,startStation, endStation,parameters) OchAutopilotAnalytics.triggerUpdateStartAutoPilotSessionId(sessionId, true) d( TAG, diff --git a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/device/checkvin/CheckVinManager.kt b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/device/checkvin/CheckVinManager.kt index 724e46d36a..e666166d0c 100644 --- a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/device/checkvin/CheckVinManager.kt +++ b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/device/checkvin/CheckVinManager.kt @@ -24,6 +24,7 @@ object CheckVinManager : IMoGoAutopilotCarConfigListener { override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) { checkVin() + CallerAutoPilotControlManager.sendTaskManagerRunningInfo() } fun getVin(): String { diff --git a/OCH/common/common/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt b/OCH/common/common/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt index 3a971944e8..61f42da3b1 100644 --- a/OCH/common/common/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt +++ b/OCH/common/common/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt @@ -86,6 +86,8 @@ object DebugDataDispatch { const val pncAction = "pncAction" const val collisionRisk = "CollisionRisk" const val mediaStationMedia = "stationMedia" + const val startAutopilot = "startAutopilot" + const val taskManager = "taskManager" // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "video" --ei add 2 --es url "rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid" // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "location" --es path "1111/11111" @@ -108,6 +110,8 @@ object DebugDataDispatch { // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "vlmMessage" --es message "前方100米有道路施工,施工长度100米,影响第1、2车道通行。" --ei id 128 --ef time 1880.0 // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "vlmImage" --ef time 1880.0 // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "stationMedia" +// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "startAutopilot" --ei startType 0 +// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "taskManager" --ei startType 0 --ei indexStation 3 // adb shell am broadcast -a com.hmi.v2x.trafficlight -f 0x011000000 --ei trafficLightCheckType 1 --ei trafficLightCountDown 0 --ez trafficLightIsShow true // 红绿灯 @@ -122,6 +126,15 @@ object DebugDataDispatch { } when (type) { + taskManager -> { + val type = intent.getIntExtra("startType", 0) + val indexStation = intent.getIntExtra("indexStation", 0) + BridgeManager.debugTaskManager(type,indexStation) + } + startAutopilot -> { + val type = intent.getIntExtra("startType", 0) + BridgeManager.debugStartAutopilot(type) + } mediaStationMedia -> { val introductionList = mutableListOf() introductionList.add( diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeListener.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeListener.kt index c4405b105e..4e53646e6d 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeListener.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeListener.kt @@ -28,4 +28,6 @@ interface BridgeListener { fun onPncInfoListener(pncAction: String) {} fun onCollisionRisk() {} + + fun onTestArrivedStation(indexStation:Int) {} } \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeManager.kt index cbbebc977e..d679db47f3 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeManager.kt @@ -35,4 +35,12 @@ object BridgeManager { bridgeService?.removeBridgeListener(tag) } + fun debugStartAutopilot(type:Int){ + bridgeService?.startAutopilot(type) + } + + fun debugTaskManager(type:Int,index:Int){ + bridgeService?.taskManager(type,index) + } + } \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeService.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeService.kt index a2c539aae2..59bd1c3cd7 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeService.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/birdge/BridgeService.kt @@ -13,4 +13,8 @@ interface BridgeService : IProvider { fun addBridgeListener(tag:String, listener:BridgeListener) fun removeBridgeListener(tag: String) + + fun startAutopilot(type: Int) + + fun taskManager(type: Int,index:Int) } \ No newline at end of file diff --git a/OCH/common/common/src/main/res/layout/common_visual_view.xml b/OCH/common/common/src/main/res/layout/common_visual_view.xml deleted file mode 100644 index 3d5f5aa763..0000000000 --- a/OCH/common/common/src/main/res/layout/common_visual_view.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.kt b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.kt index 556384ff19..5e42363b1c 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.kt +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.kt @@ -11,6 +11,17 @@ import java.util.Objects * @author tongchenfei */ open class BusStationBean { + companion object{ + const val drivingStatusInit = 0//0初始值 + const val drivingStatusPassed = 1//1已经过 + const val drivingStatusCurrent = 2//2当前站 + const val drivingStatusNotArrived = 3//3未到站 + + const val tagInit = 0//0初始值 + const val tagNormal = 1//1正常停靠 + const val tagSkip = 2//2 需要跳过 + } + var siteId: Int = 0 @JvmField diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/bean/response/BusRoutesResponse.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/bean/response/BusRoutesResponse.kt index 13ce5c4d93..31072afbda 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/bean/response/BusRoutesResponse.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/bean/response/BusRoutesResponse.kt @@ -103,7 +103,7 @@ class BusRoutesResponse : BaseData() { } result.add(temp!!) // 正在进行中的任务 - if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) { + if (temp!!.drivingStatus == BusStationBean.drivingStatusCurrent) { if (temp!!.tag != 2) { currentStationIndex = index } diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/model/LineModel.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/model/LineModel.kt index c4a47de91c..37c466550e 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/model/LineModel.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/model/LineModel.kt @@ -214,7 +214,7 @@ object LineModel { null } else { // startStationIndex == stationList!!.size - 1 - startStationIndex == getLastStationPos(stationList!!)-1 + nextStationIndex == getLastStationPos(stationList!!) } } @@ -334,7 +334,7 @@ object LineModel { fun startTaskMessage(): Boolean { if (!stationList.isNullOrEmpty()) { - return startStationIndex == 0 && stationList!!.first().drivingStatus == TaskSiteDataBean.drivingStatusCurrent && !stationList!!.first().isLeaving + return startStationIndex == 0 && stationList!!.first().drivingStatus == BusStationBean.drivingStatusCurrent && !stationList!!.first().isLeaving } return false } diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/model/OrderModel.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/model/OrderModel.kt index 99bc38cde5..eab8d0c759 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/model/OrderModel.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/model/OrderModel.kt @@ -40,12 +40,18 @@ import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.common.module.utils.RxUtils +import com.mogo.och.data.bean.BusStationBean import com.mogo.och.shuttle.unmanned.R import com.mogo.och.unmanned.constant.BusConst import com.mogo.och.unmanned.repository.RepositoryManager -import com.mogo.och.unmanned.repository.db.bean.TaskSiteDataBean import com.mogo.och.unmanned.repository.exception.DataException import com.mogo.och.unmanned.util.ShuttleVoiceManager +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.AutopilotPoint +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite +import com.zhjt.mogo.adas.unmanned.task.enums.AutopilotCoordinateTypeEnum +import com.zhjt.mogo.adas.unmanned.task.enums.StationEnum import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -122,14 +128,128 @@ object OrderModel { // else -> {} // } } + + override fun onTestArrivedStation(indexStation: Int) { + super.onTestArrivedStation(indexStation) + try { + LineModel.currentTask?.taskId?.let { taskId -> + LineModel.stationList?.let { list -> + if (list.size > indexStation) { + val busStationBean = list.get(indexStation) + val behicleSite = VehicleSite.builder() + .coordinateType(AutopilotCoordinateTypeEnum.WGS84.code) + .point(AutopilotPoint.builder().x(busStationBean.lon).y(busStationBean.lat).build()) + .station(StationEnum.SITE.code) + .stationId(busStationBean.siteId.toLong()) + .stationName(busStationBean.name) + .stationSeq(busStationBean.seq) + .tag(busStationBean.tag) + .build() + val mockInfo = TaskArrivalNotification(behicleSite,behicleSite,12.0) + ochAutopilotStatusListener.onArriveAtStationByTaskManager(taskId,mockInfo) + } + } + } + }catch (e:Exception){ + e.printStackTrace() + } + + } } private val ochAutopilotStatusListener = object : IOchAutopilotStatusListener { override fun onAutopilotArriveAtStation(arrivedStation: ArrivedStation?) { e(TAG, "行程日志-onAutopilotArriveAtStation arrive") - onArriveAt(arrivedStation, "底盘触发进站",false) + //onArriveAt(arrivedStation, "底盘触发进站") } + override fun onAutopilotLeaveStation( + taskId: Long?, + taskStartNotification: TaskStartNotification? + ) { + OchChainLogManager.writeChainLog("触发滑动出发,","taskId:$taskId taskStartNotification:${taskStartNotification}") + if(taskStartNotification?.isCloseDoorStartAuto==true){ + val curStation = taskStartNotification.curStation + val nextStation = taskStartNotification.nextStation + LineModel.currentTask?.let { task -> + if(task.taskId==taskId){ + LineManager.getStations { start, end -> + if(start.siteId.toLong()==curStation.stationId&&end.siteId.toLong()==nextStation.stationId){ + OchChainLogManager.writeChainLog("触发滑动出发,","触发成功") + driveToNextStation(false) + }else{ + OchChainLogManager.writeChainLog("触发滑动出发,","起始终点id不同触发失败") + } + } + }else{ + OchChainLogManager.writeChainLog("触发滑动出发,","taskId不同触发失败") + } + } + + } + } + + override fun onArriveAtStationByTaskManager( + taskId: Long?, + taskArrivalNotification: TaskArrivalNotification? + ) { + OchChainLogManager.writeChainLog("任务管理触发进站,","taskId:$taskId taskStartNotification:${taskArrivalNotification}") + taskId?.let { taskIdNotNull-> + LineModel.currentTask?.let { + if(it.taskId==taskIdNotNull){ + taskArrivalNotification?.station?.let { arrivedStation-> + LineModel.stationList?.forEachIndexed { index, busStationBean -> + if(busStationBean.siteId.toLong()==arrivedStation.stationId){ + if(busStationBean.tag==BusStationBean.tagSkip){ + OchChainLogManager.writeChainLog("任务管理触发进站,","触发到站是临时不停不进行向下操作") + return + } + } + } + + LineManager.getStations { start, end -> + if(end.siteId.toLong()==arrivedStation.stationId){ + onArriveAt(arrivedStation, "任务管理器触发进站") + }else{ + if(start.siteId.toLong()==arrivedStation.stationId){ + OchChainLogManager.writeChainLog("任务管理触发进站,","开始站点和到达站点一致 不到站正好调整好数据") + }else{ + + OchChainLogManager.writeChainLog("任务管理触发进站,","到达站点和${start}还有${end}都不一致但是taskId:${taskId}一致去数据库调整数据使之一致") + RepositoryManager.adjustAllStation(taskIdNotNull,arrivedStation) + ?.subscribeOn(Schedulers.io()) + ?.observeOn(AndroidSchedulers.mainThread()) + ?.subscribe(object : Observer { + override fun onSubscribe(d: Disposable) { + d(TAG, "onSubscribe") + + } + + override fun onError(e: Throwable) { + d(TAG, "onError${e.printStackTrace()}") + + } + + override fun onComplete() { + d(TAG, "onComplete") + } + + override fun onNext(data: Boolean) { + d(TAG, "onNext:${data}") + queryBusRoutes() + } + }) + } + } + } + } + }else{ + OchChainLogManager.writeChainLog("任务管理触发进站,","任务管理和pad端task 不一致请取消任务后重新选择任务") + } + } + } + + } } private val ochTransform = object : OchTransformDispatch { @@ -145,7 +265,7 @@ object OrderModel { //是否到站的围栏判断 离站状态并且自动驾驶还未触发到站 if (isGoingToNextStation && !isArrivedStation) { OCHThreadPoolManager.getsInstance().locationExecute { - onArriveAt(null, "兜底:距离站点15m内 每秒钟向底盘查询是否到站 底盘返回",false) + //onArriveAt(null, "兜底:距离站点15m内 每秒钟向底盘查询是否到站 底盘返回") } } } @@ -243,13 +363,15 @@ object OrderModel { } } - private fun onStartAutopilot(taskId: Long?) { + private fun onStartAutopilot() { //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 isGoingToNextStation = true if (CallerTaskListenerManager.isCarRunningTask()) { LineManager.unmanneAutopilotContinue(false) + d(TAG, "启动自驾:继续启动自驾") }else{ LineManager.unmannedStartAutopilot(true) + d(TAG, "启动自驾:下发轨迹启动自驾") } if (CallerAutoPilotStatusListenerManager.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING ) { @@ -284,7 +406,7 @@ object OrderModel { * 滑动出发 */ @JvmStatic - fun driveToNextStation() { + fun driveToNextStation(startAutopilot:Boolean) { if (LineModel.isLastStation() == true) { // 当前站是最后一站,结束当前行程 completeTask(true) @@ -292,7 +414,7 @@ object OrderModel { } LineManager.getStations().first?.let { startStation -> - startStation.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + startStation.drivingStatus = BusStationBean.drivingStatusCurrent startStation.isLeaving = true LineModel.currentTask?.let { task -> RepositoryManager.leaveStation( @@ -318,7 +440,9 @@ object OrderModel { } LineModel.leaveStationSuccess() isArrivedStation = false - onStartAutopilot(task.taskId) + if(startAutopilot) { + onStartAutopilot() + } ThirdDeviceData.leaveStation() @@ -336,8 +460,9 @@ object OrderModel { if (data) { LineModel.leaveStationSuccess() isArrivedStation = false - onStartAutopilot(task.taskId) - + if(startAutopilot) { + onStartAutopilot() + } ThirdDeviceData.leaveStation() updateBusStatus() @@ -458,7 +583,7 @@ object OrderModel { * @param data */ @JvmStatic - fun onArriveAt(data: ArrivedStation?, type: String,skipStation:Boolean) { + fun onArriveAt(data: VehicleSite?, type: String) { if (LineManager.getStations().second == null) { e(TAG, "行程日志-到站异常,取消后续操作结束") OchChainLogManager.writeChainLog("shuttle弱网", "$type 行程日志-到站异常,取消后续操作结束") @@ -478,9 +603,9 @@ object OrderModel { LineManager.lastArrivedSiteId = end.siteId isArrivedStation = true isGoingToNextStation = false - start.drivingStatus = TaskSiteDataBean.drivingStatusPassed + start.drivingStatus = BusStationBean.drivingStatusPassed start.isLeaving = false - end.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + end.drivingStatus = BusStationBean.drivingStatusCurrent RepositoryManager.arriveStation(end.seq, end.siteId.toLong(), LineModel.currentTask?.taskId ?: 0L) ?.subscribeOn(Schedulers.io()) @@ -515,9 +640,6 @@ object OrderModel { } LineModel.arrivedStationSuccess() updateBusStatus() - if(skipStation) { - driveToNextStation() - } } override fun onComplete() { @@ -541,9 +663,6 @@ object OrderModel { } LineModel.arrivedStationSuccess() updateBusStatus() - if(skipStation) { - driveToNextStation() - } } override fun onNext(data: Boolean) { @@ -555,6 +674,88 @@ object OrderModel { } + @JvmStatic + fun skipNextStation() { + // 手动点击到站 + LineManager.getStations { start, end -> + + if (isArrivedStation || end.siteId == LineManager.lastArrivedSiteId) return@getStations + + OchChainLogManager.writeChainLog("触发跳站", "点击") + end.tag = 2 + end.drivingStatus = BusStationBean.drivingStatusNotArrived + RepositoryManager.skipStation() + ?.subscribeOn(Schedulers.io()) + ?.observeOn(AndroidSchedulers.mainThread()) + ?.subscribe(object : Observer { + override fun onSubscribe(d: Disposable) { + d(TAG, "onSubscribe") + } + + override fun onError(e: Throwable) { + d(TAG, "onError${e.printStackTrace()}") + if (e is DataException) { + e.printStackTrace() + } + ThirdDeviceData.arriveStation() + d(TAG, "skipNextStation onComplete") + LineModel.stationList?.let { + //此处始发站应为上段路程的终点站 + val startStation = LineManager.getStations().first + if (LineModel.startStationIndex + 1 < it.size) { + //遍历当前路段起始点之后的数组,第一个正常停靠点即为该段终点 + val subStationList = it.subList(LineModel.startStationIndex + 1, it.size) + val endStation = subStationList.firstOrNull { bean -> + bean.tag != 2 + } + LineModel.nextStationIndex = it.indexOf(endStation) +// val endStation = stationlist[LineModel.startStationIndex + 1] + LineManager.setStartAndEndStation(startStation, endStation) + LineModel.callEyeMap(5) + } + } + LineModel.leaveStationSuccess() + ThirdDeviceData.leaveStation() + updateBusStatus() + + isArrivedStation = false + onStartAutopilot() + } + + override fun onComplete() { + ThirdDeviceData.arriveStation() + d(TAG, "skipNextStation onComplete") + LineModel.stationList?.let { + //此处始发站应为上段路程的终点站 + val startStation = LineManager.getStations().first + if (LineModel.startStationIndex + 1 < it.size) { + //遍历当前路段起始点之后的数组,第一个正常停靠点即为该段终点 + val subStationList = it.subList(LineModel.startStationIndex + 1, it.size) + val endStation = subStationList.firstOrNull { bean -> + bean.tag != 2 + } + LineModel.nextStationIndex = it.indexOf(endStation) +// val endStation = stationlist[LineModel.startStationIndex + 1] + LineManager.setStartAndEndStation(startStation, endStation) + LineModel.callEyeMap(6) + } + } + LineModel.leaveStationSuccess() + ThirdDeviceData.leaveStation() + updateBusStatus() + + isArrivedStation = false + onStartAutopilot() + } + + override fun onNext(data: Boolean) { + + } + }) + + } + } + // 登出 @JvmStatic fun logoutInner() { diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/RepositoryManager.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/RepositoryManager.kt index 975c36dfd6..8b46819cfd 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/RepositoryManager.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/RepositoryManager.kt @@ -27,6 +27,7 @@ import com.mogo.och.unmanned.repository.net.bean.response.PassengerWriteOffRespo import com.mogo.och.unmanned.repository.writeoff.IWriteOffRepository import com.mogo.och.unmanned.repository.writeoff.impl.WriteOffCacheRepository import com.mogo.och.unmanned.repository.writeoff.impl.WriteOffNormallRepository +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite import io.reactivex.Observable object RepositoryManager { @@ -138,6 +139,15 @@ object RepositoryManager { return lineRepository?.arriveStation(seq, siteId, taskId) } + fun skipStation(): Observable? { + return lineRepository?.skipStation() + } + + + fun adjustAllStation(taskId: Long, arrivedStation: VehicleSite): Observable? { + return lineRepository?.adjustAllStation(taskId,arrivedStation) + } + fun endTask(shiftsId: Long, taskId: Long): Observable? { return lineRepository?.endTask(shiftsId, taskId) } diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/bean/TaskSiteDataBean.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/bean/TaskSiteDataBean.kt index c5dfbc66cc..edd989e81e 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/bean/TaskSiteDataBean.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/bean/TaskSiteDataBean.kt @@ -3,6 +3,7 @@ package com.mogo.och.unmanned.repository.db.bean import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey +import com.mogo.och.data.bean.BusStationBean @Entity(tableName = TaskSiteDataBean.tableName) data class TaskSiteDataBean( @@ -143,6 +144,17 @@ data class TaskSiteDataBean( fun toTaskSiteDatas(querySites: List, shiftsId: Long, taskId: Long, lineName: String): MutableList { val result = mutableListOf() var temp: TaskSiteDataBean? = null + + // 先定义变量存储「第一个tag≠2」的元素seq值 + var targetSeq: Int? = null + +// 第一步:遍历找到第一个tag≠2的元素的seq + querySites.forEach { + if (it.tag != 2 && targetSeq == null) { + targetSeq = it.seq + } + } + querySites.forEach { temp = TaskSiteDataBean() temp?.taskId = taskId @@ -157,10 +169,14 @@ data class TaskSiteDataBean( temp?.gcjLat = it.gcjLat temp?.lon = it.lon temp?.lat = it.lat - if (it.seq == 1) { - temp?.drivingStatus = drivingStatusCurrent - } else { - temp?.drivingStatus = drivingStatusNotArrived + // 核心:根据tag条件设置drivingStatus + temp?.drivingStatus = when { + // 1. 找到第一个tag≠2的元素 → Current + targetSeq != null && it.seq == targetSeq -> BusStationBean.drivingStatusCurrent + // 2. 该元素之前的 → Passed + targetSeq != null && it.seq!! < targetSeq!! -> BusStationBean.drivingStatusPassed + // 3. 其余情况(包括所有tag=2)→ NotArrived + else -> BusStationBean.drivingStatusNotArrived } temp?.leaving = false temp?.introduction = it.introduction @@ -174,9 +190,5 @@ data class TaskSiteDataBean( const val tableName: String = "used_task_data_table" - const val drivingStatusInit = 0//0初始值 - const val drivingStatusPassed = 1//1已经过 - const val drivingStatusCurrent = 2//2当前站 - const val drivingStatusNotArrived = 3//3未到站 } } diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/dao/TaskSiteDataDao.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/dao/TaskSiteDataDao.kt index 29647a0bea..c58afe3c47 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/dao/TaskSiteDataDao.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/dao/TaskSiteDataDao.kt @@ -23,6 +23,11 @@ interface TaskSiteDataDao { @Query("UPDATE ${TaskSiteDataBean.tableName} SET leaving = :leave , driving_status = :drivingStatusCurrent WHERE task_id = :taskId and site_id = :siteId") fun updateDrivingStatusANdLeave(taskId: Long, siteId: Long, drivingStatusCurrent: Int, leave: Int) + // 跳站中把tag 值为2 仅置运行表中 + @Query("UPDATE ${TaskSiteDataBean.tableName} SET leaving = :leave , driving_status = :drivingStatusCurrent , tag = :tag WHERE task_id = :taskId and site_id = :siteId") + fun updateDrivingStatusTagAndLeave(taskId: Long, siteId: Long, drivingStatusCurrent: Int, leave: Int , tag:Int) + + @Query("UPDATE ${TaskSiteDataBean.tableName} SET driving_status = :drivingStatusCurrent WHERE task_id = :taskId and site_id = :siteId") fun updateDrivingStatus(taskId: Long, siteId: Long, drivingStatusCurrent: Int) diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/repository/TaskSiteDb.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/repository/TaskSiteDb.kt index e4c34b2a15..b51ffea986 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/repository/TaskSiteDb.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/db/repository/TaskSiteDb.kt @@ -1,9 +1,11 @@ package com.mogo.och.unmanned.repository.db.repository +import androidx.room.Transaction import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager +import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.db.exception.DbException import com.mogo.och.shuttle.unmanned.R import com.mogo.och.unmanned.repository.db.IDbRepository @@ -95,6 +97,23 @@ object TaskSiteDb : IDbRepository { ) } } + fun updateDrivingStatusTagAndLeave( + taskId: Long, + siteId: Long, + drivingStatus: Int, + leave: Boolean, + tag:Int + ) { + BizLoopManager.runInIoThread { + taskSiteDataDao?.updateDrivingStatusTagAndLeave( + taskId, + siteId, + drivingStatus, + if (leave) 1 else 0, + tag + ) + } + } fun queryRunningTask(taskId: Long): List? { return taskSiteDataDao?.queryRunningTask(taskId) @@ -151,7 +170,7 @@ object TaskSiteDb : IDbRepository { runningSite.forEach { if (it.siteId == currentSiteId) { currentSeq = it.seq ?: 0 - it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + it.drivingStatus = BusStationBean.drivingStatusCurrent it.leaving = leaving return@forEach } @@ -159,15 +178,32 @@ object TaskSiteDb : IDbRepository { runningSite.forEach { val seq = it.seq ?: 0 if (seq < currentSeq) { - it.drivingStatus = TaskSiteDataBean.drivingStatusPassed + it.drivingStatus = BusStationBean.drivingStatusPassed it.leaving = true } else if (seq > currentSeq) { - it.drivingStatus = TaskSiteDataBean.drivingStatusNotArrived + it.drivingStatus = BusStationBean.drivingStatusNotArrived it.leaving = false } } return runningSite } + fun adjustAllStationByTaskId(queryRunningTask: List?) { + val runnable = object : Runnable { + @Transaction + override fun run() { + queryRunningTask?.forEach { + taskSiteDataDao?.updateDrivingStatusANdLeave( + it.taskId ?: 0, + it.siteId ?: 0, + it.drivingStatus ?: 0, + if (it.leaving == true) 1 else 0, + ) + } + } + } + BizLoopManager.runInIoThread(runnable) + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/ILineRepository.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/ILineRepository.kt index 70a2918926..d60b6c5de4 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/ILineRepository.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/ILineRepository.kt @@ -8,6 +8,7 @@ import com.mogo.och.unmanned.bean.response.CarExecutableTaskResponse import com.mogo.och.unmanned.bean.response.PointResponse import com.mogo.och.unmanned.repository.db.bean.LineDataBean import com.mogo.och.unmanned.repository.db.bean.TaskDataBean +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite import io.reactivex.Observable interface ILineRepository { @@ -32,6 +33,10 @@ interface ILineRepository { fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable? + fun skipStation(): Observable? + + fun adjustAllStation(taskId: Long, arrivedStation: VehicleSite):Observable? + fun endTask(shiftsId: Long, taskId: Long): Observable? fun queryCarExecutableTaskList(ochCommonServiceCallback: OchCommonServiceCallback) diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/impl/NormalRepository.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/impl/NormalRepository.kt index 23b96a3fa8..d0cb10dd76 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/impl/NormalRepository.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/impl/NormalRepository.kt @@ -22,13 +22,13 @@ import com.mogo.och.unmanned.bean.response.PointResponse import com.mogo.och.unmanned.model.LineModel import com.mogo.och.unmanned.repository.db.bean.LineDataBean import com.mogo.och.unmanned.repository.db.bean.TaskDataBean -import com.mogo.och.unmanned.repository.db.bean.TaskSiteDataBean import com.mogo.och.unmanned.repository.line.ILineRepository import com.mogo.och.unmanned.repository.net.NetInterface import com.mogo.och.unmanned.repository.net.exception.NetException import com.mogo.och.unmanned.repository.net.project.dali.bus.DaliBusServiceManager import com.mogo.och.unmanned.repository.net.project.mogo.bus.MogoBusServiceManager import com.mogo.och.unmanned.repository.net.project.mogo.shuttle.MogoShuttleServiceManager +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite import io.reactivex.Observable class NormalRepository : ILineRepository { @@ -103,7 +103,7 @@ class NormalRepository : ILineRepository { temp?.siteId = taskAndsite.siteId result.add(temp!!) // 正在进行中的任务 - if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) { + if (temp!!.drivingStatus == BusStationBean.drivingStatusCurrent) { if (temp!!.tag != 2) { currentStationIndex = index } @@ -201,6 +201,14 @@ class NormalRepository : ILineRepository { ) } + override fun skipStation(): Observable? { + return Observable.just(false) + } + + override fun adjustAllStation(taskId: Long, arrivedStation: VehicleSite):Observable? { + return Observable.just(false) + } + override fun endTask(shiftsId: Long, taskId: Long): Observable? { return normalLineInterface?.endTask(taskId) } diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/impl/WeaknetRepository.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/impl/WeaknetRepository.kt index 72d4f54e76..c80fdd5d85 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/impl/WeaknetRepository.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/repository/line/impl/WeaknetRepository.kt @@ -16,6 +16,7 @@ import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.ContraiInfo import com.mogo.och.shuttle.unmanned.R import com.mogo.och.unmanned.bean.request.QueryPointRequest @@ -29,7 +30,6 @@ import com.mogo.och.unmanned.model.LineModel.currentTask import com.mogo.och.unmanned.repository.db.bean.ContrailDataBean import com.mogo.och.unmanned.repository.db.bean.LineDataBean import com.mogo.och.unmanned.repository.db.bean.TaskDataBean -import com.mogo.och.unmanned.repository.db.bean.TaskSiteDataBean import com.mogo.och.unmanned.repository.db.repository.ContraiDb import com.mogo.och.unmanned.repository.db.repository.EventDb import com.mogo.och.unmanned.repository.db.repository.LineDb @@ -43,6 +43,7 @@ import com.mogo.och.unmanned.repository.net.project.dali.shuttle.DaliShuttleServ import com.mogo.och.unmanned.repository.net.project.saas.bus.SaasBusServiceManager import com.mogo.och.unmanned.repository.net.project.saas.scheduled.SaasScheduledServiceManager import com.mogo.och.unmanned.repository.net.project.saas.shuttle.SaasShuttleServiceManager +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite import io.reactivex.Observable class WeaknetRepository : ILineRepository { @@ -424,7 +425,7 @@ class WeaknetRepository : ILineRepository { TaskSiteDb.updateDrivingStatusAndLeave( task.taskId!!, start.siteId.toLong(), - TaskSiteDataBean.drivingStatusPassed, + BusStationBean.drivingStatusPassed, false ) // 设置到站任务 @@ -455,7 +456,7 @@ class WeaknetRepository : ILineRepository { TaskSiteDb.updateDrivingStatus( taskId, end.siteId.toLong(), - TaskSiteDataBean.drivingStatusCurrent + BusStationBean.drivingStatusCurrent ) } } else { @@ -476,6 +477,70 @@ class WeaknetRepository : ILineRepository { } + override fun skipStation(): Observable? { + return Observable.just(12) + .flatMap {temp-> + //1 恢复end站点的值并置tag为临时不停靠运行表中 + LineManager.getStations { start, end -> + if (currentTask != null && currentTask!!.taskId != null) { + currentTask?.let { task -> + if (task.taskId != null && task.lineId != null) { + TaskSiteDb.updateDrivingStatusTagAndLeave( + task.taskId!!, + end.siteId.toLong(), + BusStationBean.drivingStatusNotArrived, + false, + BusStationBean.tagSkip + ) + } + } + } else { + OchChainLogManager.writeChainLog( + "跳站点_数据更新_error", + "task:${currentTask}__taskId:${currentTask?.taskId}" + ) + CallerLogger.d(TAG, "跳斩_数据更新_error:task:${currentTask}__taskId:${currentTask?.taskId}") + } + val changeInfo = + "taskId:${currentTask?.taskId}--lineId:${currentTask?.lineId}--currentStationName:${start.name}--finalNextStationName:${end.name}" + OchChainLogManager.writeChainLog("到站", changeInfo) + CallerLogger.d(TAG, "到站:$changeInfo") + } + return@flatMap Observable.just(true) + } + } + + override fun adjustAllStation(taskId: Long, arrivedStation: VehicleSite): Observable? { + return Observable.just(12) + .flatMap {temp-> + //1 查询正在执行的任务 + val queryRunningTask = TaskSiteDb.queryRunningTask(taskId) + //2 根据参数arrivedStation 来设置正确的 当前站和下一站 + var arrivedStationIndex = -1 + queryRunningTask?.forEachIndexed { index, taskSiteDataBean -> + if (taskSiteDataBean.tag != BusStationBean.tagSkip) { + if (taskSiteDataBean.siteId == arrivedStation.stationId) { + arrivedStationIndex = index + taskSiteDataBean.drivingStatus = BusStationBean.drivingStatusCurrent + taskSiteDataBean.leaving = false + } else { + if (arrivedStationIndex < 0) { + taskSiteDataBean.drivingStatus = BusStationBean.drivingStatusPassed + taskSiteDataBean.leaving = false + } else { + taskSiteDataBean.drivingStatus = + BusStationBean.drivingStatusNotArrived + taskSiteDataBean.leaving = false + } + } + } + } + OchChainLogManager.writeChainLog("任务管理触发进站,","更新新的数据库类型去") + TaskSiteDb.adjustAllStationByTaskId(queryRunningTask) + return@flatMap Observable.just(true) + } + } + override fun endTask(shiftsId: Long, taskId: Long): Observable? { return Observable.just(taskId).flatMap { currentTask?.let { task -> diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/ui/taskrunning/TaskRunningModel.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/ui/taskrunning/TaskRunningModel.kt index f684648fd8..2798abdead 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/ui/taskrunning/TaskRunningModel.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/ui/taskrunning/TaskRunningModel.kt @@ -28,7 +28,7 @@ class TaskRunningModel : ViewModel(), IBusLinesCallback { } fun leaveStation() { - OrderModel.driveToNextStation() + OrderModel.driveToNextStation(true) } interface SwtichLineViewCallback { @@ -55,7 +55,7 @@ class TaskRunningModel : ViewModel(), IBusLinesCallback { } fun arriveStation() { - OrderModel.onArriveAt(null, "页面触发到站",false) + OrderModel.onArriveAt(null, "页面触发到站") } override fun onArriveStationSuccess() { @@ -84,7 +84,7 @@ class TaskRunningModel : ViewModel(), IBusLinesCallback { if (LineModel.isLastStation() == true) { return } - OrderModel.onArriveAt(null, "页面挑站触发到站",true) + OrderModel.skipNextStation() } } diff --git a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/ui/taskrunning/TaskRunningView.kt b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/ui/taskrunning/TaskRunningView.kt index e646d32376..bbc588af94 100644 --- a/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/ui/taskrunning/TaskRunningView.kt +++ b/OCH/shuttle/driver_unmanned/src/main/java/com/mogo/och/unmanned/ui/taskrunning/TaskRunningView.kt @@ -88,7 +88,6 @@ class TaskRunningView : ConstraintLayout, TaskRunningModel.SwtichLineViewCallbac }else{ viewModel?.skipStation() } - viewModel?.arriveStation() } unmanned_actv_arriver_station_new.setOnLongClickListener { viewModel?.arriveStation() diff --git a/OCH/shuttle/driver_unmanned/src/main/res/layout/shuttle_unmanned_container_view.xml b/OCH/shuttle/driver_unmanned/src/main/res/layout/shuttle_unmanned_container_view.xml index 36cd51df2c..56b75ec867 100644 --- a/OCH/shuttle/driver_unmanned/src/main/res/layout/shuttle_unmanned_container_view.xml +++ b/OCH/shuttle/driver_unmanned/src/main/res/layout/shuttle_unmanned_container_view.xml @@ -8,30 +8,30 @@ tools:ignore="MissingDefaultResource"> - + + + + + + + + + + - + + + + + + + + + + + + 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 9b61318290..84d3c7fc42 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 @@ -95,7 +95,7 @@ class BusRoutesResponse : BaseData() { } result.add(temp!!) // 正在进行中的任务 - if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) { + if (temp!!.drivingStatus == BusStationBean.drivingStatusCurrent) { if (temp!!.tag != 2) { currentStationIndex = index } 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 70bfb268d1..39ef0bce72 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 @@ -324,7 +324,7 @@ object LineModel { fun startTaskMessage():Boolean { if (!stationList.isNullOrEmpty()) { - return startStationIndex == 0 && stationList!!.first().drivingStatus == TaskSiteDataBean.drivingStatusCurrent && !stationList!!.first().isLeaving + return startStationIndex == 0 && stationList!!.first().drivingStatus == BusStationBean.drivingStatusCurrent && !stationList!!.first().isLeaving } return false } 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 6f99a573de..9cdff7c423 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 @@ -40,9 +40,9 @@ import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.common.module.utils.RxUtils +import com.mogo.och.data.bean.BusStationBean import com.mogo.och.shuttle.weaknet.R import com.mogo.och.weaknet.constant.BusConst -import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean import com.mogo.och.weaknet.repository.RepositoryManager import com.mogo.och.weaknet.repository.exception.DataException import com.mogo.och.weaknet.util.BusTrajectoryManager @@ -285,7 +285,7 @@ object OrderModel { } LineManager.getStations().first?.let {startStation-> - startStation.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + startStation.drivingStatus = BusStationBean.drivingStatusCurrent startStation.isLeaving = true LineModel.currentTask?.let { task-> RepositoryManager.leaveStation( @@ -472,9 +472,9 @@ object OrderModel { LineManager.lastArrivedSiteId = end.siteId isArrivedStation = true isGoingToNextStation = false - start.drivingStatus = TaskSiteDataBean.drivingStatusPassed + start.drivingStatus = BusStationBean.drivingStatusPassed start.isLeaving = false - end.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + end.drivingStatus = BusStationBean.drivingStatusCurrent RepositoryManager.arriveStation(end.seq,end.siteId.toLong(), LineModel.currentTask?.taskId?:0L) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt index 848e3b279d..5fd09c388d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt @@ -3,7 +3,7 @@ package com.mogo.och.weaknet.repository.db.bean import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -import com.mogo.och.weaknet.repository.db.bean.SiteDataBean +import com.mogo.och.data.bean.BusStationBean @Entity(tableName = TaskSiteDataBean.tableName) data class TaskSiteDataBean( @@ -159,9 +159,9 @@ data class TaskSiteDataBean( temp?.lon = it.lon temp?.lat = it.lat if(it.seq==1){ - temp?.drivingStatus = drivingStatusCurrent + temp?.drivingStatus = BusStationBean.drivingStatusCurrent }else{ - temp?.drivingStatus = drivingStatusNotArrived + temp?.drivingStatus = BusStationBean.drivingStatusNotArrived } temp?.leaving = false temp?.introduction = it.introduction @@ -175,9 +175,5 @@ data class TaskSiteDataBean( const val tableName: String = "used_task_data_table" - const val drivingStatusInit = 0//0初始值 - const val drivingStatusPassed = 1//1已经过 - const val drivingStatusCurrent = 2//2当前站 - const val drivingStatusNotArrived = 3//3未到站 } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt index b17d30720c..2497bb8cdb 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt @@ -5,6 +5,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager +import com.mogo.och.data.bean.BusStationBean import com.mogo.och.weaknet.repository.db.IDbRepository import com.mogo.och.weaknet.repository.db.MyDataBase import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean @@ -152,7 +153,7 @@ object TaskSiteDb : IDbRepository { runningSite.forEach { if (it.siteId == currentSiteId) { currentSeq = it.seq ?: 0 - it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + it.drivingStatus = BusStationBean.drivingStatusCurrent it.leaving = leaving return@forEach } @@ -160,10 +161,10 @@ object TaskSiteDb : IDbRepository { runningSite.forEach { val seq = it.seq ?: 0 if (seq < currentSeq) { - it.drivingStatus = TaskSiteDataBean.drivingStatusPassed + it.drivingStatus = BusStationBean.drivingStatusPassed it.leaving = true } else if (seq > currentSeq) { - it.drivingStatus = TaskSiteDataBean.drivingStatusNotArrived + it.drivingStatus = BusStationBean.drivingStatusNotArrived it.leaving = false } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt index 938fb08faa..bbc0268a64 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt @@ -100,7 +100,7 @@ class NormalRepository: ILineRepository { temp?.siteId = taskAndsite.siteId result.add(temp!!) // 正在进行中的任务 - if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) { + if (temp!!.drivingStatus == BusStationBean.drivingStatusCurrent) { if (temp!!.tag != 2) { currentStationIndex = index } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt index 8dbcb6cff3..c66df1e17e 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt @@ -16,6 +16,7 @@ import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.ContraiInfo import com.mogo.och.shuttle.weaknet.R import com.mogo.och.weaknet.bean.request.QueryPointRequest @@ -420,7 +421,7 @@ class WeaknetRepository : ILineRepository { TaskSiteDb.updateDrivingStatusAndLeave( task.taskId!!, start.siteId.toLong(), - TaskSiteDataBean.drivingStatusPassed, + BusStationBean.drivingStatusPassed, false ) // 设置到站任务 @@ -451,7 +452,7 @@ class WeaknetRepository : ILineRepository { TaskSiteDb.updateDrivingStatus( taskId, end.siteId.toLong(), - TaskSiteDataBean.drivingStatusCurrent + BusStationBean.drivingStatusCurrent ) } } else { diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/b4/com/mogo/och/shuttle/weaknet/passenger/ui/linenew/PB4DrivingInfoFullSFragment.kt b/OCH/shuttle/passenger_weaknet/src/main/java/b4/com/mogo/och/shuttle/weaknet/passenger/ui/linenew/PB4DrivingInfoFullSFragment.kt index 11311923a1..a09e73badf 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/b4/com/mogo/och/shuttle/weaknet/passenger/ui/linenew/PB4DrivingInfoFullSFragment.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/b4/com/mogo/och/shuttle/weaknet/passenger/ui/linenew/PB4DrivingInfoFullSFragment.kt @@ -2,6 +2,8 @@ package com.mogo.och.shuttle.weaknet.passenger.ui.linenew import android.os.Bundle import android.view.View +import androidx.appcompat.widget.AppCompatTextView +import androidx.core.content.ContextCompat import com.mogo.commons.mvp.MvpFragment import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.StringUtils @@ -30,7 +32,6 @@ import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.cl_empty_ser import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.cl_line_info_station import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.end_station_name import kotlinx.android.synthetic.main.b4_driving_info_full_fragment.group_station_empty -import kotlinx.android.synthetic.main.m2_arrive_view.view.ochtv_arrive_station_value import kotlin.math.ceil import kotlin.math.roundToInt @@ -186,6 +187,7 @@ class PB4DrivingInfoFullSFragment : } private fun showBottom1Station(station:BusStationBean?,isShow:Boolean){ + setTextColor(station,actv_station_pre_1) if(isShow) { actv_station_pre_1.text = station?.name aciv_arrow_station_1.visibility = View.VISIBLE @@ -199,6 +201,7 @@ class PB4DrivingInfoFullSFragment : } private fun showBottom2Station(station:BusStationBean?,isShow:Boolean){ + setTextColor(station, actv_station_pre_2) if(isShow) { actv_station_pre_2.text = station?.name aciv_arrow_station_2.visibility = View.VISIBLE @@ -212,6 +215,7 @@ class PB4DrivingInfoFullSFragment : } private fun showBottom3Station(station:BusStationBean?,isShow:Boolean){ + setTextColor(station, actv_station_pre_3) if(isShow) { actv_station_pre_3.text = station?.name aciv_arrow_station_3.visibility = View.VISIBLE @@ -225,6 +229,7 @@ class PB4DrivingInfoFullSFragment : } private fun showBottom4Station(station:BusStationBean?,isShow:Boolean){ + setTextColor(station, actv_station_pre_4) if(isShow) { actv_station_pre_4.text = station?.name aciv_arrow_station_4.visibility = View.VISIBLE @@ -237,6 +242,16 @@ class PB4DrivingInfoFullSFragment : } } + private fun setTextColor(station: BusStationBean?, textView: AppCompatTextView){ + context?.let { + if(station?.tag==2){ + textView.setTextColor(ContextCompat.getColor(it, R.color.b4_5E5E5E)) + }else{ + textView.setTextColor(ContextCompat.getColor(it, R.color.white)) + } + } + } + fun updateLineName(lineName: String){ actvLineName.text = lineName diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b4/values/colors.xml b/OCH/shuttle/passenger_weaknet/src/main/res/b4/values/colors.xml index 758e344554..b5d922c847 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/res/b4/values/colors.xml +++ b/OCH/shuttle/passenger_weaknet/src/main/res/b4/values/colors.xml @@ -22,4 +22,5 @@ #9AFF98 #EDBE2B #FF8300 + #5E5E5E \ No newline at end of file diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java index f3beba1629..a23c8cf4cc 100644 --- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java +++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/cloud/model/SweeperCloudTaskModel.java @@ -49,6 +49,8 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm; import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume; import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus; import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification; import java.io.IOException; import java.math.BigDecimal; @@ -803,4 +805,14 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene @Override public void onAutoPilotStation(long token, long timestamp, @Nullable SsmInfo.AutoPilotStation autoPilotStation) { } + + @Override + public void invokeLeaveStation(@Nullable Long taskId, @Nullable TaskStartNotification taskStartNotification) { + + } + + @Override + public void onArriveAtStationByTaskManager(@Nullable Long taskId, @Nullable TaskArrivalNotification taskArrivalNotification) { + + } } diff --git a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java index 19b6bb494f..b1679e1e8e 100644 --- a/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java +++ b/OCH/sweeper/driver/src/main/java/com/mogo/och/sweeper/operate/presenter/SweeperOperatePresenter.java @@ -42,6 +42,8 @@ import com.mogo.och.sweeper.operate.model.SweeperOperateTaskModel; import com.mogo.och.sweeper.common.util.SweeperFutianCmdUtil; import com.mogo.och.sweeper.operate.util.SweeperTrajectoryManager; import com.zhjt.mogo.adas.data.AdasConstants; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification; import java.math.BigDecimal; import java.math.RoundingMode; @@ -483,4 +485,14 @@ public class SweeperOperatePresenter extends Presenter public void onAutoPilotStation(long token, long timestamp, @Nullable SsmInfo.AutoPilotStation autoPilotStation) { } + + @Override + public void invokeLeaveStation(@Nullable Long taskId, @Nullable TaskStartNotification taskStartNotification) { + + } + + @Override + public void onArriveAtStationByTaskManager(@Nullable Long taskId, @Nullable TaskArrivalNotification taskArrivalNotification) { + + } } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index 2e2d79d0d5..abeccd8efa 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -84,6 +84,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop import com.zhjt.mogo.adas.unmanned.task.dto.cmd.Trajectory +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite import com.zhjt.service.chain.ChainLog import io.netty.channel.Channel import mogo.telematics.pad.MessagePad @@ -467,9 +468,9 @@ class MoGoAutopilotControlProvider : } } - override fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, stationId: Long, stationName: String, stationSeq: Int, lon: Double, lat: Double): Long { + override fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, startStation : VehicleSite, endStation:VehicleSite ): Long { return if (AdasManager.getInstance().ipcConnectionStatus == AdasConstants.IpcConnectionStatus.CONNECTED) { - val invokeResult = AdasManager.getInstance().sendTaskManagerAutopilotContinue(trackId, taskId, stationId, stationName, stationSeq, lon, lat) + val invokeResult = AdasManager.getInstance().sendTaskManagerAutopilotContinue(trackId, taskId, startStation, endStation) invokeAutoPilotResult(if (invokeResult > -1) "无人化 取消自动驾驶调用成功:${invokeResult}" else "无人化 取消自动驾驶调用失败, socket 或者 rawPack 可能为空") invokeResult } else { diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index bdf3ba6ec9..e9b8269717 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -38,7 +38,9 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SO import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_SOCKET_VEHICLE import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_TYPE_STATUS import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeLeaveStation import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeArriveAtStation +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeArriveAtStationByTaskManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutoPilotInfo import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutoPilotStation import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotGuardian @@ -132,7 +134,9 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskLocationQueryResponse +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification import com.zhjt.mogo.adas.utils.ByteUtil import com.zhjt.service.chain.ChainLog import fault_management.FmInfo @@ -1679,8 +1683,8 @@ class MoGoAdasListenerImpl : OnAdasListener { override fun onPlanningStopLine(header: MessagePad.Header, mapMsg: Hadmap.MapMsg) { } - override fun onAdasTaskManagerOriginal(header: MessagePad.Header, data: ByteArray) { - taskManagerOriginal(header, ByteUtil.byteArrToHex(data, false)) + override fun onAdasTaskManagerOriginal(header: MessagePad.Header, data: String) { + taskManagerOriginal(header, data) } @ChainLog( @@ -1693,10 +1697,15 @@ class MoGoAdasListenerImpl : OnAdasListener { CallerLogger.i("$M_D_C$TAG", "任务管理数据:$data") } - override fun onAdasTaskManagerDeparture(taskId: Long?, siteId: Long?, sequence: Int?, ack: Boolean, reason: String?, stationTimeLeft: Double) { + override fun onAdasTaskManagerDeparture( + taskId: Long?, + taskStartNotification: TaskStartNotification? + ) { + invokeLeaveStation(taskId,taskStartNotification) } - override fun onAdasTaskManagerArrival(taskId: Long?, siteId: Long?, sequence: Int?, mileage: BigDecimal?) { + override fun onAdasTaskManagerArrival(taskId: Long?,taskArrivalNotification: TaskArrivalNotification? ) { + invokeArriveAtStationByTaskManager(taskId,taskArrivalNotification) } override fun onAdasTaskManagerComplete(taskId: Long?, userId: Long?, status: Int?, reason: String?, completedTime: Date?, mileage: BigDecimal?) { diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/server/AsyncDataToAutopilotServer.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/server/AsyncDataToAutopilotServer.kt index 97815c2539..3b668d062e 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/server/AsyncDataToAutopilotServer.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/server/AsyncDataToAutopilotServer.kt @@ -55,6 +55,7 @@ class AsyncDataToAutopilotServer private constructor() : IMoGoTrafficLightListen .subscribe { bizLog(SceneConstant.M_D_C + TAG, "请求底盘轨迹") CallerAutoPilotControlManager.getGlobalPath() + } } else -> {} diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt index bade34a762..6c89347933 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt @@ -906,11 +906,7 @@ class ColdStartView @JvmOverloads constructor( tvColdStartContent.text = resources.getString(R.string.cold_start_fail_content) tvColdStartContent.setTextColor(ContextCompat.getColor(context, R.color.cold_start_fail)) coldStartResultListener?.coldStartFail() - ThreadUtils.runOnUiThread { - tvColdStartNow.visibility = View.VISIBLE - ivColdStartNow.visibility = View.VISIBLE - tvColdStartTip.visibility = View.VISIBLE - } + initUseNowBtnView() } /** diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt index 7ce79e731e..fe56b1fd08 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt @@ -16,6 +16,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm.TaskConfi import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume.SuspendResumeTaskReq import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop.StopTaskResp import com.zhjt.mogo.adas.unmanned.task.dto.cmd.Trajectory +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite import mogo.telematics.pad.MessagePad import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest import system_master.SsmInfo @@ -49,7 +50,7 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { fun sendTaskManagerAutopilotStart(taskId: Long, traj: Trajectory): Long - fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, stationId: Long, stationName: String, stationSeq: Int, lon: Double, lat: Double): Long + fun sendTaskManagerAutopilotContinue(trackId: Long, taskId: Long, startStation : VehicleSite, endStation: VehicleSite): Long /** * 开启自动驾驶(魔方) diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt index f6f1f074fe..a6ea2e62a1 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt @@ -2,6 +2,8 @@ package com.mogo.eagle.core.function.api.autopilot import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.zhjt.mogo.adas.data.AdasConstants +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import system_master.* @@ -67,6 +69,13 @@ interface IMoGoAutopilotStatusListener { */ fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {} + fun onArriveAtStationByTaskManager(taskId: Long?,taskArrivalNotification: TaskArrivalNotification?) {} + + /** + * 自动驾驶 离站触发 + */ + fun invokeLeaveStation(taskId: Long?, taskStartNotification: TaskStartNotification?) {} + /** * 工控机获取SN */ diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index 4792b68745..fbfdfe6e67 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -122,12 +122,12 @@ object CallerAutoPilotControlManager { /** * 自驾成功后再次启动自驾时 */ - fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory?, vehicleSite : VehicleSite, controlParameters: AutopilotControlParameters): Long { + fun unmannedAutoPilotContinue(taskId: Long, traj: Trajectory?, startStation : VehicleSite,endStation : VehicleSite, controlParameters: AutopilotControlParameters): Long { if (traj == null) { //LogUtils.eTag(TAG, "自动驾驶控制参数异常,请检查参数信息") return -1L } - val sessionId = providerApi?.sendTaskManagerAutopilotContinue(traj.id, taskId, vehicleSite.stationId, vehicleSite.stationName, vehicleSite.stationSeq, vehicleSite.point.x, vehicleSite.point.y) ?: -1L + val sessionId = providerApi?.sendTaskManagerAutopilotContinue(traj.id, taskId, startStation,endStation) ?: -1L // 更新记录在全局的控制参数 CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(controlParameters) return sessionId diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt index cfe8cfc95c..cc1cf8c4e6 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt @@ -12,6 +12,8 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.ParseVersionUtils import com.zhjt.mogo.adas.data.AdasConstants +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import system_master.SsmInfo @@ -270,6 +272,25 @@ object CallerAutoPilotStatusListenerManager : CallerBase cmdDto = CmdDto.builder().cmdType(MessageCmdEnum.TaskContinueNotification.getCode()).taskId(taskId).lineId(trackId).timestamp(System.currentTimeMillis()).data(taskContinueNotification).build(); return sendTaskManager(cmdDto); } @@ -3464,5 +3459,15 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec .lineId(0L).timestamp(System.currentTimeMillis()).data(new JSONObject()).build(); return sendTaskManager(cmdDto); } + + @ChainLog( + linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = CHAIN_SOURCE_ADAS, + nodeAliasCode = CHAIN_CODE_ADAS_SEND_TASK, + paramIndexes = {0} + ) + public void sendTaskManageReqLog(T data) { + Log.i(TAG, "任务管理:"+data.toString()); + } } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 1a12b967ed..c30a8609dd 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -29,6 +29,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm; import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume; import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop; import com.zhjt.mogo.adas.unmanned.task.dto.cmd.Trajectory; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite; import java.util.HashSet; import java.util.List; @@ -2098,8 +2099,8 @@ public class AdasManager implements IAdasNetCommApi { } @Override - public long sendTaskManagerAutopilotContinue(Long trackId, Long taskId, Long stationId, String stationName, Integer stationSeq, double lon, double lat) { - return mChannel == null ? -1L : mChannel.sendTaskManagerAutopilotContinue(trackId, taskId, stationId, stationName, stationSeq, lon, lat); + public long sendTaskManagerAutopilotContinue(Long trackId, Long taskId, VehicleSite startStation, VehicleSite endStation) { + return mChannel == null ? -1L : mChannel.sendTaskManagerAutopilotContinue(trackId, taskId, startStation, endStation); } @Override diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index d60130095c..db961ebc29 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -17,6 +17,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm; import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume; import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop; import com.zhjt.mogo.adas.unmanned.task.dto.cmd.Trajectory; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.VehicleSite; import java.util.List; import java.util.Map; @@ -1547,7 +1548,7 @@ public interface IAdasNetCommApi { long sendTaskManagerRunningInfo(); long sendTaskManagerAutopilotStart(Long taskId, Trajectory traj); - long sendTaskManagerAutopilotContinue(Long trackId, Long taskId, Long stationId, String stationName, Integer stationSeq, double lon, double lat); + long sendTaskManagerAutopilotContinue(Long trackId, Long taskId, VehicleSite startStation, VehicleSite endStation); long sendTaskManagerAutopilotCancel(Long taskId); diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index dffcac4499..853b0f0bff 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -33,7 +33,9 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm; import com.zhjt.mogo.adas.data.sweeper.task.s_r.SweeperTaskSuspendResume; import com.zhjt.mogo.adas.data.sweeper.task.status.SweeperTaskStatus; import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskArrivalNotification; import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskLocationQueryResponse; +import com.zhjt.mogo.adas.unmanned.task.dto.cmd.TaskStartNotification; import java.math.BigDecimal; import java.util.ArrayList; @@ -805,7 +807,7 @@ public interface OnAdasListener { * @param header 头 * @param data 数据 */ - void onAdasTaskManagerOriginal(@NonNull MessagePad.Header header, @NonNull byte[] data); + void onAdasTaskManagerOriginal(@NonNull MessagePad.Header header, @NonNull String data); /** * 域控任务管理离站通知 @@ -816,8 +818,9 @@ public interface OnAdasListener { * @param ack * @param reason * @param stationTimeLeft + * @param closeDoorStartAuto */ - void onAdasTaskManagerDeparture(Long taskId, Long siteId, Integer sequence, boolean ack, String reason, double stationTimeLeft); + void onAdasTaskManagerDeparture(Long taskId, TaskStartNotification taskStartNotification); /** * 域控任务管理到站通知 @@ -827,7 +830,7 @@ public interface OnAdasListener { * @param sequence 站点序号,对应顺序列表里站点流程,从1开始,1为起始点,最大值为终点。 途径点填写0 * @param mileage 任务全程的已经行进的里程 */ - void onAdasTaskManagerArrival(Long taskId, Long siteId, Integer sequence, BigDecimal mileage); + void onAdasTaskManagerArrival(Long taskId, TaskArrivalNotification taskArrivalNotification); /** * 域控任务管理终止任务 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java index 7eec42aaa1..92a60ae567 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java @@ -17,4 +17,5 @@ public class AdasChain { public static final String CHAIN_CODE_ADAS_SEND_GLOBAL_PATH = "CHAIN_CODE_ADAS_SEND_GLOBAL_PATH"; public static final String CHAIN_CODE_ADAS_SEND_SYSTEM_CMD = "CHAIN_CODE_ADAS_SEND_SYSTEM_CMD"; public static final String CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD = "CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD"; + public static final String CHAIN_CODE_ADAS_SEND_TASK = "CHAIN_CODE_ADAS_SEND_TASK"; } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TaskManagerMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TaskManagerMessage.java index 27c28f21ca..dc32279050 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TaskManagerMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/TaskManagerMessage.java @@ -3,6 +3,7 @@ package com.zhidao.support.adas.high.msg; import android.os.SystemClock; import android.util.Log; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; @@ -45,8 +46,9 @@ public class TaskManagerMessage extends MyAbstractMessageHandler { if (CupidLogUtils.isEnableLog()) nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { - adasListener.onAdasTaskManagerOriginal(raw.getHeader(), data); - parse(adasListener, new String(data, StandardCharsets.UTF_8)); + String dataString = new String(data, StandardCharsets.UTF_8); + adasListener.onAdasTaskManagerOriginal(raw.getHeader(), dataString); + parse(adasListener,dataString); } AdasChannel.calculateTimeConsumingBusiness("任务管理消息", nowTime); } @@ -65,7 +67,7 @@ public class TaskManagerMessage extends MyAbstractMessageHandler { TaskStartNotification taskStartNotification = cmdDto.getData(); VehicleSite vehicleSite = taskStartNotification.getCurLocation(); - adasListener.onAdasTaskManagerDeparture(cmdDto.getTaskId(), vehicleSite.getStationId(), vehicleSite.getStationSeq(), taskStartNotification.isAutopilotResult(), taskStartNotification.getErrMsg(), taskStartNotification.getStationTimeLeft()); + adasListener.onAdasTaskManagerDeparture(cmdDto.getTaskId(), taskStartNotification); } } else if (messageCmdEnum == MessageCmdEnum.TaskArrivalNotification) {//到站通知 @@ -74,8 +76,7 @@ public class TaskManagerMessage extends MyAbstractMessageHandler { if (cmdDto != null) { Log.i(TAG, "onAdasTaskManagerArrival=" + cmdDto); TaskArrivalNotification taskArrivalNotification = cmdDto.getData(); - VehicleSite vehicleSite = taskArrivalNotification.getCurLocation(); - adasListener.onAdasTaskManagerArrival(cmdDto.getTaskId(), vehicleSite.getStationId(), vehicleSite.getStationSeq(), BigDecimal.valueOf(taskArrivalNotification.getAccumulatedTaskDis())); + adasListener.onAdasTaskManagerArrival(cmdDto.getTaskId(), taskArrivalNotification); } } else if (messageCmdEnum == MessageCmdEnum.TaskAbortNotification) {//终止任务 diff --git a/tts/tts-iflytek-offline/src/main/java/com/mogo/tts/iflytekoffline/IFlyTekOfflineTts.kt b/tts/tts-iflytek-offline/src/main/java/com/mogo/tts/iflytekoffline/IFlyTekOfflineTts.kt index b00f6789e5..d698f42afb 100644 --- a/tts/tts-iflytek-offline/src/main/java/com/mogo/tts/iflytekoffline/IFlyTekOfflineTts.kt +++ b/tts/tts-iflytek-offline/src/main/java/com/mogo/tts/iflytekoffline/IFlyTekOfflineTts.kt @@ -342,6 +342,17 @@ class IFlyTekOfflineTts : IMogoTTS { if (!aiHandle!!.isSuccess) { // handleErrorEvent("开启会话报错:${aiHandle!!.code}") handleErrorEvent("${StringUtils.getString(R.string.module_tts_start_ai_handle_error)}${aiHandle!!.code}") + if(aiHandle!!.code==18310){ + aiHandle?.let { + val ret = AiHelper.getInst().end(it) + d(TAG, "AIKit_End:$ret") + if(ret==0){ + realSpeak(content,language) + }else{ + handleErrorEvent("${StringUtils.getString(R.string.module_tts_start_ai_handle_error)}${ret}") + } + } + } aiHandle = null return }