Merge branch 'dev_robotaxi-d_250417_8.0.0_routing' into dev_robotaxi-d_250709_8.2.0_advideo
# Conflicts: # OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/MusicModel.kt # OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt
This commit is contained in:
@@ -22,6 +22,7 @@ import com.mogo.och.weaknet.model.LineModel
|
||||
import com.mogo.och.weaknet.repository.RepositoryManager
|
||||
import com.mogo.och.weaknet.repository.db.repository.WriteOffDb
|
||||
import com.mogo.och.weaknet.ui.bizswitch.SwitchBizView
|
||||
import com.mogo.och.weaknet.ui.modeswitch.TopSwitchBizView
|
||||
import com.mogo.och.weaknet.ui.qr.QrOpenView
|
||||
import com.mogo.och.weaknet.util.BusAnalyticsManager
|
||||
import com.mogo.och.weaknet.util.BusTrajectoryManager
|
||||
@@ -73,7 +74,7 @@ class ShuttleDriverProvider : CommonServiceImpl() {
|
||||
override fun createOchBusinessView(context: Context?): View? {
|
||||
d(TAG, "createOchBusinessView")
|
||||
return context?.let {
|
||||
SwitchBizView(it)
|
||||
TopSwitchBizView(it)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.mogo.och.weaknet.bean.request
|
||||
|
||||
/**
|
||||
* 通过lineid 获取轨迹id
|
||||
*/
|
||||
data class QueryPointRequest(val businessType: Int,val lineIds:MutableList<Long>){
|
||||
companion object{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,9 @@ import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.data.bean.LineInfo
|
||||
import com.mogo.och.data.bean.SiteIntroduce
|
||||
import com.mogo.och.weaknet.model.LineModel
|
||||
import com.mogo.och.weaknet.repository.db.bean.PointDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean
|
||||
import com.mogo.och.weaknet.repository.db.repository.PointDb
|
||||
import com.mogo.och.weaknet.repository.db.repository.TaskSiteDb
|
||||
import java.lang.Boolean
|
||||
import kotlin.String
|
||||
@@ -30,7 +32,7 @@ class BusRoutesResponse : BaseData() {
|
||||
|
||||
companion object {
|
||||
|
||||
fun db2Beans(runnintTaskAndSites: List<TaskSiteDataBean>?): Pair<MutableList<BusStationBean>,Int> {
|
||||
fun db2Beans(runnintTaskAndSites: List<TaskSiteDataBean>?, lineId: Long?): Pair<MutableList<BusStationBean>,Int> {
|
||||
val result = mutableListOf<BusStationBean>()
|
||||
var temp: BusStationBean? = null
|
||||
var currentStationIndex = -1
|
||||
@@ -39,6 +41,7 @@ class BusRoutesResponse : BaseData() {
|
||||
LineManager.setLineInfo(lineInfo)
|
||||
return Pair(result,currentStationIndex)
|
||||
}
|
||||
val points = PointDb.queryPointByLineId(lineId)
|
||||
runnintTaskAndSites.forEachIndexed { index, taskAndsite ->
|
||||
temp = BusStationBean()
|
||||
temp?.drivingStatus = (taskAndsite.drivingStatus ?: 0)
|
||||
@@ -53,6 +56,27 @@ class BusRoutesResponse : BaseData() {
|
||||
temp?.isPlayTts = Boolean.TRUE == taskAndsite.isPlayTts
|
||||
temp?.seq = (taskAndsite.seq ?: 0)
|
||||
temp?.siteId = if (taskAndsite.siteId == null) 0 else taskAndsite.siteId!!.toInt()
|
||||
points?.let {
|
||||
val sitePoint = it.filter {
|
||||
it.siteId?.toInt() == temp?.siteId
|
||||
}
|
||||
val tempPassPoints = mutableListOf<BusStationBean>()
|
||||
val tempblackPoints = mutableListOf<BusStationBean>()
|
||||
sitePoint.forEach { point->
|
||||
when (point.pointType) {
|
||||
PointDataBean.pointTypePass -> {
|
||||
tempPassPoints.add(point.toStation())
|
||||
}
|
||||
PointDataBean.pointTypeBlack -> {
|
||||
tempblackPoints.add(point.toStation())
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
temp?.passPoints = tempPassPoints
|
||||
temp?.blackPoints = tempblackPoints
|
||||
}
|
||||
|
||||
if(!taskAndsite.videoList.isNullOrEmpty()){
|
||||
try {
|
||||
val list = GsonUtils.fromJson<List<SiteIntroduce>>(
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.mogo.och.weaknet.bean.response
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
|
||||
|
||||
class PointsResponse : BaseData() {
|
||||
var data: MutableList<PointResponse>?=null
|
||||
}
|
||||
|
||||
data class Point(
|
||||
val latitude: Double,
|
||||
val longitude: Double,
|
||||
val pointType: Int,
|
||||
val segment: Int
|
||||
)
|
||||
|
||||
data class Black(
|
||||
val latitude: Double,
|
||||
val longitude: Double,
|
||||
val pointType: Int,
|
||||
val segment: Int
|
||||
)
|
||||
|
||||
data class PointResponse(
|
||||
val businessType: Int,
|
||||
val contrailId: Long,
|
||||
val contrailSaveTime: Long,
|
||||
val csvFileMd5: String,
|
||||
val csvFileUrl: String,
|
||||
val lineId: Long,
|
||||
val lineName: String,
|
||||
val segmentPointList: List<SegmentPoint>,
|
||||
val source: Int,
|
||||
val txtFileMd5: String,
|
||||
val txtFileUrl: String
|
||||
)
|
||||
|
||||
data class SegmentPoint(
|
||||
val blackList: List<Black>,
|
||||
val pointList: List<Point>,
|
||||
val segment: Int?
|
||||
)
|
||||
@@ -58,24 +58,13 @@ object LineModel {
|
||||
|
||||
const val TAG = "${M_BUS}BusLineModel"
|
||||
|
||||
private val context = AbsMogoApplication.getApp()
|
||||
|
||||
// 判断接口是否变化
|
||||
private const val EXECUTABLECHANGEMD5 = "EXECUTABLECHANGEMD5"
|
||||
|
||||
// 展示上一次刷新时间
|
||||
const val EXECUTABLECHANGETIME = "executablechangetime"
|
||||
|
||||
var currentTask: TaskDataBean?=null
|
||||
|
||||
// 当前任务的站点列表
|
||||
var stationList:MutableList<BusStationBean>? = mutableListOf()
|
||||
|
||||
private var startTaskDisposable: Disposable?=null
|
||||
|
||||
private val isRequesting = AtomicBoolean(false)
|
||||
private var startTaskDisposable:Disposable?=null
|
||||
|
||||
private var queryCarInfo: Disposable? = null
|
||||
|
||||
// 当前站点
|
||||
@JvmStatic
|
||||
@@ -86,7 +75,7 @@ object LineModel {
|
||||
d(TAG,"init")
|
||||
mContext = AbsMogoApplication.getApp()
|
||||
EventModel.load()
|
||||
queryCarExecutableTaskList(true)
|
||||
SynchDataModel.queryCarExecutableTaskList(true)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -94,10 +83,11 @@ object LineModel {
|
||||
fun release() {
|
||||
d(TAG,"release")
|
||||
mContext = null
|
||||
isRequesting.set(false)
|
||||
|
||||
SynchDataModel.release()
|
||||
EventModel.release()
|
||||
mBusLinesCallbackMap.clear()
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -110,99 +100,12 @@ object LineModel {
|
||||
mBusLinesCallbackMap[tag] = callback
|
||||
}
|
||||
|
||||
fun refreshTask() {
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
queryCarExecutableTaskList(false)
|
||||
fun getBusLinesCallbackMap(): MutableMap<String, IBusLinesCallback> {
|
||||
return mBusLinesCallbackMap
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步基础信息
|
||||
*/
|
||||
private fun queryCarExecutableTaskList(isBackground:Boolean) {
|
||||
if(isRequesting.get()){
|
||||
d(TAG,"正在同步请稍等")
|
||||
val lastUpdateTime = SharedPrefsMgr.getInstance().getLong(EXECUTABLECHANGETIME, 0)
|
||||
mBusLinesCallbackMap.forEach { callback ->
|
||||
callback.value.onRefreshSuccess(lastUpdateTime)
|
||||
}
|
||||
return
|
||||
}
|
||||
isRequesting.set(true)
|
||||
d(TAG,"开始同步数据")
|
||||
RepositoryManager.queryCarExecutableTaskList(
|
||||
object : OchCommonServiceCallback<CarExecutableTaskResponse> {
|
||||
override fun onSuccess(data: CarExecutableTaskResponse) {
|
||||
isRequesting.set(false)
|
||||
d(TAG,"同步数据成功")
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
queryCarInfo = RxUtils.createSubscribe(60_000) {
|
||||
queryCarExecutableTaskList(true)
|
||||
}
|
||||
// 第一次过滤 请求返回值的md5
|
||||
val currentRequest = DigestUtils.md5Hex(data.data.toString())
|
||||
val lastChangeMd5 = SharedPrefsMgr.getInstance().getString(EXECUTABLECHANGEMD5)
|
||||
val lastUpdateTime = SharedPrefsMgr.getInstance().getLong(EXECUTABLECHANGETIME, 0)
|
||||
val currentTimeStamp = DateTimeUtil.getCurrentTimeStamp()
|
||||
|
||||
SharedPrefsMgr.getInstance().putLong(EXECUTABLECHANGETIME, currentTimeStamp)
|
||||
val sameDay = DateTimeUtil.isSameDay(currentTimeStamp, lastUpdateTime)
|
||||
mBusLinesCallbackMap.forEach { callback ->
|
||||
callback.value.onRefreshSuccess(currentTimeStamp)
|
||||
}
|
||||
if (isBackground) {
|
||||
if (currentRequest == lastChangeMd5 && sameDay) {
|
||||
return
|
||||
}
|
||||
}
|
||||
SharedPrefsMgr.getInstance().putString(EXECUTABLECHANGEMD5, currentRequest)
|
||||
OchChainLogManager.writeChainLog(
|
||||
"数据发生变化",
|
||||
"接口信息发生变化 $lastChangeMd5 new md5${currentRequest}"
|
||||
)
|
||||
val startTime = System.currentTimeMillis()
|
||||
CarExecutableTaskResponse.save2Db(data)
|
||||
d(TAG,"更新数据耗时${System.currentTimeMillis()-startTime}")
|
||||
RxUtils.createSubscribe(800) {
|
||||
// 等待写入数据库
|
||||
mBusLinesCallbackMap.forEach { callback ->
|
||||
callback.value.onRefreshSuccessWIthData()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
isRequesting.set(false)
|
||||
d(TAG,"同步数据失败 onError")
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
queryCarInfo = RxUtils.createSubscribe(60_000) {
|
||||
queryCarExecutableTaskList(true)
|
||||
}
|
||||
if (!isBackground) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort(ResourcesUtils.getString(R.string.network_error_tip))
|
||||
} else {
|
||||
ToastUtils.showShort(ResourcesUtils.getString(R.string.request_error_tip))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, failMsg: String) {
|
||||
isRequesting.set(false)
|
||||
d(TAG,"同步数据失败 onFail")
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
queryCarInfo = RxUtils.createSubscribe(60_000) {
|
||||
queryCarExecutableTaskList(true)
|
||||
}
|
||||
if (!isBackground) {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试")
|
||||
} else {
|
||||
ToastUtils.showShort(failMsg)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
fun refreshTask() {
|
||||
SynchDataModel.queryCarExecutableTaskList(false)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,10 +3,12 @@ package com.mogo.och.weaknet.model
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.module.status.MogoStatusManager
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerSopSettingManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
|
||||
@@ -206,9 +208,11 @@ object OrderModel {
|
||||
|
||||
override fun onNext(data: Boolean) {
|
||||
if(data){
|
||||
MogoStatusManager.getInstance().setShuttleDriverPerformTask(TAG, true)
|
||||
LineModel.haveRunningTask()
|
||||
updateBusStatus()
|
||||
}else{
|
||||
MogoStatusManager.getInstance().setShuttleDriverPerformTask(TAG, false)
|
||||
LineModel.haveNoRunningTask()
|
||||
d(TAG, "queryBusRoutes 获取到小巴路线数据:空 ")
|
||||
LineManager.setLineInfo(null)
|
||||
@@ -534,6 +538,9 @@ object OrderModel {
|
||||
}catch (e:Exception){
|
||||
OchChainLogManager.writeChainLog("错误","${e.message}")
|
||||
}
|
||||
MogoStatusManager.getInstance().setShuttleDriverPerformTask(TAG, false)
|
||||
MogoStatusManager.getInstance().setTaxiUnmanedDriverLineRoutingVerifyMode(TAG, false)
|
||||
CallerSopSettingManager.invokeRoutingListener(false)
|
||||
MapMakerManager.removeAllMapMarkerByOwner(TAG)
|
||||
BusTrajectoryManager.stopTrajReqLoop()
|
||||
LoginStatusManager.loginOut()
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
package com.mogo.och.weaknet.model
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.network.utils.digest.DigestUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.shuttle.weaknet.R
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse
|
||||
import com.mogo.och.weaknet.repository.RepositoryManager
|
||||
import com.mogo.och.weaknet.repository.db.repository.PointDb
|
||||
import io.reactivex.Observer
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
object SynchDataModel {
|
||||
|
||||
private const val TAG = "SynchDataModel"
|
||||
|
||||
private val isRequesting = AtomicBoolean(false)
|
||||
|
||||
// 展示上一次刷新时间
|
||||
const val EXECUTABLECHANGETIME = "executablechangetime"
|
||||
|
||||
private var queryCarInfo: Disposable? = null
|
||||
|
||||
// 判断接口是否变化
|
||||
private const val EXECUTABLECHANGEMD5 = "EXECUTABLECHANGEMD5"
|
||||
|
||||
/**
|
||||
* 同步基础信息
|
||||
*/
|
||||
fun queryCarExecutableTaskList(isBackground:Boolean) {
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
if(isRequesting.get()){
|
||||
d(TAG,"正在同步请稍等")
|
||||
val lastUpdateTime = SharedPrefsMgr.getInstance().getLong(EXECUTABLECHANGETIME, 0)
|
||||
LineModel.getBusLinesCallbackMap().forEach { callback ->
|
||||
callback.value.onRefreshSuccess(lastUpdateTime)
|
||||
}
|
||||
return
|
||||
}
|
||||
isRequesting.set(true)
|
||||
d(TAG,"开始同步数据")
|
||||
RepositoryManager.queryCarExecutableTaskList(
|
||||
object : OchCommonServiceCallback<CarExecutableTaskResponse> {
|
||||
override fun onSuccess(data: CarExecutableTaskResponse) {
|
||||
isRequesting.set(false)
|
||||
d(TAG,"同步数据成功")
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
queryCarInfo = RxUtils.createSubscribe(60_000) {
|
||||
queryCarExecutableTaskList(true)
|
||||
}
|
||||
// 第一次过滤 请求返回值的md5
|
||||
val currentRequest = DigestUtils.md5Hex(data.data.toString())
|
||||
val lastChangeMd5 = SharedPrefsMgr.getInstance().getString(EXECUTABLECHANGEMD5)
|
||||
val lastUpdateTime = SharedPrefsMgr.getInstance().getLong(EXECUTABLECHANGETIME, 0)
|
||||
val currentTimeStamp = DateTimeUtil.getCurrentTimeStamp()
|
||||
|
||||
SharedPrefsMgr.getInstance().putLong(EXECUTABLECHANGETIME, currentTimeStamp)
|
||||
val sameDay = DateTimeUtil.isSameDay(currentTimeStamp, lastUpdateTime)
|
||||
LineModel.getBusLinesCallbackMap().forEach { callback ->
|
||||
callback.value.onRefreshSuccess(currentTimeStamp)
|
||||
}
|
||||
if (isBackground) {
|
||||
if (currentRequest == lastChangeMd5 && sameDay) {
|
||||
return
|
||||
}
|
||||
}
|
||||
SharedPrefsMgr.getInstance().putString(EXECUTABLECHANGEMD5, currentRequest)
|
||||
OchChainLogManager.writeChainLog(
|
||||
"数据发生变化",
|
||||
"接口信息发生变化 $lastChangeMd5 new md5${currentRequest}"
|
||||
)
|
||||
val startTime = System.currentTimeMillis()
|
||||
CarExecutableTaskResponse.save2Db(data)
|
||||
d(TAG,"更新数据耗时${System.currentTimeMillis()-startTime}")
|
||||
RxUtils.createSubscribe(800) {
|
||||
// 等待写入数据库
|
||||
LineModel.getBusLinesCallbackMap().forEach { callback ->
|
||||
callback.value.onRefreshSuccessWIthData()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
isRequesting.set(false)
|
||||
d(TAG,"同步数据失败 onError")
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
queryCarInfo = RxUtils.createSubscribe(60_000) {
|
||||
queryCarExecutableTaskList(true)
|
||||
}
|
||||
if (!isBackground) {
|
||||
if (!NetworkUtils.isConnected(AbsMogoApplication.getApp())) {
|
||||
ToastUtils.showShort(ResourcesUtils.getString(R.string.network_error_tip))
|
||||
} else {
|
||||
ToastUtils.showShort(ResourcesUtils.getString(R.string.request_error_tip))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, failMsg: String) {
|
||||
isRequesting.set(false)
|
||||
d(TAG,"同步数据失败 onFail")
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
queryCarInfo = RxUtils.createSubscribe(60_000) {
|
||||
queryCarExecutableTaskList(true)
|
||||
}
|
||||
if (!isBackground) {
|
||||
if (!NetworkUtils.isConnected(AbsMogoApplication.getApp())) {
|
||||
ToastUtils.showShort("网络异常,请稍后重试")
|
||||
} else {
|
||||
ToastUtils.showShort(failMsg)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private val waitSysData = mutableSetOf<Long>()
|
||||
private val isRequestingContrainInfo = AtomicBoolean(false)
|
||||
|
||||
|
||||
fun synContraiInfo(needUpdatePoint: MutableList<Long>) {
|
||||
|
||||
waitSysData.addAll(needUpdatePoint)
|
||||
if(isRequestingContrainInfo.get()){
|
||||
// 正在请求
|
||||
OchChainLogManager.writeChainLogNet(false,"同步轨迹","正在同步轨迹请稍等 ")
|
||||
return
|
||||
}
|
||||
isRequestingContrainInfo.set(true)
|
||||
|
||||
val lines = mutableListOf<Long>()
|
||||
waitSysData.forEach {
|
||||
lines.add(it)
|
||||
}
|
||||
OchChainLogManager.writeChainLogNet(false,"同步轨迹","轨迹变更需同步禁行点和途径点 线路:${lines}")
|
||||
RepositoryManager.queryPointFromNet(lines)
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(Schedulers.io())
|
||||
?.subscribe(object : Observer<List<PointResponse>> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
d(TAG, "queryPointsByLinesId onSubscribe")
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable) {
|
||||
d(TAG, "同步轨迹 onError${e.printStackTrace()} 同步轨迹失败 5s种后重试 线路:${lines}")
|
||||
OchChainLogManager.writeChainLogNet(false,"同步轨迹","同步轨迹失败 5s种后重试 线路:${lines}")
|
||||
RxUtils.createSubscribe(5_000){
|
||||
synContraiInfo(needUpdatePoint)
|
||||
}
|
||||
isRequestingContrainInfo.set(false)
|
||||
}
|
||||
|
||||
override fun onComplete() {
|
||||
d(TAG, "endTask onComplete")
|
||||
}
|
||||
|
||||
override fun onNext(data: List<PointResponse>) {
|
||||
try {
|
||||
PointDb.addOrUpdate(data)
|
||||
for (datum in data) {
|
||||
waitSysData.remove(datum.lineId)
|
||||
}
|
||||
isRequestingContrainInfo.set(false)
|
||||
if(waitSysData.isNotEmpty()){
|
||||
synContraiInfo(needUpdatePoint)
|
||||
}
|
||||
OchChainLogManager.writeChainLogNet(false,"同步轨迹","网络请求重构 轨迹信息${data}")
|
||||
d(TAG, "同步轨迹网络成功")
|
||||
}catch (e:Exception){
|
||||
OchChainLogManager.writeChainLogDb("同步轨迹","同步轨迹时报错 轨迹信息${data} 错误信息${e.message}")
|
||||
synContraiInfo(needUpdatePoint)
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun release() {
|
||||
isRequesting.set(false)
|
||||
RxUtils.disposeSubscribe(queryCarInfo)
|
||||
}
|
||||
}
|
||||
@@ -126,8 +126,8 @@ object ThirdDeviceData {
|
||||
LedScreenManager.sendTripInfo2Led(
|
||||
LedScreenManager.LEAVE_STATION,
|
||||
lineInfo.lineName,
|
||||
start.name,
|
||||
end.name,
|
||||
start.name?:"",
|
||||
end.name?:"",
|
||||
LineModel.isLastStation() == true
|
||||
)
|
||||
}
|
||||
@@ -146,8 +146,8 @@ object ThirdDeviceData {
|
||||
LedScreenManager.sendTripInfo2Led(
|
||||
LedScreenManager.ARRIVE_STATION,
|
||||
lineInfo.lineName,
|
||||
start.name,
|
||||
end.name,
|
||||
start.name?:"",
|
||||
end.name?:"",
|
||||
LineModel.isLastStation(end)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.mogo.och.weaknet.bean.WaitUploadLine
|
||||
import com.mogo.och.weaknet.bean.WriteOffPassenger
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse
|
||||
import com.mogo.och.weaknet.repository.db.MyDataBase
|
||||
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
|
||||
@@ -183,6 +184,13 @@ object RepositoryManager {
|
||||
}
|
||||
}
|
||||
|
||||
fun queryPointFromNet(lines: MutableList<Long>): Observable<MutableList<PointResponse>>? {
|
||||
if (lineRepository is WeaknetRepository) {
|
||||
return lineRepository?.queryPointsByLineIds(lines)
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
fun reportCabinEvent(
|
||||
context: Context?,
|
||||
data: ShuttleEventRequest?,
|
||||
|
||||
@@ -6,16 +6,17 @@ import androidx.room.Room
|
||||
import androidx.room.RoomDatabase
|
||||
import androidx.room.migration.Migration
|
||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
import androidx.sqlite.db.SupportSQLiteOpenHelper
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.env.Project
|
||||
import com.mogo.commons.env.ProjectUtils
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.FileUtils
|
||||
import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.EventDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.PointDataBean
|
||||
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.bean.TaskSiteDataBean
|
||||
@@ -23,17 +24,22 @@ import com.mogo.och.weaknet.repository.db.bean.WriteOffDataBean
|
||||
import com.mogo.och.weaknet.repository.db.dao.EventDataDao
|
||||
import com.mogo.och.weaknet.repository.db.dao.ContrailDataDao
|
||||
import com.mogo.och.weaknet.repository.db.dao.LineDataDao
|
||||
import com.mogo.och.weaknet.repository.db.dao.PointDataDao
|
||||
import com.mogo.och.weaknet.repository.db.dao.SiteDataDao
|
||||
import com.mogo.och.weaknet.repository.db.dao.TaskDataDao
|
||||
import com.mogo.och.weaknet.repository.db.dao.TaskSiteDataDao
|
||||
import com.mogo.och.weaknet.repository.db.dao.WriteOffDataDao
|
||||
import java.io.File
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
//注解Database告诉系统这是Room数据库对象
|
||||
//entities指定该数据库有哪些表,多张表就逗号分隔
|
||||
//version指定数据库版本号,升级时需要用到
|
||||
//数据库继承自RoomDatabase
|
||||
@Database(entities = [ContrailDataBean::class, LineDataBean::class, SiteDataBean::class, TaskDataBean::class, TaskSiteDataBean::class, EventDataBean::class, WriteOffDataBean::class], version = 6)
|
||||
@Database(entities = [ContrailDataBean::class, LineDataBean::class,
|
||||
SiteDataBean::class, TaskDataBean::class, TaskSiteDataBean::class,
|
||||
EventDataBean::class, WriteOffDataBean::class,PointDataBean::class
|
||||
], version = 7)
|
||||
abstract class MyDataBase : RoomDatabase() {
|
||||
|
||||
private val dbRepositorys = mutableListOf<IDbRepository>()
|
||||
@@ -53,12 +59,18 @@ abstract class MyDataBase : RoomDatabase() {
|
||||
abstract val contrailDataDao: ContrailDataDao?
|
||||
abstract val eventDataDao: EventDataDao?
|
||||
abstract val lineDataDao: LineDataDao?
|
||||
abstract val pointDataDao: PointDataDao?
|
||||
abstract val siteDataDao: SiteDataDao?
|
||||
abstract val taskDataDao: TaskDataDao?
|
||||
abstract val taskSiteDataDao: TaskSiteDataDao?
|
||||
abstract val writeOffDataDao: WriteOffDataDao?
|
||||
|
||||
companion object {
|
||||
|
||||
|
||||
private val TAG = "MyDataBase"
|
||||
|
||||
|
||||
private val MIGRATION_1_2 = object : Migration(1, 2) {
|
||||
override fun migrate(database: SupportSQLiteDatabase) {
|
||||
database.execSQL("ALTER TABLE ${EventDataBean.tableName} ADD COLUMN driver_id INTEGER");
|
||||
@@ -95,6 +107,15 @@ abstract class MyDataBase : RoomDatabase() {
|
||||
}
|
||||
}
|
||||
|
||||
private val MIGRATION_6_7 = object : Migration(6, 7) {
|
||||
override fun migrate(database: SupportSQLiteDatabase) {
|
||||
database.execSQL("CREATE TABLE IF NOT EXISTS `${PointDataBean.tableName}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `line_id` INTEGER, `contrail_id` INTEGER, `site_id` INTEGER, `md5` TEXT, `seq` INTEGER, `point_type` INTEGER, `longitude` REAL, `latitude` REAL, `sub_seq` INTEGER)")
|
||||
database.execSQL("ALTER TABLE ${PointDataBean.tableName} ADD COLUMN contrail_id INTEGER")
|
||||
database.execSQL("ALTER TABLE ${PointDataBean.tableName} ADD COLUMN source INTEGER")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun getDBName():MyDataBase{
|
||||
val roomName = when (ProjectUtils.getProjectType()) {
|
||||
@@ -142,7 +163,9 @@ abstract class MyDataBase : RoomDatabase() {
|
||||
.addMigrations(MIGRATION_3_4)
|
||||
.addMigrations(MIGRATION_4_5)
|
||||
.addMigrations(MIGRATION_5_6)
|
||||
.addMigrations(MIGRATION_6_7)
|
||||
.fallbackToDestructiveMigration()
|
||||
.setQueryCallback({ sqlQuery, bindArgs -> CallerLogger.d(TAG,"sql:$sqlQuery--->参数:$bindArgs") }, Executors.newSingleThreadExecutor())
|
||||
.build()
|
||||
}
|
||||
val ROOT_PATH = Environment.getExternalStorageDirectory().absolutePath + File.separator + "Mogo" + File.separator + "APP_cache" + File.separator //程序外部存储跟目录
|
||||
|
||||
@@ -18,6 +18,12 @@ data class ContrailDataBean(
|
||||
@ColumnInfo(name = "line_id", typeAffinity = ColumnInfo.INTEGER, index = true)
|
||||
var lineId: Long? = null,
|
||||
|
||||
/**
|
||||
* 轨迹id
|
||||
*/
|
||||
@ColumnInfo(name = "contrail_id", typeAffinity = ColumnInfo.INTEGER)
|
||||
var contrailId: Long? = null,
|
||||
|
||||
/**
|
||||
* csv格式的轨迹文件
|
||||
*/
|
||||
@@ -54,9 +60,17 @@ data class ContrailDataBean(
|
||||
@ColumnInfo(name = "md5", typeAffinity = ColumnInfo.TEXT, index = true)
|
||||
var md5: String? = null,
|
||||
|
||||
/**
|
||||
* 轨迹id
|
||||
*/
|
||||
@ColumnInfo(name = "source", typeAffinity = ColumnInfo.INTEGER)
|
||||
var source: Int? = null,
|
||||
|
||||
|
||||
) {
|
||||
companion object {
|
||||
const val tableName: String = "contrail_data_table"
|
||||
const val SOURCETYPEROUTING = 2
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
package com.mogo.och.weaknet.repository.db.bean
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
|
||||
@Entity(tableName = PointDataBean.tableName)
|
||||
data class PointDataBean(
|
||||
|
||||
@PrimaryKey(autoGenerate = true) var id: Int = 0,
|
||||
|
||||
/**
|
||||
* 点所属线路Id
|
||||
*/
|
||||
@ColumnInfo(name = "line_id", typeAffinity = ColumnInfo.INTEGER)
|
||||
var lineId: Long? = null,
|
||||
|
||||
/**
|
||||
* 轨迹id
|
||||
*/
|
||||
@ColumnInfo(name = "contrail_id", typeAffinity = ColumnInfo.INTEGER)
|
||||
var contrailId: Long? = null,
|
||||
|
||||
/**
|
||||
* A--B--C--D
|
||||
* A--B 的途径点 siteId = B.id
|
||||
* B--C 的途径点 siteId = C.id
|
||||
* C--D 的途径点 siteId = D.id
|
||||
*/
|
||||
@ColumnInfo(name = "site_id", typeAffinity = ColumnInfo.INTEGER)
|
||||
var siteId: Long? = null,
|
||||
|
||||
/**
|
||||
* ContrailDataBean 表格中的md5值
|
||||
*/
|
||||
@ColumnInfo(name = "md5", typeAffinity = ColumnInfo.TEXT)
|
||||
var md5: String? = null,
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 排队组
|
||||
*/
|
||||
@ColumnInfo(name = "seq", typeAffinity = ColumnInfo.INTEGER)
|
||||
var seq: Int? = null,
|
||||
|
||||
/**
|
||||
* 点的类型
|
||||
*/
|
||||
@ColumnInfo(name = "point_type", typeAffinity = ColumnInfo.INTEGER)
|
||||
var pointType: Int? = null,
|
||||
|
||||
/**
|
||||
* 高精坐标
|
||||
*/
|
||||
@ColumnInfo(name = "longitude", typeAffinity = ColumnInfo.REAL)
|
||||
var longitude: Double? = null,
|
||||
|
||||
/**
|
||||
* 高精坐标
|
||||
*/
|
||||
@ColumnInfo(name = "latitude", typeAffinity = ColumnInfo.REAL)
|
||||
var latitude: Double? = null,
|
||||
|
||||
/**
|
||||
* 组内排序
|
||||
*/
|
||||
@ColumnInfo(name = "sub_seq", typeAffinity = ColumnInfo.INTEGER)
|
||||
var subSeq: Int? = null,
|
||||
|
||||
) {
|
||||
fun toStation(): BusStationBean {
|
||||
val temp = BusStationBean()
|
||||
temp.lat = latitude?:0.0
|
||||
temp.lon = longitude?:0.0
|
||||
temp.pointType = pointType?:pointTypePass
|
||||
temp.isLeaving = true
|
||||
return temp
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val tableName = "point_data_table"
|
||||
const val pointTypePass = 1
|
||||
const val pointTypeBlack = 2
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,8 @@ interface ContrailDataDao {
|
||||
queryContrailByLineId.first()
|
||||
}
|
||||
}
|
||||
|
||||
@Query("UPDATE ${ContrailDataBean.tableName} SET contrail_id = :contrailId ,source = :source WHERE line_id = :lineId")
|
||||
fun updateIdAndSource(contrailId: Long, source: Int, lineId: Long)
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.mogo.och.weaknet.repository.db.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import androidx.room.Transaction
|
||||
import com.mogo.och.weaknet.repository.db.bean.PointDataBean
|
||||
|
||||
@Dao
|
||||
interface PointDataDao {
|
||||
//插入数据
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
fun insert(vararg lineDataBean: PointDataBean)
|
||||
|
||||
//插入数据
|
||||
@Transaction
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
fun insertTra(vararg lineDataBean: PointDataBean)
|
||||
|
||||
|
||||
//删除数据
|
||||
@Delete
|
||||
fun delete(vararg lineDataBean: PointDataBean)
|
||||
|
||||
|
||||
// 线路删除时同步删除所属轨迹信息
|
||||
@Transaction
|
||||
@Query("DELETE FROM ${PointDataBean.tableName} WHERE line_id in (:lineId)")
|
||||
fun deleteByLineIdTra(lineId: List<Long>)
|
||||
|
||||
@Transaction
|
||||
@Query("DELETE FROM ${PointDataBean.tableName} WHERE line_id in (:lineId)")
|
||||
fun deleteByLineId(lineId: List<Long>)
|
||||
|
||||
@Query("SELECT * FROM ${PointDataBean.tableName} WHERE line_id = :lineId")
|
||||
fun queryPointByLineId(lineId: Long) : List<PointDataBean>?
|
||||
}
|
||||
@@ -2,6 +2,8 @@ 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.model.SynchDataModel
|
||||
import com.mogo.och.weaknet.repository.RepositoryManager
|
||||
import com.mogo.och.weaknet.repository.db.IDbRepository
|
||||
import com.mogo.och.weaknet.repository.db.MyDataBase
|
||||
import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean
|
||||
@@ -26,6 +28,7 @@ object ContraiDb : IDbRepository {
|
||||
val runnable = Runnable {
|
||||
// 校验数据个数
|
||||
contrailDao?.let { contrailDao->
|
||||
val needUpdatePoint = mutableListOf<Long>()
|
||||
contrailDatalist.forEach {
|
||||
val md5Source = it.toString()
|
||||
val md5Hex = DigestUtils.md5Hex(md5Source)
|
||||
@@ -33,6 +36,7 @@ object ContraiDb : IDbRepository {
|
||||
if(queryContrailByMd5.isNullOrEmpty()){// 没有值或者值有变化
|
||||
val needUpdate = contrailDao.queryContrailByLineIdOne(it.lineId!!)
|
||||
it.md5 = md5Hex
|
||||
needUpdatePoint.add(it.lineId!!)
|
||||
if(needUpdate!=null){// 更新
|
||||
it.id = needUpdate.id
|
||||
contrailDao.update(it.csvFileUrl?:"",it.csvFileMd5?:"",it.txtFileUrl?:"",it.txtFileMd5?:"",System.currentTimeMillis(),md5Hex,needUpdate.id)
|
||||
@@ -41,6 +45,9 @@ object ContraiDb : IDbRepository {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(needUpdatePoint.isNotEmpty()){
|
||||
SynchDataModel.synContraiInfo(needUpdatePoint)
|
||||
}
|
||||
}
|
||||
}
|
||||
BizLoopManager.runInIoThread(runnable)
|
||||
@@ -75,4 +82,10 @@ object ContraiDb : IDbRepository {
|
||||
addOrUpdate(mutableListOf(runningLine))
|
||||
}
|
||||
|
||||
fun upDateIdAndsource(contrailId: Long?, source: Int?, lineId: Long?) {
|
||||
if(contrailId!=null&&source!=null&&lineId!=null){
|
||||
contrailDao?.updateIdAndSource(contrailId,source,lineId)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.mogo.och.weaknet.repository.db.repository
|
||||
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse
|
||||
import com.mogo.och.weaknet.repository.db.IDbRepository
|
||||
import com.mogo.och.weaknet.repository.db.MyDataBase
|
||||
import com.mogo.och.weaknet.repository.db.bean.ContrailDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.PointDataBean
|
||||
import com.mogo.och.weaknet.repository.db.dao.PointDataDao
|
||||
|
||||
object PointDb: IDbRepository {
|
||||
|
||||
private var pointDao: PointDataDao?=null
|
||||
get() {
|
||||
if(field==null){
|
||||
field = MyDataBase.instance?.pointDataDao
|
||||
register()
|
||||
}
|
||||
return field
|
||||
}
|
||||
|
||||
|
||||
override fun release() {
|
||||
pointDao = null
|
||||
}
|
||||
|
||||
fun queryPointByLineId(lineId: Long?): List<PointDataBean>? {
|
||||
lineId?.let {
|
||||
return pointDao?.queryPointByLineId(lineId)
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
fun addOrUpdate(serverDataList:List<PointResponse>) {
|
||||
val contaiBeans = mutableListOf<PointDataBean>()
|
||||
val needDelete = mutableListOf<Long>()
|
||||
val needUpdateLineInfos = mutableListOf<ContrailDataBean>()
|
||||
|
||||
serverDataList.forEach { contrailInfo ->
|
||||
val lineId = contrailInfo.lineId
|
||||
val siteList = SiteDb.querySiteByLineId(lineId)
|
||||
val contraiBean = ContraiDb.queryAutopilotInfoByLineid(lineId)
|
||||
|
||||
contraiBean?.let {
|
||||
contraiBean.source = contrailInfo.source
|
||||
contraiBean.contrailId = contrailInfo.contrailId
|
||||
needUpdateLineInfos.add(contraiBean)
|
||||
}
|
||||
|
||||
val segmentPointList = contrailInfo.segmentPointList
|
||||
needDelete.add(lineId)
|
||||
segmentPointList.forEachIndexed { index, segmentPoint ->
|
||||
val siteIndex = segmentPoint.segment
|
||||
siteList?.let { siteListTemp->
|
||||
siteIndex?.let {siteIndexTemp->
|
||||
// 途径点和禁行点所有站点
|
||||
val siteDataBean = siteListTemp[siteIndexTemp]
|
||||
segmentPoint.pointList?.forEachIndexed { index, point ->
|
||||
val pointTemp = PointDataBean()
|
||||
pointTemp.lineId = lineId
|
||||
pointTemp.contrailId = contrailInfo.contrailId
|
||||
pointTemp.siteId = siteDataBean.siteId
|
||||
pointTemp.md5 = contraiBean?.md5?:""
|
||||
pointTemp.seq = siteIndex
|
||||
pointTemp.pointType = PointDataBean.pointTypePass
|
||||
pointTemp.longitude = point.longitude
|
||||
pointTemp.latitude = point.latitude
|
||||
pointTemp.subSeq = index
|
||||
contaiBeans.add(pointTemp)
|
||||
}
|
||||
segmentPoint.blackList?.forEachIndexed { index, black ->
|
||||
val pointTemp = PointDataBean()
|
||||
pointTemp.lineId = lineId
|
||||
pointTemp.contrailId = contrailInfo.contrailId
|
||||
pointTemp.siteId = siteDataBean.siteId
|
||||
pointTemp.md5 = contraiBean?.md5?:""
|
||||
pointTemp.seq = siteIndex
|
||||
pointTemp.pointType = PointDataBean.pointTypeBlack
|
||||
pointTemp.longitude = black.longitude
|
||||
pointTemp.latitude = black.latitude
|
||||
pointTemp.subSeq = index
|
||||
contaiBeans.add(pointTemp)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(needUpdateLineInfos.size<100){
|
||||
needUpdateLineInfos.forEach {
|
||||
ContraiDb.upDateIdAndsource(it.contrailId,it.source,it.lineId)
|
||||
}
|
||||
}else{
|
||||
MyDataBase.instance?.runInTransaction{
|
||||
needUpdateLineInfos.forEach {
|
||||
ContraiDb.upDateIdAndsource(it.contrailId,it.source,it.lineId)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(needDelete.size<100) {
|
||||
pointDao?.deleteByLineId(needDelete)
|
||||
}else{
|
||||
pointDao?.deleteByLineIdTra(needDelete)
|
||||
}
|
||||
if(contaiBeans.size<100) {
|
||||
pointDao?.insert(*contaiBeans.toTypedArray())
|
||||
}else{
|
||||
pointDao?.insertTra(*contaiBeans.toTypedArray())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package com.mogo.och.weaknet.repository.db.repository
|
||||
import androidx.room.Transaction
|
||||
import com.mogo.eagle.core.network.utils.digest.DigestUtils
|
||||
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.IDbRepository
|
||||
@@ -13,6 +12,8 @@ import com.mogo.och.weaknet.repository.db.dao.SiteDataDao
|
||||
|
||||
object SiteDb: IDbRepository {
|
||||
|
||||
private const val TAG = "SiteDb"
|
||||
|
||||
private var siteDataDao: SiteDataDao? = null
|
||||
get() {
|
||||
if(field==null){
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse
|
||||
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
|
||||
import io.reactivex.Observable
|
||||
@@ -44,4 +45,6 @@ interface ILineRepository {
|
||||
fun release()
|
||||
fun endTaskByOther(taskId: Long) {}
|
||||
|
||||
fun queryPointsByLineIds(lines: MutableList<Long>): Observable<MutableList<PointResponse>>?
|
||||
|
||||
}
|
||||
@@ -16,6 +16,7 @@ import com.mogo.och.data.bean.ContraiInfo
|
||||
import com.mogo.och.data.bean.LineInfo
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse
|
||||
import com.mogo.och.weaknet.model.LineModel
|
||||
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
|
||||
@@ -184,6 +185,10 @@ class NormalRepository: ILineRepository {
|
||||
|
||||
}
|
||||
|
||||
override fun queryPointsByLineIds(lines: MutableList<Long>): Observable<MutableList<PointResponse>>? {
|
||||
return Observable.just(ArrayList<PointResponse>())
|
||||
}
|
||||
|
||||
override fun reportCabinEvent(
|
||||
context: Context?,
|
||||
data: ShuttleEventRequest?,
|
||||
|
||||
@@ -16,12 +16,15 @@ import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.data.bean.ContraiInfo
|
||||
import com.mogo.och.weaknet.bean.request.QueryPointRequest
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
|
||||
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse
|
||||
import com.mogo.och.weaknet.constant.BusConst
|
||||
import com.mogo.och.weaknet.model.LineModel
|
||||
import com.mogo.och.weaknet.model.LineModel.currentTask
|
||||
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
|
||||
@@ -102,7 +105,7 @@ class WeaknetRepository : ILineRepository {
|
||||
TaskSiteDb.deleteErrorData(it)
|
||||
return@flatMap loadServerRuningTask(1)
|
||||
}
|
||||
val db2Beans = BusRoutesResponse.db2Beans(runnintTaskAndSites)
|
||||
val db2Beans = BusRoutesResponse.db2Beans(runnintTaskAndSites,currentTask!!.lineId)
|
||||
LineModel.stationList = db2Beans.first
|
||||
LineModel.startStationIndex = db2Beans.second
|
||||
LineModel.stationList?.let { stationlist->
|
||||
@@ -123,7 +126,7 @@ class WeaknetRepository : ILineRepository {
|
||||
OchChainLogManager.writeChainLogAutopilot("轨迹错误",this.toString())
|
||||
CallerLogger.d(TAG,"轨迹错误,$this")
|
||||
}
|
||||
LineManager.setContraiInfo(ContraiInfo(lineId!!,csvFileUrl!!,csvFileMd5!!,txtFileUrl!!,txtFileMd5!!,contrailSaveTime!!))
|
||||
LineManager.setContraiInfo(ContraiInfo(lineId!!,csvFileUrl!!,csvFileMd5!!,txtFileUrl!!,txtFileMd5!!,contrailSaveTime!!, source = source?: ContrailDataBean.SOURCETYPEROUTING))
|
||||
}
|
||||
}
|
||||
return@flatMap Observable.just(true)
|
||||
@@ -479,6 +482,11 @@ class WeaknetRepository : ILineRepository {
|
||||
weakNetInterface?.queryCarExecutableTaskList(context,ochCommonServiceCallback)
|
||||
}
|
||||
|
||||
override fun queryPointsByLineIds(lines: MutableList<Long>): Observable<MutableList<PointResponse>>? {
|
||||
val request = QueryPointRequest(LoginStatusManager.getOchBizInfo()?.businessType?:0,lines)
|
||||
return weakNetInterface?.queryPointsByLinesId(context,request)
|
||||
}
|
||||
|
||||
override fun reportCabinEvent(
|
||||
context: Context?,
|
||||
data: ShuttleEventRequest?,
|
||||
|
||||
@@ -4,9 +4,11 @@ import android.content.Context;
|
||||
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback;
|
||||
import com.mogo.och.data.bean.BusRoutesResult;
|
||||
import com.mogo.och.weaknet.bean.request.QueryPointRequest;
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest;
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse;
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse;
|
||||
import com.mogo.och.weaknet.repository.db.bean.LineDataBean;
|
||||
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean;
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest;
|
||||
@@ -60,4 +62,8 @@ public interface NetInterface {
|
||||
default void queryCarExecutableTaskList(Context context , OchCommonServiceCallback<CarExecutableTaskResponse> callback){}
|
||||
|
||||
default void reportCabinEvent(Context context , ShuttleEventRequest data , OchCommonServiceCallback<BaseData> callback){}
|
||||
|
||||
default Observable<List<PointResponse>> queryPointsByLinesId(Context context, QueryPointRequest data){
|
||||
return Observable.just(new ArrayList<>());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,11 @@ package com.mogo.och.weaknet.repository.net.project.saas.bus;
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest;
|
||||
import com.mogo.och.weaknet.bean.request.QueryPointRequest;
|
||||
import com.mogo.och.weaknet.bean.response.BusRoutesResponse;
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse;
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest;
|
||||
import com.mogo.och.weaknet.bean.response.PointsResponse;
|
||||
import com.mogo.och.weaknet.bean.response.WriteOffCountResponse;
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest;
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean;
|
||||
@@ -65,5 +67,9 @@ public interface ISaasBusApiService {
|
||||
@POST( "/och-vehicle/cabin/reportCabinEvent" )
|
||||
Observable<BaseData> reportCabinEvent(@Header ("appId") String appId, @Header("ticket") String ticket, @Body ShuttleEventRequest request);
|
||||
|
||||
@Headers( {"Content-Type:application/json;charset=UTF-8"} )
|
||||
@POST( "/och-contrail/contrail/queryCabinContrailByLines" )
|
||||
Observable<PointsResponse> queryCabinContrailByLines(@Header ("appId") String appId, @Header("ticket") String ticket, @Body QueryPointRequest request);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,10 @@ import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.network.interceptor.transformIoTry
|
||||
import com.mogo.och.data.bean.BusRoutesResult
|
||||
import com.mogo.och.weaknet.bean.request.QueryPointRequest
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse
|
||||
import com.mogo.och.weaknet.repository.net.NetInterface
|
||||
import io.reactivex.Observable
|
||||
|
||||
@@ -20,11 +22,12 @@ import io.reactivex.Observable
|
||||
* @author: wangmingjun
|
||||
* @date: 2021/10/20
|
||||
*/
|
||||
object SaasBusServiceManager: NetInterface {
|
||||
object SaasBusServiceManager : NetInterface {
|
||||
|
||||
private val mService: ISaasBusApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
|
||||
ISaasBusApiService::class.java
|
||||
)
|
||||
private val mService: ISaasBusApiService =
|
||||
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
|
||||
ISaasBusApiService::class.java
|
||||
)
|
||||
|
||||
|
||||
/**
|
||||
@@ -34,14 +37,14 @@ object SaasBusServiceManager: NetInterface {
|
||||
*/
|
||||
override fun queryBusRoutes(): Observable<BusRoutesResult?>? {
|
||||
//获取当前高德坐标
|
||||
return mService.queryBusRoutes(
|
||||
return mService.queryBusRoutes(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
SharedPrefsMgr.getInstance().getSn()
|
||||
) .transformIoTry()
|
||||
.flatMap(OchCommonNet("queryBusRoutes",false))
|
||||
).transformIoTry()
|
||||
.flatMap(OchCommonNet("queryBusRoutes", false))
|
||||
.flatMap {
|
||||
Observable.just(it.data?:BusRoutesResult())
|
||||
Observable.just(it.data ?: BusRoutesResult())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,5 +80,21 @@ object SaasBusServiceManager: NetInterface {
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "reportCabinEvent"))
|
||||
}
|
||||
|
||||
override fun queryPointsByLinesId(
|
||||
context: Context?,
|
||||
data: QueryPointRequest?
|
||||
): Observable<MutableList<PointResponse>>? {
|
||||
return mService.queryCabinContrailByLines(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
data,
|
||||
)
|
||||
.transformIoTry()
|
||||
.flatMap(OchCommonNet("queryPointsByLinesId", false))
|
||||
.flatMap {
|
||||
Observable.just(it.data ?: mutableListOf())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,9 +2,11 @@ package com.mogo.och.weaknet.repository.net.project.saas.scheduled;
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest;
|
||||
import com.mogo.och.weaknet.bean.request.QueryPointRequest;
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest;
|
||||
import com.mogo.och.weaknet.bean.response.BusRoutesResponse;
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse;
|
||||
import com.mogo.och.weaknet.bean.response.PointsResponse;
|
||||
import com.mogo.och.weaknet.bean.response.WriteOffCountResponse;
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest;
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean;
|
||||
@@ -65,5 +67,9 @@ public interface ISaasScheduledApiService {
|
||||
@POST( "/och-vehicle/cabin/reportCabinEvent" )
|
||||
Observable<BaseData> reportCabinEvent(@Header ("appId") String appId, @Header("ticket") String ticket, @Body ShuttleEventRequest request);
|
||||
|
||||
@Headers( {"Content-Type:application/json;charset=UTF-8"} )
|
||||
@POST( "/och-contrail/contrail/queryCabinContrailByLines" )
|
||||
Observable<PointsResponse> queryCabinContrailByLines(@Header ("appId") String appId, @Header("ticket") String ticket, @Body QueryPointRequest request);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,8 +13,10 @@ import com.mogo.och.common.module.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.network.interceptor.transformIoTry
|
||||
import com.mogo.och.data.bean.BusRoutesResult
|
||||
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest
|
||||
import com.mogo.och.weaknet.bean.request.QueryPointRequest
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse
|
||||
import com.mogo.och.weaknet.repository.net.NetInterface
|
||||
import io.reactivex.Observable
|
||||
|
||||
@@ -77,5 +79,21 @@ object SaasScheduledServiceManager: NetInterface {
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "reportCabinEvent"))
|
||||
}
|
||||
|
||||
override fun queryPointsByLinesId(
|
||||
context: Context?,
|
||||
data: QueryPointRequest?
|
||||
): Observable<MutableList<PointResponse>>? {
|
||||
return mService.queryCabinContrailByLines(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
data,
|
||||
)
|
||||
.transformIoTry()
|
||||
.flatMap(OchCommonNet("queryPointsByLinesId",false))
|
||||
.flatMap {
|
||||
Observable.just(it.data?: mutableListOf())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,9 +2,11 @@ package com.mogo.och.weaknet.repository.net.project.saas.shuttle;
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest;
|
||||
import com.mogo.och.weaknet.bean.request.QueryPointRequest;
|
||||
import com.mogo.och.weaknet.bean.response.BusRoutesResponse;
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse;
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest;
|
||||
import com.mogo.och.weaknet.bean.response.PointsResponse;
|
||||
import com.mogo.och.weaknet.bean.response.WriteOffCountResponse;
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest;
|
||||
import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean;
|
||||
@@ -65,5 +67,9 @@ public interface ISaasShuttleApiService {
|
||||
@POST( "/och-vehicle/cabin/reportCabinEvent" )
|
||||
Observable<BaseData> reportCabinEvent(@Header ("appId") String appId, @Header("ticket") String ticket, @Body ShuttleEventRequest request);
|
||||
|
||||
@Headers( {"Content-Type:application/json;charset=UTF-8"} )
|
||||
@POST( "/och-contrail/contrail/queryCabinContrailByLines" )
|
||||
Observable<PointsResponse> queryCabinContrailByLines(@Header ("appId") String appId, @Header("ticket") String ticket, @Body QueryPointRequest request);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,8 +13,10 @@ import com.mogo.och.common.module.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.network.interceptor.transformIoTry
|
||||
import com.mogo.och.data.bean.BusRoutesResult
|
||||
import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest
|
||||
import com.mogo.och.weaknet.bean.request.QueryPointRequest
|
||||
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
|
||||
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
|
||||
import com.mogo.och.weaknet.bean.response.PointResponse
|
||||
import com.mogo.och.weaknet.repository.net.NetInterface
|
||||
import io.reactivex.Observable
|
||||
|
||||
@@ -77,5 +79,21 @@ object SaasShuttleServiceManager: NetInterface {
|
||||
.subscribe(OchCommonSubscribeImpl(context, callback, "reportCabinEvent"))
|
||||
}
|
||||
|
||||
override fun queryPointsByLinesId(
|
||||
context: Context?,
|
||||
data: QueryPointRequest?
|
||||
): Observable<MutableList<PointResponse>>? {
|
||||
return mService.queryCabinContrailByLines(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
data,
|
||||
)
|
||||
.transformIoTry()
|
||||
.flatMap(OchCommonNet("queryPointsByLinesId",false))
|
||||
.flatMap {
|
||||
Observable.just(it.data?: mutableListOf())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.mogo.och.weaknet.ui.bizswitch
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
@@ -20,16 +21,16 @@ import kotlinx.android.synthetic.main.shuttle_weak_switch_biz.view.swtichLine
|
||||
import kotlinx.android.synthetic.main.shuttle_weak_switch_biz.view.swtichTask
|
||||
import kotlinx.android.synthetic.main.shuttle_weak_switch_biz.view.taskRunning
|
||||
|
||||
class SwitchBizView: WindowRelativeLayout, SwtichBizModel.SwtichLineViewCallback {
|
||||
class SwitchBizView: ConstraintLayout, SwtichBizModel.SwtichLineViewCallback {
|
||||
|
||||
|
||||
constructor(context: Context?) : super(context)
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context?, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.mogo.och.weaknet.ui.modeswitch
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.commons.module.status.IMogoStatusChangedListener
|
||||
import com.mogo.commons.module.status.MogoStatusManager
|
||||
import com.mogo.commons.module.status.StatusDescriptor
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
|
||||
/**
|
||||
* @author XuXinChao
|
||||
* @description BadCase录包管理页面
|
||||
* @since: 2022/12/15
|
||||
*/
|
||||
class SwtichBizeModel : ViewModel() {
|
||||
|
||||
private val TAG = SwtichBizeModel::class.java.simpleName
|
||||
|
||||
private var viewCallback: SwtichLineViewCallback? = null
|
||||
|
||||
|
||||
override fun onCleared() {
|
||||
|
||||
}
|
||||
|
||||
fun setDistanceCallback(viewCallback: SwtichLineViewCallback) {
|
||||
this.viewCallback = viewCallback
|
||||
this.viewCallback?.showTaskView()
|
||||
MogoStatusManager.getInstance()
|
||||
.registerStatusChangedListener(
|
||||
TAG, StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE, moFanglistener
|
||||
)
|
||||
}
|
||||
|
||||
private var moFanglistener: IMogoStatusChangedListener? = object : IMogoStatusChangedListener {
|
||||
override fun onStatusChanged(descriptor: StatusDescriptor?, isTrue: Boolean) {
|
||||
if (StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE == descriptor) {
|
||||
UiThreadHandler.post {
|
||||
if (isTrue) {// 展示算路
|
||||
viewCallback?.showRoutingView()
|
||||
} else {// 展示任务
|
||||
viewCallback?.showTaskView()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
interface SwtichLineViewCallback {
|
||||
fun showTaskView()
|
||||
fun showRoutingView()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.mogo.och.weaknet.ui.modeswitch
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import com.mogo.och.common.module.biz.routing.RoutingManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.wigets.WindowRelativeLayout
|
||||
import com.mogo.och.shuttle.weaknet.R
|
||||
import kotlinx.android.synthetic.main.shuttle_weak_biz.view.routingSwitchView
|
||||
import kotlinx.android.synthetic.main.shuttle_weak_biz.view.switchOchBiz
|
||||
|
||||
class TopSwitchBizView: WindowRelativeLayout, SwtichBizeModel.SwtichLineViewCallback {
|
||||
|
||||
|
||||
constructor(context: Context?) : super(context)
|
||||
|
||||
constructor(context: Context?, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
|
||||
companion object {
|
||||
const val TAG = "SwitchBizView"
|
||||
}
|
||||
|
||||
private var viewModel: SwtichBizeModel?=null
|
||||
|
||||
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.shuttle_weak_biz, this, true)
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
viewModel = findViewTreeViewModelStoreOwner()?.let {
|
||||
ViewModelProvider(it).get(SwtichBizeModel::class.java)
|
||||
}
|
||||
viewModel?.setDistanceCallback(this)
|
||||
}
|
||||
|
||||
override fun showTaskView() {
|
||||
switchOchBiz.visibility = VISIBLE
|
||||
routingSwitchView.visibility = GONE
|
||||
RoutingManager.getRoutingView()?.let {
|
||||
routingSwitchView.removeView(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun showRoutingView() {
|
||||
switchOchBiz.visibility = GONE
|
||||
routingSwitchView.visibility = VISIBLE
|
||||
RoutingManager.getRoutingView()?.let {
|
||||
try {
|
||||
if (it.parent!=null) {
|
||||
(it.parent as ViewGroup).removeAllViews()
|
||||
}
|
||||
routingSwitchView.addView(it)
|
||||
}catch (e:Exception){
|
||||
OchChainLogManager.writeChainLogError("添加routingview错误:TopSwitchBizView",e.message?:"")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
RoutingManager.getRoutingView()?.let {
|
||||
routingSwitchView.removeView(it)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.weaknet.callback.IBusLinesCallback
|
||||
import com.mogo.och.weaknet.model.LineModel
|
||||
import com.mogo.och.weaknet.model.LineModel.EXECUTABLECHANGETIME
|
||||
import com.mogo.och.weaknet.model.SynchDataModel.EXECUTABLECHANGETIME
|
||||
import com.mogo.och.weaknet.repository.RepositoryManager
|
||||
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
|
||||
import io.reactivex.Observer
|
||||
|
||||
@@ -80,6 +80,7 @@ class TaskRunningView : ConstraintLayout, TaskRunningModel.SwtichLineViewCallbac
|
||||
viewModel?.arriveStation()
|
||||
}
|
||||
actv_complete_task.onClick {
|
||||
CallerLogger.d(TAG,"启动自驾参数:${LineManager.initAutopilotControlParameters()}")
|
||||
val builder = CommonDialogStatus.Builder()
|
||||
val closeLineConfirmDialog = builder
|
||||
.title(ResourcesUtils.getString(R.string.bus_dialog_title))
|
||||
|
||||
@@ -88,7 +88,7 @@ object BusTrajectoryManager : ITrajectoryListListener {
|
||||
"下发轨迹报错:没有轨迹或线路信息 contraiInfo:${LineManager.contraiInfo} lineInfos:${LineManager.lineInfos}"
|
||||
)
|
||||
} else {
|
||||
mAutopilotControlParameters = LineManager.initAutopilotControlParameters()
|
||||
mAutopilotControlParameters = LineManager.initAutopilotControlParametersFromContrai()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="@dimen/dp_962"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_bg"
|
||||
android:src="@drawable/bus_biz_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_167"
|
||||
android:scaleType="fitXY"
|
||||
android:layout_width="@dimen/dp_962"
|
||||
android:layout_height="@dimen/dp_0"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:src="@drawable/bus_biz_bg_header"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:layout_marginEnd="@dimen/dp_42"
|
||||
android:layout_width="@dimen/dp_856"
|
||||
android:layout_height="@dimen/dp_100"/>
|
||||
|
||||
|
||||
<com.mogo.och.weaknet.ui.bizswitch.SwitchBizView
|
||||
android:id="@+id/switchOchBiz"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
|
||||
android:layout_marginBottom="@dimen/dp_60"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="@dimen/dp_926"
|
||||
android:layout_height="0dp"/>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/routingSwitchView"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_60"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="@dimen/dp_880"
|
||||
android:layout_height="0dp"/>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -1,37 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="@dimen/dp_962"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="@dimen/dp_844"
|
||||
android:layout_height="@dimen/dp_967"
|
||||
android:background="@color/light_prompt_red"
|
||||
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_bg"
|
||||
android:src="@drawable/bus_biz_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_167"
|
||||
android:scaleType="fitXY"
|
||||
android:layout_width="@dimen/dp_962"
|
||||
android:layout_height="@dimen/dp_0"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:src="@drawable/bus_biz_bg_header"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:layout_marginEnd="@dimen/dp_42"
|
||||
android:layout_width="@dimen/dp_856"
|
||||
android:layout_height="@dimen/dp_100"/>
|
||||
|
||||
<com.mogo.och.common.module.wigets.loading.LoadingViewBig
|
||||
android:id="@+id/loading_biz"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
|
||||
android:layout_marginBottom="@dimen/dp_60"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -40,37 +21,33 @@
|
||||
<com.mogo.och.weaknet.ui.switchline.SwitchLineView
|
||||
android:id="@+id/swtichLine"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:visibility="gone"
|
||||
tools:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
|
||||
android:layout_marginBottom="@dimen/dp_60"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"/>
|
||||
|
||||
<com.mogo.och.weaknet.ui.switchtask.SwitchTaskView
|
||||
android:id="@+id/swtichTask"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
|
||||
android:layout_marginBottom="@dimen/dp_60"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"/>
|
||||
|
||||
<com.mogo.och.weaknet.ui.taskrunning.TaskRunningView
|
||||
android:id="@+id/taskRunning"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aciv_bg"
|
||||
android:layout_marginBottom="@dimen/dp_60"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</merge>
|
||||
@@ -97,44 +97,44 @@ class ExampleUnitTest {
|
||||
@Test
|
||||
fun testData() {
|
||||
|
||||
val waitUpdateEvent= mutableListOf<EventDataBean>()
|
||||
val waitUpdateWriteOffEvent = mutableListOf<WriteOffDataBean>()
|
||||
|
||||
waitUpdateEvent.add(EventDataBean(businessTime = 1))
|
||||
waitUpdateEvent.add(EventDataBean(businessTime = 3))
|
||||
waitUpdateEvent.add(EventDataBean(businessTime = 5))
|
||||
waitUpdateEvent.add(EventDataBean(businessTime = 6))
|
||||
waitUpdateEvent.add(EventDataBean(businessTime = 7))
|
||||
waitUpdateEvent.add(EventDataBean(businessTime = 9))
|
||||
waitUpdateEvent.add(EventDataBean(businessTime = 11))
|
||||
|
||||
waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 2))
|
||||
waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 4))
|
||||
waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 5))
|
||||
waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 8))
|
||||
waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 10))
|
||||
waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 12))
|
||||
waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 14))
|
||||
|
||||
|
||||
val eventList4Request = mutableListOf<Event>()
|
||||
var tempEvent: Event?=null
|
||||
waitUpdateEvent?.forEach {
|
||||
tempEvent = Event(it.eventType,
|
||||
EventData(it.taskId,it.businessTime,it.writeVersion,it.siteId,it.seq,it.driverId,it.msgId)
|
||||
)
|
||||
eventList4Request.add(tempEvent!!)
|
||||
}
|
||||
|
||||
waitUpdateWriteOffEvent?.forEach {
|
||||
tempEvent = Event("WriteOff",
|
||||
WriteOffEventData(it.msgId,it.taskId,it.siteId,it.driverId,it.orderNo,it.businessTime,it.businessTime)
|
||||
)
|
||||
eventList4Request.add(tempEvent!!)
|
||||
}
|
||||
eventList4Request.sortBy { it.eventData.businessTime }
|
||||
val md5Hex = DigestUtils.md5Hex(eventList4Request.toString())
|
||||
println(eventList4Request)
|
||||
// val waitUpdateEvent= mutableListOf<EventDataBean>()
|
||||
// val waitUpdateWriteOffEvent = mutableListOf<WriteOffDataBean>()
|
||||
//
|
||||
// waitUpdateEvent.add(EventDataBean(businessTime = 1))
|
||||
// waitUpdateEvent.add(EventDataBean(businessTime = 3))
|
||||
// waitUpdateEvent.add(EventDataBean(businessTime = 5))
|
||||
// waitUpdateEvent.add(EventDataBean(businessTime = 6))
|
||||
// waitUpdateEvent.add(EventDataBean(businessTime = 7))
|
||||
// waitUpdateEvent.add(EventDataBean(businessTime = 9))
|
||||
// waitUpdateEvent.add(EventDataBean(businessTime = 11))
|
||||
//
|
||||
// waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 2))
|
||||
// waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 4))
|
||||
// waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 5))
|
||||
// waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 8))
|
||||
// waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 10))
|
||||
// waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 12))
|
||||
// waitUpdateWriteOffEvent.add(WriteOffDataBean(businessTime = 14))
|
||||
//
|
||||
//
|
||||
// val eventList4Request = mutableListOf<Event>()
|
||||
// var tempEvent: Event?=null
|
||||
// waitUpdateEvent?.forEach {
|
||||
// tempEvent = Event(it.eventType,
|
||||
// EventData(it.taskId,it.businessTime,it.writeVersion,it.siteId,it.seq,it.driverId,it.msgId)
|
||||
// )
|
||||
// eventList4Request.add(tempEvent!!)
|
||||
// }
|
||||
//
|
||||
// waitUpdateWriteOffEvent?.forEach {
|
||||
// tempEvent = Event("WriteOff",
|
||||
// WriteOffEventData(it.msgId,it.taskId,it.siteId,it.driverId,it.orderNo,it.businessTime,it.businessTime)
|
||||
// )
|
||||
// eventList4Request.add(tempEvent!!)
|
||||
// }
|
||||
// eventList4Request.sortBy { it.eventData.businessTime }
|
||||
// val md5Hex = DigestUtils.md5Hex(eventList4Request.toString())
|
||||
// println(eventList4Request)
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user