[1.1.2]
[到达时间修改位订单倒计时、轮训是否立即执行]
This commit is contained in:
yangyakun
2023-03-08 22:06:46 +08:00
parent 49d3a89027
commit 4e2cc41f63
6 changed files with 69 additions and 36 deletions

View File

@@ -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)

View File

@@ -2,4 +2,6 @@ package com.mogo.och.bus.passenger.callback
interface IDistanceTimeCallback {
fun setDistancecAndTime(meters:Long , timeInSecond:Long )
fun setOrderTimeCallBack(timeInSecond:Long)
}

View File

@@ -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()
}
}

View File

@@ -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()
}

View File

@@ -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("--","--")
}
}
}

View File

@@ -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
}