[8.0.0]
[fea] [上报轨迹到nde]
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="@dimen/dp_200"
|
||||
android:layout_width="@dimen/dp_300"
|
||||
android:layout_height="@dimen/dp_680"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/biz_login_error_info">
|
||||
|
||||
@@ -86,5 +86,11 @@ class BridgeProvider : BridgeService, CallerBase<BridgeListener>() {
|
||||
}
|
||||
}
|
||||
|
||||
fun invokeTrajectoryPointAndDistance(trajectoryList: MutableList<MogoLocation>,distance:Double){
|
||||
M_LISTENERS.forEach {
|
||||
it.value.onTrajectoryPointsAndDistanceListener(trajectoryList, distance)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -69,5 +69,8 @@ object BridgeServiceManager {
|
||||
fun invokeTrajectoryDistance(distance:Double){
|
||||
this.bridgeService?.invokeTrajectoryDistance(distance)
|
||||
}
|
||||
fun invokeTrajectoryPointsAndDistance(trajectoryList: MutableList<MogoLocation>,distance:Double){
|
||||
this.bridgeService?.invokeTrajectoryPointAndDistance(trajectoryList, distance)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -94,6 +94,7 @@ object TrajectoryManager : CallerBase<ITrajectoryListListener>(), IMoGoPlanningR
|
||||
}
|
||||
BridgeServiceManager.invokeTrajectoryPoints(mRoutePoints)
|
||||
BridgeServiceManager.invokeTrajectoryDistance(maxDistanceAllPoint)
|
||||
BridgeServiceManager.invokeTrajectoryPointsAndDistance(mRoutePoints,maxDistanceAllPoint)
|
||||
}
|
||||
|
||||
override fun doSomeAfterAddListener(tag: String, listener: ITrajectoryListListener) {
|
||||
@@ -110,6 +111,7 @@ object TrajectoryManager : CallerBase<ITrajectoryListListener>(), IMoGoPlanningR
|
||||
fun doSomeAfterBridgeListener(){
|
||||
BridgeServiceManager.invokeTrajectoryPoints(mRoutePoints)
|
||||
BridgeServiceManager.invokeTrajectoryDistance(maxDistanceAllPoint)
|
||||
BridgeServiceManager.invokeTrajectoryPointsAndDistance(mRoutePoints,maxDistanceAllPoint)
|
||||
}
|
||||
|
||||
private fun addDownLoadSuccessLine(lineId: Long) {
|
||||
|
||||
@@ -13,4 +13,6 @@ interface BridgeListener {
|
||||
fun onTrajectoryPointsListener(trajectoryList: MutableList<MogoLocation>){}
|
||||
|
||||
fun onTrajectoryDistanceListener(distance: Double){}
|
||||
|
||||
fun onTrajectoryPointsAndDistanceListener(trajectoryList: MutableList<MogoLocation>,distance: Double){}
|
||||
}
|
||||
@@ -25,6 +25,11 @@ class OchCommonConst {
|
||||
return FunctionBuildConfig.urlJson.eagleMisUrl
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getAiUrl():String{
|
||||
return FunctionBuildConfig.urlJson.ndeUrl
|
||||
}
|
||||
|
||||
// token 失效 重新获取token
|
||||
const val WAIT_TAKEN = 100046
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mogo.och.common.module
|
||||
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.mogo.eagle.core.network.utils.digest.DigestUtils
|
||||
import com.mogo.eagle.core.utilcode.util.CoordinateTransform
|
||||
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
@@ -29,13 +30,19 @@ class ExampleUnitTest {
|
||||
}
|
||||
@Test
|
||||
fun testData() {
|
||||
for(time in 0 until 7200){
|
||||
val second2Time = DateTimeUtil.second2Time(time.toLong())
|
||||
val mogoReqTime = System.currentTimeMillis().toString()
|
||||
val encodedPath = "/vehicleLocation/location/navigationLocationPoints".toUpperCase()
|
||||
|
||||
val listSplit = second2Time.split(":")
|
||||
val mogoAuthKey = DigestUtils.md5Hex(encodedPath+ mogoReqTime)
|
||||
println("mogoReqTime:${mogoReqTime}----mogoAuthKey:${mogoAuthKey}")
|
||||
|
||||
println("${listSplit[0]}时:${listSplit[1]}分")
|
||||
}
|
||||
// for(time in 0 until 7200){
|
||||
// val second2Time = DateTimeUtil.second2Time(time.toLong())
|
||||
//
|
||||
// val listSplit = second2Time.split(":")
|
||||
//
|
||||
// println("${listSplit[0]}时:${listSplit[1]}分")
|
||||
// }
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.mogo.och.unmanned.passenger.bean.ai
|
||||
|
||||
data class AiTrajectoryReqBean(
|
||||
val points: List<LatLonBody>, val sn: String, val ending:String = "0"
|
||||
)
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.mogo.och.unmanned.passenger.bean.ai
|
||||
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
|
||||
/**
|
||||
* Create by wyy
|
||||
* TIME : 2024/6/25 \ 15:21
|
||||
* Description:
|
||||
*/
|
||||
data class LatLonBody(val lat: Double, val lon: Double){
|
||||
companion object{
|
||||
fun toLatLonBody(trajectoryList: MutableList<MogoLocation>): MutableList<LatLonBody> {
|
||||
val result = mutableListOf<LatLonBody>()
|
||||
trajectoryList.forEach {
|
||||
result.add(LatLonBody(it.latitude,it.longitude))
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.mogo.och.unmanned.passenger.network.ai
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.unmanned.passenger.bean.ai.AiTrajectoryReqBean
|
||||
import io.reactivex.Observable
|
||||
import retrofit2.http.Body
|
||||
import retrofit2.http.Header
|
||||
import retrofit2.http.Headers
|
||||
import retrofit2.http.POST
|
||||
|
||||
/**
|
||||
* Created by pangfan on 2021/8/19
|
||||
*
|
||||
* 网约车-出租车接口定义
|
||||
*/
|
||||
internal interface AiServiceApi {
|
||||
@Headers("Content-type:application/json;charset=UTF-8")
|
||||
@POST("/vehicleLocation/location/navigationLocationPoints")
|
||||
fun navigationLocationPoints(
|
||||
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
@Header("ticket") ticket: String = SharedPrefsMgr.getInstance().token,
|
||||
@Header("MogoReqTime") mogoReqTime:String,
|
||||
@Header("MogoAuthKey") MogoAuthKey:String,
|
||||
@Body data: AiTrajectoryReqBean?
|
||||
): Observable<BaseData>
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.mogo.och.unmanned.passenger.network.ai
|
||||
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||
import com.mogo.eagle.core.network.utils.digest.DigestUtils
|
||||
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.unmanned.passenger.bean.ai.AiTrajectoryReqBean
|
||||
import com.mogo.och.unmanned.passenger.bean.ai.LatLonBody
|
||||
import com.mogo.och.unmanned.passenger.network.TaxiPassengerServiceManager
|
||||
|
||||
/**
|
||||
* Created by pangfan on 2021/8/19
|
||||
*/
|
||||
object AiServiceManager {
|
||||
|
||||
private val mOCHTaxiServiceApi: AiServiceApi =
|
||||
MoGoRetrofitFactory.getInstance(OchCommonConst.getAiUrl())
|
||||
.create(AiServiceApi::class.java)
|
||||
|
||||
private const val TAG = "TaxiPassengerServiceManager"
|
||||
|
||||
/**
|
||||
* 根据订单号查询订单, 主要是拿完成或者被乘客取消的订单状态
|
||||
*/
|
||||
@JvmStatic
|
||||
fun uploadTrajectory(
|
||||
ending:String = "0",
|
||||
points: List<LatLonBody>,
|
||||
callback: OchCommonServiceCallback<BaseData>?
|
||||
) {
|
||||
|
||||
val mogoReqTime = System.currentTimeMillis().toString()
|
||||
val encodedPath = "/vehicleLocation/location/navigationLocationPoints".toUpperCase()
|
||||
|
||||
val mogoAuthKey = DigestUtils.md5Hex(encodedPath+ mogoReqTime)
|
||||
|
||||
mOCHTaxiServiceApi.navigationLocationPoints(
|
||||
data = AiTrajectoryReqBean(points, SharedPrefsMgr.getInstance().sn+"_PAD", ending),
|
||||
mogoReqTime = mogoReqTime,
|
||||
MogoAuthKey = mogoAuthKey
|
||||
).transformTry()
|
||||
.subscribe(OchCommonSubscribeImpl(TaxiPassengerServiceManager.context, callback, "navigationLocationPoints"))
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.mogo.och.unmanned.passenger.ui.aiview
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.data.ai.V2XRepository
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
|
||||
@@ -16,8 +17,12 @@ import com.mogo.mgintelligent.speech.iflytek.WakeUpManager
|
||||
import com.mogo.och.bridge.autopilot.location.OchLocationManager
|
||||
import com.mogo.och.common.module.biz.birdge.BridgeListener
|
||||
import com.mogo.och.common.module.biz.birdge.BridgeManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.data.taxi.BaseOrderBean
|
||||
import com.mogo.och.data.taxi.TaxiOrderStatusEnum
|
||||
import com.mogo.och.unmanned.passenger.bean.ai.LatLonBody
|
||||
import com.mogo.och.unmanned.passenger.network.ai.AiServiceManager
|
||||
import com.mogo.och.unmanned.taxi.utils.order.OrderListener
|
||||
import com.mogo.och.unmanned.taxi.utils.order.OrderModel
|
||||
import com.mogo.service.v2n.bean.MGLlmQueryBean
|
||||
@@ -74,6 +79,9 @@ class AIViewModel : ViewModel(), AIMessageManager.AIMessageListener, IWakeUpList
|
||||
_messagesFlow.value = msgList.toList()
|
||||
}
|
||||
}
|
||||
if(order==null){
|
||||
clearNdeTra()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -335,8 +343,35 @@ class AIViewModel : ViewModel(), AIMessageManager.AIMessageListener, IWakeUpList
|
||||
|
||||
}
|
||||
|
||||
override fun onTrajectoryPointsListener(trajectoryList: MutableList<MogoLocation>) {
|
||||
override fun onTrajectoryPointsAndDistanceListener(
|
||||
trajectoryList: MutableList<MogoLocation>,
|
||||
distance: Double
|
||||
) {
|
||||
if(trajectoryList.size>2&&distance<40_000){
|
||||
AiServiceManager.uploadTrajectory("0",LatLonBody.toLatLonBody(trajectoryList),object :OchCommonServiceCallback<BaseData>{
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
OchChainLogManager.writeChainLogTrajectory("nde日志","获取到轨迹向nde上报轨迹成功")
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
OchChainLogManager.writeChainLogTrajectory("nde日志","获取到轨迹轨迹上报失败")
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private fun clearNdeTra() {
|
||||
AiServiceManager.uploadTrajectory("1", mutableListOf(),object :OchCommonServiceCallback<BaseData>{
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
OchChainLogManager.writeChainLogTrajectory("nde日志","删除向nde上报轨迹成功")
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
OchChainLogManager.writeChainLogTrajectory("nde日志","删除轨迹轨迹上报失败")
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user