Commit c8d1a739 authored by p x's avatar p x
Browse files

添加模拟数据

parent d0e4e0f9
This diff is collapsed.
{"line":
[
[
125.14257946500526,
43.838850972613784
],
[
125.14257872221566,
43.838851880044864
],
[
125.14238925146908,
43.8390789628863
],
[
125.1422942052776,
43.83919422709003
],
[
125.14204438598463,
43.8394953926954
],
[
125.14204012353633,
43.8395037587309
],
[
125.1420358501836,
43.839515255594826
],
[
125.14203430199653,
43.8395271054114
],
[
125.14203552406234,
43.83953897162878
],
[
125.1420394806985,
43.83955051661564
],
[
125.14204605956249,
43.839561412377044
],
[
125.14205507445587,
43.83957134949696
],
[
125.14206626806443,
43.83958004428222
],
[
125.14208898306244,
43.839591740154475
],
[
125.14235228857866,
43.83970591790077
],
[
125.14263815163811,
43.83983049659493
],
[
125.14293580432056,
43.83996105058049
],
[
125.1429505493302,
43.839967448386304
],
[
125.14296601937112,
43.83997304064295
],
[
125.14298251087494,
43.83997680995209
],
[
125.14299961679251,
43.83997866100733
],
[
125.14301691822614,
43.839978549133136
],
[
125.14303398557422,
43.83997647756237
],
[
125.14305040214371,
43.839972497861645
],
[
125.14306576029794,
43.83996670640929
],
[
125.14307968389234,
43.83995924664393
],
[
125.14309182801652,
43.83995030187058
],
[
125.1431018950957,
43.83994009403707
],
[
125.14310676713771,
43.83993439900782
],
[
125.14348256549769,
43.83948208350916
],
[
125.14355540500749,
43.83939390759524
],
[
125.14366695852446,
43.839259322911346
],
[
125.14369885466584,
43.839220379823104
],
[
125.14374790800576,
43.83916099866528
],
[
125.14377619073592,
43.83912679395584
],
[
125.14380992016922,
43.83908584770111
],
[
125.14396334829817,
43.8388990917878
],
[
125.14398373598257,
43.83887404884853
],
[
125.14398537412318,
43.838871933614946
],
[
125.14398684606766,
43.83886975513546
],
[
125.14398814835043,
43.83886752067868
],
[
125.1439892749917,
43.83886523666397
],
[
125.14399022376688,
43.838862910334974
],
[
125.14399099124259,
43.838860549859525
],
[
125.14399157519419,
43.83885816248126
],
[
125.14399197339719,
43.83885575544384
],
[
125.14399218486795,
43.83885333596591
],
[
125.14399220862293,
43.838850911266164
],
[
125.14399204498397,
43.83884849033671
],
[
125.14399169544949,
43.83884608034627
],
[
125.14399115903593,
43.83884368851351
],
[
125.14399043848277,
43.83884132198219
],
[
125.14398953535283,
43.83883898971945
],
[
125.14398845356223,
43.83883669704562
],
[
125.14398719712364,
43.838834451978734
],
[
125.14398576756767,
43.83883226258668
],
[
125.14398417129249,
43.83883013413989
],
[
125.14398241231078,
43.83882807465632
],
[
125.14398049702066,
43.83882608940641
],
[
125.14397843188468,
43.83882418545896
],
[
125.14397622085113,
43.83882236903355
],
[
125.1439738740412,
43.83882064532569
],
[
125.143971396612,
43.838819019630726
],
[
125.14396879744382,
43.838817497169146
],
[
125.14396608417576,
43.83881608318641
],
[
125.14396326438265,
43.838814781129486
],
[
125.14394522002516,
43.83880702652331
],
[
125.14390819644473,
43.838790450860984
],
[
125.1439094857008,
43.838788893363365
],
[
125.14390021756205,
43.838784667801406
],
[
125.14389491479716,
43.83878311243691
],
[
125.14388932745982,
43.83878221159517
],
[
125.14388361170772,
43.83878199093022
],
[
125.14387792047647,
43.83878245546416
],
[
125.14387241229552,
43.838783593009396
],
[
125.14386723509038,
43.838785372694616
],
[
125.14386253362888,
43.83878774481509
],
[
125.14385843230747,
43.83879064567819
],
[
125.14385504749745,
43.838793995555214
],
[
125.14384228398526,
43.83880911708494
],
[
125.14383557824696,
43.83881722023156
],
[
125.1438279071096,
43.838824374547215
],
[
125.14381769259843,
43.83883087183167
],
[
125.14380618753825,
43.83883611457202
],
[
125.14379368275466,
43.838839970037114
],
[
125.14378049763141,
43.83884234001618
],
[
125.1437669629292,
43.83884316656373
],
[
125.14375342307474,
43.83884242655438
],
[
125.14374022152589,
43.83884013917613
],
[
125.14372769071466,
43.83883636253315
],
[
125.14371614829183,
43.838831192821466
],
[
125.14342925781992,
43.83870671502457
]
]
}
\ No newline at end of file
This diff is collapsed.
package com.sd.cavphmi.bean package com.sd.cavphmi.bean
/**全局路径发生切换***/ /**全局路径发生切换***/
data class LinePlaningBean( data class AllLinePlaningBean(
val objectData: List<LinePlaning>, val objectData: List<LinePlaning>,
val wsTime: Long val wsTime: Long
) )
......
package com.sd.cavphmi.bean package com.sd.cavphmi.bean
/***联网车辆状态数据 /***联网车辆状态数据
* {"vehicleStats":{"total":0,"avp":0},"vehicleStatusList":[],"wsTime":1750138623719}
* {"vehicleStats":{"total":1,"avp":1},"vehicleStatusList":[],"wsTime":1750301590009} * {"vehicleStats":{"total":1,"avp":1},"vehicleStatusList":[],"wsTime":1750301590009}
* **/ * **/
data class VehicleStats( data class VehicleStats(
......
package com.sd.cavphmi.bean package com.sd.cavphmi.bean
object WebSetBean { object WebSetBean {
/* "/topic/vehicle"to "/topic/vehicle/1556919708184276993", */
//目前只有车辆和感知
var subDic = mapOf( var subDic = mapOf(
"/topic/vehicle" to "/avp/api/VL961/vehicle/1694264612474306561",//车辆位姿数据 "/topic/vehicle" to "/avp/api/VL961/vehicle/1694264612474306561",//车辆位姿数据
"/topic/dataMerge" to "/avp/api/VL961/dataMerge",//感知目标物 "/topic/dataMerge" to "/avp/api/VL961/dataMerge",//感知目标物
...@@ -17,19 +16,19 @@ object WebSetBean { ...@@ -17,19 +16,19 @@ object WebSetBean {
"/topic/rsiEvent" to "/avp/api/VL961/rsiEvent",// rsi事件 "/topic/rsiEvent" to "/avp/api/VL961/rsiEvent",// rsi事件
"/topic/parkingLockStatusChange" to "/topic/parkingLockStatusChange",// 地锁 "/topic/parkingLockStatusChange" to "/topic/parkingLockStatusChange",// 地锁
) )
//socket 回调
var dic = mapOf( var dic = mapOf(
5231 to "/topic/vehicle", "/topic/vehicle" to 5231,
5232 to "/topic/dataMerge", "/topic/dataMerge" to 5232,
5233 to "topic/signa", "topic/signa" to 5233,
5234 to "/topic/v2xStart", "/topic/v2xStart" to 5234,
5235 to "/topic/v2xEnd", "/topic/v2xEnd" to 5235,
5236 to "/topic/vehicleStatus", "/topic/vehicleStatus" to 5236,
5237 to "/topic/timeDelay", "/topic/timeDelay" to 5237,
1 to "/topic/point", "/topic/point" to 1,
52310 to "/topic/linePlaning", "/topic/linePlaning" to 52310,
52311 to "/topic/rsiEvent", "/topic/rsiEvent" to 52311,
52312 to "/topic/partLine", "/topic/partLine" to 52312,
) )
......
...@@ -9,9 +9,10 @@ import com.google.gson.Gson ...@@ -9,9 +9,10 @@ import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import com.sd.cavphmi.base.MyBaseViewModel import com.sd.cavphmi.base.MyBaseViewModel
import com.sd.cavphmi.bean.CarVehicle import com.sd.cavphmi.bean.CarVehicle
import com.sd.cavphmi.bean.LinePlaningBean import com.sd.cavphmi.bean.AllLinePlaningBean
import com.sd.cavphmi.bean.OrderBean import com.sd.cavphmi.bean.OrderBean
import com.sd.cavphmi.bean.ParkBean import com.sd.cavphmi.bean.ParkBean
import com.sd.cavphmi.bean.ParkLinePlan
import com.sd.cavphmi.bean.PartLineBean import com.sd.cavphmi.bean.PartLineBean
import com.sd.cavphmi.bean.PerTarget import com.sd.cavphmi.bean.PerTarget
import com.sd.cavphmi.bean.ReqBean import com.sd.cavphmi.bean.ReqBean
...@@ -35,7 +36,6 @@ import kotlinx.coroutines.launch ...@@ -35,7 +36,6 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.java_websocket.handshake.ServerHandshake import org.java_websocket.handshake.ServerHandshake
import protocol.Response import protocol.Response
import java.lang.reflect.Type
import java.net.URI import java.net.URI
import java.util.Timer import java.util.Timer
import java.util.TimerTask import java.util.TimerTask
...@@ -68,6 +68,12 @@ class MainVm @Inject constructor( ...@@ -68,6 +68,12 @@ class MainVm @Inject constructor(
//感知目标物 //感知目标物
var targetPre = MutableLiveData<PerTarget>() var targetPre = MutableLiveData<PerTarget>()
//全局路径
var allLine = MutableLiveData<AllLinePlaningBean>()
//局部路径
var partLine = MutableLiveData<PartLineBean>()
//停车位变更 //停车位变更
var parkBean = MutableLiveData<ParkBean>() var parkBean = MutableLiveData<ParkBean>()
...@@ -164,6 +170,7 @@ class MainVm @Inject constructor( ...@@ -164,6 +170,7 @@ class MainVm @Inject constructor(
var avpStatus = result.data.avpStatus var avpStatus = result.data.avpStatus
// var plateNo = result.data.plateNo // var plateNo = result.data.plateNo
// var plateNo = "吉AC242" // var plateNo = "吉AC242"
avpStatus=3
if (avpStatus == 3) {//泊车 if (avpStatus == 3) {//泊车
startParkingVehicle(vehiclePlate) startParkingVehicle(vehiclePlate)
} else if (avpStatus == 5) {//招车 } else if (avpStatus == 5) {//招车
...@@ -206,6 +213,14 @@ class MainVm @Inject constructor( ...@@ -206,6 +213,14 @@ class MainVm @Inject constructor(
findPathPlanning(plateNo) findPathPlanning(plateNo)
} }
/*** 开始招车,显示路径规划路径*/
private fun startRecruitmentVehicle(vehiclePlate: String) {
// worker不处理路径规划显示的路径
this.needDealPath = true
// 获取规划好的路径
findPathPlanning(vehiclePlate, false)
}
/** /**
* 结束泊车 * 结束泊车
*/ */
...@@ -230,18 +245,10 @@ class MainVm @Inject constructor( ...@@ -230,18 +245,10 @@ class MainVm @Inject constructor(
// console.log('window.leftPath', window.leftPath) // console.log('window.leftPath', window.leftPath)
} }
/*** 开始招车,显示路径规划路径*/
private fun startRecruitmentVehicle(vehiclePlate: String) {
// worker不处理路径规划显示的路径
this.needDealPath = true
// 获取规划好的路径
findPathPlanning(vehiclePlate, false)
}
/** 由招车转为其他状态,移除路径规划路线*/ /** 由招车转为其他状态,移除路径规划路线*/
private fun endRecruitmentVehicle() { private fun endRecruitmentVehicle() {
// worker中不处理路径规划显示的路径 // worker中不处理路径规划显示的路径
this.needDealPath = false; this.needDealPath = false
// //
// // 移除路面上的路线 // // 移除路面上的路线
// this.$refs.basisCesium.removePathPlanLine(); // this.$refs.basisCesium.removePathPlanLine();
...@@ -260,8 +267,13 @@ class MainVm @Inject constructor( ...@@ -260,8 +267,13 @@ class MainVm @Inject constructor(
*/ */
fun findPathPlanning(vehiclePlate: String, ifParking: Boolean = true) { fun findPathPlanning(vehiclePlate: String, ifParking: Boolean = true) {
viewModelScope.launch { viewModelScope.launch {
var result = parseSocketRepo.getLinePlaning(vehiclePlate) val result: MyResult<ParkLinePlan>
if (isMock) {
result = mockVM.getLinePlaningMock(vehiclePlate)
} else {
result = parseSocketRepo.getLinePlaning(vehiclePlate)
FileIoUtils.writeToFile(gson.toJson(result), "http_path.txt") FileIoUtils.writeToFile(gson.toJson(result), "http_path.txt")
}
when (result) { when (result) {
is MyResult.Success -> { is MyResult.Success -> {
var lins = result.data.line var lins = result.data.line
...@@ -278,7 +290,7 @@ class MainVm @Inject constructor( ...@@ -278,7 +290,7 @@ class MainVm @Inject constructor(
} }
else -> { else -> {
println("-----获取路径规划 = ${result}") println("-----获取路径规划失败 = ${result}")
} }
} }
} }
...@@ -446,10 +458,8 @@ class MainVm @Inject constructor( ...@@ -446,10 +458,8 @@ class MainVm @Inject constructor(
viewModelScope.launch { viewModelScope.launch {
println("-----全局路径发生切换 = ${res.data}") println("-----全局路径发生切换 = ${res.data}")
FileIoUtils.writeToFile(res.data, "all_line.txt") FileIoUtils.writeToFile(res.data, "all_line.txt")
var bean = parseSocketRepo.parseDataBean(res.data, LinePlaningBean::class.java) val bean = parseSocketRepo.parseDataBean(res.data, AllLinePlaningBean::class.java)
// parkBean.value = bean allLine.value = bean
// FileIoUtils.writeToFile(gson.toJson(bean), "line_plan.txt")
} }
} }
...@@ -458,19 +468,17 @@ class MainVm @Inject constructor( ...@@ -458,19 +468,17 @@ class MainVm @Inject constructor(
println("-----局部路径 = ${res.data}") println("-----局部路径 = ${res.data}")
FileIoUtils.writeToFile(res.data, "part_line.txt") FileIoUtils.writeToFile(res.data, "part_line.txt")
var bean = parseSocketRepo.parseDataBean(res.data, PartLineBean::class.java) var bean = parseSocketRepo.parseDataBean(res.data, PartLineBean::class.java)
// parkBean.value = bean partLine.value = bean
// FileIoUtils.writeToFile(gson.toJson(bean), "part_line.txt")
} }
} }
override fun onRsiEvent(res: Response.SocketResponse) { override fun onRsiEvent(res: Response.SocketResponse) {
viewModelScope.launch { viewModelScope.launch {
println("-----rsi事件 = ${res.data}") println("-----rsi事件 = ${res.data}")
FileIoUtils.writeToFile(res.data, "rsi_event.txt")
var bean = parseSocketRepo.parseDataBean(res.data, RsiEventBean::class.java) var bean = parseSocketRepo.parseDataBean(res.data, RsiEventBean::class.java)
// parkBean.value = bean // parkBean.value = bean
// FileIoUtils.writeToFile(gson.toJson(bean), "rsi_event.txt") // FileIoUtils.writeToFile(gson.toJson(bean), "rsi_event.txt")
FileIoUtils.writeToFile(res.data, "rsi_event.txt")
} }
} }
} }
...@@ -486,9 +494,8 @@ class MainVm @Inject constructor( ...@@ -486,9 +494,8 @@ class MainVm @Inject constructor(
return carVehicle return carVehicle
} }
/** 联网车辆状态数据 /**
* * 联网车辆状态数据
* {"vehicleStats":{"total":0,"avp":0},"vehicleStatusList":[],"wsTime":1750138623719}
* */ * */
fun subVehicleStatus(): LiveData<VehicleStats> { fun subVehicleStatus(): LiveData<VehicleStats> {
val reqStr = getSendData("/topic/vehicleStatus") val reqStr = getSendData("/topic/vehicleStatus")
...@@ -499,13 +506,17 @@ class MainVm @Inject constructor( ...@@ -499,13 +506,17 @@ class MainVm @Inject constructor(
/**感知目标物数据 /**感知目标物数据
* {"objectData":[{"altitude":0.0,"deviceCode":"ALL","id":"rsm","latitude":0.0,"longitude":0.0,"participant":[],"reportTime":1750138879684}],"wsTime":1750138834204} * {"objectData":[{"altitude":0.0,"deviceCode":"ALL","id":"rsm","latitude":0.0,"longitude":0.0,"participant":[],"reportTime":1750138879684}],"wsTime":1750138834204}
* **/ * **/
fun subTarget() { fun subTarget(): LiveData<PerTarget> {
val reqStr = getSendData("/topic/dataMerge") if (isMock) {
client?.send(reqStr) mockVM.onSubTargetMock(targetPre)
} else {
client?.send(getSendData("/topic/dataMerge"))
}
return targetPre
} }
/**V2X预警开始 /**
* * V2X预警开始
* **/ * **/
fun subStartV2x() { fun subStartV2x() {
val reqStr = getSendData("/topic/v2xStart") val reqStr = getSendData("/topic/v2xStart")
...@@ -520,22 +531,35 @@ class MainVm @Inject constructor( ...@@ -520,22 +531,35 @@ class MainVm @Inject constructor(
/*** 更新停车位**/ /*** 更新停车位**/
fun subPoints(): LiveData<ParkBean> { fun subPoints(): LiveData<ParkBean> {
val reqStr = getSendData("/topic/points") if (isMock) {
client?.send(reqStr) mockVM.onPointsMock(parkBean)
} else {
client?.send(getSendData("/topic/points"))
}
return parkBean return parkBean
} }
/*** 全局路径发生切换**/ /*** 全局路径发生切换**/
fun subLinePlaning() { fun subLinePlaning(): LiveData<AllLinePlaningBean> {
if (isMock) {
mockVM.onSubLinePlaningMock(allLine)
} else {
val reqStr = getSendData("/topic/linePlaning") val reqStr = getSendData("/topic/linePlaning")
client?.send(reqStr) client?.send(reqStr)
} }
return allLine
}
/*** 局部路径**/ /*** 局部路径**/
fun subPartLine() { fun subPartLine(): LiveData<PartLineBean> {
if (isMock) {
mockVM.onSubPartLineMock(partLine)
} else {
val reqStr = getSendData("/topic/partLine") val reqStr = getSendData("/topic/partLine")
client?.send(reqStr) client?.send(reqStr)
} }
return partLine
}
/*** rsi事件**/ /*** rsi事件**/
fun subRsiEvent() { fun subRsiEvent() {
......
...@@ -2,19 +2,28 @@ package com.sd.cavphmi.viewmodels ...@@ -2,19 +2,28 @@ package com.sd.cavphmi.viewmodels
import android.content.Context import android.content.Context
import androidx.databinding.ObservableField import androidx.databinding.ObservableField
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.google.gson.Gson
import com.sd.cavphmi.base.MyBaseViewModel import com.sd.cavphmi.base.MyBaseViewModel
import com.sd.cavphmi.bean.CarVehicle import com.sd.cavphmi.bean.CarVehicle
import com.sd.cavphmi.bean.OrderBean import com.sd.cavphmi.bean.AllLinePlaningBean
import com.sd.cavphmi.bean.ParkBean
import com.sd.cavphmi.bean.ParkLinePlan
import com.sd.cavphmi.bean.PartLineBean
import com.sd.cavphmi.bean.PerTarget
import com.sd.cavphmi.net.MyResult import com.sd.cavphmi.net.MyResult
import com.sd.cavphmi.net.RequestBodyUtil
import com.sd.cavphmi.repositorys.ParseSocketRepo import com.sd.cavphmi.repositorys.ParseSocketRepo
import com.sd.cavphmi.utils.FileIoUtils import com.sd.cavphmi.utils.FileIoUtils
import com.sd.cavphmi.utils.MyContants
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import retrofit2.HttpException
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
...@@ -23,15 +32,17 @@ class MockVM @Inject constructor( ...@@ -23,15 +32,17 @@ class MockVM @Inject constructor(
private var parseSocketRepo: ParseSocketRepo private var parseSocketRepo: ParseSocketRepo
) : MyBaseViewModel() { ) : MyBaseViewModel() {
private var gson = Gson()
//模拟车辆位姿
fun onVehicleMock( fun onVehicleMock(
carVehicle: MutableLiveData<CarVehicle>, carVehicle: MutableLiveData<CarVehicle>,
heading: ObservableField<Int>, heading: ObservableField<Int>,
speed: ObservableField<Float> speed: ObservableField<Float>
) { ) {
viewModelScope.launch { viewModelScope.launch {
var dst = mutableListOf<String>() val dst = mutableListOf<String>()
FileIoUtils.getAssetMock(context, "mock/carvehicle.txt", dst) FileIoUtils.getAssetMock(context, "mock/CarVehicle.txt", dst)
dst.forEach { str -> dst.forEach { str ->
delay(1000) delay(1000)
val bean = val bean =
...@@ -44,5 +55,67 @@ class MockVM @Inject constructor( ...@@ -44,5 +55,67 @@ class MockVM @Inject constructor(
} }
} }
//模拟Http获取全局路径
suspend fun getLinePlaningMock(vehiclePlate: String): MyResult<ParkLinePlan> {
return withContext(Dispatchers.IO) {
val str = FileIoUtils.getAssetContent(context, "find_line.txt")
val bean =gson.fromJson(str,ParkLinePlan::class.java)
return@withContext MyResult.Success(bean)
}
}
//感知目标物
fun onSubTargetMock(targetPre: MutableLiveData<PerTarget>) {
viewModelScope.launch {
val parts = mutableListOf<String>()
FileIoUtils.getAssetMock(context, "mock/PerTarget.txt", parts)
parts.forEach { str ->
delay(1000)
var bean = parseSocketRepo.parseDataBean(str, PerTarget::class.java)
println("------模拟感知目标物数据 = ${bean}")
targetPre.value = bean
}
}
}
//全局路径发生切换
fun onSubLinePlaningMock(allLine: MutableLiveData<AllLinePlaningBean>) {
viewModelScope.launch {
val alls = mutableListOf<String>()
FileIoUtils.getAssetMock(context, "mock/all_line.txt", alls)
alls.forEach { str ->
delay(1000)
var bean = parseSocketRepo.parseDataBean(str, AllLinePlaningBean::class.java)
allLine.value = bean
}
}
}
//局部路径
fun onSubPartLineMock(allLine: MutableLiveData<PartLineBean>) {
viewModelScope.launch {
val lines = mutableListOf<String>()
lines.forEach { str ->
delay(1000)
var bean = parseSocketRepo.parseDataBean(str, PartLineBean::class.java)
allLine.value = bean
}
}
}
//更新停车位
fun onPointsMock(parkBean: MutableLiveData<ParkBean>) {
viewModelScope.launch {
val points = mutableListOf<String>()
FileIoUtils.getAssetMock(context, "mock/change_park.txt", points)
points.forEach { str ->
delay(1000)
var bean = parseSocketRepo.parseDataBean(str, ParkBean::class.java)
println("------模拟停车位变更 = ${bean}")
parkBean.value = bean
}
}
}
} }
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment