diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index ccc5fe8d2c..1ecd5a65a6 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -78,6 +78,7 @@ import com.mogo.och.common.module.voice.VoiceNotice; import com.mogo.och.data.bean.BusRoutesResult; import com.mogo.och.data.bean.BusStationBean; import com.mogo.och.data.bean.BusTransferData; +import com.mogo.och.data.bean.LineInfo; import com.mogo.och.data.manager.cache.CacheDataManager; import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager; @@ -941,14 +942,15 @@ public class OrderModel { */ private void updateBusStatus(BusRoutesResult result) { if (result == null) { - LineManager.setLineId(-1); + LineManager.setLineInfo(null); return; } busRoutesResult = result; List site = result.getSites(); currentTaskId = result.getTaskId(); currentLineId = result.getLineId(); - LineManager.setLineId(currentLineId); + String lineName = result.getName(); + LineManager.setLineInfo(new LineInfo(currentLineId,lineName)); stationList.clear(); stationList.addAll(site); diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index ae4fa9f6c0..37dd4bfa7e 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -667,7 +667,7 @@ class DriverM1Model { if (TextUtils.isEmpty(data.data.orderNo)){//还未换车,显示还车状态 mOrderCallback?.updateReturnCarStatus(false) mCurrentOrder = null - LineManager.setLineId(-1) + LineManager.setLineInfo(null) currentChangeDestMsg = null sendCharterEndTripInfo() startOrStopCheckCountDown(false) @@ -681,7 +681,7 @@ class DriverM1Model { mOrderCallback?.updateReturnCarStatus(true) clearAutopilotControlParameters() mCurrentOrder = null - LineManager.setLineId(-1) + LineManager.setLineInfo(null); currentChangeDestMsg = null isArrivedStation = false startOrStopCheckCountDown(false) @@ -708,7 +708,7 @@ class DriverM1Model { d(SceneConstant.M_CHARTER_D + TAG, "data.data is null") isArrivedStation = false mCurrentOrder = null - LineManager.setLineId(-1) + LineManager.setLineInfo(null) queryCurrentServiceStatus() return } @@ -726,9 +726,9 @@ class DriverM1Model { mCurrentOrder?.lineId.let { if (it == null || it < 0) { - LineManager.setLineId(-1) + LineManager.setLineInfo(null) } else { - LineManager.setLineId(it) + LineManager.setLineInfo(LineInfo(it.toLong(),mCurrentOrder?.lineName?:"")) } } diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt index 6e86133587..eb6fbcd52e 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt @@ -23,10 +23,6 @@ object OchAutoPilotManager : IMoGoReceiveReceivedAckListener { const val TAG = "OchAutoPilotManager" - var contraiInfo: ContraiInfo? = null - var startStation: BusStationBean? = null - var endStation: BusStationBean? = null - init { CallerReceiveReceivedAckListenerManager.addListener(TAG,this) } 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 21fd6df0d2..4e73682e5a 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 @@ -2,36 +2,29 @@ package com.mogo.och.common.module.manager.autopilot.line import com.mogo.eagle.core.function.call.map.CallerMapGlobalTrajectoryDrawManager import com.mogo.och.common.module.utils.CallerBase +import com.mogo.och.data.bean.BusStationBean +import com.mogo.och.data.bean.ContraiInfo +import com.mogo.och.data.bean.LineInfo /** * 订单中 */ object LineManager : CallerBase() { - private var lineId: Int = -1 - @JvmStatic - fun setLineId(value: Int) { - lineId = if (value < 0) { - clearGlobalTrajectory(true) - -1 - } else { - value - } - } - @JvmStatic - fun setLineId(value: Long) { - lineId = if (value < 0) { - clearGlobalTrajectory(true) - -1 - } else { - value.toInt() - } - } + + var lineInfos: LineInfo? = null + var contraiInfo: ContraiInfo? = null + var startStation: BusStationBean? = null + var endStation: BusStationBean? = null @JvmStatic - fun getLineId():Int{ - return lineId + fun setLineInfo(lineInfo: LineInfo?){ + if(lineInfo==null){ + clearGlobalTrajectory(true) + } + this.lineInfos = lineInfo } + override fun doSomeAfterAddListener(tag: String, listener: ILineCallback) { super.doSomeAfterAddListener(tag, listener) if (hasDrawnGlobalTrajectory()) { @@ -55,7 +48,7 @@ object LineManager : CallerBase() { } fun drawGlobalTrajectory(): Pair { - if(lineId<0){ + if (lineInfos == null) { return Pair(false,"请设置正确线路或订单") } return CallerMapGlobalTrajectoryDrawManager.drawGlobalTrajectory().apply { diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java index 91f3cea861..b9d0e51ea8 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java @@ -109,6 +109,18 @@ public class DateTimeUtil { return calendar.getTimeInMillis(); } + public static boolean isSameDay(long startData,long endData){ + Calendar startCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8")); + startCalendar.setTimeInMillis(startData); + + Calendar endCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8")); + endCalendar.setTimeInMillis(endData); + + int startDayofYear = startCalendar.get(Calendar.DAY_OF_YEAR); + int endDayofYear = endCalendar.get(Calendar.DAY_OF_YEAR); + return startDayofYear==endDayofYear; + } + public static String getAfterSecondTime(int timeInSecond){ Calendar beforeTime = Calendar.getInstance(); beforeTime.add(Calendar.SECOND, timeInSecond); diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/LineInfo.kt b/OCH/common/data/src/main/java/com/mogo/och/data/bean/LineInfo.kt new file mode 100644 index 0000000000..0867a97892 --- /dev/null +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/LineInfo.kt @@ -0,0 +1,14 @@ +package com.mogo.och.data.bean + +data class LineInfo( + /** + * 线路id + */ + val lineId: Long, + + /** + * 线路名称 + */ + val lineName: String, + +) diff --git a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt index cda54e5d2f..4689569e7c 100644 --- a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt +++ b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt @@ -86,7 +86,7 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback { return getFragmentByServeName(OchCommonConst.OFFLINE_PASSENGER) } } - if(DeviceUtils.isEB5Model()&&AppIdentityModeUtils.isCharterPassenger(FunctionBuildConfig.appIdentityMode)){ + if(DeviceUtils.isEB5Model()&&!AppIdentityModeUtils.isCharterPassenger(FunctionBuildConfig.appIdentityMode)){ val maxVolume = VolumeUtils.getMaxVolume(AudioManager.STREAM_MUSIC) val volume = VolumeUtils.getVolume(AudioManager.STREAM_MUSIC) val tartgetVolume = (maxVolume * 0.8).toInt() diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/model/OrderModel.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/model/OrderModel.java index c102dc1967..d085367549 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/model/OrderModel.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/model/OrderModel.java @@ -59,6 +59,7 @@ import com.mogo.och.common.module.voice.VoiceNotice; import com.mogo.och.data.bean.BusRoutesResult; import com.mogo.och.data.bean.BusStationBean; import com.mogo.och.data.bean.BusTransferData; +import com.mogo.och.data.bean.LineInfo; import com.mogo.och.data.manager.cache.CacheDataManager; import com.mogo.och.shuttle.R; import com.mogo.och.shuttle.bean.BusRoutesResponse; @@ -882,11 +883,11 @@ public class OrderModel { */ private void updateBusStatus(BusRoutesResult result) { if (result == null) { - LineManager.setLineId(-1); + LineManager.setLineInfo(null); return; } busRoutesResult = result; - LineManager.setLineId(busRoutesResult.getLineId()); + LineManager.setLineInfo(new LineInfo(busRoutesResult.getLineId(),busRoutesResult.getName())); stationList.clear(); stationList.addAll(result.getSites()); for (int i = 0; i < stationList.size(); i++) { diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusCloseTaskRequest.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusCloseTaskRequest.java deleted file mode 100644 index 0e08c10936..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusCloseTaskRequest.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.mogo.och.weaknet.bean; - -import com.mogo.commons.storage.SharedPrefsMgr; -import com.mogo.och.common.module.utils.DateTimeUtil; - -/** - * 中止/结束任务请求 - */ -public class BusCloseTaskRequest { - - private String sn; - private int taskId; - private long writeVersion; - public BusCloseTaskRequest(int taskId) { - this.sn = SharedPrefsMgr.getInstance().getSn(); - this.taskId = taskId; - this.writeVersion = DateTimeUtil.getCurrentTimeStamp(); - } - - public String getSn() { - return sn; - } -} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusOrderBean.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusOrderBean.java deleted file mode 100644 index 3d089f6bfa..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusOrderBean.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.mogo.och.weaknet.bean; - -/** - * @author congtaowang - * @since 2021/3/23 - *

- * 小巴订单 - */ -public class BusOrderBean { - - /** - * orderNo number - * passengerPhone string 下单用户电话 - * startStationId integer 开始站点 - * startStationName string - * endStationId integer 结束站点 - * endStationName string - */ - - private String orderNo; - private String passengerPhone; - private int startStationId;//乘客上车点 - private String startStationName; - private String endStationName; - private int endStationId;//乘客下车点 - - public void setOrderNo(String orderNo) { - this.orderNo = orderNo; - } - - public void setPassengerPhone(String passengerPhone) { - this.passengerPhone = passengerPhone; - } - - public void setStartStationId(int startStationId) { - this.startStationId = startStationId; - } - - public void setStartStationName(String startStationName) { - this.startStationName = startStationName; - } - - public void setEndStationName(String endStationName) { - this.endStationName = endStationName; - } - - public void setEndStationId(int endStationId) { - this.endStationId = endStationId; - } - - public String getOrderNo() { - return orderNo; - } - - public String getPassengerPhone() { - return passengerPhone; - } - - public int getStartStationId() { - return startStationId; - } - - public String getStartStationName() { - return startStationName; - } - - public String getEndStationName() { - return endStationName; - } - - public int getEndStationId() { - return endStationId; - } - - @Override - public String toString() { - return "BusOrderBean{" + - "orderNo=" + orderNo + - ", passengerPhone='" + passengerPhone + '\'' + - ", startStationId=" + startStationId + - ", startStationName='" + startStationName + '\'' + - ", endStationName='" + endStationName + '\'' + - ", endStationId=" + endStationId + - '}'; - } -} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusOrdersResponse.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusOrdersResponse.java deleted file mode 100644 index 71ad794921..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusOrdersResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.mogo.och.weaknet.bean; - -import com.mogo.eagle.core.data.BaseData; - -import java.util.List; - -/** - * @author: wangmingjun - * @date: 2021/10/19 - */ -public class BusOrdersResponse extends BaseData { - public Result data; - public static class Result{ - public List orders; - } - - @Override - public String toString() { - return "BusOrdersResponse{" + - "data=" + data + - '}'; - } -} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusResetDrivingLineRequest.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusResetDrivingLineRequest.java deleted file mode 100644 index e5022b238a..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusResetDrivingLineRequest.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.mogo.och.weaknet.bean; - -import com.mogo.commons.storage.SharedPrefsMgr; -import com.mogo.och.common.module.utils.DateTimeUtil; - -/** - * @author: wangmingjun - * @date: 2021/10/18 - */ -public class BusResetDrivingLineRequest { - public String sn; - public long taskId; //切换到的线路id - public long writeVersion; //更新时间戳 - - public BusResetDrivingLineRequest(long taskId) { - this.sn = SharedPrefsMgr.getInstance().getSn(); - this.taskId = taskId; - this.writeVersion = DateTimeUtil.getCurrentTimeStamp(); - } -} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusRoutesResponse.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusRoutesResponse.kt index 046d1012cc..aebbe3059a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusRoutesResponse.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusRoutesResponse.kt @@ -1,8 +1,10 @@ package com.mogo.och.weaknet.bean import com.mogo.eagle.core.data.BaseData +import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusStationBean +import com.mogo.och.data.bean.LineInfo import com.mogo.och.weaknet.database.bean.TaskSiteDataBean import java.lang.Boolean import kotlin.String @@ -23,13 +25,15 @@ class BusRoutesResponse : BaseData() { companion object { - fun db2Beans(runnintTaskAndSites: List?): Triple,BusStationBean?,Int> { + fun db2Beans(runnintTaskAndSites: List?): Pair,Int> { val result = mutableListOf() var temp: BusStationBean? = null var currentStation: BusStationBean? = null var currentStationIndex = -1 + var lineInfo:LineInfo?=null if (runnintTaskAndSites.isNullOrEmpty()) { - return Triple(result,null,currentStationIndex) + LineManager.setLineInfo(lineInfo) + return Pair(result,currentStationIndex) } runnintTaskAndSites.forEachIndexed { index, taskAndsite -> temp = BusStationBean() @@ -46,12 +50,22 @@ class BusRoutesResponse : BaseData() { temp?.seq = (taskAndsite.seq ?: 0) temp?.siteId = if (taskAndsite.siteId == null) 0 else taskAndsite.siteId!!.toInt() result.add(temp!!) - if (temp!!.drivingStatus == 2) { + // 正在进行中的任务 + if (temp!!.drivingStatus == TaskSiteDataBean.drivingStatusCurrent) { currentStation = temp currentStationIndex = index } + // 线路信息 + if (lineInfo == null && taskAndsite.lineId != null && taskAndsite.lineName != null) { + lineInfo = LineInfo(taskAndsite.lineId!!, taskAndsite.lineName!!) + } } - return Triple(result,currentStation,currentStationIndex) + LineManager.setLineInfo(lineInfo) + LineManager.startStation = currentStation + if (currentStationIndex < result.size-1) { + LineManager.endStation = result[currentStationIndex + 1] + } + return Pair(result,currentStationIndex) } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusUpdateSiteStatusRequest.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusUpdateSiteStatusRequest.java deleted file mode 100644 index 77c4c54b75..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusUpdateSiteStatusRequest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mogo.och.weaknet.bean; - -import com.mogo.commons.storage.SharedPrefsMgr; - -/** - * @author congtaowang - * @since 2021/3/22 - * - * 小巴车运营状态请求参数 - */ -public class BusUpdateSiteStatusRequest { - - public String sn; - public int taskId; - public int seq;//站点序号 - public int siteId;//站点id - public long writeVersion; //更新时间戳 - - public BusUpdateSiteStatusRequest(int taskId,int siteId,int seq, long writeVersion) { - this.sn = SharedPrefsMgr.getInstance().getSn(); - this.seq = seq; - this.siteId = siteId; - this.taskId = taskId; - this.writeVersion = writeVersion; - } -} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/QueryLeaveAwayPassengersRequest.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/QueryLeaveAwayPassengersRequest.java deleted file mode 100644 index f99cbe0faa..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/QueryLeaveAwayPassengersRequest.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.mogo.och.weaknet.bean; - -import com.mogo.commons.storage.SharedPrefsMgr; - -/** - * 查询下车乘客请求参数 - * - * @author tongchenfei - */ -public class QueryLeaveAwayPassengersRequest { - private String sn; - private int seq; //站点在线路中的序号 - private int siteId; //站点id - - public QueryLeaveAwayPassengersRequest(int seq, int siteId) { - this.sn = SharedPrefsMgr.getInstance().getSn(); - this.seq = seq; - this.siteId = siteId; - } - - public void setSeq(int seq) { - this.seq = seq; - } - - public void setSiteId(int siteId) { - this.siteId = siteId; - } - - public int getSeq() { - return seq; - } - - public int getSiteId() { - return siteId; - } -} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/QueryLeaveAwayPassengersResponse.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/QueryLeaveAwayPassengersResponse.java deleted file mode 100644 index c09fc7a6b2..0000000000 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/QueryLeaveAwayPassengersResponse.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.mogo.och.weaknet.bean; - -import com.mogo.eagle.core.data.BaseData; - -import java.util.List; - -public -/** - * @author congtaowang - * @since 2021/3/26 - * - * 到站查询下车乘客 - */ -class QueryLeaveAwayPassengersResponse extends BaseData { - - public Result data; - - public static class Result { - - public List< LeaveAwayPassenger > orders; - } - - public static class LeaveAwayPassenger { - /** - * orderNo: 订单no - * orderStatus: 订单状态 - * orderType:订单类型:0及时,1预约 - * bookingTime:预计用车时间 - * businessType:订单运营类型 9:taxi,10:bus - * startSiteId: 起点站点id - * userPhone: 乘客联系方式 - * startSitePoint:开始站点坐标 - * startSiteAddr:开始地址 - * endSiteId:结束站点id - * endSitePoint:结束站点坐标 - * carNumber:车牌号 - * createTime: 创建时间 - * startTime:开始时间 - * startSiteGcjPoint:高精坐标 - * endSiteGcjPoint: - */ -//todo 目前是需要乘客电话来通知乘客下车 目前后台没有乘客信息userPhone - public String orderNo; - public int orderStatus; - public int orderType; - public long bookingTime; - public int businessType; - public int startSiteId; - public String passengerPhone; - public List startSitePoint; - public String startSiteAddr; - public int endSiteId; - public List endSitePoint; - public String carNumber; - public long createTime; - public long startTime; - public List< Double > startSiteGcjPoint; - public List< Double > endSiteGcjPoint; - } -} diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/ContrailDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/ContrailDataBean.kt index 9b7c2f746d..c10288b71f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/ContrailDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/ContrailDataBean.kt @@ -5,6 +5,7 @@ import androidx.room.Entity import androidx.room.PrimaryKey import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager +import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.data.bean.ContraiInfo import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager @@ -69,7 +70,7 @@ data class ContrailDataBean( OchChainLogManager.writeChainLogAutopilot("轨迹错误",this.toString()) return } - OchAutoPilotManager.contraiInfo = ContraiInfo(lineId!!,csvFileUrl!!,csvFileMd5!!,txtFileUrl!!,txtFileMd5!!,contrailSaveTime!!) + LineManager.contraiInfo = ContraiInfo(lineId!!,csvFileUrl!!,csvFileMd5!!,txtFileUrl!!,txtFileMd5!!,contrailSaveTime!!) } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskDataBean.kt index 5aedcf7db4..118df452bb 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskDataBean.kt @@ -64,4 +64,24 @@ class TaskDataBean( const val used = 2L } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as TaskDataBean + + if (taskId != other.taskId) return false + if (lineId != other.lineId) return false + + return true + } + + override fun hashCode(): Int { + var result = taskId?.hashCode() ?: 0 + result = 31 * result + (lineId?.hashCode() ?: 0) + return result + } + + } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskDataDao.kt index 9ada8ebd06..3a4b70d86c 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskDataDao.kt @@ -7,6 +7,7 @@ import androidx.room.OnConflictStrategy import androidx.room.Query import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.weaknet.database.bean.TaskDataBean +import com.mogo.och.weaknet.database.bean.TaskSiteDataBean import io.reactivex.Observable @Dao @@ -23,6 +24,9 @@ interface TaskDataDao { @Query("DELETE FROM ${TaskDataBean.taskDataTable} WHERE task_get_time < :zeroTime") fun deleteDataByZero(zeroTime:Long): Int + @Query("UPDATE ${TaskDataBean.taskDataTable} SET end_time = :endTime,status = ${TaskDataBean.used} WHERE task_id = :taskId") + fun endTask(taskId: Long,endTime:Long = DateTimeUtil.getCurrentTimeStamp()) + //查询当天插入的所有数据 @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime") fun loadAllData(zeroTime:Long): List? diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskSiteDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskSiteDataDao.kt index d6325ee7e5..9496e8b1c6 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskSiteDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskSiteDataDao.kt @@ -13,7 +13,16 @@ interface TaskSiteDataDao { fun insert(vararg lineDataBean: TaskSiteDataBean):List //查询当天插入的所有数据 - @Query("SELECT * FROM ${TaskSiteDataBean.usedTaskDataTable} WHERE task_id > :taskId") + @Query("SELECT * FROM ${TaskSiteDataBean.usedTaskDataTable} WHERE task_id = :taskId") fun queryRunningTask(taskId: Long): List? + @Query("UPDATE ${TaskSiteDataBean.usedTaskDataTable} SET leaving = :leave WHERE task_id = :taskId and site_id = :siteId") + fun updateLeave(taskId: Long, siteId: Long, leave: Int) + + @Query("UPDATE ${TaskSiteDataBean.usedTaskDataTable} SET leaving = :leave , driving_status = :drivingStatusCurrent WHERE task_id = :taskId and site_id = :siteId") + fun updateDrivingStatusANdLeave(taskId: Long, siteId: Long, drivingStatusCurrent: Int, leave: Int) + + @Query("UPDATE ${TaskSiteDataBean.usedTaskDataTable} 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_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/EventRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/EventRepository.kt index f18e45bafe..5ae0d24b6b 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/EventRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/EventRepository.kt @@ -23,8 +23,10 @@ object EventRepository { event.writeVersion = DateTimeUtil.getCurrentTimeStamp() event.siteId = 0L event.seq = 0 - eventDataDao?.insert() - eventCallback?.notify() + DbThreadUtils.runInIoThread { + eventDataDao?.insert(event) + eventCallback?.notifySyn() + } } fun saveEventTaskArriveSite(taskId: Long,siteId:Long,seq:Int) { @@ -35,8 +37,10 @@ object EventRepository { event.writeVersion = DateTimeUtil.getCurrentTimeStamp() event.siteId = siteId event.seq = seq - eventDataDao?.insert() - eventCallback?.notify() + DbThreadUtils.runInIoThread{ + eventDataDao?.insert(event) + eventCallback?.notifySyn() + } } fun saveEventTaskLeaveSite(taskId: Long,siteId:Long,seq:Int) { @@ -47,8 +51,10 @@ object EventRepository { event.writeVersion = DateTimeUtil.getCurrentTimeStamp() event.siteId = siteId event.seq = seq - eventDataDao?.insert() - eventCallback?.notify() + DbThreadUtils.runInIoThread { + eventDataDao?.insert(event) + eventCallback?.notifySyn() + } } fun saveEventTaskEnd(taskId: Long) { @@ -59,12 +65,14 @@ object EventRepository { event.writeVersion = DateTimeUtil.getCurrentTimeStamp() event.siteId = 0L event.seq = 0 - eventDataDao?.insert() - eventCallback?.notify() + DbThreadUtils.runInIoThread { + eventDataDao?.insert(event) + eventCallback?.notifySyn() + } } interface EventCallback { - fun notify() + fun notifySyn() } 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 70bb27e5da..6ce1d34626 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 @@ -103,6 +103,12 @@ object TaskRepository { return taskDataDao?.queryRunningTaskByStatus() } + fun endTask(taskId: Long) { + DbThreadUtils.runInIoThread{ + taskDataDao?.endTask(taskId) + } + } + interface TaskStatusCallback{ fun startSuccess() diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskSiteRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskSiteRepository.kt index f051605457..5cd883108b 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskSiteRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskSiteRepository.kt @@ -13,6 +13,10 @@ object TaskSiteRepository { taskSiteDataDao = MyDataBase.instance.taskSiteDataDao } + fun addOrUpdate(vararg lineDataBean: TaskSiteDataBean){ + taskSiteDataDao?.insert(*lineDataBean) + } + // 开始线路 fun startTask(taskId: Long, linId: Long,lineName:String):Int? { // 获取线路的站点 @@ -25,6 +29,9 @@ object TaskSiteRepository { taskId, lineName ) + if(toTaskSiteDatas.size<2){ + throw DataException("站点数据不全请稍后再试") + } // 把线路所有的站点搬迁到运行中表格中 val result = taskSiteDataDao?.insert(*toTaskSiteDatas.toTypedArray()) return if(result.isNullOrEmpty()){ @@ -34,13 +41,23 @@ object TaskSiteRepository { } } - // - fun leaveStation(){ - + // 滑动出发 + fun updateLeave(taskId: Long, siteId: Long, leave:Boolean) { + DbThreadUtils.runInIoThread{ + taskSiteDataDao?.updateLeave(taskId,siteId,if(leave) 1 else 0) + } } - fun arriveSiteStation(){ + fun updateDrivingStatus(taskId: Long, siteId: Long, drivingStatus: Int){ + DbThreadUtils.runInIoThread{ + taskSiteDataDao?.updateDrivingStatus(taskId,siteId,drivingStatus) + } + } + fun updateDrivingStatusAndLeave(taskId: Long, siteId: Long, drivingStatus: Int, leave: Boolean){ + DbThreadUtils.runInIoThread{ + taskSiteDataDao?.updateDrivingStatusANdLeave(taskId,siteId,drivingStatus,if(leave) 1 else 0) + } } fun queryRunningTask(taskId: Long): List? { 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 7928f50c9c..c1487dbc88 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 @@ -4,9 +4,14 @@ import android.annotation.SuppressLint import android.content.Context import com.mogo.commons.AbsMogoApplication import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.network.utils.digest.DigestUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.manager.loop.LoopInfo @@ -18,7 +23,10 @@ import com.mogo.och.weaknet.bean.BusQueryLinesResponse import com.mogo.och.weaknet.bean.BusRoutesResponse import com.mogo.och.weaknet.bean.CarExecutableTaskResponse import com.mogo.och.weaknet.callback.IBusLinesCallback +import com.mogo.och.weaknet.constant.BusConst import com.mogo.och.weaknet.database.bean.ContrailDataBean +import com.mogo.och.weaknet.database.bean.TaskDataBean +import com.mogo.och.weaknet.database.bean.TaskSiteDataBean import com.mogo.och.weaknet.database.repository.ContraiRepository import com.mogo.och.weaknet.database.repository.EventRepository import com.mogo.och.weaknet.database.repository.LineRepository @@ -49,13 +57,13 @@ object BusLineModel { // 展示上一次刷新时间 private const val executableChangeTime = "executablechangetime" + var currentTask: TaskDataBean?=null + // 当前任务的站点列表 - private var stationList = mutableListOf() + var stationList:MutableList? = mutableListOf() // 当前站点 - private var startStation: BusStationBean? = null - private var startStationIndex: Int = -1 - private var endStation: BusStationBean? = null + var startStationIndex: Int = 0 //A->B 此处值是A站点索引 @JvmStatic fun init() { @@ -91,9 +99,12 @@ object BusLineModel { val currentRequest = DigestUtils.md5Hex(data.data.toString()) val lastChangeMd5 = SharedPrefsMgr.getInstance().getString(executableChangeMd5) - SharedPrefsMgr.getInstance() - .putLong(executableChangeTime, DateTimeUtil.getCurrentTimeStamp()) - if (currentRequest == lastChangeMd5) { + val lastUpdateTime = SharedPrefsMgr.getInstance().getLong(executableChangeTime, 0) + val currentTimeStamp = DateTimeUtil.getCurrentTimeStamp() + + SharedPrefsMgr.getInstance().putLong(executableChangeTime, currentTimeStamp) + val sameDay = DateTimeUtil.isSameDay(currentTimeStamp, lastUpdateTime) + if (currentRequest == lastChangeMd5 && sameDay) { return } SharedPrefsMgr.getInstance().putString(executableChangeMd5, currentRequest) @@ -203,30 +214,157 @@ object BusLineModel { // 1、从别的数据库加载任务 // 2、本地没有从远端恢复任务 fun loadStartedTaskAndDefaultInfo() { + // 获取正在运行的任务 val runningTaskInfo = TaskRepository.queryRunningTask() if (runningTaskInfo.isNullOrEmpty()) { + // 本地没有进行中的任务 // todo: 尝试加载远程数据 } else if (runningTaskInfo.size > 1) { - // TODO: 1 清理本地数据 2 加载后台数据 + // 本地有多条正在进行的任务 需要check event + // TODO:1 比对event表 1 清理错误数据 2 加载后台数据 } else { - val first = runningTaskInfo.first() + // 只有一条进行中的任务 + currentTask = runningTaskInfo.first() // 恢复站点信息 - first.taskId?.let { + currentTask?.taskId?.let { + // 获取正在进行中的具体信息 val runnintTaskAndSites = TaskSiteRepository.queryRunningTask(it) + if(runnintTaskAndSites.isNullOrEmpty()||runnintTaskAndSites.size<2){ + // TODO: 错误数据需要上报一下 有进行中的任务 在正在跑的任务重没有数据 + return + } val db2Beans = BusRoutesResponse.db2Beans(runnintTaskAndSites) stationList = db2Beans.first - startStation = db2Beans.second - startStationIndex = db2Beans.third - if (startStationIndex < stationList.size) { - endStation = stationList[startStationIndex + 1] - } + startStationIndex = db2Beans.second } // 设置自动驾驶信息 - first.lineId?.let { + currentTask?.lineId?.let { val contraiInfoTemp = ContraiRepository.queryAutopilotInfoByLineid(it) ContrailDataBean.save2Common(contraiInfoTemp) } } } + + // 滑动出发 + fun leaveStation(){ + //开始站点: leaving false->true + LineManager.startStation?.let { startStation -> + startStation.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + startStation.isLeaving = true + if (currentTask != null && currentTask!!.taskId != null) { + currentTask?.taskId?.let { taskId -> + TaskSiteRepository.updateLeave(taskId, startStation.siteId.toLong(), true) + // 设置滑动出发任务 + EventRepository.saveEventTaskLeaveSite( + taskId, + startStation.siteId.toLong(), + startStation.seq + ) + } + } else { + OchChainLogManager.writeChainLog( + "滑动出发_数据更新_error", + "task:${currentTask}__taskId:${currentTask?.taskId}" + ) + } + } + val changeInfo = + "taskId:${currentTask?.taskId}--lineId:${currentTask?.lineId}--currentStationName:${LineManager.startStation?.name}--finalNextStationName:${LineManager.endStation?.name}" + OchChainLogManager.writeChainLog("滑动出发", changeInfo) + } + // 到站 + fun arrivedStation() { + // 开始站点:leaving true->false drivingStatus 2->1 + LineManager.startStation?.let { + it.drivingStatus = TaskSiteDataBean.drivingStatusPassed + it.isLeaving = false + if(currentTask!=null&& currentTask!!.taskId!=null){ + currentTask?.taskId?.let { taskId-> + TaskSiteRepository.updateDrivingStatusAndLeave(taskId,it.siteId.toLong(),TaskSiteDataBean.drivingStatusPassed,false) + // 设置到站任务 + EventRepository.saveEventTaskArriveSite(taskId,it.siteId.toLong(),it.seq) + } + }else{ + OchChainLogManager.writeChainLog("到站_数据更新_error","task:${currentTask}__taskId:${currentTask?.taskId}") + } + } + // 结束站点: drivingStatus 3-2 + LineManager.endStation?.let { + it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent + if(currentTask!=null&& currentTask!!.taskId!=null){ + currentTask?.taskId?.let { taskId-> + TaskSiteRepository.updateDrivingStatus(taskId,it.siteId.toLong(),TaskSiteDataBean.drivingStatusCurrent) + } + }else{ + OchChainLogManager.writeChainLog("到站_数据更新_error","task:${currentTask}__taskId:${currentTask?.taskId}") + } + } + + stationList?.let { + startStationIndex+=1 + LineManager.startStation = LineManager.endStation + if(startStationIndex+1< it.size){ + LineManager.endStation = it[startStationIndex+1] + } + } + } + + fun isLastStation():Boolean?{ + if (stationList.isNullOrEmpty()) { + return null + }else{ + return startStationIndex == stationList!!.size - 1 + } + + } + + fun getTaskTime():String { + return DateTimeUtil.formatLongToString( + currentTask!!.taskStartTime!!, + DateTimeUtil.HH_mm + ) + } + + fun abortTask() { + currentTask?.taskId?.let { + TaskRepository.endTask(it) + EventRepository.saveEventTaskEnd(it) + } + + currentTask = null + LineManager.lineInfos = null + LineManager.startStation = null + LineManager.endStation = null + stationList = mutableListOf() + startStationIndex = 0 + } + + fun startTaskMessage():Boolean { + if (!stationList.isNullOrEmpty()) { + return startStationIndex == 0 && stationList!!.first().drivingStatus == BusConst.STATION_STATUS_STOPPED && !stationList!!.first().isLeaving + } + return false + } + + fun setDemoMode() { + // 美化是否开始 + if (FunctionBuildConfig.isDemoMode) { //行驶过程中设置美化 + if (LineManager.startStation!=null&&LineManager.startStation!!.isLeaving) { + OrderModel.startBeautificationMode() + d(M_BUS + TAG, "美化模式-ignore:置为true(每次滑动出发)") + } else if (startStationIndex > 0 && startStationIndex < stationList!!.size - 1) { + //美化模式下 中间站点到站 引导线要一直绘制,所以此处不出强制绘制不传false + CallerAutoPilotControlManager.setIPCDemoMode(false) + d(M_BUS + TAG, "美化模式-ignore:false(到达中间站)") + OrderModel.clearStartAutopilotTag() + } else { + OrderModel.closeBeautificationMode() + OrderModel.clearStartAutopilotTag() + } + } + } + + + } 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 6f041c1f5f..bd669a6173 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 @@ -5,7 +5,6 @@ import android.content.Context import android.text.TextUtils import com.elegant.network.utils.GsonUtil import com.mogo.commons.AbsMogoApplication -import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLonLat @@ -21,8 +20,8 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS import com.mogo.eagle.core.utilcode.util.CoordinateUtils import com.mogo.eagle.core.utilcode.util.GsonUtils -import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.StringUtils +import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.biz.login.LoginStatusManager @@ -32,29 +31,22 @@ import com.mogo.och.common.module.manager.autopilot.autopilot.bean.ArrivedStatio import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager.canStartAutoPilot import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager.canStartAutoPilotSSM import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager.startAutoPilot -import com.mogo.och.common.module.manager.autopilot.line.LineManager.setLineId +import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager -import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager.setStationPoint -import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager.writeChainLog +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.socket.cloud.AbnormalFactorsLoopManager import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager import com.mogo.och.common.module.manager.socket.cloud.action.OperateAction import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener import com.mogo.och.common.module.manager.socket.lan.LanSocketManager import com.mogo.och.common.module.manager.socket.lan.LedScreenManager -import com.mogo.och.common.module.manager.socket.lan.bean.BusCacheKey import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType -import com.mogo.och.common.module.manager.socket.lan.bean.LoginCacheStatus import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg -import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.DateTimeUtil -import com.mogo.och.common.module.utils.MultiRequestLimitChecker.Companion.generateRequestId -import com.mogo.och.common.module.utils.MultiRequestLimitChecker.Companion.getInstance import com.mogo.och.common.module.utils.NumberFormatUtil import com.mogo.och.common.module.utils.OCHThreadPoolManager -import com.mogo.och.common.module.utils.PinYinUtil import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.voice.VoiceNotice.showNotice @@ -62,15 +54,11 @@ import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.BusTransferData import com.mogo.och.shuttle.weaknet.R -import com.mogo.och.weaknet.bean.BusRoutesResponse import com.mogo.och.weaknet.callback.IBusADASStatusCallback import com.mogo.och.weaknet.callback.IBusControllerStatusCallback import com.mogo.och.weaknet.callback.IRefreshBusStationsCallback import com.mogo.och.weaknet.callback.ISlidePannelHideCallback import com.mogo.och.weaknet.constant.BusConst -import com.mogo.och.weaknet.net.OrderServiceManager -import com.mogo.och.weaknet.net.OrderServiceManager.endTask -import com.mogo.och.weaknet.net.OrderServiceManager.leaveStation import com.mogo.och.weaknet.util.BusAnalyticsManager import com.mogo.och.weaknet.util.BusTrajectoryManager import com.mogo.och.weaknet.util.ShuttleVoiceManager @@ -86,11 +74,7 @@ import com.mogo.och.weaknet.util.ShuttleVoiceManager object OrderModel { private val TAG: String = OrderModel::class.java.simpleName - @JvmStatic - var currentStationIndex: Int = 0 //A->B 此处值是A站点索引 - private set private var mContext: Context? = null - private val stationList: MutableList = ArrayList() @JvmStatic var busRoutesResult: BusRoutesResult? = null private set @@ -218,33 +202,31 @@ object OrderModel { //是否到站的围栏判断 离站状态并且自动驾驶还未触发到站 if (isGoingToNextStation && !isArrivedStation) { - OCHThreadPoolManager.getsInstance() - .locationExecute { judgeArrivedStation(mogoLocation) } + OCHThreadPoolManager.getsInstance().locationExecute { + judgeArrivedStation(mogoLocation) + } } } } //根据围栏判断,是否到达站点 private fun judgeArrivedStation(location: MogoLocation) { - if (currentStationIndex + 1 > stationList.size - 1) { - e(SceneConstant.M_BUS + TAG, "到站数组越界") + if (LineManager.endStation==null) { + e(M_BUS + TAG, "未设置终点坐标") + OchChainLogManager.writeChainLog("shuttle弱网","围栏距离判断 未设置终点坐标") return } - val upcomingStation = stationList[currentStationIndex + 1] - - val startLon = upcomingStation.gcjLon - val startLat = upcomingStation.gcjLat - val distance = CoordinateUtils.calculateLineDistance( - startLon, startLat, - location.longitude, location.latitude - ).toDouble() - - if (distance <= BusConst.ARRIVE_AT_END_STATION_DISTANCE) { - d( - SceneConstant.M_BUS + TAG, "行程日志-judgeArrivedStation() distance = " + distance - + " to " + upcomingStation.name + LineManager.endStation?.let { + val startLon = it.gcjLon + val startLat = it.gcjLat + val distance = CoordinateUtils.calculateLineDistance( + startLon, startLat, + location.longitude, location.latitude ) - onArriveAt(null, "兜底:根据定位计算到站") + if (distance <= BusConst.ARRIVE_AT_END_STATION_DISTANCE) { + d(M_BUS + TAG, "行程日志-judgeArrivedStation() distance = $distance to ${it.name}") + onArriveAt(null, "兜底:根据定位计算到站") + } } } @@ -254,47 +236,23 @@ object OrderModel { @JvmStatic fun queryBusRoutes() { d(M_BUS + TAG, "查询小巴路线") - OrderServiceManager.queryBusRoutes( - mContext!!, - object : OchCommonServiceCallback { - override fun onSuccess(data: BusRoutesResponse) { - if (data.result == null || data.result!!.sites == null || data.result!!.sites.isEmpty()) { -// //当为空时,显示无绑定路线图 - d(M_BUS + TAG, "获取到小巴路线数据:空 ") - if (refreshBusStationsCallback != null) { - refreshBusStationsCallback!!.updateEmptyUi() - } - updateBusStatus(null) - clearAutopilotControlParameters() - closeBeautificationMode() - clearStartAutopilotTag() - removeTipRunnables() - return - } - - if (busRoutesResult == null || busRoutesResult!!.writeVersion < data.result!!.writeVersion) { - d(M_BUS + TAG, "更新小巴路线数据: $data") - updateBusStatus(data.result) - } + ThreadUtils.getIoPool().execute { + BusLineModel.loadStartedTaskAndDefaultInfo() + if(BusLineModel.stationList.isNullOrEmpty()){ + d(M_BUS + TAG, "获取到小巴路线数据:空 ") + if (refreshBusStationsCallback != null) { + refreshBusStationsCallback!!.updateEmptyUi() } - - - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext!!.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip)) - } - } - - override fun onFail(code: Int, failMsg: String) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试") - } else { - ToastUtils.showShort(failMsg) - } - } - }) + LineManager.setLineInfo(null); + updateBusStatus() + clearAutopilotControlParameters() + closeBeautificationMode() + clearStartAutopilotTag() + removeTipRunnables() + }else{ + updateBusStatus() + } + } } /** @@ -302,56 +260,50 @@ object OrderModel { */ private fun updateBusTaskStatus() { var arrivingOrArrivedStationIndex = 0 //已经到站或者即将到站的索引呢 + BusLineModel.stationList?.let { + for (i in it.indices) { + val station = it[i] - for (i in stationList.indices) { - val station = stationList[i] - - if (i == 0) { // 首发站 显示在最上面 - if (station.drivingStatus == BusConst.STATION_STATUS_STOPPED - && !station.isLeaving - ) { //到达第一站 - arrivingOrArrivedStationIndex = i - break + if (i == 0) { // 首发站 显示在最上面 + if (station.drivingStatus == BusConst.STATION_STATUS_STOPPED + && !station.isLeaving + ) { //到达第一站 + arrivingOrArrivedStationIndex = i + break + } + } else { + val preStation = it[i - 1] + if ((station.drivingStatus == BusConst.STATION_STATUS_STOPPED && !station.isLeaving) + || (station.drivingStatus == BusConst.STATION_STATUS_ARRIVING + && preStation.isLeaving) + ) { + //到站未离开 | 即将到站 显示在最中间 + arrivingOrArrivedStationIndex = i + break + } } - } else { - val preStation = stationList[i - 1] - if ((station.drivingStatus == BusConst.STATION_STATUS_STOPPED && !station.isLeaving) - || (station.drivingStatus == BusConst.STATION_STATUS_ARRIVING - && preStation.isLeaving) + } + val arrivingOrArrivedStation = it[arrivingOrArrivedStationIndex] + val lineTime = BusLineModel.getTaskTime() + LineManager.lineInfos?.let {lineInfo-> + if (arrivingOrArrivedStationIndex == 0 || ( + arrivingOrArrivedStation.drivingStatus == BusConst.STATION_STATUS_STOPPED + && !arrivingOrArrivedStation.isLeaving) ) { - //到站未离开 | 即将到站 显示在最中间 - arrivingOrArrivedStationIndex = i - break + refreshBusStationsCallback?.updateBusTaskStatus( + lineInfo.lineName, lineTime, + it, arrivingOrArrivedStationIndex, true + ) + clearAutopilotControlParameters() + } else { + refreshBusStationsCallback?.updateBusTaskStatus( + lineInfo.lineName, lineTime, + it, arrivingOrArrivedStationIndex, false + ) + updateAutopilotControlParameters() } } - } - val arrivingOrArrivedStation = stationList[arrivingOrArrivedStationIndex] - - val lineTime = DateTimeUtil.formatLongToString( - busRoutesResult!!.taskTime, - DateTimeUtil.HH_mm - ) - - if (arrivingOrArrivedStationIndex == 0 || ( - arrivingOrArrivedStation.drivingStatus == BusConst.STATION_STATUS_STOPPED - && !arrivingOrArrivedStation.isLeaving) - ) { - if (refreshBusStationsCallback != null) { - refreshBusStationsCallback!!.updateBusTaskStatus( - busRoutesResult!!.name, lineTime, - stationList, arrivingOrArrivedStationIndex, true - ) - } - clearAutopilotControlParameters() - } else { - if (refreshBusStationsCallback != null) { - refreshBusStationsCallback!!.updateBusTaskStatus( - busRoutesResult!!.name, lineTime, - stationList, arrivingOrArrivedStationIndex, false - ) - } - updateAutopilotControlParameters() } } @@ -360,62 +312,35 @@ object OrderModel { */ @JvmStatic fun abortTask() { - d(SceneConstant.M_BUS + TAG, "结束当前路线abortTask") - if (busRoutesResult == null) { - ToastUtils.showLong("数据异常、请稍后再试") - return - } - OrderServiceManager.abortTask( - mContext!!, busRoutesResult!!.taskId, object : OchCommonServiceCallback { - override fun onSuccess(o: BaseData) { - d(SceneConstant.M_BUS + TAG, "abortTask success: $o") - if (o.code == 0) { // 重置成功 - endOrAbortTaskSuccess() - clearBusStationDatas() - queryBusRoutes() - removeTipRunnables() - // 取消自驾 - CallerAutoPilotControlManager.cancelAutoPilot() - setTrajectoryStation(null, null, -1L) - } - } + d(M_BUS + TAG, "结束当前路线abortTask") - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext!!.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip)) - } - } - - override fun onFail(code: Int, failMsg: String) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试") - } else { - ToastUtils.showShort(failMsg) - } - } - }) + endOrAbortTaskSuccess() + clearBusStationDatas() + queryBusRoutes() + removeTipRunnables() + ShuttleVoiceManager.endOrderBus() + // 取消自驾 + CallerAutoPilotControlManager.cancelAutoPilot() + setTrajectoryStation(true) } /** * 中断或者正常结束任务后的处理 */ private fun endOrAbortTaskSuccess() { - isGoingToNextStation = false - currentStationIndex = 0 - if (busRoutesResult != null) { + isGoingToNextStation = false + + LineManager.lineInfos?.let { LedScreenManager.sendTripInfo2Led( LedScreenManager.END_TRIP, - busRoutesResult!!.name, + it.lineName, "", "", false ) } - - busRoutesResult = null + BusLineModel.abortTask() sendTaskDetailsToClients() } @@ -425,58 +350,40 @@ object OrderModel { * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, * 车机端展示是离开当前站,下一站设置为当前站, 所以服务端数据回来要做处理,不能直接渲染 */ - private fun leaveStationSuccess( - leaveIndex: Int, leaveStation: String, - nextStation: String, nextStationKr: String, - writeVersion: Long - ) { - onStartAutopilot(leaveIndex) + private fun leaveStationSuccess() { + onStartAutopilot() - leaveTTSTips(nextStation, nextStationKr) + if(LineManager.startStation!=null&&LineManager.endStation!=null&&LineManager.lineInfos!=null){ + LineManager.startStation?.let {startStation-> + LineManager.endStation?.let {endStation-> + leaveTTSTips(endStation.name, startStation.nameKr) - if (busRoutesResult != null) { - var isLastStop = false - if (leaveIndex + 1 == stationList.size - 1) { - isLastStop = true + //给bus外屏发送 + LedScreenManager.sendTripInfo2Led( + LedScreenManager.LEAVE_STATION, + LineManager.lineInfos!!.lineName, + startStation.name, + endStation.name, + BusLineModel.isLastStation()==true + ) + } } - //给bus外屏发送 - LedScreenManager.sendTripInfo2Led( - LedScreenManager.LEAVE_STATION, - busRoutesResult!!.name, - leaveStation, - nextStation, - isLastStop - ) + }else{ + ToastUtils.showShort("未设置起始或终点站点") } - reBuildCacheRouteData(leaveIndex, BusConst.STATION_STATUS_STOPPED, true, writeVersion) + + BusLineModel.leaveStation() + + updateBusStatus() } - private fun reBuildCacheRouteData(currentIndex: Int, currentDrivingStatus: Int, isLeaving: Boolean, writeVersion: Long) { - if (busRoutesResult != null) { - busRoutesResult!!.writeVersion = writeVersion - val sites = busRoutesResult!!.sites - val bean = sites[currentIndex] - bean.drivingStatus = currentDrivingStatus - bean.isLeaving = isLeaving - sites[currentIndex] = bean - if (currentDrivingStatus == BusConst.STATION_STATUS_STOPPED && !isLeaving) { - val beanPre = sites[currentIndex - 1] - beanPre.drivingStatus = BusConst.STATION_STATUS_LEAVING - beanPre.isLeaving = false - sites[currentIndex - 1] = beanPre - } - - updateBusStatus(busRoutesResult) - } - } - - private fun onStartAutopilot(leaveIndex: Int) { + private fun onStartAutopilot() { //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 isGoingToNextStation = true if (CallerAutoPilotStatusListenerManager.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING ) { - startAutopilot(false, leaveIndex) + startAutopilot(false) } else { firstStartAutopilot = 0 } @@ -487,49 +394,38 @@ object OrderModel { * * @param isRestart */ - private fun startAutopilot(isRestart: Boolean, leaveIndex: Int) { + private fun startAutopilot(isRestart: Boolean) { BusAnalyticsManager.triggerClickStartAutopilotTime(System.currentTimeMillis()) //1、判断轨迹url是否可用 - if (busRoutesResult != null) { - //根据开关和后台是否发布轨迹启动自驾 + if(LineManager.contraiInfo==null){ + ToastUtils.showLong("无发布轨迹, 请发布后重试") + return + }else{ if (FunctionBuildConfig.isPassStartAutopilotCommand - && TextUtils.isEmpty(busRoutesResult!!.csvFileUrl) - && TextUtils.isEmpty(busRoutesResult!!.csvFileUrlDPQP) + && TextUtils.isEmpty(LineManager.contraiInfo!!.csvFileUrl) + && TextUtils.isEmpty(LineManager.contraiInfo!!.csvFileMd5) ) { ToastUtils.showLong("无发布轨迹, 请发布后重试") e( TAG, "isPassStartAutopilotCommand = " + FunctionBuildConfig.isPassStartAutopilotCommand - + "busRoutesResult.csvFileUrl = " + busRoutesResult!!.csvFileUrl + + "busRoutesResult.csvFileUrl = " + LineManager.contraiInfo!!.csvFileUrl ) return } } + //2、6个条件判断 if (!CallerAutoPilotControlManager.isCanStartAutopilot(true, 0)) { return } + // 3、距离轨迹15m计算 - //3、距离轨迹15m计算 - var resion = canStartAutoPilot(busRoutesResult!!.lineId) + var resion = canStartAutoPilot(LineManager.contraiInfo!!.lineId) if (TrajectoryAndDistanceManager.errorTypeNoneLineId == resion) { - val nextStationPoint = MogoLocation() - if (currentStationIndex < stationList.size - 1) { - val nextStation = stationList[currentStationIndex + 1] - nextStationPoint.longitude = nextStation.gcjLon - nextStationPoint.latitude = nextStation.gcjLat - } - val busStationBean = stationList[currentStationIndex] - val currentStationPoint = MogoLocation() - currentStationPoint.longitude = busStationBean.gcjLon - currentStationPoint.latitude = busStationBean.gcjLat - setTrajectoryStation( - currentStationPoint, - nextStationPoint, - busRoutesResult!!.lineId.toLong() - ) - resion = canStartAutoPilot(busRoutesResult!!.lineId) + setTrajectoryStation(false) + resion = canStartAutoPilot(LineManager.contraiInfo!!.lineId) } if (!StringUtils.isEmpty(resion)) { ToastUtils.showShort(resion) @@ -546,7 +442,7 @@ object OrderModel { triggerStartServiceEvent(isRestart, false) - val parameters = initAutopilotControlParameters(leaveIndex) + val parameters = initAutopilotControlParameters() if (null == parameters) { e(SceneConstant.M_BUS + TAG, "行程日志-AutopilotControlParameters is empty.") return @@ -570,89 +466,41 @@ object OrderModel { * 到站后重置站点状态 */ private fun arriveSiteStation(changeInfo: String) { - writeChainLog("触发进站", changeInfo) - if (currentStationIndex + 1 > stationList.size - 1) { //到站短时间内调用多次 - e(SceneConstant.M_BUS + TAG, "数组越界") + OchChainLogManager.writeChainLog("触发进站", changeInfo) + if (LineManager.endStation==null) { + e(M_BUS + TAG, "未设置终点坐标") + OchChainLogManager.writeChainLog("shuttle弱网","围栏距离判断 未设置终点坐标") return } - val arrivedStationIndex = currentStationIndex + 1 - val arriveStation = stationList[arrivedStationIndex].name - val arriveStationKr = stationList[arrivedStationIndex].nameKr - val departureStopName = stationList[currentStationIndex].name - d(SceneConstant.M_BUS + TAG, "arriveSiteStation-currentStationIndex = $arrivedStationIndex") - isArrivedStation = true isGoingToNextStation = false - val writeVersion = DateTimeUtil.getCurrentTimeStamp() - arriveStationSuccess( - arrivedStationIndex, departureStopName, - arriveStation, arriveStationKr, writeVersion - ) - - val requestId = generateRequestId( - "$TAG-arriveSiteStation", - stationList[arrivedStationIndex].siteId.toString(), - busRoutesResult!!.taskId.toString() - ) - if (!getInstance().canMakeRequest(requestId, 5)) { - d( - SceneConstant.M_BUS + TAG, - "arriveSiteStation-MultiRequestLimitChecker: 超过最大请求数,本次请求return" - ) - return - } - OrderServiceManager.arriveSiteStation( - mContext!!, - stationList[arrivedStationIndex].seq, - stationList[arrivedStationIndex].siteId, - busRoutesResult!!.taskId, writeVersion, - object : OchCommonServiceCallback { - override fun onSuccess(o: BaseData) { - d(SceneConstant.M_BUS + TAG, "行程日志-arriveSiteStation success") - getInstance().decreaseRequestCount(requestId) - } - - override fun onError() { - getInstance().decreaseRequestCount(requestId) - } - - override fun onFail(code: Int, failMsg: String) { - getInstance().decreaseRequestCount(requestId) - } - }) + arriveStationSuccess() } - private fun arriveStationSuccess( - arrivedStationIndex: Int, departureStopName: String, - arriveStation: String, arriveStationKr: String, - writeVersion: Long - ) { - if (busRoutesResult != null) { - var isLastStop = false - if (arrivedStationIndex == busRoutesResult!!.sites.size - 1) { - isLastStop = true + 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 + ) + } } - //给bus外屏发送 - LedScreenManager.sendTripInfo2Led( - LedScreenManager.ARRIVE_STATION, - busRoutesResult!!.name, - departureStopName, - arriveStation, - isLastStop - ) + }else{ + ToastUtils.showShort("未设置起始或终点站点") } - - ShuttleVoiceManager.arrivedStationBus(arriveStation, arriveStationKr) - - reBuildCacheRouteData( - arrivedStationIndex, - BusConst.STATION_STATUS_STOPPED, - false, - writeVersion - ) + BusLineModel.arrivedStation() + updateBusStatus() } + private fun sendTaskDetailsToClients() { val data = BusTransferData(if (LoginStatusManager.isLogin()) 1 else 0, busRoutesResult) val msg = TaskDetailsMsg(GsonUtils.toJson(data), BusinessType.shuttle) @@ -665,74 +513,29 @@ object OrderModel { * 离站上报 */ private fun leaveStation() { - d(M_BUS + TAG, "leaveStation-backgroundCurrentStationIndex = $currentStationIndex") - if (busRoutesResult == null) { - ToastUtils.showLong("数据异常、请稍后再试") + if (LineManager.endStation==null) { + OchChainLogManager.writeChainLog("滑动出发", "未设置终点坐标") return } - var nextStationName = "" - var nextStationNameKr = "" - val nextStationPoint = MogoLocation() - if (currentStationIndex < stationList.size - 1) { - val nextStation = stationList[currentStationIndex + 1] - nextStationName = nextStation.name - nextStationNameKr = nextStation.nameKr ?: "" - nextStationPoint.longitude = nextStation.gcjLon - nextStationPoint.latitude = nextStation.gcjLat - } - val currentStationName = stationList[currentStationIndex].name - val finalNextStationName = nextStationName - val finalNextStationNameKr = nextStationNameKr - isArrivedStation = false - d(M_BUS + TAG, "行程日志-离站成功开往下一站====") - - val writeVersion = DateTimeUtil.getCurrentTimeStamp() - leaveStationSuccess( - currentStationIndex, currentStationName, - finalNextStationName, finalNextStationNameKr, writeVersion - ) - - val busStationBean = stationList[currentStationIndex] - val currentStationPoint = MogoLocation() - currentStationPoint.longitude = busStationBean.gcjLon - currentStationPoint.latitude = busStationBean.gcjLat - setTrajectoryStation( - currentStationPoint, - nextStationPoint, - busRoutesResult!!.lineId.toLong() - ) - - val changeInfo = - "taskId:" + busRoutesResult!!.taskId + "--lineId:" + busRoutesResult!!.lineId + - "--currentStationName:" + currentStationName + "--finalNextStationName:" + finalNextStationName - writeChainLog("滑动出发", changeInfo) - leaveStation( - mContext!!, - stationList[currentStationIndex].seq, - stationList[currentStationIndex].siteId, - busRoutesResult!!.taskId, writeVersion, - object : OchCommonServiceCallback { - override fun onSuccess(o: BaseData) { - writeChainLog("滑动出发成功", changeInfo) - } - - - override fun onError() { - } - - override fun onFail(code: Int, failMsg: String) { - } - }) + leaveStationSuccess() } //车站10s后播报 - private fun leaveTTSTips(nextStation: String, nextStationKr: String) { + private fun leaveTTSTips(nextStation: String?, nextStationKr: String?) { UiThreadHandler.postDelayed({ //延迟10s播报 ShuttleVoiceManager.leaveStationBus(nextStation, nextStationKr) }, BusConst.DELAY_10S) } + @JvmStatic + fun startBeautificationMode() { + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true + CallerAutoPilotControlManager.setIgnoreConditionDraw(true) + CallerAutoPilotControlManager.setIPCDemoMode(true) + } + + /** * 关闭美化模式 */ @@ -751,9 +554,9 @@ object OrderModel { */ @JvmStatic fun autoDriveToNextStation() { - if (currentStationIndex >= stationList.size - 1) { + if (BusLineModel.isLastStation()==true) { // 当前站是最后一站,结束当前行程 - travelOver() + endTask() return } leaveStation() @@ -766,82 +569,38 @@ object OrderModel { * * @param result */ - private fun updateBusStatus(result: BusRoutesResult?) { - if (result == null) { - setLineId(-1) - return - } - busRoutesResult = result - setLineId(busRoutesResult!!.lineId) - stationList.clear() - stationList.addAll(result.sites) - for (i in stationList.indices) { - val s = stationList[i] - - d("${M_BUS}updateBusStationsStatus", "Index=$i ,name = ${s.name} ,${s.isLeaving},${s.drivingStatus}") - - // 是否正在开往下一站 - if (s.isLeaving) { - isGoingToNextStation = true - } - // 当前站点信息 - if (s.drivingStatus == BusConst.STATION_STATUS_STOPPED) { - currentStationIndex = i - break - } - } - - if (currentStationIndex == 0 && stationList[0].drivingStatus == BusConst.STATION_STATUS_STOPPED && !stationList[0].isLeaving - ) { //默认是第一站到站查询 - if (busRoutesResult != null) { // 第一站到站也是行程开始的时候 - LedScreenManager.sendTripInfo2Led( - LedScreenManager.START_TRIP, - busRoutesResult!!.name, "", "", false - ) - } - - //任务选择后首发前给司机提示任务 - if (busRoutesResult != null) { + private fun updateBusStatus() { + BusLineModel.stationList?.let { + if (BusLineModel.startTaskMessage()) { //默认是第一站到站查询 + LineManager.lineInfos?.lineName?.let { lineName-> + LedScreenManager.sendTripInfo2Led( + LedScreenManager.START_TRIP, + lineName, "", "", false + ) + } + //任务选择后首发前给司机提示任务 beforeTaskTips() - } - } else { - removeTipRunnables() - } - - val currentStation = stationList[currentStationIndex] - - d(M_BUS + TAG, "行程日志-STATION_STATUS_STOPPED-backgroundCurrentStationIndex=${currentStationIndex} isLeaving()=${currentStation.isLeaving}") - - // 美化是否开始 - if (FunctionBuildConfig.isDemoMode && (currentStationIndex >= 0 - && currentStationIndex <= stationList.size - 1) - ) { //行驶过程中设置美化 - if (stationList[currentStationIndex].isLeaving) { - startBeautificationMode() - d(M_BUS + TAG, "美化模式-ignore:置为true(每次滑动出发)") - } else if (currentStationIndex > 0 && currentStationIndex < stationList.size - 1) { - //美化模式下 中间站点到站 引导线要一直绘制,所以此处不出强制绘制不传false - CallerAutoPilotControlManager.setIPCDemoMode(false) - d(M_BUS + TAG, "美化模式-ignore:false(到达中间站)") - clearStartAutopilotTag() } else { - closeBeautificationMode() - clearStartAutopilotTag() + removeTipRunnables() } + + + BusLineModel.setDemoMode() + + LineManager.startStation?.let {startStation -> + if (startStation.isLeaving && slidePanelHideCallback != null) { + slidePanelHideCallback!!.hideSlidePanel() + } + } + + sendTaskDetailsToClients() + + //更新bus路线面板 + updateBusTaskStatus() + + //需放在currentStationIndex赋值之后 + BusTrajectoryManager.getInstance().syncTrajectoryInfo() } - - - if (currentStation.isLeaving && slidePanelHideCallback != null) { - slidePanelHideCallback!!.hideSlidePanel() - } - - sendTaskDetailsToClients() - - //更新bus路线面板 - updateBusTaskStatus() - - //需放在currentStationIndex赋值之后 - BusTrajectoryManager.getInstance().syncTrajectoryInfo() } private fun beforeTaskTips() { @@ -863,8 +622,8 @@ object OrderModel { } private var tip3Runnable = Runnable { - if (currentStationIndex == 0 && stationList[0].drivingStatus == BusConst.STATION_STATUS_STOPPED && !stationList[0].isLeaving - ) { + + if (BusLineModel.startTaskMessage()) { tipStartTask("3") } else { removeTipRunnables() @@ -872,8 +631,7 @@ object OrderModel { } private var tip1Runnable = Runnable { - if (currentStationIndex == 0 && stationList[0].drivingStatus == BusConst.STATION_STATUS_STOPPED && !stationList[0].isLeaving - ) { + if (BusLineModel.startTaskMessage()) { tipStartTask("1") } else { removeTipRunnables() @@ -897,15 +655,11 @@ object OrderModel { UiThreadHandler.removeCallbacks(tip1Runnable) } - private fun clearStartAutopilotTag() { + fun clearStartAutopilotTag() { firstStartAutopilot = 0 } - private fun startBeautificationMode() { - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true - CallerAutoPilotControlManager.setIgnoreConditionDraw(true) - CallerAutoPilotControlManager.setIPCDemoMode(true) - } + @JvmStatic fun clearBusStationDatas() { @@ -921,62 +675,27 @@ object OrderModel { fun restartAutopilot() { d(M_BUS + TAG, "行程日志-重启自动驾驶===$isGoingToNextStation") //只去启动自动驾驶,不再去上报离站 - startAutopilot(firstStartAutopilot >= 1, -1) + startAutopilot(firstStartAutopilot >= 1) } @JvmStatic val isRestartAutopilot: Boolean get() = firstStartAutopilot > 1 - /** - * 行程结束 - */ - private fun travelOver() { - if (currentStationIndex >= stationList.size) { - e(SceneConstant.M_BUS + TAG, "travel over index out of station list") - return - } - d(SceneConstant.M_BUS + TAG, "单程结束====") - CallerAutoPilotControlManager.cancelAutoPilot() - setTrajectoryStation(null, null, -1L) - endTask() - } - /** * task正常结束 */ private fun endTask() { - d(SceneConstant.M_BUS + TAG, "任务正常走完endTask()") - endTask( - mContext!!, busRoutesResult!!.taskId, - object : OchCommonServiceCallback { - override fun onSuccess(o: BaseData) { - d(SceneConstant.M_BUS + TAG, "endTask success: $o") - if (o.code == 0) { - endOrAbortTaskSuccess() - clearBusStationDatas() - queryBusRoutes() // 重新获取任务 - removeTipRunnables() - ShuttleVoiceManager.endOrderBus() - } - } + d(M_BUS + TAG, "结束当前路线abortTask") - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext!!.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip)) - } - } - - override fun onFail(code: Int, failMsg: String) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试") - } else { - ToastUtils.showShort(failMsg) - } - } - }) + endOrAbortTaskSuccess() + clearBusStationDatas() + queryBusRoutes() + removeTipRunnables() + ShuttleVoiceManager.endOrderBus() + // 取消自驾 + CallerAutoPilotControlManager.cancelAutoPilot() + setTrajectoryStation(true) } /** @@ -986,8 +705,9 @@ object OrderModel { */ @JvmStatic fun onArriveAt(data: ArrivedStation?, type: String) { - if (currentStationIndex + 1 > stationList.size - 1) { - e(SceneConstant.M_BUS + TAG, "行程日志-到站异常,取消后续操作结束") + if (LineManager.endStation==null) { + e(M_BUS + TAG, "行程日志-到站异常,取消后续操作结束") + OchChainLogManager.writeChainLog("shuttle弱网","$type 行程日志-到站异常,取消后续操作结束") return } @@ -997,21 +717,18 @@ object OrderModel { val latitude = NumberFormatUtil.cutOutNumber(data.endLocation.latitude, 5) //wgs val longitude = NumberFormatUtil.cutOutNumber(data.endLocation.longitude, 5) - val arrivedStationIndex = currentStationIndex + 1 - val arriveStation = stationList[arrivedStationIndex] - val arriveLat = NumberFormatUtil.cutOutNumber(arriveStation.lat, 5) - val arriveLon = NumberFormatUtil.cutOutNumber(arriveStation.lon, 5) + val arriveLat = NumberFormatUtil.cutOutNumber(LineManager.endStation!!.lat, 5) + val arriveLon = NumberFormatUtil.cutOutNumber(LineManager.endStation!!.lon, 5) if (latitude != arriveLat || longitude != arriveLon) { - e(SceneConstant.M_BUS + TAG, "行程日志-到站拦截,到站坐标不一致") + e(M_BUS + TAG, "行程日志-到站拦截,到站坐标不一致") + OchChainLogManager.writeChainLog("shuttle弱网","$type 行程日志-到站拦截,到站坐标不一致") return } } if (isArrivedStation) return - d(M_BUS + TAG, "行程日志-当前==backgroundCurrentStationIndex=${currentStationIndex}") - arriveSiteStation(type) } @@ -1024,48 +741,40 @@ object OrderModel { @JvmStatic fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) { - if (currentStationIndex >= stationList.size - 1) { - return + LineManager.startStation?.let {startStation-> + LineManager.endStation?.let {endStation-> + BusAnalyticsManager.triggerStartAutopilotEvent( + isRestart, + send, + startStation.name, + endStation.name, + busRoutesResult!!.lineId, + "", + System.currentTimeMillis() + ) + } } - val currentStation = stationList[currentStationIndex] - val nextStation = stationList[currentStationIndex + 1] - BusAnalyticsManager.triggerStartAutopilotEvent( - isRestart, - send, - currentStation.name, - nextStation.name, - busRoutesResult!!.lineId, - "", - System.currentTimeMillis() - ) + } fun triggerUnableStartAPReasonEvent() { - if (currentStationIndex >= stationList.size - 1) { - return - } - val currentStation = stationList[currentStationIndex] - val nextStation = stationList[currentStationIndex + 1] - BusAnalyticsManager.triggerUnableStartAPReasonEvent( - currentStation.name, nextStation.name, busRoutesResult!!.lineId.toString(), "", - OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason - ) - } - - val busNextStation: BusStationBean? - get() { - // A->B 的过程中A站点的信息 - if (currentStationIndex >= stationList.size - 1) { - return null + LineManager.startStation?.let {startStation-> + LineManager.endStation?.let {endStation-> + if(LineManager.lineInfos!=null){ + BusAnalyticsManager.triggerUnableStartAPReasonEvent( + startStation.name, endStation.name,LineManager.lineInfos!!.lineId.toString() , "", + OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + ) + } } - return stationList[currentStationIndex] } + } /** * 将业务订单信息保存,鹰眼可取用 */ private fun updateAutopilotControlParameters() { - val parameters = initAutopilotControlParameters(-1) + val parameters = initAutopilotControlParameters() if (null == parameters) { e(M_BUS + TAG, "AutopilotControlParameters is empty.") return @@ -1079,54 +788,66 @@ object OrderModel { CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) } - private fun initAutopilotControlParameters(leaveIndex: Int): AutopilotControlParameters? { - val currentStation: BusStationBean? - val nextStation: BusStationBean? + 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 - if (leaveIndex < 0) { - if (currentStationIndex + 1 > stationList.size - 1 || !isGoingToNextStation) { - e(M_BUS + TAG, "行程日志-mismatch condition1.") - return null + 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 + } } - currentStation = stationList[currentStationIndex] - nextStation = stationList[currentStationIndex + 1] - } else { - if (leaveIndex + 1 > stationList.size - 1 || !isGoingToNextStation) { - e(M_BUS + TAG, "行程日志-mismatch condition2.") - return null - } - currentStation = stationList[leaveIndex] - nextStation = stationList[leaveIndex + 1] + }else{ + ToastUtils.showShort("未设置起始或终点站点") } - - val parameters = AutopilotControlParameters() - parameters.routeID = busRoutesResult!!.lineId - parameters.routeName = busRoutesResult!!.name - parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.name) - parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.name) - parameters.startLatLon = AutoPilotLonLat(currentStation.lat, currentStation.lon) - parameters.endLatLon = AutoPilotLonLat(nextStation.lat, nextStation.lon) - parameters.vehicleType = VEHICLE_TYPE - if (parameters.autoPilotLine == null) { - parameters.autoPilotLine = AutoPilotLine( - busRoutesResult!!.lineId.toLong(), busRoutesResult!!.name, - busRoutesResult!!.csvFileUrl, busRoutesResult!!.csvFileMd5, - busRoutesResult!!.txtFileUrl, busRoutesResult!!.txtFileMd5, - busRoutesResult!!.contrailSaveTime, busRoutesResult!!.carModel, - busRoutesResult!!.csvFileUrlDPQP, busRoutesResult!!.csvFileMd5DPQP, - busRoutesResult!!.txtFileUrlDPQP, busRoutesResult!!.txtFileMd5DPQP, - busRoutesResult!!.contrailSaveTimeDPQP - ) - } - - return parameters + return null } - fun setTrajectoryStation( - startStation: MogoLocation?, - endStation: MogoLocation?, - lineId: Long? - ) { - setStationPoint(startStation, endStation, lineId) + fun setTrajectoryStation(isClean:Boolean) { + if(isClean){ + 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 + + val endStationLocation = MogoLocation() + endStationLocation.latitude = endStation.gcjLat + endStationLocation.longitude = endStation.gcjLon + TrajectoryAndDistanceManager.setStationPoint(startStationLocation, endStationLocation, LineManager.lineInfos!!.lineId) + } + } + }else{ + ToastUtils.showShort("未设置起始或终点站点") + } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt index 0f624e5719..3d4a837dd5 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt @@ -6,23 +6,18 @@ import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.V2XMsg -import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox -import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.eagle.core.utilcode.util.GsonUtils -import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.manager.loop.LoopInfo import com.mogo.och.common.module.manager.socket.cloud.IOchOnMessageListener import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener import com.mogo.och.common.module.manager.socket.lan.LanSocketManager -import com.mogo.och.common.module.manager.socket.lan.bean.BaseDPMsg import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType -import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDevicesMsg import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffMsg import com.mogo.och.common.module.network.OchCommonServiceCallback @@ -94,28 +89,29 @@ object TicketModel : IOchOnMessageListener{ } private fun selectWriteOffCount(){ - val busRoutesResult = OrderModel.busRoutesResult - val busNextStation = OrderModel.busNextStation - if(busRoutesResult==null||busNextStation==null){ - emitterMain?.onNext(0) - d(SceneConstant.M_BUS + TAG, "线路或者站点未空:${busRoutesResult}----${busNextStation}") - return + LineManager.endStation?.let { endStation-> + BusLineModel.currentTask?.let {currentTask-> + OrderServiceManager.queryBusTaskByLineId(AbsMogoApplication.getApp(), + "${currentTask.taskId}", + "${endStation.siteId}", + object : OchCommonServiceCallback { + override fun onSuccess(data: WriteOffCountResponse?) { + data?.data?.let { + emitterMain?.onNext(it) + d(SceneConstant.M_BUS + TAG, "${endStation.name}核销人数:${it}") + } + } + + override fun onFail(code: Int, msg: String?) { + + } + }) + return + } + } - OrderServiceManager.queryBusTaskByLineId(AbsMogoApplication.getApp(), - "${busRoutesResult.taskId}", - "${busNextStation.siteId}", - object : OchCommonServiceCallback { - override fun onSuccess(data: WriteOffCountResponse?) { - data?.data?.let { - emitterMain?.onNext(it) - d(SceneConstant.M_BUS + TAG, "${busNextStation.name}核销人数:${it}") - } - } - - override fun onFail(code: Int, msg: String?) { - - } - }) + emitterMain?.onNext(0) + d(SceneConstant.M_BUS + TAG, "线路或者站点未空") } fun getWriteOffCountObservable():Observable{ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/IBascApiService.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/IBascApiService.java index ca1b62cee3..4ddffe9020 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/IBascApiService.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/IBascApiService.java @@ -1,13 +1,7 @@ package com.mogo.och.weaknet.net; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.och.weaknet.bean.BusCloseTaskRequest; import com.mogo.och.weaknet.bean.BusQueryLineStationsRequest; -import com.mogo.och.weaknet.bean.BusQueryLineTaskResponse; -import com.mogo.och.weaknet.bean.BusQueryLinesResponse; -import com.mogo.och.weaknet.bean.BusResetDrivingLineRequest; import com.mogo.och.weaknet.bean.BusRoutesResponse; -import com.mogo.och.weaknet.bean.BusUpdateSiteStatusRequest; import com.mogo.och.weaknet.bean.CarExecutableTaskResponse; import com.mogo.och.weaknet.bean.WriteOffCountResponse; @@ -27,6 +21,7 @@ import retrofit2.http.Query; * wiki: http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48970072 */ public interface IBascApiService { + /** * 查询当前运行任务 * @@ -37,55 +32,6 @@ public interface IBascApiService { @POST( "/och-shuttle-cabin/api/business/v1/driver/lineDataWithDriver/query" ) Observable queryBusRoutes(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusQueryLineStationsRequest request); - /** - * @param request 请求参数{"destLine":1,"sn":"F803EB2046PZD00229"} 这个接口是重置bus线路的, 不是重置线路中站点的 - * @return 返回值是重置后的车站列表 - * 开始路线 - */ - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) - @POST( "/och-shuttle-cabin/api/flow/v1/driver/startTask" ) - Observable switchLine(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusResetDrivingLineRequest request); - - /** - * 离站,通知服务器 - * @param request - * @return - */ - @Headers({"Content-Type:application/json;charset=UTF-8"}) - @POST("/och-shuttle-cabin/api/flow/v1/driver/leave") - Observable leaveStation(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusUpdateSiteStatusRequest request); - - /** - * 到站 更新到站信息 - * @param request - * @return - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) - @POST("/och-shuttle-cabin/api/flow/v1/driver/arrive") - Observable arriveSiteStation(@Header ("appId") String appId,@Header("ticket") String ticket,@Body BusUpdateSiteStatusRequest request); - - /** - * 中止任务 - * @param appId - * @param ticket - * @param data - * @return - */ - @POST("/och-shuttle-cabin/api/flow/v1/driver/abortTask") - Observable abortTask(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusCloseTaskRequest data); - - /** - * 任务正常跑完结束 - * @param appId - * @param ticket - * @param data - * @return - */ - @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST("/och-shuttle-cabin/api/flow/v1/driver/endTask") - Observable endTask(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusCloseTaskRequest data); - - @Headers( {"Content-type:application/json;charset=UTF-8"} ) @GET("och-shuttle-cabin/api/business/v1/task/writeOffCount") Observable writeOffCount(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("taskId") String taskId, @Query("siteId") String siteId); diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/OrderServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/OrderServiceManager.kt index 85bedbf2ac..1144e51d75 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/OrderServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/OrderServiceManager.kt @@ -3,20 +3,14 @@ package com.mogo.och.weaknet.net import android.content.Context import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.storage.SharedPrefsMgr -import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.OchCommonSubscribeImpl import com.mogo.och.common.module.network.interceptor.transformIoTry import com.mogo.och.common.module.network.interceptor.transformTry -import com.mogo.och.weaknet.bean.BusCloseTaskRequest import com.mogo.och.weaknet.bean.BusQueryLineStationsRequest -import com.mogo.och.weaknet.bean.BusQueryLineTaskResponse -import com.mogo.och.weaknet.bean.BusQueryLinesResponse -import com.mogo.och.weaknet.bean.BusResetDrivingLineRequest import com.mogo.och.weaknet.bean.BusRoutesResponse -import com.mogo.och.weaknet.bean.BusUpdateSiteStatusRequest import com.mogo.och.weaknet.bean.CarExecutableTaskResponse import com.mogo.och.weaknet.bean.WriteOffCountResponse @@ -48,106 +42,6 @@ object OrderServiceManager { .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes")) } - /** - * 重置线路站点 - * @param context - * @param taskId - * @param callback - */ - @JvmStatic - fun switchLine( - context: Context, - taskId: Long, - callback: OchCommonServiceCallback? - ) { - mService.switchLine( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - BusResetDrivingLineRequest(taskId) - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "switchLine")) - } - - /** - * 中断当前任务 - * @param context - * @param taskId - * @param callback - */ - @JvmStatic - fun abortTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { - mService.abortTask( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - BusCloseTaskRequest(taskId) - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "abortTask")) - } - - /** - * 正常结束任务 - * @param context - * @param taskId - * @param callback - */ - @JvmStatic - fun endTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { - mService.endTask( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - BusCloseTaskRequest(taskId) - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "endTask")) - } - - /** - * 离站上报 - * @param context - * @param seq - * @param siteId - * @param callback - */ - @JvmStatic - fun leaveStation( - context: Context, - seq: Int, - siteId: Int, - taskId: Int, - writeVersion: Long, - callback: OchCommonServiceCallback? - ) { - mService.leaveStation( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - BusUpdateSiteStatusRequest(taskId, siteId, seq,writeVersion) - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation")) - } - - /** - * 到站更新站点状态 - * @param context - * @param seq - * @param siteId - * @param callback - */ - @JvmStatic - fun arriveSiteStation( - context: Context, seq: Int, siteId: Int, taskId: Int, writeVersion: Long, - callback: OchCommonServiceCallback? - ) { - mService.arriveSiteStation( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - BusUpdateSiteStatusRequest(taskId, siteId, seq, writeVersion) - ) - .transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation")) - } @JvmStatic fun queryBusTaskByLineId( context: Context, diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/presenter/BusPresenter.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/presenter/BusPresenter.kt index 465bb4a9b4..78325944dd 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/presenter/BusPresenter.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/presenter/BusPresenter.kt @@ -25,6 +25,7 @@ import com.mogo.och.weaknet.callback.IBusControllerStatusCallback import com.mogo.och.weaknet.callback.IRefreshBusStationsCallback import com.mogo.och.weaknet.callback.ISlidePannelHideCallback import com.mogo.och.weaknet.fragment.ShuttleFragment +import com.mogo.och.weaknet.model.BusLineModel import com.mogo.och.weaknet.model.OrderModel import com.mogo.och.weaknet.util.BusTrajectoryManager import mogo_msg.MogoReportMsg.MogoReportMessage diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.java index a853c277a6..f8b6459d25 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.java @@ -13,6 +13,7 @@ import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager; import com.mogo.och.data.bean.BusRoutesResult; import com.mogo.och.weaknet.constant.BusConst; import com.mogo.och.weaknet.model.OrderModel; +import com.mogo.och.weaknet.model.BusLineModel; import java.util.concurrent.TimeUnit; @@ -52,7 +53,7 @@ public class BusTrajectoryManager { public void syncTrajectoryInfo() { BusRoutesResult routesResult = OrderModel.getBusRoutesResult(); if (LoginStatusManager.isLogin() && routesResult != null - && OrderModel.getCurrentStationIndex() == 0 + && BusLineModel.INSTANCE.getStartStationIndex() == 0 && !OrderModel.isGoingToNextStation()) { CallerLogger.d(M_BUS + TAG, "syncTrajectoryInfo() start."); startTrajReqLoop(); diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 6860ce85fe..1eb9ca0874 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -427,7 +427,7 @@ public class TaxiModel { if (mOrderStatusCallback != null) { mOrderStatusCallback.onCurrentOrderCancelDone(); } - LineManager.setLineId(-1); + LineManager.setLineInfo(null); clearCurrentOCHOrder(); cancelAutopilot(); } diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index bf5dfe18db..ca05596103 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -25,6 +25,7 @@ import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager; import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager; import com.mogo.och.common.module.manager.autopilot.line.LineManager; import com.mogo.och.common.module.voice.VoiceNotice; +import com.mogo.och.data.bean.LineInfo; import com.mogo.och.taxi.bean.OrderQueryRespBean; import com.mogo.och.data.taxi.OrderQueryRouteInfoRespBean; import com.mogo.och.taxi.callback.ITaxiADASStatusCallback; @@ -289,7 +290,7 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS OchChainLogManager.writeChainLog("订单信息变化",order.toString()); OrderModel.INSTANCE.invokeListener(order); CallerLogger.d(M_TAXI + TAG, "order = " + order.toString()); - LineManager.setLineId(order.lineId); + LineManager.setLineInfo(new LineInfo(order.lineId,order.lineName)); if (TaxiOrderStatusEnum.UserArriveAtStart.getCode() == order.orderStatus) { TaxiModel.getInstance().queryAutopilotStatus(true); TaxiModel.getInstance().setStation(); @@ -325,7 +326,7 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS TaxiModel.getInstance().startOrStopCalculateRouteInfo(false); TaxiModel.getInstance().cleanLineMarker(); TaxiModel.getInstance().cleanStation(); - LineManager.setLineId(-1); + LineManager.setLineInfo(null); UiThreadHandler.post(new Runnable() { @Override public void run() { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/TaxiRoutingFragmentViewModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/TaxiRoutingFragmentViewModel.kt index eb07edfe89..84ad8e4336 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/TaxiRoutingFragmentViewModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/TaxiRoutingFragmentViewModel.kt @@ -10,6 +10,7 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.map.AmapNaviToDestinationModel +import com.mogo.och.data.bean.LineInfo import com.mogo.och.unmanned.taxi.base.BaseViewModel import com.mogo.och.unmanned.taxi.base.IUiIntent import com.mogo.och.unmanned.taxi.bean.GrayLineBean @@ -55,8 +56,8 @@ class TaxiRoutingFragmentViewModel : BaseViewModel(), // 设置task执行相关状态,切换模式时判断使用 if (result == null || result.taskType == TaskTypeEnum.None.code) { MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, false) - LineManager.setLineId(-1) + LineManager.setLineInfo(null); } else { MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, true) } @@ -273,7 +274,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), val endStation = MogoLocation() endStation.longitude = curTaskAndOrder.endSite!!.gcjLon endStation.latitude = curTaskAndOrder.endSite!!.gcjLat - LineManager.setLineId(result.lineId) + LineManager.setLineInfo(LineInfo(result.lineId,"")) TrajectoryAndDistanceManager.setStationPoint( startStation, endStation, @@ -341,7 +342,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), TaxiTaskModel.cancelAutopilot() // 设置task执行相关状态,切换模式时判断使用 MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, false) - LineManager.setLineId(-1) + LineManager.setLineInfo(null); } override fun onOrderArriveAtEnd(orderNo: String) { @@ -365,7 +366,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel(), } // 设置task执行相关状态,切换模式时判断使用 MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, false) - LineManager.setLineId(-1) + LineManager.setLineInfo(null); } override fun onStartAutopilot(postDelayTime: Long) { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt index 882ab1b9ea..5a3a3c0546 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt @@ -57,6 +57,7 @@ import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.common.module.voice.VoiceNotice +import com.mogo.och.data.bean.LineInfo import com.mogo.och.data.taxi.QueryCarOrderByNoRespBean import com.mogo.och.unmanned.taxi.bean.PrepareTaskRespBean import com.mogo.och.unmanned.taxi.bean.QueryCurrentTaskRespBean @@ -622,7 +623,7 @@ object TaxiTaskModel { DebugView.printInfoMsg("[上报ArriveSite] success siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite") d(TAG, "submitArriveSite-onSuccess data=" + GsonUtil.jsonFromObject(data)) mDriveToNearestStationTask = null - LineManager.setLineId(-1) + LineManager.setLineInfo(null); if (isArrivedNearestStation) {// 播报提醒 VoiceNotice.showNotice("已到达出车点") } @@ -804,7 +805,7 @@ object TaxiTaskModel { d(TAG, "queryCurrentTaskOnce ArriveAtEnd") //订单到站结束轨迹剩余里程就算和高德计算, 防止到站查询订单全程的显示被覆盖 - LineManager.setLineId(-1) + LineManager.setLineInfo(null); TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) destroyAmapNavi() @@ -879,7 +880,7 @@ object TaxiTaskModel { if (mDriveToNearestStationTask == null){ destroyAmapNavi() } - LineManager.setLineId(-1) + LineManager.setLineInfo(null); TrajectoryAndDistanceManager.setStationPoint(null, null, -1L) } @@ -1254,7 +1255,7 @@ object TaxiTaskModel { val endStation = MogoLocation() endStation.longitude = curTaskAndOrder.endSite!!.gcjLon endStation.latitude = curTaskAndOrder.endSite!!.gcjLat - LineManager.setLineId(curTaskAndOrder.lineId) + LineManager.setLineInfo(LineInfo(curTaskAndOrder.lineId,"")) TrajectoryAndDistanceManager.setStationPoint( startStation, endStation, @@ -1486,7 +1487,7 @@ object TaxiTaskModel { mCurrentTaskWithOrder = null mDriveToNearestStationTask = null DebugView.printInfoMsg("[登出] 退出登陆") - LineManager.setLineId(-1) + LineManager.setLineInfo(null); MogoStatusManager.getInstance().setTaxiUnmanedDriverPerformTask(TAG, false) MogoStatusManager.getInstance().setTaxiUnmanedDriverTakingOrders(TAG, false) MogoStatusManager.getInstance().setTaxiUnmanedDriverLineRoutingPerformTask(TAG, false)