[fea]
[线路和任务]
This commit is contained in:
yangyakun
2024-09-23 14:03:24 +08:00
parent 0d1bc0892d
commit eefc366d51
41 changed files with 1600 additions and 116 deletions

View File

@@ -141,4 +141,12 @@ object BizLoopManager {
}
}
fun runInIoThread(runable:Runnable){
if(ThreadUtils.isMainThread()){
ThreadUtils.getIoPool().submit(runable)
}else{
runable.run()
}
}
}

View File

@@ -0,0 +1,56 @@
package com.mogo.och.common.module.network
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.utils.CallerLoggerUtils.flavorTag
import com.mogo.och.weaknet.repository.db.exception.NetDataException
import io.reactivex.Observable
import io.reactivex.ObservableSource
import io.reactivex.functions.Function
class OchCommonNet<T:BaseData>(val apiName:String, val writeLog:Boolean) : Function<T?, ObservableSource<T?>> {
companion object {
const val TAG = "CommonNet"
}
private var tag:Long = System.currentTimeMillis()
init {
CallerLogger.e("$flavorTag${OchCommonSubscribeImpl.TAG}", "$apiName: 去请求()")
if(writeLog) {
OchChainLogManager.writeChainLogNet(false,"接口:${apiName}", "去请求_${tag}")
}
}
override fun apply(baseData: T): ObservableSource<T?> {
if (baseData.code != 0 && baseData.code != 200) {
onError(baseData.msg,baseData.code)
return Observable.error(NetDataException(baseData.code,baseData.msg))
} else {
onSuccess(baseData)
return Observable.just(baseData)
}
}
fun onSuccess(o: T) {
CallerLogger.d("$flavorTag${TAG}", "$apiName: onSuccess() ${o.msg}")
if(writeLog) {
OchChainLogManager.writeChainLogNet(false,"接口:${apiName}", "请求成功:${o}_${tag}")
}
}
fun onError(message: String, code: Int) {
CallerLogger.e("$flavorTag${TAG}", "$apiName: onError() code = $code; message = $message")
if(writeLog) {
OchChainLogManager.writeChainLogNet(
true,
"接口:${apiName}",
"请求失败: onError() code = $code; message = $message\" _${tag}"
)
}
}
}

View File

@@ -0,0 +1,14 @@
package com.mogo.och.weaknet.repository.db.transform
import io.reactivex.Observable
import io.reactivex.ObservableSource
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.functions.Function
import io.reactivex.schedulers.Schedulers
fun <T,V> Observable<T>.transform4DataBase(transfor:Function<T, ObservableSource<V>>): Observable<V> {
return flatMap(transfor)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}

View File

@@ -0,0 +1,19 @@
package com.mogo.och.weaknet.repository.db.exception
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.R
import com.mogo.och.common.module.utils.ResourcesUtils
class NetDataException: RuntimeException {
constructor() : super()
constructor(message: String?) : super(message)
constructor(code:Int,message: String?):super("${code}_${message}"){
if (!NetworkUtils.isConnected(AbsMogoApplication.getApp())) {
ToastUtils.showShort(ResourcesUtils.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(ResourcesUtils.getString(R.string.request_error_tip));
}
}
}

View File

@@ -10,10 +10,10 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.biz.provider.CommonServiceImpl
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutopilotAnalytics
import com.mogo.och.weaknet.repository.db.repository.EventRepository
import com.mogo.och.weaknet.repository.db.repository.LineRepository
import com.mogo.och.weaknet.repository.db.repository.TaskRepository
import com.mogo.och.weaknet.repository.db.repository.TaskSiteRepository
import com.mogo.och.weaknet.repository.db.repository.EventDb
import com.mogo.och.weaknet.repository.db.repository.LineDb
import com.mogo.och.weaknet.repository.db.repository.TaskDb
import com.mogo.och.weaknet.repository.db.repository.TaskSiteDb
import com.mogo.och.weaknet.ui.fragment.ShuttleFragment
import com.mogo.och.weaknet.model.LineModel
import com.mogo.och.weaknet.ui.bizswitch.SwitchBizView
@@ -33,10 +33,10 @@ class ShuttleDriverProvider : CommonServiceImpl() {
override fun init(context: Context) {
d(SceneConstant.M_TAXI + TAG, "init")
ThreadUtils.getIoPool().submit {
LineRepository.deleteObsoleteData()
TaskRepository.deleteObsoleteData()
TaskSiteRepository.deleteObsoleteData()
EventRepository.deleteObsoleteData()
LineDb.deleteObsoleteData()
TaskDb.deleteObsoleteData()
TaskSiteDb.deleteObsoleteData()
EventDb.deleteObsoleteData()
}
}

View File

@@ -7,7 +7,7 @@ import com.mogo.och.data.bean.BusStationBean
import com.mogo.och.data.bean.LineInfo
import com.mogo.och.weaknet.model.LineModel
import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean
import com.mogo.och.weaknet.repository.db.repository.TaskSiteRepository
import com.mogo.och.weaknet.repository.db.repository.TaskSiteDb
import java.lang.Boolean
import kotlin.String
@@ -86,7 +86,7 @@ class BusRoutesResponse : BaseData() {
temp.isPlayTts = it.isPlayTts
runnintTaskAndSites.add(temp)
}
TaskSiteRepository.addOrUpdate(*runnintTaskAndSites.toTypedArray())
TaskSiteDb.addOrUpdate(*runnintTaskAndSites.toTypedArray())
}
}

View File

