diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt index 95e9090546..2c877e78c9 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt +++ b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt @@ -7,7 +7,6 @@ import android.os.Build 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 @@ -49,8 +48,6 @@ import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import system_master.SystemStatusInfo 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 @@ -365,6 +362,12 @@ object CharterPassengerModel { val siteGCJ = CoordinateTransform.WGS84ToGCJ02(order.wgs84Lon, order.wgs84Lat) this.carTypeChageListener?.setEndStationCallBack(order.siteId,order.siteName,siteGCJ[0],siteGCJ[1]) } + this.orderInfo?.orderNo?.let { + if(it!=orderData.orderNo){ + // orderNo 变后清理 + SharedPrefs.getInstance(mContext).remove("${it}$min5Speak") + } + } if (order.lineId == null || order.lineId == 0L || order.siteId == null || order.siteId == 0L) { // 去选线路和站点 setOrderStatus(OrderStatusEnum.OrderNoLine) @@ -523,9 +526,9 @@ object CharterPassengerModel { .subscribe{millisUntilFinished-> if (millisUntilFinished <= 360L) { orderInfo?.let { - if (broadcastList.get("${it}$min5Speak") == null - || broadcastList.get("${it}$min5Speak") == false - ) { + val isPlayed = SharedPrefs.getInstance(mContext) + .getBoolean("${it.orderNo}$min5Speak", false) + if (!isPlayed) { //发送 通知 OCHSocketMessageManager.pushAppOperationalMsgBox( DateTimeUtil.getCurrentTimeStamp(), @@ -537,7 +540,8 @@ object CharterPassengerModel { }else{ VoiceManager.surplus5min() } - broadcastList["${it}$min5Speak"] = true + CallerLogger.d(M_BUS_P+ TAG,"倒计时5分钟${it.orderNo}") + SharedPrefs.getInstance(mContext).putBoolean("${it.orderNo}$min5Speak",true) } } } @@ -699,19 +703,58 @@ object CharterPassengerModel { for (mutableEntry in distanceMap) { CallerLogger.d(M_BUS_P+ TAG,"距离:${mutableEntry.key}-----第几个站点${mutableEntry.value}") } - var first = -1 + var middle = -1 if (distanceMap.size >= 2) { for (mutableEntry in distanceMap) { - if (first >= 0) { - // <可用站点标,是否靠近> - var max = Math.max(first, mutableEntry.value)//正常点位 - if(max==data.size-1){// 车辆在终点和起点中间时 - max = Math.min(first, mutableEntry.value) - } - return Pair(max, false) - } - first = mutableEntry.value + middle = mutableEntry.value + break } + if(middle==0){ + return Pair(1, false) + } + mLocation?.let { + if(middle-1>=0) { + val degree = CoordinateCalculateRouteUtil.getDegree( + it.longitude, it.latitude, + data.get(middle).GcjLon!!, data.get(middle).GcjLat!!, + data.get(middle - 1).GcjLon!!, data.get(middle - 1).GcjLat!!, + ) + if (degree > 90) { + return Pair(middle - 1, false) + } + } + if(middle+1 90) { + return Pair(middle, false) + } + } + if(middle-2>=0) { + val degree = CoordinateCalculateRouteUtil.getDegree( + it.longitude, it.latitude, + data.get(middle - 1).GcjLon!!, data.get(middle - 1).GcjLat!!, + data.get(middle - 2).GcjLon!!, data.get(middle - 2).GcjLat!!, + ) + if (degree > 90) { + return Pair(middle - 2, false) + } + } + if(middle+2 90) { + return Pair(middle + 1, false) + } + } + } + } return Pair(0, false) diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt index d39f78c6a9..dc4229291e 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt @@ -155,6 +155,7 @@ class BusPassengerPresenter(view: MainFragment?) : override fun setOrderTimeCallBack(timeInSecond: Long) { if(timeInSecond<0){ + setDistanceAndTime("0", "KM") setOrderTime("--","--") return } diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java index 9ba9f943fd..df36d2f672 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java @@ -326,4 +326,18 @@ public class CoordinateCalculateRouteUtil { Logger.d("calculateRouteSumLength", "点:" + currentIndex + "-------是最近的点------ "); return currentIndex; } + + public static int getDegree(double vertexPointX, double vertexPointY, double point0X, double point0Y, double point1X, double point1Y) { + //向量的点乘 + double vector = (point0X - vertexPointX) * (point1X - vertexPointX) + (point0Y - vertexPointY) * (point1Y - vertexPointY); + //向量的模乘 + double sqrt = Math.sqrt( + (Math.abs((point0X - vertexPointX) * (point0X - vertexPointX)) + Math.abs((point0Y - vertexPointY) * (point0Y - vertexPointY))) + * (Math.abs((point1X - vertexPointX) * (point1X - vertexPointX)) + Math.abs((point1Y - vertexPointY) * (point1Y - vertexPointY))) + ); + //反余弦计算弧度 + double radian = Math.acos(vector / sqrt); + //弧度转角度制 + return (int) (180 * radian / Math.PI); + } }