From 629cc39705f89e0b2742ba5a4c151f027fbc7094 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Sat, 6 May 2023 11:19:29 +0800 Subject: [PATCH] =?UTF-8?q?[charter]=20[3.2.0]=20[=E8=BD=A8=E8=BF=B9]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/response/TrajectoriesResponse.kt | 21 ++++ .../passenger/model/CharterPassengerModel.kt | 3 + .../net/BusPassengerServiceManager.kt | 9 ++ .../bus/passenger/net/PassengerServiceApi.kt | 12 +++ .../BusPassengerFunctionOrderPresenter.kt | 1 + .../presenter/BusPassengerPresenter.kt | 94 ++++++++++++++---- .../mogo/och/bus/passenger/ui/MainFragment.kt | 20 +++- .../ui/dialogfragment/M1ContainFragment.kt | 7 ++ .../res/drawable-nodpi/map_staton_icon.png | Bin 0 -> 1126 bytes .../och/common/module/utils/DateTimeUtil.java | 4 + 10 files changed, 149 insertions(+), 22 deletions(-) create mode 100644 OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/TrajectoriesResponse.kt create mode 100644 OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/map_staton_icon.png diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/TrajectoriesResponse.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/TrajectoriesResponse.kt new file mode 100644 index 0000000000..499ec9d66e --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/bean/response/TrajectoriesResponse.kt @@ -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?) : 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!!) + } + } +} + diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt index 19a83f5509..8965f22169 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt @@ -818,6 +818,9 @@ object CharterPassengerModel { BusPassengerServiceManager.endOrder(mContext, it, callback) } } + fun getLineTrajectory(lineId: Long,callback: OchCommonServiceCallback?) { + BusPassengerServiceManager.queryLineLocation(mContext, lineId = lineId.toString(), callback) + } @Synchronized fun arriveDest() { diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt index 95201d05f9..b0480f4ab7 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt @@ -140,4 +140,13 @@ object BusPassengerServiceManager { mBusPassengerServiceApi.queryBusinessTime().transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusinessTime")) } + + @JvmStatic + fun queryLineLocation(context: Context,lineId:String ,callback: OchCommonServiceCallback?) { + if(beforeNet()){ + return + } + mBusPassengerServiceApi.queryLineLocation(lineId = lineId).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "serviceEnd")) + } } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt index a466dd6349..7139fa8cd8 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/PassengerServiceApi.kt @@ -107,4 +107,16 @@ internal interface PassengerServiceApi { @Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token, @Query("sn") sn: String = BusPassengerServiceManager.draiverSn ): Observable + + /** + * 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 } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt index 54ad240c4a..7be8d30b7c 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt @@ -263,6 +263,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : } fun canSwitchLine():Boolean { + return true val gnssSpeed = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed if (gnssSpeed < 0.5) { diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt index 2b515255e5..a443c9ab8d 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt @@ -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 + ) { + CharterPassengerModel.getLineTrajectory(lineInfo.lineId!!,object : OchCommonServiceCallback { + 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() + 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){ + val stationsList: MutableList = 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) + } } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt index 191a6cd73f..f7e7d9bec0 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt @@ -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){ + omvOverMap?.drawSiteMarkers(stationsList) + } + + fun drawOverMapViewTrajectory(coordinates: List){ + UiThreadHandler.post({ + omvOverMap?.drawPolyline(coordinates, 0) + }, + UiThreadHandler.MODE.QUEUE + ) } companion object { diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt index 580376bc84..2ad6356784 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt @@ -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") diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/map_staton_icon.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/map_staton_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..13140284340435aa9b665a933aeb23013b4f6c67 GIT binary patch literal 1126 zcmV-s1eyDZP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR919H0XL1ONa40RR91B>(^b0LY9kRR913&`Cr=R9FeUS50UWK@@(oKg}j> zt=hCU2o-G+g`&_R=s{>vsEP*>6b~N6Q}rZxDiw)8P!Txpv5Y+t+s|{n`Fl~vzf_cH```w>q0hf-p}{VH?#AyA*(MR+nNJ<2PjM zWi2gkuAPE0`;RBf9mXS-P#>uRQ`b3hI-B7ENhqpD1_oeqXh;lw-?7FhU z$U2TMhdFej!OblPV7VDBipwPxUK#)(;zD^uGq?ij_ZUo}r4^P^gnbG{V7~7PO^0i( z`{zsZ#eE8W8H?=r?}Q6p(i}d;r{6z<(V3}|Yfx`h!MT=BFo|9iUohbxd`dq|{Q#%L z@nH;;nHl(wEbTi;Q zI7<^Y=1?_{$J|>0p_0K(?*#H=4vMx=#B%etJ4J6@phAUE1ycZ}8s_7~+)!2^Pv)uj zC@j4^3`!EH;L@M3li(iJJkPy(2-PJ}ZISW5e+7FEpdR3FwUp&6lnes^qaLh}{h_bqK2D=x3 zxA@ieZ8PX#RKKr(r>6`X{j-G7yD>A`H<;|m2JlF?rAa}RB>V?@&|_s7%)s2;BU=$JW!WVBo{BrWT0YEFeO zle;ER(*?F{0-Px`Qf69=**6}`H-uK)Qhh=8ynDzBw|76Rvo*34m9}A{kK=>1>Wft2zkTze*gdg07*qoM6N<$f)vT 0) { stringBuffer.append(h < 10 ? ("0" + h) : h).append(":"); }else {