@@ -5,10 +5,10 @@ import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.SiteDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.db.repository.ContraiRepository
import com.mogo.och.weaknet.repository.db.repository.LineRepository
import com.mogo.och.weaknet.repository.db.repository.SiteRepository
import com.mogo.och.weaknet.repository.db.repository.TaskRepository
import com.mogo.och.weaknet.repository.db.repository.ContraiDb
import com.mogo.och.weaknet.repository.db.repository.LineDb
import com.mogo.och.weaknet.repository.db.repository.SiteDb
import com.mogo.och.weaknet.repository.db.repository.TaskDb
/**
*
@@ -53,13 +53,13 @@ data class CarExecutableTaskResponse(val data: List<Result>?) : BaseData(){
taskInfs.forEach {
it.lineId = lineId
}
TaskRepository.addOrUpdate(taskInfs,lineId)
TaskDb.addOrUpdate(taskInfs,lineId)
}
}
LineRepository.checkAndUpdate(lineList)
ContraiRepository.addOrUpdate(contrailList)
SiteRepository.addOrUpdate(siteList)
LineDb.checkAndUpdate(lineList)
ContraiDb.addOrUpdate(contrailList)
SiteDb.addOrUpdate(siteList)
}
}

View File

@@ -12,14 +12,6 @@ class BusConst {
// 测试用的广播
const val BROADCAST_TEST_BUS_CONTROL_TYPE_EXTRA_KEY = "sceneType"
// 无状态
const val STATION_STATUS_IDLE = 0
// 已过站(历史站)
const val STATION_STATUS_LEAVING = 1
// 到站(当前站)
const val STATION_STATUS_STOPPED = 2
// 未到站(未到站)
const val STATION_STATUS_ARRIVING = 3
// 上报心跳轮询ms
const val LOOP_PERIOD_60S = 60 * 1000L
@@ -49,12 +41,6 @@ class BusConst {
//围栏到站 暂定10米
const val ARRIVE_AT_END_STATION_DISTANCE = 10
// 轮询
const val LOOP_PASSENGER_5S = 5 * 1000L
const val LOOP_PASSENGER_2S = 2 * 1000L
const val LOOP_PASSENGER_1S = 1 * 1000L
const val LOOP_DELAY_500 = 500L
const val DELAY_10S = 10 * 1000L
}
}

View File

@@ -9,16 +9,16 @@ import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
import com.mogo.och.weaknet.bean.WaitUploadLine
import com.mogo.och.weaknet.bean.WaitUploadTask
import com.mogo.och.weaknet.repository.net.shuttlesaas.OrderServiceManager
import com.mogo.och.weaknet.repository.net.impl.shuttlesaas.OrderServiceManager
import com.mogo.och.weaknet.repository.db.bean.EventDataBean
import com.mogo.och.weaknet.repository.db.repository.EventRepository
import com.mogo.och.weaknet.repository.db.repository.EventDb
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import io.reactivex.subjects.BehaviorSubject
import java.util.concurrent.atomic.AtomicBoolean
object EventModel : EventRepository.EventCallback {
object EventModel : EventDb.EventCallback {
private val isUpdating by lazy { AtomicBoolean(false) }
@@ -26,12 +26,12 @@ object EventModel : EventRepository.EventCallback {
private val createDefault = BehaviorSubject.createDefault(isUpdating.get())
fun load(){
EventRepository.eventCallback = this
EventDb.eventCallback = this
BizLoopManager.postDelayed(loopUpdateInfo,2*60*1000)
}
fun release(){
EventRepository.eventCallback = null
EventDb.eventCallback = null
}
private val loopUpdateInfo = Runnable { updateEvent() }
@@ -46,7 +46,7 @@ object EventModel : EventRepository.EventCallback {
isUpdating.set(true)
createDefault.onNext(isUpdating.get())
ThreadUtils.getSinglePool().submit {
val waitUpdateEvent = EventRepository.queryWaitUpdateEvent()
val waitUpdateEvent = EventDb.queryWaitUpdateEvent()
if(waitUpdateEvent.isNullOrEmpty()){
OchChainLogManager.writeChainLogDb("上报event","没有数据需要上报${Thread.currentThread().name}")
isUpdating.set(false)
@@ -62,10 +62,10 @@ object EventModel : EventRepository.EventCallback {
it.updateStatus = EventDataBean.updated
}
OchChainLogManager.writeChainLogDb("上报event成功","$transformDb2Net ${Thread.currentThread().name}")
EventRepository.saveUpdateSuccess(waitUpdateEvent)
EventDb.saveUpdateSuccess(waitUpdateEvent)
isUpdating.set(false)
createDefault.onNext(isUpdating.get())
val queryWaitUpdateEventCount = EventRepository.queryWaitUpdateEventCount()
val queryWaitUpdateEventCount = EventDb.queryWaitUpdateEventCount()
if(queryWaitUpdateEventCount!=null&&queryWaitUpdateEventCount>0){
updateEvent()
return
@@ -93,14 +93,14 @@ object EventModel : EventRepository.EventCallback {
}
fun haveDataWaitSyn(): Boolean {
EventRepository.queryWaitUpdateEvent()?.let {
EventDb.queryWaitUpdateEvent()?.let {
return it.isNotEmpty()
}
return false
}
fun queryWaitUploadInfo(): Observable<MutableList<WaitUploadLine>>? {
return EventRepository.queryWaitUploadData()
return EventDb.queryWaitUploadData()
?.flatMap { waitUploadList->
val result = mutableListOf<WaitUploadLine>()
waitUploadList.forEach { wait->

View File

@@ -15,6 +15,7 @@ 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.network.OchCommonServiceCallback
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.data.bean.BusStationBean
@@ -22,17 +23,18 @@ import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
import com.mogo.och.weaknet.callback.IBusLinesCallback
import com.mogo.och.weaknet.constant.BusConst
import com.mogo.och.weaknet.repository.net.shuttlesaas.OrderServiceManager
import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean
import com.mogo.och.weaknet.repository.db.repository.ContraiRepository
import com.mogo.och.weaknet.repository.db.repository.EventRepository
import com.mogo.och.weaknet.repository.db.repository.LineRepository
import com.mogo.och.weaknet.repository.db.repository.TaskRepository
import com.mogo.och.weaknet.repository.db.repository.TaskSiteRepository
import com.mogo.och.weaknet.repository.db.repository.ContraiDb
import com.mogo.och.weaknet.repository.db.repository.EventDb
import com.mogo.och.weaknet.repository.db.repository.LineDb
import com.mogo.och.weaknet.repository.db.repository.TaskDb
import com.mogo.och.weaknet.repository.db.repository.TaskSiteDb
import com.mogo.och.weaknet.repository.net.RepositoryManager
import com.mogo.och.weaknet.repository.net.impl.shuttle.ShuttleRepository
import com.mogo.och.weaknet.repository.net.impl.shuttlesaas.OrderServiceManager
import io.reactivex.Observer
import io.reactivex.disposables.Disposable
import java.util.concurrent.ConcurrentHashMap
@@ -50,6 +52,8 @@ object LineModel {
private const val TAG = "BusLineModel"
private val context = AbsMogoApplication.getApp()
// 判断接口是否变化
private const val EXECUTABLECHANGEMD5 = "EXECUTABLECHANGEMD5"
@@ -174,7 +178,7 @@ object LineModel {
*/
@JvmStatic
fun queryBusLines() {
LineRepository.queryCanUseLine()
RepositoryManager.queryCanUseLine()
?.subscribe(object : Observer<List<LineDataBean>?> {
override fun onSubscribe(d: Disposable) {
d(TAG, "onSubscribe")
@@ -203,8 +207,8 @@ object LineModel {
*/
@JvmStatic
fun queryBusLineTasksById(lineId: Long) {
TaskRepository.queryCanUserTask(lineId)
?.subscribe(object : Observer<List<TaskDataBean?>?> {
RepositoryManager.queryCanUserTask(lineId)
.subscribe(object : Observer<List<TaskDataBean?>?> {
override fun onSubscribe(d: Disposable) {
d(TAG, "onSubscribe")
}
@@ -233,13 +237,13 @@ object LineModel {
fun commitSwitchLineId(task: TaskDataBean, line: LineDataBean) {
line.getLineIdAndName { lineId, lineName ->
task.getLineIdAndName { taskId, taskTime ->
TaskRepository.startTask(
TaskDb.startTask(
taskId,
lineId,
lineName,
object : TaskRepository.TaskStatusCallback {
object : TaskDb.TaskStatusCallback {
override fun startSuccess() {
EventRepository.saveEventTaskStart(taskId,lineId,taskTime,lineName)
EventDb.saveEventTaskStart(taskId,lineId,taskTime,lineName)
OrderModel.queryBusRoutes()
mBusLinesCallbackMap.forEach {
it.value.onChangeLineIdSuccess()
@@ -263,7 +267,7 @@ object LineModel {
// 2、本地没有从远端恢复任务
fun loadStartedTaskAndDefaultInfo() {
// 获取正在运行的任务
val runningTaskInfo = TaskRepository.queryRunningTask()
val runningTaskInfo = TaskDb.queryRunningTask()
if (runningTaskInfo.isNullOrEmpty()) {
// 本地没有进行中的任务
@@ -279,7 +283,7 @@ object LineModel {
// 恢复站点信息
currentTask?.taskId?.let {
// 获取正在进行中的具体信息
val runnintTaskAndSites = TaskSiteRepository.queryRunningTask(it)
val runnintTaskAndSites = TaskSiteDb.queryRunningTask(it)
if(runnintTaskAndSites.isNullOrEmpty()||runnintTaskAndSites.size<2){
OchChainLogManager.writeChainLogDb("加载任务", "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}")
return
@@ -298,7 +302,7 @@ object LineModel {
}
// 设置自动驾驶信息
currentTask?.lineId?.let {
val contraiInfoTemp = ContraiRepository.queryAutopilotInfoByLineid(it)
val contraiInfoTemp = ContraiDb.queryAutopilotInfoByLineid(it)
ContrailDataBean.save2Common(contraiInfoTemp)
}
mBusLinesCallbackMap.forEach { callback->
@@ -314,14 +318,14 @@ object LineModel {
}
val tempList = sorted.toMutableList()
val possible = tempList.removeFirst()
val queryLastData = EventRepository.queryLastData()
val queryLastData = EventDb.queryLastData()
if(queryLastData!=null){
if(possible.taskId==queryLastData.taskId){
// 最后一个事件和最新的task一直 恢复数据
tempList.forEach {
it.status = TaskDataBean.used
}
TaskRepository.addOrUpdate(*tempList.toTypedArray())
TaskDb.addOrUpdate(*tempList.toTypedArray())
loadStartedTaskAndDefaultInfo()
OchChainLogManager.writeChainLogDb("加载任务", "异常情况:多个正在进行的任务 task:${runningTaskInfo} event:${queryLastData.taskId}有一个和event表对应使用相同的一个 另一个置为已使用")
return
@@ -332,7 +336,7 @@ object LineModel {
it.status = TaskDataBean.used
}
OchChainLogManager.writeChainLogDb("加载任务", "异常情况:多个正在进行的任务 task:${runningTaskInfo} 全部置为已使用 从后台加载正在使用的任务")
TaskRepository.addOrUpdate(*runningTaskInfo.toTypedArray())
TaskDb.addOrUpdate(*runningTaskInfo.toTypedArray())
loadServerRuningTask()
}
@@ -347,19 +351,19 @@ object LineModel {
}
response?.data?.let {
if (!it.sites.isNullOrEmpty()&&it.sites.size>1) {
val queryTaskById = TaskRepository.queryTaskById(it.taskId.toLong())
val queryTaskById = TaskDb.queryTaskById(it.taskId.toLong())
if(queryTaskById==null||queryTaskById.status!=TaskDataBean.used) {
OchChainLogManager.writeChainLogDb(
"业务数据",
"本地没有正在运行的数据,服务器端有${it}"
)
LineRepository.saveRunningInfo(
LineDb.saveRunningInfo(
it.lineId,
it.name,
it.sites.last().name
)
TaskRepository.saveRunningInfo(it.lineId, it.taskId, it.taskTime)
ContraiRepository.saveRunningInfo(
TaskDb.saveRunningInfo(it.lineId, it.taskId, it.taskTime)
ContraiDb.saveRunningInfo(
it.lineId,
it.csvFileMd5,
it.csvFileUrl,
@@ -411,14 +415,14 @@ object LineModel {
if (task.taskId!=null&&task.lineId!=null) {
it.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
it.isLeaving = true
TaskSiteRepository.updateLeave(task.taskId!!, it.siteId.toLong(), true)
TaskSiteDb.updateLeave(task.taskId!!, it.siteId.toLong(), true)
mBusLinesCallbackMap.forEach {map->
map.value.onLeaveStaionSuccess()
}
OchChainLogManager.writeChainLogDb("滑动出发", "task:${currentTask}__taskId:${currentTask?.taskId}")
// 设置滑动出发任务
LineManager.getLineInfo { lineInfo ->
EventRepository.saveEventTaskLeaveSite(
EventDb.saveEventTaskLeaveSite(
task.taskId!!,
task.lineId!!,
it.siteId.toLong(),
@@ -453,10 +457,10 @@ object LineModel {
if(currentTask!=null&& currentTask!!.taskId!=null){
currentTask?.let { task->
if (task.taskId!=null&&task.lineId!=null) {
TaskSiteRepository.updateDrivingStatusAndLeave(task.taskId!!,start.siteId.toLong(),TaskSiteDataBean.drivingStatusPassed,false)
TaskSiteDb.updateDrivingStatusAndLeave(task.taskId!!,start.siteId.toLong(),TaskSiteDataBean.drivingStatusPassed,false)
// 设置到站任务
LineManager.getLineInfo { lineInfo ->
EventRepository.saveEventTaskArriveSite(task.taskId!!,task.lineId!!,start.siteId.toLong(),start.seq,task.taskStartTime,lineInfo.lineName)
EventDb.saveEventTaskArriveSite(task.taskId!!,task.lineId!!,start.siteId.toLong(),start.seq,task.taskStartTime,lineInfo.lineName)
}
}
}
@@ -467,7 +471,7 @@ object LineModel {
end.drivingStatus = TaskSiteDataBean.drivingStatusCurrent
if(currentTask!=null&& currentTask!!.taskId!=null){
currentTask?.taskId?.let { taskId->
TaskSiteRepository.updateDrivingStatus(taskId,end.siteId.toLong(),TaskSiteDataBean.drivingStatusCurrent)
TaskSiteDb.updateDrivingStatus(taskId,end.siteId.toLong(),TaskSiteDataBean.drivingStatusCurrent)
}
}else{
OchChainLogManager.writeChainLog("到站_数据更新_error","task:${currentTask}__taskId:${currentTask?.taskId}")
@@ -510,9 +514,9 @@ object LineModel {
fun endTask() {
currentTask?.let {task->
if (task.taskId!=null&&task.lineId!=null) {
TaskRepository.endTask(task.taskId!!)
TaskDb.endTask(task.taskId!!)
LineManager.getLineInfo { lineInfo ->
EventRepository.saveEventTaskEnd(task.taskId!!,task.lineId!!,task.taskStartTime,lineInfo.lineName)
EventDb.saveEventTaskEnd(task.taskId!!,task.lineId!!,task.taskStartTime,lineInfo.lineName)
}
}
}
@@ -531,7 +535,7 @@ object LineModel {
fun startTaskMessage():Boolean {
if (!stationList.isNullOrEmpty()) {
return startStationIndex == 0 && stationList!!.first().drivingStatus == BusConst.STATION_STATUS_STOPPED && !stationList!!.first().isLeaving
return startStationIndex == 0 && stationList!!.first().drivingStatus == TaskSiteDataBean.drivingStatusCurrent && !stationList!!.first().isLeaving
}
return false
}

View File

@@ -63,12 +63,17 @@ object ThirdDeviceData {
override fun onLanMsgReceived(taskDetailsMsg: TaskDetailsMsg?) = sendTaskDetailsToClients()
}
private var delayedTts:Runnable?=null
// 离站
fun leaveStation() {
LineManager.getStationsWithLine { start, end, lineInfo ->
UiThreadHandler.postDelayed({ //延迟10s播报
ShuttleVoiceManager.leaveStationBus(end.name, end.nameKr)
}, BusConst.DELAY_10S)
delayedTts = object :Runnable{
override fun run() {
ShuttleVoiceManager.leaveStationBus(end.name, end.nameKr)
}
}
UiThreadHandler.postDelayed(delayedTts, BusConst.DELAY_10S)
//给bus外屏发送
LedScreenManager.sendTripInfo2Led(
LedScreenManager.LEAVE_STATION,
@@ -82,6 +87,7 @@ object ThirdDeviceData {
//到站
fun arriveStation() {
UiThreadHandler.removeCallbacks(delayedTts)
LineManager.getStationsWithLine { start, end, lineInfo ->
ShuttleVoiceManager.arrivedStationBus(end.name, end.nameKr)
//给bus外屏发送
@@ -97,6 +103,7 @@ object ThirdDeviceData {
//结束任务
fun endTask() {
UiThreadHandler.removeCallbacks(delayedTts)
LineManager.getLineInfo {lineInfo ->
LedScreenManager.sendTripInfo2Led(
LedScreenManager.END_TRIP,

View File

@@ -24,7 +24,7 @@ import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffMsg
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.weaknet.bean.response.WriteOffCountResponse
import com.mogo.och.weaknet.bean.WriteOffPassenger
import com.mogo.och.weaknet.repository.net.shuttlesaas.OrderServiceManager
import com.mogo.och.weaknet.repository.net.impl.shuttlesaas.OrderServiceManager
import com.mogo.och.weaknet.util.ShuttleVoiceManager
import io.reactivex.Observable
import io.reactivex.ObservableEmitter

View File

@@ -21,6 +21,7 @@ data class LineDataBean(
* 线路名称
*/
@ColumnInfo(name = "line_name", typeAffinity = ColumnInfo.TEXT)
@SerializedName("name")
var lineName: String? = null,
/**

View File

@@ -1,11 +1,12 @@
package com.mogo.och.weaknet.repository.db.repository
import com.mogo.eagle.core.network.utils.digest.DigestUtils
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.weaknet.repository.db.MyDataBase
import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean
import com.mogo.och.weaknet.repository.db.dao.ContrailDataDao
object ContraiRepository {
object ContraiDb {
private var contrailDao: ContrailDataDao?=null
@@ -32,7 +33,7 @@ object ContraiRepository {
}
}
}
DbThreadUtils.runInIoThread(runnable)
BizLoopManager.runInIoThread(runnable)
}
fun deleteByLineId(lineId: Long) {

View File

@@ -1,13 +0,0 @@
package com.mogo.och.weaknet.repository.db.repository
import com.mogo.eagle.core.utilcode.util.ThreadUtils
object DbThreadUtils {
fun runInIoThread(runable:Runnable){
if(ThreadUtils.isMainThread()){
ThreadUtils.getIoPool().submit(runable)
}else{
runable.run()
}
}
}

View File

@@ -2,6 +2,7 @@ package com.mogo.och.weaknet.repository.db.repository
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.weaknet.repository.db.MyDataBase
import com.mogo.och.weaknet.repository.db.bean.EventDataBean
@@ -9,7 +10,7 @@ import com.mogo.och.weaknet.repository.db.dao.EventDataDao
import io.reactivex.Observable
object EventRepository {
object EventDb {
private var eventDataDao: EventDataDao? = null
@@ -31,7 +32,7 @@ object EventRepository {
event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1
event.siteId = 0L
event.seq = 0
DbThreadUtils.runInIoThread {
BizLoopManager.runInIoThread {
eventDataDao?.insert(event)
eventCallback?.notifySyn()
}
@@ -56,7 +57,7 @@ object EventRepository {
event.siteId = siteId
event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1
event.seq = seq
DbThreadUtils.runInIoThread {
BizLoopManager.runInIoThread {
eventDataDao?.insert(event)
eventCallback?.notifySyn()
}
@@ -81,7 +82,7 @@ object EventRepository {
event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1L
event.siteId = siteId
event.seq = seq
DbThreadUtils.runInIoThread {
BizLoopManager.runInIoThread {
eventDataDao?.insert(event)
eventCallback?.notifySyn()
}
@@ -99,7 +100,7 @@ object EventRepository {
event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1L
event.siteId = 0L
event.seq = 0
DbThreadUtils.runInIoThread {
BizLoopManager.runInIoThread {
eventDataDao?.insert(event)
eventCallback?.notifySyn()
}

View File

@@ -1,12 +1,13 @@
package com.mogo.och.weaknet.repository.db.repository
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.weaknet.repository.db.MyDataBase
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.dao.LineDataDao
import io.reactivex.Observable
object LineRepository {
object LineDb {
private var lineDao: LineDataDao?=null
@@ -54,14 +55,14 @@ object LineRepository {
minusLine.lineId?.let { lineId->
// 删除线路对应的站点
SiteRepository.deleteByLineId(lineId)
val runingTask = TaskRepository.queryRunningTaskByLineId(lineId)
SiteDb.deleteByLineId(lineId)
val runingTask = TaskDb.queryRunningTaskByLineId(lineId)
if(runingTask.isNullOrEmpty()){
// 删除线路对应的自驾信息
ContraiRepository.deleteByLineId(lineId)
ContraiDb.deleteByLineId(lineId)
TaskRepository.deleteByLineId(lineId)
TaskDb.deleteByLineId(lineId)
}
}
}
@@ -70,7 +71,7 @@ object LineRepository {
}
}
DbThreadUtils.runInIoThread(runable)
BizLoopManager.runInIoThread(runable)
}
fun deleteObsoleteData(){

View File

@@ -1,11 +1,12 @@
package com.mogo.och.weaknet.repository.db.repository
import com.mogo.eagle.core.network.utils.digest.DigestUtils
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.weaknet.repository.db.MyDataBase
import com.mogo.och.weaknet.repository.db.bean.SiteDataBean
import com.mogo.och.weaknet.repository.db.dao.SiteDataDao
object SiteRepository {
object SiteDb {
private var siteDataDao: SiteDataDao? = null
@@ -32,7 +33,7 @@ object SiteRepository {
}
}
}
DbThreadUtils.runInIoThread(runnable)
BizLoopManager.runInIoThread(runnable)
}
fun deleteByLineId(lineId: Long) {

View File

@@ -12,7 +12,7 @@ import com.mogo.och.weaknet.repository.db.dao.TaskDataDao
import com.mogo.och.weaknet.repository.db.exception.DataException
import io.reactivex.Observable
object TaskRepository {
object TaskDb {
private var taskDataDao: TaskDataDao? = null
@@ -53,7 +53,7 @@ object TaskRepository {
}
}
}
DbThreadUtils.runInIoThread(runable)
BizLoopManager.runInIoThread(runable)
}
@@ -85,7 +85,7 @@ object TaskRepository {
}
CallerLogger.d(TAG,"更新任务状态用时:${System.currentTimeMillis()-startTime}")
startTime = System.currentTimeMillis()
updateCount = TaskSiteRepository.startTask(taskId, lineId, lineName)
updateCount = TaskSiteDb.startTask(taskId, lineId, lineName)
OchChainLogManager.writeChainLogDb("开始任务", "把正在使用的数据更新到RunningTask表格一共${updateCount}行数据")
CallerLogger.d(TAG,"插入正在运行的线路用时:${System.currentTimeMillis()-startTime}")
} catch (e: Exception) {
@@ -135,7 +135,7 @@ object TaskRepository {
fun endTask(taskId: Long) {
DbThreadUtils.runInIoThread{
BizLoopManager.runInIoThread{
taskDataDao?.endTask(taskId)
}
}

View File

@@ -3,12 +3,14 @@ package com.mogo.och.weaknet.repository.db.repository
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.TAG
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.weaknet.repository.db.MyDataBase
import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean
import com.mogo.och.weaknet.repository.db.dao.TaskSiteDataDao
import com.mogo.och.weaknet.repository.db.exception.DataException
import com.mogo.och.weaknet.repository.db.exception.NetDataException
object TaskSiteRepository {
object TaskSiteDb {
private var taskSiteDataDao: TaskSiteDataDao? = null
@@ -24,7 +26,7 @@ object TaskSiteRepository {
fun startTask(taskId: Long, linId: Long,lineName:String):Int? {
// 获取线路的站点
var startTime = System.currentTimeMillis()
val querySites = SiteRepository.querySiteByLineId(linId)
val querySites = SiteDb.querySiteByLineId(linId)
if(querySites.isNullOrEmpty()){
throw DataException("没有站点数据")
}
@@ -52,19 +54,19 @@ object TaskSiteRepository {
// 滑动出发
fun updateLeave(taskId: Long, siteId: Long, leave:Boolean) {
DbThreadUtils.runInIoThread{
BizLoopManager.runInIoThread{
taskSiteDataDao?.updateLeave(taskId,siteId,if(leave) 1 else 0)
}
}
fun updateDrivingStatus(taskId: Long, siteId: Long, drivingStatus: Int){
DbThreadUtils.runInIoThread{
BizLoopManager.runInIoThread{
taskSiteDataDao?.updateDrivingStatus(taskId,siteId,drivingStatus)
}
}
fun updateDrivingStatusAndLeave(taskId: Long, siteId: Long, drivingStatus: Int, leave: Boolean){
DbThreadUtils.runInIoThread{
BizLoopManager.runInIoThread{
taskSiteDataDao?.updateDrivingStatusANdLeave(taskId,siteId,drivingStatus,if(leave) 1 else 0)
}
}

View File

@@ -0,0 +1,11 @@
package com.mogo.och.weaknet.repository.net
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import io.reactivex.Observable
interface IRepository {
fun queryCanUseLine(): Observable<List<LineDataBean>?>?
fun queryCanUserTask(lineId:Long): Observable<List<TaskDataBean>?>?
}

View File

@@ -0,0 +1,45 @@
package com.mogo.och.weaknet.repository.net
import com.mogo.commons.env.ProjectUtils
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.net.impl.bus.BusRepository
import com.mogo.och.weaknet.repository.net.impl.bussaas.BusSaasRepository
import com.mogo.och.weaknet.repository.net.impl.shuttle.OrderServiceManager
import com.mogo.och.weaknet.repository.net.impl.shuttle.ShuttleRepository
import com.mogo.och.weaknet.repository.net.impl.shuttlesaas.ShuttleSaasRepository
import io.reactivex.Observable
object RepositoryManager {
private lateinit var repository:IRepository
init {
if(ProjectUtils.isSaas()){
if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
repository = ShuttleSaasRepository()
}else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
repository = BusSaasRepository()
}
}else {
if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
repository = ShuttleRepository()
}else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
repository = BusRepository()
}
}
}
fun queryCanUseLine() : Observable<List<LineDataBean>?>? {
return repository.queryCanUseLine()
}
fun queryCanUserTask(lineId: Long): Observable<List<TaskDataBean>?>? {
return repository.queryCanUserTask(lineId)
}
}

View File

@@ -0,0 +1,23 @@
package com.mogo.och.weaknet.repository.net.bean.request;
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;
}
}

View File

@@ -0,0 +1,20 @@
package com.mogo.och.weaknet.repository.net.bean.request;
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 int taskId; //切换到的线路id
public long writeVersion; //更新时间戳
public BusResetDrivingLineRequest(int taskId) {
this.sn = SharedPrefsMgr.getInstance().getSn();
this.taskId = taskId;
this.writeVersion = DateTimeUtil.getCurrentTimeStamp();
}
}

View File

@@ -0,0 +1,16 @@
package com.mogo.och.weaknet.repository.net.bean.request
/**
* Created by pangfan on 2021/8/19
*
* 订单状态更新请求数据结构
*/
class BusRoutePlanningUpdateReqBean(
var sn: String, var lineId: Int, var startSiteId: Int,
var endSiteId: Int, var points: List<Result>
) {
data class Result(
var latitude: Double? = null,
var longitude: Double? = null
)
}

View File

@@ -0,0 +1,26 @@
package com.mogo.och.weaknet.repository.net.bean.request;
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;
}
}

View File

@@ -0,0 +1,17 @@
package com.mogo.och.weaknet.repository.net.bean.request
import com.mogo.och.weaknet.constant.BusConst
import java.util.UUID
/**
* Created on 2021/9/16
*
* 上传车机心跳信息请求数据
*/
class CarHeartbeatReqBean(
var sn: String, //经度
var lon: Double, //纬度
var lat: Double,
var msgId: String = UUID.randomUUID().toString(), //心跳信息唯一标识
var interval: Int = (BusConst.LOOP_PERIOD_60S / 1000).toInt() //上报间隔单位秒非必传默认60秒
)

View File

@@ -0,0 +1,14 @@
package com.mogo.och.weaknet.repository.net.bean.response;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean;
import java.util.List;
/**
* @author: wangmingjun
* @date: 2022/2/9
*/
public class BusQueryLineTaskResponse extends BaseData {
public List<TaskDataBean> data;
}

View File

@@ -0,0 +1,14 @@
package com.mogo.och.weaknet.repository.net.bean.response;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.weaknet.repository.db.bean.LineDataBean;
import java.util.List;
/**
* @author: wangmingjun
* @date: 2022/2/9
*/
public class BusQueryLinesResponse extends BaseData {
public List<LineDataBean> data;
}

View File

@@ -0,0 +1,32 @@
package com.mogo.och.weaknet.repository.net.impl.bus
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.net.IRepository
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
import io.reactivex.Observable
class BusRepository: IRepository {
private val content = AbsMogoApplication.getApp()
init {
}
override fun queryCanUseLine(): Observable<List<LineDataBean>?>? {
TODO("Not yet implemented")
}
override fun queryCanUserTask(lineId: Long): Observable<List<TaskDataBean>?>? {
TODO("Not yet implemented")
}
}

View File

@@ -0,0 +1,166 @@
package com.mogo.och.weaknet.repository.net.impl.bus
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusRoutePlanningUpdateReqBean
import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest
import com.mogo.och.weaknet.repository.net.bean.request.CarHeartbeatReqBean
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
import io.reactivex.Observable
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Headers
import retrofit2.http.POST
import retrofit2.http.Query
/**
* 小巴车相关接口
*
* @author tongchenfei
*
*
* wiki: http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48970072
*/
interface IBascApiService {
/**
* 根据车机坐标获取所在区域全部站点信息
*
* @param request 请求参数
* @return 接口返回数据
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("/autopilot-car-hailing/line/v2/driver/bus/lineDataWithDriver/query")
fun queryBusRoutes(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body request: BusQueryLineStationsRequest?
): Observable<BusRoutesResponse>
/**
* @param request 请求参数{"destLine":1,"sn":"F803EB2046PZD00229"} 这个接口是重置bus线路的 不是重置线路中站点的
* @return 返回值是重置后的车站列表
* 开始路线
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startTask")
fun switchLine(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body request: BusResetDrivingLineRequest?
): Observable<BusRoutesResponse>
/**
* 离站,通知服务器
* @param request
* @return
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/leave")
fun leaveStation(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body request: BusUpdateSiteStatusRequest?
): Observable<BaseData>
/**
* 到站 更新到站信息
* @param request
* @return
*/
@Headers("Content-type:application/json;charset=UTF-8")
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/arrive")
fun arriveSiteStation(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body request: BusUpdateSiteStatusRequest?
): Observable<BaseData>
/**
* 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度
* @param data
* @return
*/
@Headers("Content-type:application/json;charset=UTF-8")
@POST("/autopilot-car-hailing/location/v2/driver/bus/heartbeat")
fun runCarHeartbeat(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body data: CarHeartbeatReqBean?
): Observable<BaseData>
/**
* 查询车辆配置的所有路线
* @param appId
* @param ticket
* @param sn
* @return
*/
@GET("/autopilot-car-hailing/line/v2/driver/bus/bindLine/query")
fun queryBusLines(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Query("sn") sn: String?
): Observable<BusQueryLinesResponse>
/**
* 查询路线当天的任务
* @param appId
* @param ticket
* @param lineId 线路id
* @return
*/
@GET("/autopilot-car-hailing/line/v2/driver/bus/task/query")
fun queryBusTaskByLineId(@Header("appId") appId: String?, @Header("ticket") ticket: String?, @Query("lineId") lineId: String?): Observable<BusQueryLineTaskResponse>
/**
* 上传轨迹信息
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers("Content-type:application/json;charset=UTF-8")
@POST("/autopilot-car-hailing/location/v2/driver/bus/saveLineCoordinate")
fun updateOrderRoute(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body data: BusRoutePlanningUpdateReqBean?
): Observable<BaseData>
/**
* 中止任务
* @param appId
* @param ticket
* @param data
* @return
*/
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/abortTask")
fun abortTask(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body data: BusCloseTaskRequest?
): Observable<BaseData>
/**
* 任务正常跑完结束
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers("Content-type:application/json;charset=UTF-8")
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/endTask")
fun endTask(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body data: BusCloseTaskRequest?
): Observable<BaseData>
}

View File

@@ -0,0 +1,236 @@
package com.mogo.och.weaknet.repository.net.impl.bus
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.map.MogoLocation
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.transformTry
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusRoutePlanningUpdateReqBean
import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest
import com.mogo.och.weaknet.repository.net.bean.request.CarHeartbeatReqBean
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
/**
* @author: wangmingjun
* @date: 2021/10/20
*/
object OrderServiceManager {
private val M_SERVICE: IBascApiService =
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
IBascApiService::class.java
)
/**
* 查询小巴车当前任务
* @param context
* @param callback
*/
@JvmStatic
fun queryBusRoutes(context: Context, callback: OchCommonServiceCallback<BusRoutesResponse>?) {
//获取当前高德坐标
M_SERVICE.queryBusRoutes(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusQueryLineStationsRequest()
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes"))
}
/**
* 重置线路站点
* @param context
* @param taskId
* @param callback
*/
@JvmStatic
fun switchLine(
context: Context,
taskId: Int,
callback: OchCommonServiceCallback<BusRoutesResponse>?
) {
M_SERVICE.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<BaseData>?) {
M_SERVICE.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<BaseData>?) {
M_SERVICE.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,
callback: OchCommonServiceCallback<BaseData>?
) {
M_SERVICE.leaveStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
)
.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,
callback: OchCommonServiceCallback<BaseData>?
) {
M_SERVICE.arriveSiteStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation"))
}
@JvmStatic
fun queryBusLines(
context: Context,
callback: OchCommonServiceCallback<BusQueryLinesResponse>?
) {
M_SERVICE.queryBusLines(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines"))
}
@JvmStatic
fun queryBusTaskByLineId(
context: Context,
lineId: String?,
callback: OchCommonServiceCallback<BusQueryLineTaskResponse>?
) {
M_SERVICE.queryBusTaskByLineId(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
lineId
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines"))
}
@JvmStatic
fun updateOrderRoute(
context: Context,
lineId: Int,
startSiteId: Int,
endSiteId: Int,
points: List<MogoLocation>,
callback: OchCommonServiceCallback<BaseData>?
) {
val pointsResult = mutableListOf<BusRoutePlanningUpdateReqBean.Result>()
points.forEach {
val result = BusRoutePlanningUpdateReqBean.Result()
result.latitude = it.latitude;
result.longitude = it.longitude;
pointsResult.add(result);
}
M_SERVICE.updateOrderRoute(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusRoutePlanningUpdateReqBean(
SharedPrefsMgr.getInstance().sn, lineId, startSiteId, endSiteId, pointsResult
)
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "updateOrderRoute"))
}
/**
* 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度
* @param context
* @param lon
* @param lat
* @param callback
*/
@JvmStatic
fun runCarHeartbeat(
context: Context, lon: Double, lat: Double,
callback: OchCommonServiceCallback<BaseData>?
) {
M_SERVICE.runCarHeartbeat(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
CarHeartbeatReqBean(
SharedPrefsMgr.getInstance().sn, lon, lat
)
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "runCarHeartbeat", false))
}
}

View File

@@ -0,0 +1,32 @@
package com.mogo.och.weaknet.repository.net.impl.bussaas
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.net.IRepository
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
import io.reactivex.Observable
class BusSaasRepository: IRepository {
private val content = AbsMogoApplication.getApp()
init {
}
override fun queryCanUseLine(): Observable<List<LineDataBean>?>? {
TODO("Not yet implemented")
}
override fun queryCanUserTask(lineId: Long): Observable<List<TaskDataBean>?>? {
TODO("Not yet implemented")
}
}

View File

@@ -0,0 +1,143 @@
package com.mogo.och.weaknet.repository.net.impl.bussaas
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusRoutePlanningUpdateReqBean
import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
import io.reactivex.Observable
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Headers
import retrofit2.http.POST
import retrofit2.http.Query
/**
* 小巴车相关接口
*
* @author tongchenfei
*
*
* wiki: http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48970072
*/
interface ISAASApiService {
/**
* 根据车机坐标获取所在区域全部站点信息
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@GET("/och-bus-cabin/api/business/v1/driver/bus/lineDataWithDriver/query")
fun queryBusRoutes(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Query("sn") sn: String?
): Observable<BusRoutesResponse>
/**
* @param request 请求参数{"destLine":1,"sn":"F803EB2046PZD00229"} 这个接口是重置bus线路的 不是重置线路中站点的
* @return 返回值是重置后的车站列表
* 开始路线
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("/och-bus-cabin/cab/flow/v1/bus/driver/startTask")
fun switchLine(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body request: BusResetDrivingLineRequest?
): Observable<BusRoutesResponse>
/**
* 离站,通知服务器
*/
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("/och-bus-cabin/cab/flow/v1/bus/driver/leave")
fun leaveStation(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body request: BusUpdateSiteStatusRequest?
): Observable<BaseData>
/**
* 到站 更新到站信息
*/
@Headers("Content-type:application/json;charset=UTF-8")
@POST("/och-bus-cabin/cab/flow/v1/bus/driver/arrive")
fun arriveSiteStation(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body request: BusUpdateSiteStatusRequest?
): Observable<BaseData>
/**
* 查询车辆配置的所有路线
*/
@Headers("Content-type:application/json;charset=UTF-8")
@GET("/och-bus-cabin/api/business/v1/driver/BusBindLine")
fun queryBusLines(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Query("sn") sn: String?
): Observable<BusQueryLinesResponse>
/**
* 查询路线当天的任务
* @param appId
* @param ticket
* @param lineId 线路id
* @return
*/
@Headers("Content-type:application/json;charset=UTF-8")
@GET("/och-bus-cabin/api/business/v1/driver/bus/task/query")
fun queryBusTaskByLineId(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Query("lineId") lineId: String?
): Observable<BusQueryLineTaskResponse>
/**
* 上传轨迹信息
*/
@Headers("Content-type:application/json;charset=UTF-8")
@POST("/autopilot-car-hailing/location/v2/driver/bus/saveLineCoordinate")
fun updateOrderRoute(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body data: BusRoutePlanningUpdateReqBean?
): Observable<BaseData>
/**
* 中止任务
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers("Content-type:application/json;charset=UTF-8")
@POST("/och-bus-cabin/cab/flow/v1/bus/driver/abortTask")
fun abortTask(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body data: BusCloseTaskRequest?
): Observable<BaseData>
/**
* 任务正常跑完结束
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers("Content-type:application/json;charset=UTF-8")
@POST("/och-bus-cabin/cab/flow/v1/bus/driver/endTask")
fun endTask(
@Header("appId") appId: String?,
@Header("ticket") ticket: String?,
@Body data: BusCloseTaskRequest?
): Observable<BaseData>
}

View File

@@ -0,0 +1,234 @@
package com.mogo.och.weaknet.repository.net.impl.bussaas
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.map.MogoLocation
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.transformTry
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusRoutePlanningUpdateReqBean
import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
/**
* @author: wangmingjun
* @date: 2021/10/20
*/
object OrderServiceManager {
private val M_SAAS_SERVICE: ISAASApiService =
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
ISAASApiService::class.java
)
/**
* 查询小巴车当前任务
* @param context
* @param callback
*/
@JvmStatic
fun queryBusRoutes(context: Context, callback: OchCommonServiceCallback<BusRoutesResponse>?) {
//获取当前高德坐标
M_SAAS_SERVICE.queryBusRoutes(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes"))
}
/**
* 重置线路站点
* @param context
* @param taskId
* @param callback
*/
@JvmStatic
fun switchLine(
context: Context,
taskId: Int,
callback: OchCommonServiceCallback<BusRoutesResponse>?
) {
M_SAAS_SERVICE.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<BaseData>?) {
M_SAAS_SERVICE.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<BaseData>?) {
M_SAAS_SERVICE.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,
callback: OchCommonServiceCallback<BaseData>?
) {
M_SAAS_SERVICE.leaveStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
)
.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,
callback: OchCommonServiceCallback<BaseData>?
) {
M_SAAS_SERVICE.arriveSiteStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq, System.currentTimeMillis())
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation"))
}
@JvmStatic
fun queryBusLines(
context: Context,
callback: OchCommonServiceCallback<BusQueryLinesResponse>?
) {
M_SAAS_SERVICE.queryBusLines(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines"))
}
@JvmStatic
fun queryBusTaskByLineId(
context: Context,
lineId: String?,
callback: OchCommonServiceCallback<BusQueryLineTaskResponse>?
) {
M_SAAS_SERVICE.queryBusTaskByLineId(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
lineId
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines"))
}
@JvmStatic
fun updateOrderRoute(
context: Context,
lineId: Int,
startSiteId: Int,
endSiteId: Int,
points: List<MogoLocation>,
callback: OchCommonServiceCallback<BaseData>?
) {
val pointsResult = mutableListOf<BusRoutePlanningUpdateReqBean.Result>()
points.forEach {
val result = BusRoutePlanningUpdateReqBean.Result()
result.latitude = it.latitude;
result.longitude = it.longitude;
pointsResult.add(result);
}
M_SAAS_SERVICE.updateOrderRoute(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusRoutePlanningUpdateReqBean(
SharedPrefsMgr.getInstance().sn, lineId, startSiteId, endSiteId, pointsResult
)
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "updateOrderRoute"))
}
/**
* 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度
* @param context
* @param lon
* @param lat
* @param callback
*/
@JvmStatic
fun runCarHeartbeat(
context: Context, lon: Double, lat: Double,
callback: OchCommonServiceCallback<BaseData>?
) {
}
}

View File

@@ -0,0 +1,112 @@
package com.mogo.och.weaknet.repository.net.impl.shuttle;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest;
import com.mogo.och.weaknet.bean.response.BusRoutesResponse;
import com.mogo.och.weaknet.bean.response.WriteOffCountResponse;
import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest;
import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest;
import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest;
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse;
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse;
import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
/**
* 小巴车相关接口
*
* @author tongchenfei
* <p>
*/
public interface IBascApiService {
/**
* 查询当前运行任务
*
* @param request 请求参数
* @return 接口返回数据
*/
@Headers( {"Content-Type:application/json;charset=UTF-8"} )
@POST( "/och-shuttle-cabin/api/business/v1/driver/lineDataWithDriver/query" )
Observable<BusRoutesResponse> 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<BusRoutesResponse> 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<BaseData> 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<BaseData> arriveSiteStation(@Header ("appId") String appId,@Header("ticket") String ticket,@Body BusUpdateSiteStatusRequest request);
/**
* 查询车辆配置的所有路线
* @param appId
* @param ticket
* @param sn
* @return
*/
@GET("/och-shuttle-cabin/api/business/v1/driver/bindLine/query")
Observable<BusQueryLinesResponse> queryBusLines(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn);
/**
* 查询线路的任务
* @param appId
* @param ticket
* @param lineId 线路id
* @return
*/
@GET("/och-shuttle-cabin/api/business/v1/driver/task/query")
Observable<BusQueryLineTaskResponse> queryBusTaskByLineId(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("lineId") Long lineId);
/**
* 中止任务
* @param appId
* @param ticket
* @param data
* @return
*/
@POST("/och-shuttle-cabin/api/flow/v1/driver/abortTask")
Observable<BaseData> 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<BaseData> 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<WriteOffCountResponse> writeOffCount(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("taskId") String taskId, @Query("siteId") String siteId);
}

View File

@@ -0,0 +1,209 @@
package com.mogo.och.weaknet.repository.net.impl.shuttle
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.network.OchCommonNet
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
import com.mogo.och.common.module.network.interceptor.transformIoTry
import com.mogo.och.common.module.network.interceptor.transformTry
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
import com.mogo.och.weaknet.bean.response.WriteOffCountResponse
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.net.bean.request.BusCloseTaskRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusResetDrivingLineRequest
import com.mogo.och.weaknet.repository.net.bean.request.BusUpdateSiteStatusRequest
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLineTaskResponse
import com.mogo.och.weaknet.repository.net.bean.response.BusQueryLinesResponse
import io.reactivex.Observable
/**
* @author: wangmingjun
* @date: 2021/10/20
*/
object OrderServiceManager {
private val mService: IBascApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create(
IBascApiService::class.java
)
/**
* 查询小巴车当前任务
* @param context
* @param callback
*/
@JvmStatic
fun queryBusRoutes(context: Context, callback: OchCommonServiceCallback<BusRoutesResponse>?) {
//获取当前高德坐标
mService.queryBusRoutes(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusQueryLineStationsRequest()
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes"))
}
/**
* 重置线路站点
* @param context
* @param taskId
* @param callback
*/
@JvmStatic
fun switchLine(
context: Context,
taskId: Int,
callback: OchCommonServiceCallback<BusRoutesResponse>?
) {
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<BaseData>?) {
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<BaseData>?) {
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<BaseData>?
) {
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<BaseData>?
) {
mService.arriveSiteStation(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusUpdateSiteStatusRequest(taskId, siteId, seq, writeVersion)
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation"))
}
@JvmStatic
fun queryBusLines(context: Context, callback: OchCommonServiceCallback<BusQueryLinesResponse>?) {
mService.queryBusLines(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines"))
}
@JvmStatic
fun queryBusLines(): Observable<List<LineDataBean>?> {
return mService.queryBusLines(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
) .transformTry()
.flatMap(OchCommonNet("queryBusLines",false))
.flatMap {
Observable.just(it.data)
}
}
@JvmStatic
fun queryBusTaskByLineId(
lineId: Long?) :Observable<List<TaskDataBean>?> {
return mService.queryBusTaskByLineId(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
lineId
) .transformTry()
.flatMap(OchCommonNet<BusQueryLineTaskResponse>("queryBusLines",false))
.flatMap {
Observable.just(it.data)
}
}
@JvmStatic
fun queryWriteOffCountByLineIdAndSiteId(
context: Context,
taskId: String?,
siteId: String?,
callback: OchCommonServiceCallback<WriteOffCountResponse>?
) {
mService.writeOffCount(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
taskId,
siteId
)
.transformIoTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount"))
}
}

View File

@@ -0,0 +1,26 @@
package com.mogo.och.weaknet.repository.net.impl.shuttle
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.net.IRepository
import io.reactivex.Observable
class ShuttleRepository: IRepository {
init {
}
override fun queryCanUseLine(): Observable<List<LineDataBean>?> {
return OrderServiceManager.queryBusLines()
}
override fun queryCanUserTask(lineId: Long): Observable<List<TaskDataBean>?> {
return OrderServiceManager.queryBusTaskByLineId(lineId)
}
companion object{
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.weaknet.repository.net.shuttlesaas;
package com.mogo.och.weaknet.repository.net.impl.shuttlesaas;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest;

View File

@@ -1,4 +1,4 @@
package com.mogo.och.weaknet.repository.net.shuttlesaas
package com.mogo.och.weaknet.repository.net.impl.shuttlesaas
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig

View File

@@ -0,0 +1,20 @@
package com.mogo.och.weaknet.repository.net.impl.shuttlesaas
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.db.repository.LineDb
import com.mogo.och.weaknet.repository.db.repository.TaskDb
import com.mogo.och.weaknet.repository.net.IRepository
import io.reactivex.Observable
class ShuttleSaasRepository: IRepository {
override fun queryCanUseLine(): Observable<List<LineDataBean>?>? {
return LineDb.queryCanUseLine()
}
override fun queryCanUserTask(lineId: Long): Observable<List<TaskDataBean>?>? {
return TaskDb.queryCanUserTask(lineId)
}
}