[m1]
[1.1.2] [到达时间修改位订单倒计时、轮训是否立即执行]
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
package com.mogo.och.bus.passenger.bean
|
||||
|
||||
data class LoopInfo(val interval:Long,val function: () -> Unit)
|
||||
data class LoopInfo(val interval:Long,val function: () -> Unit,val immediately:Boolean=false)
|
||||
@@ -2,4 +2,6 @@ package com.mogo.och.bus.passenger.callback
|
||||
|
||||
interface IDistanceTimeCallback {
|
||||
fun setDistancecAndTime(meters:Long , timeInSecond:Long )
|
||||
|
||||
fun setOrderTimeCallBack(timeInSecond:Long)
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import android.net.ConnectivityManager
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.module.intent.IMogoIntentListener
|
||||
import com.mogo.commons.module.intent.IntentManager
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine
|
||||
@@ -22,19 +23,14 @@ import com.mogo.eagle.core.network.utils.GsonUtil
|
||||
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.CoordinateTransform
|
||||
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
|
||||
import com.mogo.eagle.core.utilcode.util.CountDownTimer
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.och.bus.passenger.R
|
||||
import com.mogo.och.bus.passenger.bean.LoopInfo
|
||||
import com.mogo.och.bus.passenger.bean.response.*
|
||||
import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback
|
||||
import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback
|
||||
import com.mogo.och.bus.passenger.callback.IOrderChangeCallback
|
||||
import com.mogo.och.bus.passenger.callback.IDistanceTimeCallback
|
||||
import com.mogo.och.bus.passenger.callback.IOrderChangeCallback
|
||||
import com.mogo.och.bus.passenger.constant.BusPassengerConst.Companion.Charter_AVERAGE_SPEED
|
||||
import com.mogo.och.bus.passenger.net.BusPassengerModelLoopManager
|
||||
import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
|
||||
@@ -50,8 +46,16 @@ import com.mogo.och.common.module.voice.VoiceManager
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
import system_master.SystemStatusInfo
|
||||
import java.util.*
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.Observer
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import java.util.TreeMap
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.collections.ArrayList
|
||||
import kotlin.collections.HashMap
|
||||
|
||||
/**
|
||||
* Created on 2022/3/31
|
||||
@@ -59,7 +63,7 @@ import java.util.concurrent.ConcurrentHashMap
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
object CharterPassengerModel {
|
||||
|
||||
private const val TAG = "BusPassengerModel"
|
||||
private const val TAG = "CharterPassengerModel"
|
||||
private const val TAGLOGIN = "BusPassengerModelLogin"
|
||||
private const val TAGORDER = "BusPassengerModelOrder"
|
||||
private const val TAGCARSTATUS = "BusPassengerModelCarStatus"
|
||||
@@ -107,10 +111,10 @@ object CharterPassengerModel {
|
||||
private val endKey = "arrivedLine"
|
||||
private val min5Speak = "min5Speak"
|
||||
|
||||
private var countDownTimer:CountDownTimer?=null
|
||||
|
||||
private var carTypeChageListener: IOrderChangeCallback?=null
|
||||
|
||||
private var subscribeCountDown: Disposable?=null
|
||||
|
||||
fun init() {
|
||||
initListeners()
|
||||
queryLoginStatus()
|
||||
@@ -482,7 +486,7 @@ object CharterPassengerModel {
|
||||
private fun startCalibrationLoop() {
|
||||
BusPassengerModelLoopManager.setLoopFunction(
|
||||
TAGCALIBRATION,
|
||||
LoopInfo(120, ::queryBusinessTime)
|
||||
LoopInfo(120, ::queryBusinessTime,immediately = true)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -503,31 +507,40 @@ object CharterPassengerModel {
|
||||
if (data?.data == null) return
|
||||
if (data.data.currentTime != null && data.data.endTime != null) {
|
||||
val endlast = data.data.endTime - data.data.currentTime
|
||||
countDownTimer?.cancel()
|
||||
if(endlast<300*1000){
|
||||
return
|
||||
subscribeCountDown?.let {
|
||||
if (!it.isDisposed) {
|
||||
it.dispose()
|
||||
}
|
||||
}
|
||||
countDownTimer = object :CountDownTimer(endlast,1000){
|
||||
override fun onTick(millisUntilFinished: Long) {
|
||||
if(millisUntilFinished/1000<=300L){
|
||||
val leadTime = endlast / 1000
|
||||
subscribeCountDown =
|
||||
Observable.intervalRange(0L, leadTime, 0, 1, TimeUnit.SECONDS)
|
||||
.map { aLong -> leadTime - aLong }
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribe{millisUntilFinished->
|
||||
if (millisUntilFinished <= 300L) {
|
||||
orderInfo?.let {
|
||||
if (broadcastList.get("${it}$min5Speak")==null||broadcastList.get("${it}$min5Speak")==false) {
|
||||
if (broadcastList.get("${it}$min5Speak") == null
|
||||
|| broadcastList.get("${it}$min5Speak") == false
|
||||
) {
|
||||
//发送 通知
|
||||
OCHSocketMessageManager.pushAppOperationalMsgBox(DateTimeUtil.getCurrentTimeStamp(),
|
||||
AbsMogoApplication.getApp().getString(R.string.m1_end_order_5min),2)
|
||||
OCHSocketMessageManager.pushAppOperationalMsgBox(
|
||||
DateTimeUtil.getCurrentTimeStamp(),
|
||||
AbsMogoApplication.getApp()
|
||||
.getString(R.string.m1_end_order_5min), 2
|
||||
)
|
||||
VoiceManager.surplus5min()
|
||||
broadcastList["${it}$min5Speak"] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
CallerLogger.d(M_BUS_P+TAG,"倒计时${millisUntilFinished/1000}")
|
||||
iDistanceTimeCallback?.setOrderTimeCallBack(millisUntilFinished)
|
||||
CallerLogger.d(
|
||||
M_BUS_P + TAG,
|
||||
"倒计时${millisUntilFinished}"
|
||||
)
|
||||
}
|
||||
|
||||
override fun onFinish() {
|
||||
|
||||
}
|
||||
}
|
||||
countDownTimer?.start()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,13 @@ object BusPassengerModelLoopManager {
|
||||
|
||||
fun setLoopFunction(tag: String, function: LoopInfo) {
|
||||
if (tag.isBlank()) return
|
||||
if(mControllerStatusCallbackMap.contains(tag)){
|
||||
return
|
||||
}
|
||||
mControllerStatusCallbackMap[tag] = function
|
||||
if(function.immediately){
|
||||
function.function.invoke()
|
||||
}
|
||||
if (mControllerStatusCallbackMap.size > 0) {
|
||||
startLineLoop()
|
||||
}
|
||||
|
||||
@@ -63,12 +63,16 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
mView?.setSpeed(speedKM.toString())
|
||||
}
|
||||
}
|
||||
private fun setDistanceAndTime(distance: String,distanceUnit: String,sumTime:String,arrivedTime:String){
|
||||
private fun setDistanceAndTime(distance: String,distanceUnit: String){
|
||||
UiThreadHandler.post {
|
||||
mView?.setDistanceAndTime(distance, distanceUnit, sumTime, arrivedTime)
|
||||
mView?.setDistanceAndTime(distance, distanceUnit)
|
||||
}
|
||||
}
|
||||
private fun setOrderTime(sumTime:String,arrivedTime:String){
|
||||
UiThreadHandler.post {
|
||||
mView?.setOrderTime(sumTime, arrivedTime)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCarLocationChanged(location: MogoLocation?) {
|
||||
location?.let {
|
||||
setSpeed(it.gnssSpeed)
|
||||
@@ -146,13 +150,17 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
dis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
|
||||
}
|
||||
}
|
||||
setDistanceAndTime(dis.toString(),disUnit)
|
||||
}
|
||||
|
||||
override fun setOrderTimeCallBack(timeInSecond: Long) {
|
||||
val surplusTime = Math.ceil(timeInSecond.toDouble() / 60f).toInt()
|
||||
|
||||
val beforeTime = Calendar.getInstance()
|
||||
beforeTime.add(Calendar.MINUTE, surplusTime)
|
||||
//到达时间
|
||||
val arriveTime = DateTimeUtil.formatCalendarToString(beforeTime, DateTimeUtil.HH_mm)
|
||||
setDistanceAndTime(dis.toString(),disUnit,surplusTime.toString(),arriveTime)
|
||||
setOrderTime(surplusTime.toString(),arriveTime)
|
||||
}
|
||||
|
||||
companion object{
|
||||
@@ -208,7 +216,8 @@ class BusPassengerPresenter(view: MainFragment?) :
|
||||
UiThreadHandler.post {
|
||||
mView?.showOpenAndCloseDoor()
|
||||
mView?.cleanEndStation()
|
||||
mView?.setDistanceAndTime("0", "KM", "--", "--")
|
||||
setDistanceAndTime("0", "KM")
|
||||
setOrderTime("--","--")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,11 +152,14 @@ class MainFragment :
|
||||
fun setDistanceAndTime(
|
||||
distance: String,
|
||||
distanceUnit: String,
|
||||
sumTime: String,
|
||||
arrivedTime: String
|
||||
) {
|
||||
tv_distance.text = distance
|
||||
tv_distance_unit.text = "距离(${distanceUnit})"
|
||||
}
|
||||
fun setOrderTime(
|
||||
sumTime: String,
|
||||
arrivedTime: String
|
||||
) {
|
||||
tv_distance_surplus_time.text = sumTime
|
||||
tv_distance_arrive_time.text = arrivedTime
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user