[charter]

[3.2.0]
[轨迹]
This commit is contained in:
yangyakun
2023-05-06 11:19:29 +08:00
parent 357b5fc877
commit 629cc39705
10 changed files with 149 additions and 22 deletions

View File

@@ -0,0 +1,21 @@
package com.mogo.och.bus.passenger.bean.response
import com.amap.api.maps.model.LatLng
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.bean.dpmsg.LineSite
import java.util.*
/**
*
*/
data class TrajectoriesResponse(val data: List<LatLng>?) : BaseData(){
data class LatLng(
val latitude: Double?,//维度
val longitude: Double?,//精度
){
fun exchangeData(): com.amap.api.maps.model.LatLng{
return com.amap.api.maps.model.LatLng(latitude!!,longitude!!)
}
}
}

View File

@@ -818,6 +818,9 @@ object CharterPassengerModel {
BusPassengerServiceManager.endOrder(mContext, it, callback)
}
}
fun getLineTrajectory(lineId: Long,callback: OchCommonServiceCallback<TrajectoriesResponse>?) {
BusPassengerServiceManager.queryLineLocation(mContext, lineId = lineId.toString(), callback)
}
@Synchronized
fun arriveDest() {

View File

@@ -140,4 +140,13 @@ object BusPassengerServiceManager {
mBusPassengerServiceApi.queryBusinessTime().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusinessTime"))
}
@JvmStatic
fun queryLineLocation(context: Context,lineId:String ,callback: OchCommonServiceCallback<TrajectoriesResponse>?) {
if(beforeNet()){
return
}
mBusPassengerServiceApi.queryLineLocation(lineId = lineId).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "serviceEnd"))
}
}

View File

@@ -107,4 +107,16 @@ internal interface PassengerServiceApi {
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = BusPassengerServiceManager.draiverSn
): Observable<BusinessTimeResponse>
/**
* 08查询包车业务时间 11
* 倒计时5分钟 消息盒子、倒计时结束弹窗
*/
@GET("/och-rental-cabin/api/business/v1/queryLineLocation")
fun queryLineLocation(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = BusPassengerServiceManager.draiverSn,
@Query("lineId") lineId: String
): Observable<TrajectoriesResponse>
}

View File

@@ -263,6 +263,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) :
}
fun canSwitchLine():Boolean {
return true
val gnssSpeed =
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed
if (gnssSpeed < 0.5) {

View File

@@ -1,5 +1,6 @@
package com.mogo.och.bus.passenger.presenter
import android.graphics.BitmapFactory
import androidx.lifecycle.LifecycleOwner
import com.amap.api.maps.model.LatLng
import com.mogo.commons.voice.AIAssist
@@ -8,18 +9,25 @@ import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
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.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.function.view.SiteMarkerBean
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
import com.mogo.och.bus.passenger.bean.response.TrajectoriesResponse
import com.mogo.och.bus.passenger.callback.IDistanceCallback
import com.mogo.och.bus.passenger.callback.IOrderChangeCallback
import com.mogo.och.bus.passenger.callback.ITimeCallback
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener
import com.mogo.och.bus.passenger.model.OrderStatusEnum
import com.mogo.och.bus.passenger.ui.MainFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager
import com.mogo.och.common.module.biz.constant.OchCommonConst
@@ -31,6 +39,7 @@ import com.mogo.och.common.module.utils.SoundPoolHelper
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
import com.mogo.och.common.module.bean.dpmsg.DPCommonOperationMsg
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager
import kotlin.math.ceil
@@ -44,28 +53,30 @@ class BusPassengerPresenter(view: MainFragment?) :
super.onCreate(owner)
CharterPassengerModel.init()
// 定位监听
CharterPassengerModel.setStationDistanceListener(TAG,this)
CharterPassengerModel.setStationDistanceListener(TAG, this)
CharterPassengerModel.setCarTypeChangeListener(this)
CharterPassengerModel.setStatusChangeListener(TAG,this)
CharterPassengerModel.setStatusChangeListener(TAG, this)
CallerTelematicListenerManager.addListener(TAG, msgReceived)
OCHPlanningStopSideStatusManager.addListener(TAG,this)
OCHPlanningStopSideStatusManager.addListener(TAG, this)
setCarChangeListener(R.raw.m1)
}
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
CharterPassengerModel.setStationDistanceListener(TAG,null)
CharterPassengerModel.setStationDistanceListener(TAG, null)
CharterPassengerModel.setCarTypeChangeListener(null)
CallerTelematicListenerManager.removeListener(TAG)
OCHPlanningStopSideStatusManager.removeListener(TAG)
}
private fun setSpeed(speed:Float){
private fun setSpeed(speed: Float) {
UiThreadHandler.post {
val speedKM =(Math.abs(speed) * 3.6f).toInt()
val speedKM = (Math.abs(speed) * 3.6f).toInt()
mView?.setSpeed(speedKM.toString())
}
}
private fun setDistanceAndTime(
distance: String,
distanceUnit: String,
@@ -73,7 +84,7 @@ class BusPassengerPresenter(view: MainFragment?) :
arriveTime: String
) {
UiThreadHandler.post {
mView?.setDistanceAndTime(distance, distanceUnit,leftTime,arriveTime)
mView?.setDistanceAndTime(distance, distanceUnit, leftTime, arriveTime)
}
}
@@ -88,9 +99,9 @@ class BusPassengerPresenter(view: MainFragment?) :
when (msg.type) {
DPMsgType.TYPE_OPEN_CLOSE_DOOR.type -> {
val doorStatus = LightAirconditionDoorStatusManager.doorStatus
if(doorStatus.isOpen){
if (doorStatus.isOpen) {
LightAirconditionDoorManager.go2OpenDoor(false)
}else{
} else {
LightAirconditionDoorManager.go2OpenDoor(true)
}
}
@@ -99,7 +110,7 @@ class BusPassengerPresenter(view: MainFragment?) :
String(byteArray),
DPCommonOperationMsg::class.java
) as DPCommonOperationMsg
pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp(),msg.msg)
pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp(), msg.msg)
}
else -> {}
}
@@ -108,12 +119,12 @@ class BusPassengerPresenter(view: MainFragment?) :
}
}
fun pushOperationalToMsgBox(time : Long,content : String,type: Int = -1){
fun pushOperationalToMsgBox(time: Long, content: String, type: Int = -1) {
playDI()
OCHSocketMessageManager.pushAppOperationalMsgBox(time, content, type)
}
private fun playDI(){
private fun playDI() {
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.m1_voice_di)
}
@@ -121,7 +132,7 @@ class BusPassengerPresenter(view: MainFragment?) :
* 计算剩余距离和剩余时间
*/
override fun setDistancecAndTime(meters: Long, timeInSecond: Long) {
if(meters<0&&timeInSecond<0){
if (meters < 0 && timeInSecond < 0) {
setDistanceAndTime("--", context.getString(R.string.m1_distance_unit_km), "--", "--")
}
var dis: String? = "0"
@@ -137,10 +148,10 @@ class BusPassengerPresenter(view: MainFragment?) :
}
val time = ceil(timeInSecond / 60f).toInt()
val arriveTime = DateTimeUtil.getAfterSecondTime(time)
setDistanceAndTime(dis.toString(),disUnit,time.toString(),arriveTime)
setDistanceAndTime(dis.toString(), disUnit, time.toString(), arriveTime)
}
companion object{
companion object {
private const val TAG = "BusPassengerPresenter"
}
@@ -161,7 +172,7 @@ class BusPassengerPresenter(view: MainFragment?) :
}
}
fun haveOrder():Boolean {
fun haveOrder(): Boolean {
return CharterPassengerModel.hasOrder()
}
@@ -199,8 +210,13 @@ class BusPassengerPresenter(view: MainFragment?) :
}
}
override fun setEndStationCallBack(siteId: Long?, siteName: String?, gcj_lon: Double, gcj_lat: Double) {
val latLng = LatLng(gcj_lat,gcj_lon)
override fun setEndStationCallBack(
siteId: Long?,
siteName: String?,
gcj_lon: Double,
gcj_lat: Double
) {
val latLng = LatLng(gcj_lat, gcj_lon)
mView?.cleanEndStation()
mView?.drawEndStation(latLng)
}
@@ -216,7 +232,10 @@ class BusPassengerPresenter(view: MainFragment?) :
ToastUtils.showShort(errorInfo)
}
OCHPlanningStopSideStatusManager.Status.START -> {
VoiceNotice.showNotice(context.getString(R.string.m1_stop_site_zh), AIAssist.LEVEL1)
VoiceNotice.showNotice(
context.getString(R.string.m1_stop_site_zh),
AIAssist.LEVEL1
)
}
OCHPlanningStopSideStatusManager.Status.DOING -> {
// 正在靠边停车
@@ -240,4 +259,39 @@ class BusPassengerPresenter(view: MainFragment?) :
}
}
}
fun getLineTrajectory(
lineInfo: LineInfoResponse.LineInfo,
sites: List<SiteInfoResponse.SiteInfo>
) {
CharterPassengerModel.getLineTrajectory(lineInfo.lineId!!,object : OchCommonServiceCallback<TrajectoriesResponse> {
override fun onSuccess(data: TrajectoriesResponse?) {
if (null != data && 0 == data.code) {
data.data?.let {
CallerLogger.d(M_BUS_P + TAG, "getLineTrajectory轨迹点${data.data.size}")
val trajectoryList = mutableListOf<LatLng>()
it.forEach {latLngMain ->
trajectoryList.add(latLngMain.exchangeData())
}
drawStations(sites)
mView?.drawOverMapViewTrajectory(trajectoryList)
}
}
}
override fun onFail(code: Int, msg: String) {
ToastUtils.showShort("$code:$msg")
}
})
}
fun drawStations(sites: List<SiteInfoResponse.SiteInfo>){
val stationsList: MutableList<SiteMarkerBean> = mutableListOf()
val stationIcon = BitmapFactory.decodeResource(context.resources, R.drawable.map_staton_icon)
sites.forEach {
stationsList.add(SiteMarkerBean(LatLng(it.GcjLat!!,it.GcjLon!!),stationIcon,0.5f,0.5f))
}
mView?.drawOverMapViewStation(stationsList)
}
}

View File

@@ -13,19 +13,22 @@ import com.mogo.commons.mvp.MvpFragment
import com.mogo.eagle.core.data.config.HdMapBuildConfig
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.hmi.ui.msgbox.MMsgBoxButtonView
import com.mogo.eagle.core.function.view.SiteMarkerBean
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
import com.mogo.eagle.core.utilcode.util.AppStateManager
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.bean.event.EventLineSites
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter
import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.common.module.voice.VoiceManager
import kotlinx.android.synthetic.main.m1_main_fragment.*
import org.greenrobot.eventbus.EventBus
@@ -259,7 +262,20 @@ class MainFragment :
@Subscribe(threadMode = ThreadMode.MAIN)
fun changeOverview(eventLineSites: EventLineSites) {
CallerLogger.d(M_BUS_P + TAG, "eventLineSites:${eventLineSites.lineInfo.name}-----${eventLineSites.sites.size}")
CallerLogger.d(M_BUS_P + TAG, "eventLineSites:${eventLineSites.lineInfo.lineId}-----${eventLineSites.sites.size}")
mPresenter?.getLineTrajectory(eventLineSites.lineInfo,eventLineSites.sites)
}
fun drawOverMapViewStation(stationsList: MutableList<SiteMarkerBean>){
omvOverMap?.drawSiteMarkers(stationsList)
}
fun drawOverMapViewTrajectory(coordinates: List<LatLng>){
UiThreadHandler.post({
omvOverMap?.drawPolyline(coordinates, 0)
},
UiThreadHandler.MODE.QUEUE
)
}
companion object {

View File

@@ -1,5 +1,6 @@
package com.mogo.och.bus.passenger.ui.dialogfragment
import android.content.DialogInterface
import android.os.Bundle
import android.util.Log
import android.view.View
@@ -13,6 +14,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.SharedPrefs
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionPresenter
import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1OrderLineFragment
@@ -156,6 +158,11 @@ class M1ContainFragment :
}
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
ToastUtils.showShort("消失了")
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
CallerLogger.d(M_BUS_P+ TAG, "onSaveInstanceState")

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -135,6 +135,10 @@ public class DateTimeUtil {
long m = (long) Math.ceil((second % 3600) / 60.0);// 向上取整
long s = second % 60;
StringBuilder stringBuffer = new StringBuilder();
if(m==60){
m=0;
h = h+1;
}
if (h > 0) {
stringBuffer.append(h < 10 ? ("0" + h) : h).append(":");
}else {