diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java
index b1f1b0e000..5eee23fd2e 100644
--- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java
+++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java
@@ -55,7 +55,10 @@ import com.mogo.och.bus.passenger.callback.IBusPassengerRouteLineInfoCallback;
import com.mogo.och.bus.passenger.constant.BusPassengerConst;
import com.mogo.och.bus.passenger.network.BusPassengerModelLoopManager;
import com.mogo.och.bus.passenger.network.BusPassengerServiceManager;
-import com.mogo.och.common.module.bean.AppConnectMsg;
+import com.mogo.och.common.module.bean.dpmsg.AppConnectMsg;
+import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg;
+import com.mogo.och.common.module.bean.dpmsg.DPMsgType;
+import com.mogo.och.common.module.bean.dpmsg.LoginCacheStatus;
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback;
@@ -319,12 +322,16 @@ public class BusPassengerModel {
public void onReceivedMsg(int type, @NonNull byte[] byteArray) {
if (OchCommonConst.BUSINESS_STRING == type){
- AppConnectMsg msg = GsonUtils.fromJson(new String(byteArray), AppConnectMsg.class);
- Logger.d(SceneConstant.M_BUS_P+TAG,"onReceivedMsg = "+GsonUtils.toJson(msg));
- if (msg.isViewShow()){ //消息盒子显示内容
- OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox(
- DateTimeUtil.getCurrentTimeStamp(),msg.getMsg(),
- OCHSocketMessageManager.OPERATION_SYSTEM);
+ BaseDPMsg baseMsg = GsonUtils.fromJson(new String(byteArray), BaseDPMsg.class);
+ Logger.d(SceneConstant.M_BUS_P+TAG,"onReceivedMsg = "+GsonUtils.toJson(baseMsg));
+
+ if (baseMsg != null && baseMsg.getType() == DPMsgType.TYPE_COMMON.getType()){
+ AppConnectMsg msg = GsonUtils.fromJson(new String(byteArray), AppConnectMsg.class);
+ if (msg.isViewShow()){ //消息盒子显示内容
+ OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox(
+ DateTimeUtil.getCurrentTimeStamp(),msg.getMsg(),
+ OCHSocketMessageManager.OPERATION_SYSTEM);
+ }
}
}
}
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 65d0bdd294..d6d6538d9d 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
@@ -21,9 +21,6 @@ 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.common.module.bean.dpmsg.BaseDPMsg
-import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg
-import com.mogo.och.common.module.bean.dpmsg.DPCommonOperationMsg
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
@@ -33,6 +30,8 @@ import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.NumberFormatUtil
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 io.reactivex.disposables.Disposable
import java.util.*
diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/LineSiteView.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/LineSiteView.kt
index 138d2c8079..9827035e87 100644
--- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/LineSiteView.kt
+++ b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/view/LineSiteView.kt
@@ -25,17 +25,16 @@ import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.net.BusPassengerModelLoopManager
import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
-import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionDevicePresenter
import com.mogo.och.bus.passenger.ui.M1ContainFragment
import com.mogo.och.bus.passenger.ui.adapter.OrderLineItemAdapter
import com.mogo.och.bus.passenger.ui.adapter.OrderSiteItemAdapter
import com.mogo.och.bus.passenger.utils.RxUtils
import com.mogo.och.bus.passenger.view.BottomDecoration
-import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg
import com.mogo.och.common.module.bean.dpmsg.DPMsgType
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager
+import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg
import io.reactivex.disposables.Disposable
import kotlinx.android.synthetic.m1.m1_order_lineside.view.*
import me.jessyan.autosize.utils.AutoSizeUtils
diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt
index 3a99ad95a6..a5b304a113 100644
--- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt
+++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt
@@ -52,6 +52,7 @@ import com.mogo.och.common.module.manager.CharterSendTripInfoManager.END_TRIP
import com.mogo.och.common.module.manager.CharterSendTripInfoManager.START_TRIP
import com.mogo.och.common.module.manager.OCHAdasAbilityManager
import com.mogo.och.common.module.utils.*
+import com.mogo.och.data.bean.*
import io.reactivex.exceptions.UndeliverableException
import io.reactivex.functions.Consumer
import io.reactivex.plugins.RxJavaPlugins
@@ -206,6 +207,8 @@ class DriverM1Model {
OCHSocketMessageManager.msgWriteOffPassengerType
)
stopLoopAbnormalFactors()
+
+ CallerTelematicListenerManager.removeListener(TAG)
}
/**
* 接收乘客屏发来确认信息
diff --git a/OCH/mogo-och-common-module/build.gradle b/OCH/mogo-och-common-module/build.gradle
index 3de8cdf00a..cffe3c15c2 100644
--- a/OCH/mogo-och-common-module/build.gradle
+++ b/OCH/mogo-och-common-module/build.gradle
@@ -59,6 +59,8 @@ dependencies {
implementation rootProject.ext.dependencies.litezxing
+ api project(":OCH:mogo-och-data")
+
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
api rootProject.ext.dependencies.mogoutils
api rootProject.ext.dependencies.mogocommons
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/AppConnectMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/AppConnectMsg.kt
deleted file mode 100644
index 402557066e..0000000000
--- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/AppConnectMsg.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.mogo.och.common.module.bean
-
-/**
- * @author: wangmingjun
- * @date: 2023/2/14
- */
-data class AppConnectMsg(var isViewShow: Boolean,var isPlay: Boolean,var msg: String)
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/BaseDPMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/BaseDPMsg.kt
deleted file mode 100644
index ca7ead50d8..0000000000
--- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/BaseDPMsg.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.mogo.och.common.module.bean.dpmsg
-
-/**
- * @author: wangmingjun
- * @date: 2023/2/24
- */
-open class BaseDPMsg(var type: Int) // 0: 常规 1:确认路线/站点 2:开/关车门 3:结束订单
\ No newline at end of file
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/ChangeDestMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/ChangeDestMsg.kt
deleted file mode 100644
index d130f49741..0000000000
--- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/ChangeDestMsg.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.mogo.och.common.module.bean.dpmsg
-
-/**
- * @author: wangmingjun
- * @date: 2023/2/24
- */
-data class ChangeDestMsg(
- var lineId: Int, //线路id
- var lineName: String = "", //线路名称
- var startSiteId: Int= 0, //当前站点
- var startSiteName: String = "",
- var destSiteId: Int= 0, //目的地
- var destSiteName: String = "",
- var isConfirmed: Boolean = false //司机端是否同意
-): BaseDPMsg(DPMsgType.TYPE_CHANGE_DEST.type)
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPCommonOperationMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPCommonOperationMsg.kt
deleted file mode 100644
index af7badf1fa..0000000000
--- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPCommonOperationMsg.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.mogo.och.common.module.bean.dpmsg
-
-/**
- * @author: wangmingjun
- * @date: 2023/2/24
- */
-data class DPCommonOperationMsg(
- var msg: String
-): BaseDPMsg(DPMsgType.TYPE_COMMON.type)
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt
index 40f54f7cad..e47d5900fd 100644
--- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt
+++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPMsgType.kt
@@ -8,5 +8,7 @@ enum class DPMsgType(val type: Int) {
TYPE_COMMON(0), //常规
TYPE_CHANGE_DEST(1),// 变更目的地确认
TYPE_OPEN_CLOSE_DOOR(2),//开关门
- TYPE_ORDER_CLOSED(3) // 订单结束
+ TYPE_ORDER_CLOSED(3), // 订单结束
+ TYPE_TASK_DETAILS(4), //路线任务详情
+ TYPE_LOGIN_STATUS(5) //login status
}
\ No newline at end of file
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOperateDoorMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOperateDoorMsg.kt
deleted file mode 100644
index 30a4f2c3b4..0000000000
--- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOperateDoorMsg.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.mogo.och.common.module.bean.dpmsg
-
-/**
- * @author: wangmingjun
- * @date: 2023/2/24
- */
-data class DPOperateDoorMsg(
- var open: Boolean = false // true: 开门, false: 关门
-): BaseDPMsg(DPMsgType.TYPE_OPEN_CLOSE_DOOR.type)
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOrderClosedMsg.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOrderClosedMsg.kt
deleted file mode 100644
index 5785b9500b..0000000000
--- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DPOrderClosedMsg.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.mogo.och.common.module.bean.dpmsg
-
-/**
- * @author: wangmingjun
- * @date: 2023/2/24
- */
-data class DPOrderClosedMsg(
- var closed: Boolean = true // true: 开门, false: 关门
-): BaseDPMsg(DPMsgType.TYPE_ORDER_CLOSED.type)
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt
new file mode 100644
index 0000000000..2fae88bbb1
--- /dev/null
+++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt
@@ -0,0 +1,46 @@
+package com.mogo.och.common.module.bean.dpmsg
+/**
+ * @author: wangmingjun
+ * @date: 2023/3/27
+ */
+
+object BusCacheKey{
+ const val BUS_LINE_CACHE = "bus_line_cache"
+ const val BUS_LOGIN_STATUS_CACHE = "bus_login_status_cache"
+}
+
+open class BaseDPMsg(open var type: Int) // 0: 常规 1:确认路线/站点 2:开/关车门 3:结束订单
+
+data class LoginCacheStatus(
+ var loginStatus: Int,
+ var updateTime: Long
+ ): BaseDPMsg(DPMsgType.TYPE_LOGIN_STATUS.type)
+
+data class ChangeDestMsg(
+ var lineId: Int, //线路id
+ var lineName: String = "", //线路名称
+ var startSiteId: Int= 0, //当前站点
+ var startSiteName: String = "",
+ var destSiteId: Int= 0, //目的地
+ var destSiteName: String = "",
+ var isConfirmed: Boolean = false //司机端是否同意
+): BaseDPMsg(DPMsgType.TYPE_CHANGE_DEST.type)
+
+data class DPCommonOperationMsg(
+ var msg: String
+): BaseDPMsg(DPMsgType.TYPE_COMMON.type)
+
+data class DPOperateDoorMsg(
+ var open: Boolean = false // true: 开门, false: 关门
+): BaseDPMsg(DPMsgType.TYPE_OPEN_CLOSE_DOOR.type)
+
+data class DPOrderClosedMsg(
+ var closed: Boolean = true // true: 开门, false: 关门
+): BaseDPMsg(DPMsgType.TYPE_ORDER_CLOSED.type)
+
+data class AppConnectMsg(var isViewShow: Boolean, var isPlay: Boolean, var msg: String,
+): BaseDPMsg(DPMsgType.TYPE_COMMON.type)
+
+data class TaskDetailsMsg(
+ var msg: String?,
+): BaseDPMsg(DPMsgType.TYPE_TASK_DETAILS.type)
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt
index 10348b6b2b..54a78bfcff 100644
--- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt
+++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt
@@ -3,11 +3,18 @@ package com.mogo.och.common.module.biz.model
import android.annotation.SuppressLint
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.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.SharedPrefs
+import com.mogo.eagle.core.utilcode.util.TimeUtils
+import com.mogo.och.common.module.bean.dpmsg.BusCacheKey
+import com.mogo.och.common.module.bean.dpmsg.LoginCacheStatus
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.callback.ILoginCallback
import com.mogo.och.common.module.biz.callback.ILoginViewCallback
import com.mogo.och.common.module.biz.constant.LoginStatusManager
+import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin
+import com.mogo.och.common.module.utils.DateTimeUtil
+import com.mogo.och.data.manager.cache.CacheDataManager
@SuppressLint("StaticFieldLeak")
object OchCommonLoginStatusDefaultModel : OchCommonLoginStatusModel() {
@@ -29,6 +36,19 @@ object OchCommonLoginStatusDefaultModel : OchCommonLoginStatusModel() {
loginViewCallback?.showLoginDialogFragment()
}
loginCallback?.loginSuccess(data)
+
+ updateLoginLocalStatus(isLogin())
+
+ }
+
+ private fun updateLoginLocalStatus(isLogin: Boolean) {
+ var loginCacheStatus = LoginCacheStatus(if (isLogin){
+ 1
+ }else {
+ 0
+ },DateTimeUtil.getCurrentTimeStamp())
+ CacheDataManager.instance.putCacheData(mContext, BusCacheKey.BUS_LOGIN_STATUS_CACHE,
+ GsonUtils.toJson(loginCacheStatus))
}
override fun loginFail(isLogin: Boolean) {
@@ -39,6 +59,8 @@ object OchCommonLoginStatusDefaultModel : OchCommonLoginStatusModel() {
loginViewCallback?.showLoginDialogFragment()
}
loginCallback?.loginFail(isLogin)
+
+ updateLoginLocalStatus(isLogin)
}
}
\ No newline at end of file
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java
index 5b167a38e8..37550ad892 100644
--- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java
+++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java
@@ -5,6 +5,7 @@ import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
+import java.util.TimeZone;
/**
* @author: wangmingjun
@@ -101,4 +102,12 @@ public class DateTimeUtil {
public static long getCurrentTimeStamp(){
return System.currentTimeMillis();
}
+
+ public static long getTodayStartTime(){
+ Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
+ calendar.set(Calendar.HOUR_OF_DAY,0);
+ calendar.set(Calendar.MINUTE,0);
+ calendar.set(Calendar.SECOND,0);
+ return calendar.getTimeInMillis();
+ }
}
diff --git a/OCH/mogo-och-data/.gitignore b/OCH/mogo-och-data/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/OCH/mogo-och-data/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/OCH/mogo-och-data/build.gradle b/OCH/mogo-och-data/build.gradle
new file mode 100644
index 0000000000..ae2e1b8a34
--- /dev/null
+++ b/OCH/mogo-och-data/build.gradle
@@ -0,0 +1,46 @@
+plugins {
+ id 'com.android.library'
+ id 'org.jetbrains.kotlin.android'
+}
+
+android {
+ compileSdkVersion 31
+
+ defaultConfig {
+ minSdkVersion 23
+ targetSdkVersion 31
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles "consumer-rules.pro"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+}
+
+dependencies {
+
+ implementation fileTree(dir: "libs", include: ["*.jar"])
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+ implementation rootProject.ext.dependencies.androidxccorektx
+ implementation rootProject.ext.dependencies.androidxappcompat
+ implementation rootProject.ext.dependencies.material
+ implementation rootProject.ext.dependencies.rxandroid
+
+ if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
+ api rootProject.ext.dependencies.mogoutils
+ }else {
+ api project(":core:mogo-core-utils")
+ }
+}
\ No newline at end of file
diff --git a/OCH/mogo-och-data/consumer-rules.pro b/OCH/mogo-och-data/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/OCH/mogo-och-data/proguard-rules.pro b/OCH/mogo-och-data/proguard-rules.pro
new file mode 100644
index 0000000000..481bb43481
--- /dev/null
+++ b/OCH/mogo-och-data/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/OCH/mogo-och-data/src/androidTest/java/com/mogo/och/data/ExampleInstrumentedTest.kt b/OCH/mogo-och-data/src/androidTest/java/com/mogo/och/data/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000000..673a5dcfd3
--- /dev/null
+++ b/OCH/mogo-och-data/src/androidTest/java/com/mogo/och/data/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package com.mogo.och.data
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("com.mogo.och.data.test", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/OCH/mogo-och-data/src/main/AndroidManifest.xml b/OCH/mogo-och-data/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..28c226d0dd
--- /dev/null
+++ b/OCH/mogo-och-data/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/bean/BusRoutesResult.java b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java
similarity index 72%
rename from OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/bean/BusRoutesResult.java
rename to OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java
index 4b652d30df..59b6a1cc87 100644
--- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/bean/BusRoutesResult.java
+++ b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusRoutesResult.java
@@ -1,4 +1,4 @@
-package com.mogo.och.bus.bean;
+package com.mogo.och.data.bean;
import java.util.List;
@@ -16,6 +16,8 @@ public class BusRoutesResult {
private int status;
private long taskTime; //线路时间班次
private int taskId;// 线路班次id
+ private String runningDur; //运营时间
+ private long writeVersion; //更新时间戳
//线路轨迹相关字段
public String csvFileUrl = ""; //轨迹文件下载的cos url,默认“”
@@ -30,6 +32,14 @@ public class BusRoutesResult {
public String txtFileMd5DPQP = ""; //轨迹文件md5,默认“”
public long contrailSaveTimeDPQP; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖
+ public String getRunningDur() {
+ return runningDur;
+ }
+
+ public void setRunningDur(String runningDur) {
+ this.runningDur = runningDur;
+ }
+
public int getLineId() {
return lineId;
}
@@ -54,16 +64,40 @@ public class BusRoutesResult {
return taskTime;
}
+ public long getWriteVersion() {
+ return writeVersion;
+ }
+
+ public void setWriteVersion(long writeVersion) {
+ this.writeVersion = writeVersion;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ BusRoutesResult that = (BusRoutesResult) o;
+ return lineId == that.lineId
+ && lineType == that.lineType
+ && status == that.status
+ && sites.equals(that.sites)
+ && name.equals(that.name)
+ && writeVersion == that.writeVersion
+ && runningDur.equals(that.runningDur);
+ }
+
@Override
public String toString() {
return "BusRoutesResult{" +
"sites=" + sites +
", lineId=" + lineId +
", name='" + name + '\'' +
- ", taskTime='" + taskTime + '\'' +
", lineType=" + lineType +
", description='" + description + '\'' +
", status=" + status +
+ ", taskTime=" + taskTime +
+ ", taskId=" + taskId +
+ ", writeVersion=" + writeVersion +
", csvFileUrl='" + csvFileUrl + '\'' +
", csvFileMd5='" + csvFileMd5 + '\'' +
", txtFileUrl='" + txtFileUrl + '\'' +
diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/bean/BusStationBean.java b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java
similarity index 98%
rename from OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/bean/BusStationBean.java
rename to OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java
index 02087308ad..143bb43db7 100644
--- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/bean/BusStationBean.java
+++ b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java
@@ -1,4 +1,4 @@
-package com.mogo.och.bus.bean;
+package com.mogo.och.data.bean;
/**
* 单个网约车小巴车站信息
diff --git a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusTransferData.kt b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusTransferData.kt
new file mode 100644
index 0000000000..eca93d7588
--- /dev/null
+++ b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusTransferData.kt
@@ -0,0 +1,9 @@
+package com.mogo.och.data.bean
+/**
+ * @author: wangmingjun
+ * @date: 2023/3/31
+ */
+data class BusTransferData (
+ var loginStatus: Int,
+ var routesResult: BusRoutesResult?,
+)
\ No newline at end of file
diff --git a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/manager/cache/CacheDataManager.kt b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/manager/cache/CacheDataManager.kt
new file mode 100644
index 0000000000..ee6df51dd7
--- /dev/null
+++ b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/manager/cache/CacheDataManager.kt
@@ -0,0 +1,28 @@
+package com.mogo.och.data.manager.cache
+
+import android.content.Context
+import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
+
+/**
+ * @author: wangmingjun
+ * @date: 2023/3/27
+ */
+class CacheDataManager private constructor(){
+ companion object{
+ val instance: CacheDataManager by lazy (mode = LazyThreadSafetyMode.SYNCHRONIZED) {
+ CacheDataManager()
+ }
+ }
+
+ fun putCacheData(context: Context, key:String, jsonStr: String){
+ SharedPrefsMgr.getInstance(context).putString(key,jsonStr)
+ }
+
+ fun getCacheData(context: Context, key: String) : String{
+ return SharedPrefsMgr.getInstance(context).getString(key)
+ }
+
+ fun clearCacheData(context: Context, key: String){
+ SharedPrefsMgr.getInstance(context).remove(key)
+ }
+}
\ No newline at end of file
diff --git a/OCH/mogo-och-data/src/test/java/com/mogo/och/data/ExampleUnitTest.kt b/OCH/mogo-och-data/src/test/java/com/mogo/och/data/ExampleUnitTest.kt
new file mode 100644
index 0000000000..294d55ae21
--- /dev/null
+++ b/OCH/mogo-och-data/src/test/java/com/mogo/och/data/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package com.mogo.och.data
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/OCH/mogo-och-shuttle-passenger/build.gradle b/OCH/mogo-och-shuttle-passenger/build.gradle
index 0818ec952e..8306815dfc 100644
--- a/OCH/mogo-och-shuttle-passenger/build.gradle
+++ b/OCH/mogo-och-shuttle-passenger/build.gradle
@@ -73,7 +73,7 @@ dependencies {
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.amapnavi3dmap
- implementation project(":OCH:mogo-och-common-module")
+ api project(":OCH:mogo-och-common-module")
compileOnly project(":libraries:mogo-map")
implementation project(':core:mogo-core-res')
testImplementation 'junit:junit:4.12'
diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java
index 565372b4a9..7d462c954d 100644
--- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java
+++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java
@@ -16,6 +16,7 @@ import com.mogo.och.bus.passenger.R;
import com.mogo.och.bus.passenger.bean.BusPassengerStation;
import com.mogo.och.common.module.utils.BlinkAnimationUtil;
import com.mogo.och.common.module.wigets.MarqueeTextView;
+import com.mogo.och.data.bean.BusStationBean;
import java.util.List;
@@ -30,9 +31,9 @@ import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STAT
public class BusPassengerLineStationsAdapter extends RecyclerView.Adapter {
private Context mContext;
- private List mStations;
+ private List mStations;
- public BusPassengerLineStationsAdapter(Context context, List stations){
+ public BusPassengerLineStationsAdapter(Context context, List stations){
this.mContext = context;
this.mStations = stations;
}
@@ -47,7 +48,7 @@ public class BusPassengerLineStationsAdapter extends RecyclerView.Adapter getSites() {
return sites;
@@ -46,6 +47,10 @@ public class BusPassengerRoutesResult {
return runningDur;
}
+ public long getWriteVersion() {
+ return writeVersion;
+ }
+
@Override
public String toString() {
return "BusPassengerRoutesResult{" +
@@ -55,6 +60,7 @@ public class BusPassengerRoutesResult {
", lineType=" + lineType +
", description='" + description + '\'' +
", status=" + status +
+ ", writeVersion="+ writeVersion+
", runningDur='" + runningDur + '\'' +
'}';
}
diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java
index b7d348a2b2..caf252a64e 100644
--- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java
+++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java
@@ -1,6 +1,6 @@
package com.mogo.och.bus.passenger.callback;
-import com.mogo.och.bus.passenger.bean.BusPassengerStation;
+import com.mogo.och.data.bean.BusStationBean;
import java.util.List;
@@ -10,7 +10,7 @@ import java.util.List;
*/
public interface IBusPassengerRouteLineInfoCallback {
void updateLineInfo(String lineName, String lineDurTime);
- void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived);
+ void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived);
void showNoTaskView();
void hideNoTaskView();
}
diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java
index 3e013fef4f..d2ddb289c9 100644
--- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java
+++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java
@@ -20,6 +20,24 @@ import com.mogo.commons.module.intent.IMogoIntentListener;
import com.mogo.commons.module.intent.IntentManager;
import com.mogo.commons.module.status.IMogoStatusChangedListener;
import com.mogo.commons.module.status.MogoStatusManager;
+import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener;
+import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager;
+import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager;
+import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
+import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant;
+import com.mogo.eagle.core.utilcode.util.GsonUtils;
+import com.mogo.eagle.core.utilcode.util.ToastUtils;
+import com.mogo.och.bus.passenger.R;
+import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse;
+import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse;
+import com.mogo.och.common.module.bean.dpmsg.AppConnectMsg;
+import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg;
+import com.mogo.och.common.module.bean.dpmsg.DPMsgType;
+import com.mogo.och.common.module.bean.dpmsg.LoginCacheStatus;
+import com.mogo.och.common.module.bean.dpmsg.TaskDetailsMsg;
+import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager;
+import com.mogo.och.common.module.biz.constant.OchCommonConst;
+import com.mogo.och.common.module.utils.DateTimeUtil;
import com.mogo.commons.module.status.StatusDescriptor;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
@@ -36,12 +54,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.util.CoordinateUtils;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
-import com.mogo.eagle.core.utilcode.util.ToastUtils;
-import com.mogo.och.bus.passenger.R;
-import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse;
-import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse;
-import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResult;
-import com.mogo.och.bus.passenger.bean.BusPassengerStation;
import com.mogo.och.bus.passenger.callback.IBusPassegerDriverStatusCallback;
import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback;
import com.mogo.och.bus.passenger.callback.IBusPassengerAutopilotPlanningCallback;
@@ -53,6 +65,9 @@ import com.mogo.och.bus.passenger.network.BusPassengerServiceManager;
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback;
import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
+import com.mogo.och.data.bean.BusRoutesResult;
+import com.mogo.och.data.bean.BusStationBean;
+import com.mogo.och.data.bean.BusTransferData;
import org.jetbrains.annotations.NotNull;
@@ -91,9 +106,9 @@ public class BusPassengerModel {
private MogoLocation mLocation = null;
- private BusPassengerRoutesResult routesResult = null;
+ private BusRoutesResult routesResult = null;
- List mStations = new ArrayList<>();
+ List mStations = new ArrayList<>();
private int mNextStationIndex = 0;// 要到达站的index
private List mTwoStationsRouts = new ArrayList<>();
private int mPreRouteIndex = 0;
@@ -117,11 +132,26 @@ public class BusPassengerModel {
public void init( Context context ) {
mContext = context.getApplicationContext();
initListeners();
- // TODO: 2022/3/31
queryDriverOperationStatus();
+ queryDriverByLocalDriver();
startOrStopOrderLoop(true);
}
+ private void queryDriverByLocalDriver() {
+ //本地去请求司机端
+ TaskDetailsMsg msg = new TaskDetailsMsg("task");
+
+ sendMsgToServer(GsonUtils.toJson(msg));
+ }
+
+ private void queryLoginStatusByLocal() {
+ //本地去请求司机端
+ LoginCacheStatus msg = new LoginCacheStatus(0,
+ DPMsgType.TYPE_LOGIN_STATUS.getType());
+
+ sendMsgToServer(GsonUtils.toJson(msg));
+ }
+
public void setDriverStatusCallback(IBusPassegerDriverStatusCallback callback){
this.mDriverStatusCallback = callback;
}
@@ -134,6 +164,13 @@ public class BusPassengerModel {
handler.sendEmptyMessageDelayed( MSG_QUERY_BUS_P_STATION, QUERY_BUS_P_STATION_DELAY );
}
+ private void sendMsgToServer(String msg){
+ CallerTelematicManager.INSTANCE.sendMsgToServer(
+ OchCommonConst.BUSINESS_STRING,
+ msg.getBytes()
+ );
+ }
+
private void queryDriverOperationStatus() {
BusPassengerServiceManager.queryDriverOperationStatus(mContext
, new OchCommonServiceCallback() {
@@ -154,7 +191,6 @@ public class BusPassengerModel {
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
}
- queryDriverOperationDelay();
}
@Override
@@ -172,23 +208,31 @@ public class BusPassengerModel {
public void onSuccess(BusPassengerRoutesResponse data) {
if ( data == null || data.getResult() == null) {
CallerLogger.INSTANCE.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = null");
- if (routesResult != null) {
- routesResult = null;
- mNextStationIndex = 0;
- startOrStopCalculateRouteInfo(false);
- if (mRouteLineInfoCallback != null){
- mRouteLineInfoCallback.showNoTaskView();
- }
- }
-
+ clearLocalRouteResult();
return;
}
if (routesResult != null && data.getResult().equals(routesResult)){
CallerLogger.INSTANCE.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = not update");
return;
}
- routesResult = data.getResult();
- updatePassengerRouteInfo(data.getResult());
+
+ if (routesResult != null &&
+ routesResult.getWriteVersion() < data.getResult().getWriteVersion()){
+ routesResult = data.getResult();
+ }
+
+ if (routesResult == null){
+ routesResult = data.getResult();
+ }
+
+ updatePassengerRouteInfo(routesResult);
+ }
+
+ @Override
+ public void onError() {
+ CallerLogger.INSTANCE.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = onError ="
+ + ", sn = " +BusPassengerServiceManager.INSTANCE.getDriverAppSn());
+ queryDriverByLocalDriver();
}
@Override
@@ -207,20 +251,37 @@ public class BusPassengerModel {
startOrStopCalculateRouteInfo(false);
return;
}
+ queryDriverByLocalDriver();
}
});
}
- private void updatePassengerRouteInfo(BusPassengerRoutesResult result) {
+ private void clearLocalRouteResult() {
+ if (routesResult != null) {
+ routesResult = null;
+ }
+ mNextStationIndex = 0;
+ startOrStopCalculateRouteInfo(false);
+
+ if (mRouteLineInfoCallback != null){
+ mRouteLineInfoCallback.showNoTaskView();
+ }
+ }
+
+ private void updatePassengerRouteInfo(BusRoutesResult result) {
+ if (result == null){
+ clearLocalRouteResult();
+ return;
+ }
if (mRouteLineInfoCallback != null){
mRouteLineInfoCallback.updateLineInfo(result.getName(),result.getRunningDur());
mRouteLineInfoCallback.hideNoTaskView();
if (result.getSites() != null){
- List stations = result.getSites();
+ List stations = result.getSites();
mStations.clear();
mStations.addAll(stations);
for (int i = 0; i< stations.size(); i++){
- BusPassengerStation station = stations.get(i);
+ BusStationBean station = stations.get(i);
if (station.getDrivingStatus() == STATION_STATUS_STOPPED && station.isLeaving() && i+1 < stations.size()){
mRouteLineInfoCallback.updateStationsInfo(stations,i+1,false);
if(mNextStationIndex != i+1){
@@ -283,6 +344,9 @@ public class BusPassengerModel {
//2021.11.1 自动驾驶路线规划接口
CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG,moGoAutopilotPlanningListener);
+ //监听司机端消息
+ CallerTelematicListenerManager.INSTANCE.addListener(TAG,mReceivedMsgListener);
+
AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext);
}
@@ -299,8 +363,48 @@ public class BusPassengerModel {
CallerPlanningRottingListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener);
AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors();
+
+ CallerTelematicListenerManager.INSTANCE.removeListener(TAG);
+ CallerTelematicListenerManager.INSTANCE.removeListener(TAG);
}
+ private final IReceivedMsgListener mReceivedMsgListener = new IReceivedMsgListener() {
+ @Override
+ public void onReceivedMsg(int type, @NonNull byte[] byteArray) {
+ if (OchCommonConst.BUSINESS_STRING == type) {
+
+ BaseDPMsg baseMsg = GsonUtils.fromJson(new String(byteArray), BaseDPMsg.class);
+ Logger.d(SceneConstant.M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(baseMsg));
+
+ if (baseMsg != null && baseMsg.getType() == DPMsgType.TYPE_COMMON.getType()) {
+ AppConnectMsg msg = GsonUtils.fromJson(new String(byteArray), AppConnectMsg.class);
+ if (msg != null && msg.isViewShow()) { //消息盒子显示内容
+ OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox(
+ DateTimeUtil.getCurrentTimeStamp(), msg.getMsg(),
+ OCHSocketMessageManager.OPERATION_SYSTEM);
+ }
+ } else if (baseMsg != null && baseMsg.getType() == DPMsgType.TYPE_TASK_DETAILS.getType()) {
+ TaskDetailsMsg msg = GsonUtils.fromJson(new String(byteArray), TaskDetailsMsg.class);
+
+ Logger.d(SceneConstant.M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(msg));
+ if (msg == null || msg.getMsg().isEmpty()) {
+ clearLocalRouteResult();
+ return;
+ }
+ BusTransferData result = GsonUtils.fromJson(msg.getMsg(), BusTransferData.class);
+ if (msg != null && mDriverStatusCallback != null) {
+ mDriverStatusCallback.changeOperationStatus(result.getLoginStatus() == 1);
+ }
+ if (result != null) { //已司机端传来的为准
+ routesResult = result.getRoutesResult();
+ updatePassengerRouteInfo(routesResult);
+ }
+ }
+ }
+ }
+ };
+
+
//监听网络变化,避免启动机器时无网导致无法更新订单信息
private final IMogoIntentListener mNetWorkIntentListener = new IMogoIntentListener() {
@Override
@@ -437,8 +541,8 @@ public class BusPassengerModel {
if (mStations.size() > 1){ //两个站点及以上要计算两个站点间的轨迹路线
if (mNextStationIndex <= mStations.size()-1 && mNextStationIndex - 1 >=0){
mTwoStationsRouts.clear();
- BusPassengerStation stationNext = mStations.get(mNextStationIndex);
- BusPassengerStation stationCur = mStations.get(mNextStationIndex - 1);
+ BusStationBean stationNext = mStations.get(mNextStationIndex);
+ BusStationBean stationCur = mStations.get(mNextStationIndex - 1);
//当前站在轨迹中对应的点
int currentRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew(0
,mRoutePoints
@@ -487,7 +591,7 @@ public class BusPassengerModel {
float lastSumLength = 0;
if (lastPoints.size() == 1){ //只是最后一个点,计算当前位置和最后一个点的距离
if (mNextStationIndex <= mStations.size()-1 && mNextStationIndex >= 0){
- BusPassengerStation stationNext = mStations.get(mNextStationIndex);
+ BusStationBean stationNext = mStations.get(mNextStationIndex);
lastSumLength = CoordinateUtils.calculateLineDistance(
stationNext.getGcjLon(), stationNext.getGcjLat(),
mLocation.getLongitude(), mLocation.getLatitude());
diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt
index 81561349fc..5bd843b708 100644
--- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt
+++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt
@@ -4,8 +4,6 @@ import android.content.Context
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken
import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
-import com.mogo.eagle.core.data.config.FunctionBuildConfig
-import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest
import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse
import com.mogo.eagle.core.network.MoGoRetrofitFactory
diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java
index 0373dbc61b..a40cebf641 100644
--- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java
+++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java
@@ -22,6 +22,7 @@ import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback
import com.mogo.och.bus.passenger.callback.IBusPassengerRouteLineInfoCallback;
import com.mogo.och.bus.passenger.model.BusPassengerModel;
import com.mogo.och.bus.passenger.ui.BusPassengerRouteFragment;
+import com.mogo.och.data.bean.BusStationBean;
import java.util.List;
@@ -131,7 +132,7 @@ public class BaseBusPassengerPresenter extends Presenter stations,int currentStationIndex,boolean isArrived) {
+ public void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived) {
runOnUIThread(() -> mView.updateStationsInfo(stations,currentStationIndex, isArrived));
}
diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java
index 9d7393f968..2a7875dc40 100644
--- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java
+++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java
@@ -28,6 +28,7 @@ import com.mogo.och.bus.passenger.presenter.BaseBusPassengerPresenter;
import com.mogo.och.bus.passenger.ui.layoutmanager.CenterLayoutManager;
import com.mogo.och.bus.passenger.utils.BPRouteDataTestUtils;
import com.mogo.och.common.module.wigets.MarqueeTextView;
+import com.mogo.och.data.bean.BusStationBean;
import java.util.ArrayList;
import java.util.List;
@@ -42,7 +43,7 @@ public class BusPassengerRouteFragment extends
private final String TAG = "BusPassengerRouteFragment";
- private final List mStationsList = new ArrayList<>();
+ private final List mStationsList = new ArrayList<>();
private TextView mSpeedTv;
private ConstraintLayout mNoLineInfoView;
@@ -236,7 +237,7 @@ public class BusPassengerRouteFragment extends
* @param currentStationIndex
* @param isArrived 是否到站并离开,true 到达当前站 currentStationIndex 未离开, false 正在前往此站 currentStationIndex
*/
- public void updateStationsInfo(List stations, int currentStationIndex,boolean isArrived) {
+ public void updateStationsInfo(List stations, int currentStationIndex, boolean isArrived) {
updateArrivedStation(stations.get(currentStationIndex).getName(),currentStationIndex,isArrived);
mStationsList.clear();
mStationsList.addAll(stations);
@@ -257,7 +258,7 @@ public class BusPassengerRouteFragment extends
}
}
- private void updateWayPointList(List stations,int currentStationIndex) {
+ private void updateWayPointList(List stations,int currentStationIndex) {
List mLineStationsList = new ArrayList<>();
for (int i = 0; i< stations.size(); i++) {//站点集合
// LatLng latLng = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(getContext()
diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/bean/PM2RoutesResponse.java b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/bean/PM2RoutesResponse.java
index 207b2d7e7d..32306a33c1 100644
--- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/bean/PM2RoutesResponse.java
+++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/bean/PM2RoutesResponse.java
@@ -1,6 +1,7 @@
package com.mogo.och.bus.passenger.bean;
import com.mogo.eagle.core.data.BaseData;
+import com.mogo.och.data.bean.BusRoutesResult;
/**
* 网约车小巴路线接口请求响应结果 返回的是对应司机屏的线路信息
@@ -8,13 +9,13 @@ import com.mogo.eagle.core.data.BaseData;
* @author tongchenfei
*/
public class PM2RoutesResponse extends BaseData {
- private PM2RoutesResult data;
+ private BusRoutesResult data;
- public PM2RoutesResult getResult() {
+ public BusRoutesResult getResult() {
return data;
}
- public void setResult(PM2RoutesResult data) {
+ public void setResult(BusRoutesResult data) {
this.data = data;
}
diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/callback/DrivingInfoCallback.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/callback/DrivingInfoCallback.kt
index 452ffb685a..1b9c77b224 100644
--- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/callback/DrivingInfoCallback.kt
+++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/callback/DrivingInfoCallback.kt
@@ -1,6 +1,6 @@
package com.mogo.och.bus.passenger.callback
-import com.mogo.och.bus.passenger.bean.PM2Station
+import com.mogo.och.data.bean.BusStationBean
/**
* @author: wangmingjun
@@ -13,6 +13,6 @@ interface DrivingInfoCallback {
fun updateRemainMT(meters : Long, timeInSecond : Long) // 米,秒
fun changeOperationStatus(loginStatus : Boolean)
fun showNoTaskView(isTrue : Boolean)
- fun updateLineStations(stations: MutableList)
- fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean)
+ fun updateLineStations(stations: MutableList)
+ fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean)
}
\ No newline at end of file
diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2ADASModel.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2ADASModel.kt
index a21f2fd938..87c68dda4f 100644
--- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2ADASModel.kt
+++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2ADASModel.kt
@@ -1,9 +1,8 @@
package com.mogo.och.bus.passenger.model
import android.content.Context
-import com.amap.api.maps.model.LatLng
-import com.mogo.och.bus.passenger.bean.PM2Station
import com.mogo.och.bus.passenger.callback.ADASCallback
+import com.mogo.och.data.bean.BusStationBean
/**
* @author: wangmingjun
@@ -29,7 +28,7 @@ class PM2ADASModel private constructor() {
this.mAdasCallback = adasCallback
}
- fun updateHDMapStations(stations: MutableList){
+ fun updateHDMapStations(stations: MutableList){
var stationsList = mutableListOf>()
for (i in stations.indices){
var listLatLng = mutableListOf() // 0: long 1:lat
diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt
index 60f012ba68..7da2122640 100644
--- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt
+++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt
@@ -23,6 +23,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
+import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.sendMsgToServer
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
@@ -33,18 +34,19 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.bean.PM2OperationStatusResponse
import com.mogo.och.bus.passenger.bean.PM2RoutesResponse
-import com.mogo.och.bus.passenger.bean.PM2RoutesResult
-import com.mogo.och.bus.passenger.bean.PM2Station
import com.mogo.och.bus.passenger.callback.AutoPilotStatusCallback
import com.mogo.och.bus.passenger.callback.DrivingInfoCallback
import com.mogo.och.bus.passenger.constant.BusPassengerConst
import com.mogo.och.bus.passenger.network.PM2ModelLoopManager
-import com.mogo.och.common.module.bean.AppConnectMsg
-import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager
-import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
+import com.mogo.och.common.module.bean.dpmsg.*
+import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.pushAppOperationalMsgBox
import com.mogo.och.common.module.biz.constant.OchCommonConst
+import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
import com.mogo.och.common.module.utils.DateTimeUtil
+import com.mogo.och.data.bean.BusRoutesResult
+import com.mogo.och.data.bean.BusStationBean
+import com.mogo.och.data.bean.BusTransferData
import mogo.telematics.pad.MessagePad
import kotlin.math.abs
@@ -58,11 +60,11 @@ class PM2DrivingModel private constructor() {
private var mLocation: MogoLocation? = null
private var mRoutePoints = mutableListOf()
- private var routesResult: PM2RoutesResult? = null
+ private var routesResult: BusRoutesResult? = null
private var mCurrentAutoStatus = -1
- var mStations = mutableListOf()
+ var mStations = mutableListOf()
private var mNextStationIndex = 0 // A-B要到达站的index
private var isGoingToNextStation = false //是否前往下一站过程中
@@ -94,11 +96,17 @@ class PM2DrivingModel private constructor() {
fun init(context : Context){
mContext = context
initListener()
- // TODO: 2022/3/31
+ queryDriverByLocalDriver()
queryDriverOperationStatus()
startOrStopOrderLoop(true)
}
+ private fun queryDriverByLocalDriver() {
+ //本地去请求司机端
+ val msg = TaskDetailsMsg("")
+ sendMsgToServer(GsonUtils.toJson(msg))
+ }
+
private fun initListener() {
//自动驾驶状态监听
CallerAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener)
@@ -118,6 +126,13 @@ class PM2DrivingModel private constructor() {
}
+ private fun sendMsgToServer(msg: String) {
+ sendMsgToServer(
+ OchCommonConst.BUSINESS_STRING,
+ GsonUtils.toJson(msg).toByteArray()
+ )
+ }
+
fun releaseListener(){
//自动驾驶状态监听
CallerAutoPilotStatusListenerManager.removeListener(TAG)
@@ -152,14 +167,43 @@ class PM2DrivingModel private constructor() {
@RequiresApi(Build.VERSION_CODES.O)
override fun onReceivedMsg(type: Int, byteArray: ByteArray) {//接收司机端发来的信息
if (OchCommonConst.BUSINESS_STRING == type){
- val msg = GsonUtils.fromJson(String(byteArray),AppConnectMsg::class.java) as AppConnectMsg
- Logger.d(SceneConstant.M_BUS_P+TAG,"onReceivedMsg = "+GsonUtils.toJson(msg))
- if (msg.isPlay){ //播报
- speakTTS(msg.msg)
- }
- if (msg.isViewShow){ //消息盒子显示内容
- OCHSocketMessageManager.pushAppOperationalMsgBox(
- DateTimeUtil.getCurrentTimeStamp(),msg.msg)
+ val baseMsg = GsonUtils.fromJson(String(byteArray), BaseDPMsg::class.java)
+ Logger.d(
+ SceneConstant.M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(baseMsg)
+ )
+
+ if (baseMsg != null && baseMsg.type == DPMsgType.TYPE_COMMON.type) {
+ val msg = GsonUtils.fromJson(String(byteArray), AppConnectMsg::class.java)
+
+ if (msg != null && msg.isPlay){ //播报
+ speakTTS(msg.msg)
+ }
+
+ if (msg != null && msg.isViewShow) { //消息盒子显示内容
+ pushAppOperationalMsgBox(
+ DateTimeUtil.getCurrentTimeStamp(),msg.msg)
+ }
+ }else if (baseMsg != null && baseMsg.type == DPMsgType.TYPE_TASK_DETAILS.type) {
+ val msg = GsonUtils.fromJson(String(byteArray), TaskDetailsMsg::class.java)
+ Logger.d(
+ SceneConstant.M_BUS_P + TAG, "onReceivedMsg = " + GsonUtils.toJson(msg)
+ )
+ if (msg == null || msg.msg.isEmpty()) {
+ updateLocalOrder()
+ return
+ }
+ val result = GsonUtils.fromJson(msg.msg, BusTransferData::class.java)
+ mDrivingInfoCallback?.changeOperationStatus(result.loginStatus == 1)
+ if (result != null && result.routesResult == null){
+ updateLocalOrder()
+ }
+
+ if (routesResult == null ||
+ (result != null && result.routesResult.writeVersion > routesResult!!.writeVersion)) {
+ routesResult = result.routesResult
+ updatePassengerRouteInfo(routesResult!!)
+ }
+
}
}
}
@@ -288,7 +332,8 @@ class PM2DrivingModel private constructor() {
} else {
ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip))
}
- queryDriverOperationDelay()
+// queryDriverOperationDelay()
+ queryDriverByLocalDriver()
}
override fun onFail(code: Int, msg: String) {
@@ -319,10 +364,27 @@ class PM2DrivingModel private constructor() {
return
}
- routesResult = data.result
+ if (routesResult != null &&
+ routesResult!!.writeVersion < data.result.writeVersion
+ ) {
+ routesResult = data.result
+ }
+
+ if (routesResult == null) {
+ routesResult = data.result
+ }
updatePassengerRouteInfo(data.result)
}
+ fun onError() {
+ CallerLogger.d(
+ SceneConstant.Companion.M_BUS_P + TAG,
+ "queryDriverSiteByCoordinate = onError ="
+ + ", sn = " + BusPassengerServiceManager.driverAppSn
+ )
+ queryDriverByLocalDriver()
+ }
+
override fun onFail(code: Int, msg: String?) {
d(SceneConstant.M_BUS_P+TAG, "queryDriverSiteByCoordinate = %s", msg)
if (code == 1003){
@@ -351,19 +413,25 @@ class PM2DrivingModel private constructor() {
mDrivingInfoCallback?.showNoTaskView(true)
}
- private fun updatePassengerRouteInfo(result: PM2RoutesResult) {
+ private fun updatePassengerRouteInfo(result: BusRoutesResult) {
+
+ if (result == null) {
+ clearLocalRouteResult()
+ return
+ }
+
mDrivingInfoCallback?.updateLine(result.name, result.runningDur)
if (result.sites != null) {
mDrivingInfoCallback?.showNoTaskView(false)
- val stations: List = result.sites
+ val stations: List = result.sites
mStations.clear()
mStations.addAll(stations)
mDrivingInfoCallback?.updateLineStations(mStations)
for (i in stations.indices) {
- val station: PM2Station = stations[i]
+ val station: BusStationBean = stations[i]
if (station.drivingStatus == BusPassengerConst.STATION_STATUS_STOPPED
&& station.isLeaving && i + 1 < stations.size) {
- mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i + 1, false)
+ mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i + 1, false)
if (mNextStationIndex != i + 1) {
d(SceneConstant.M_BUS_P+TAG,"och-rotting--start ")
mTwoStationsRouts.clear()
@@ -376,7 +444,7 @@ class PM2DrivingModel private constructor() {
mPreRouteIndex = 0
isGoingToNextStation = false
startOrStopCalculateRouteInfo(false)
- mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i, true)
+ mDrivingInfoCallback?.updateStationsInfo(stations as MutableList, i, true)
return
}
}
@@ -431,7 +499,7 @@ class PM2DrivingModel private constructor() {
var lastSumLength = 0f
lastSumLength = if (lastPoints.size == 1) { //只是最后一个点,计算当前位置和最后一个点的距离
if (mNextStationIndex <= mStations.size - 1 && mNextStationIndex >= 0) {
- val stationNext: PM2Station = mStations[mNextStationIndex]
+ val stationNext: BusStationBean = mStations[mNextStationIndex]
CoordinateUtils.calculateLineDistance(
stationNext.gcjLon, stationNext.gcjLat,
mLocation!!.longitude, mLocation!!.latitude
@@ -462,8 +530,8 @@ class PM2DrivingModel private constructor() {
if (mStations.size > 1) { //两个站点及以上要计算两个站点间的轨迹路线
if (mNextStationIndex <= mStations.size - 1 && mNextStationIndex - 1 >= 0) {
mTwoStationsRouts.clear()
- val stationNext: PM2Station = mStations[mNextStationIndex]
- val stationCur: PM2Station = mStations[mNextStationIndex - 1]
+ val stationNext: BusStationBean = mStations[mNextStationIndex]
+ val stationCur: BusStationBean = mStations[mNextStationIndex - 1]
//当前站在轨迹中对应的点
val currentRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew(
0, mRoutePoints, stationCur.gcjLon, stationCur.gcjLat
diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2DrivingPresenter.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2DrivingPresenter.kt
index 6b1893ecc6..a6d4f0add9 100644
--- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2DrivingPresenter.kt
+++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2DrivingPresenter.kt
@@ -12,6 +12,7 @@ import com.mogo.och.bus.passenger.callback.DrivingInfoCallback
import com.mogo.och.bus.passenger.model.PM2ADASModel
import com.mogo.och.bus.passenger.model.PM2DrivingModel
import com.mogo.och.bus.passenger.ui.PM2DrivingInfoFragment
+import com.mogo.och.data.bean.BusStationBean
class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) :
Presenter(view), DrivingInfoCallback, AutoPilotStatusCallback {
@@ -81,7 +82,7 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) :
}
}
- override fun updateLineStations(stations: MutableList) {
+ override fun updateLineStations(stations: MutableList) {
val stationsList = mutableListOf()
val stationsListPass = mutableListOf()
@@ -109,7 +110,7 @@ class PM2DrivingPresenter(view: PM2DrivingInfoFragment?) :
PM2ADASModel.INSTANCE.updateHDMapStations(stations)
}
- override fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean) {
+ override fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean) {
ThreadUtils.runOnUiThread {
mView?.updateStationsInfo(stations,i,isArrived)
}
diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2DrivingInfoFragment.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2DrivingInfoFragment.kt
index fa8d0ca009..105f32eba5 100644
--- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2DrivingInfoFragment.kt
+++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2DrivingInfoFragment.kt
@@ -14,6 +14,7 @@ import com.mogo.och.bus.passenger.bean.PM2Station
import com.mogo.och.bus.passenger.presenter.PM2DrivingPresenter
import com.mogo.och.common.module.utils.DateTimeUtil.*
import com.mogo.och.common.module.utils.NumberFormatUtil
+import com.mogo.och.data.bean.BusStationBean
import kotlinx.android.synthetic.m2.p_m2_driving_info_fragment.*
import me.jessyan.autosize.utils.AutoSizeUtils
import kotlin.math.ceil
@@ -195,7 +196,7 @@ class PM2DrivingInfoFragment :
}
}
- fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean){
+ fun updateStationsInfo(stations: MutableList, i: Int, isArrived: Boolean){
if (stations.size == 0) return
if (0<= i && i mMogoOnMessageListener =
new IMogoOnMessageListener() {
@Override
@@ -330,6 +356,8 @@ public class OrderModel {
OCHSocketMessageManager.msgWriteOffPassengerType);
AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors();
+ //监听乘客屏发来的消息
+ CallerTelematicListenerManager.INSTANCE.removeListener(TAG);
}
private Object readResolve() {
@@ -402,6 +430,45 @@ public class OrderModel {
}
}
+ public void queryBusCacheRoutes(){
+
+ String loginStr = CacheDataManager.Companion.getInstance().getCacheData(
+ mContext, BusCacheKey.BUS_LOGIN_STATUS_CACHE);
+ if (!loginStr.isEmpty()){
+ LoginCacheStatus status = GsonUtils.fromJson(loginStr,LoginCacheStatus.class);
+ LoginStatusManager.setLoginStatus(status.getLoginStatus());
+ if (status.getUpdateTime() > DateTimeUtil.getTodayStartTime() &&
+ status.getLoginStatus() == 1){//登陆
+
+ String cacheData = CacheDataManager.Companion.getInstance().getCacheData(mContext,
+ BusCacheKey.BUS_LINE_CACHE);
+
+ if (cacheData == null || cacheData.isEmpty()){
+ queryBusRoutes();
+ }else {
+ BusTransferData data = GsonUtils.fromJson(cacheData,BusTransferData.class);
+ getCacheRouteSuccess(data.getRoutesResult());
+ }
+ }else{ // 未登陆
+ CacheDataManager.Companion.getInstance().clearCacheData(mContext,BusCacheKey.BUS_LOGIN_STATUS_CACHE);
+ sendTaskDetailsToClients();
+ }
+ }
+ }
+
+ private void getCacheRouteSuccess(BusRoutesResult data){
+ if (data == null || data.getSites() == null
+ || data.getSites().isEmpty()
+ || data.getWriteVersion() < DateTimeUtil.getTodayStartTime()) {
+ //当为空时,显示无绑定路线图
+ queryBusRoutes();
+ CacheDataManager.Companion.getInstance().clearCacheData(mContext, BusCacheKey.BUS_LINE_CACHE);
+ return;
+ }
+ CallerLogger.INSTANCE.d(M_BUS + TAG, "获取到小巴路线数据: " + GsonUtils.toJson(data));
+ updateBusStatus(data);
+ }
+
/**
* 查询小巴路线
*/
@@ -414,7 +481,7 @@ public class OrderModel {
|| data.getResult() == null
|| data.getResult().getSites() == null
|| data.getResult().getSites().isEmpty()) {
- //当为空时,显示无绑定路线图
+// //当为空时,显示无绑定路线图
CallerLogger.INSTANCE.d(M_BUS + TAG, "获取到小巴路线数据:空 ");
if (refreshBusStationsCallback != null) {
refreshBusStationsCallback.updateEmptyUi();
@@ -423,10 +490,15 @@ public class OrderModel {
closeBeautificationMode();
clearStartAutopilotTag();
removeTipRunnables();
+ CacheDataManager.Companion.getInstance().clearCacheData(mContext,BusCacheKey.BUS_LINE_CACHE);
return;
}
- CallerLogger.INSTANCE.d(M_BUS + TAG, "获取到小巴路线数据: " + data);
- updateBusStatus(data.getResult());
+
+ if (busRoutesResult == null || busRoutesResult.getWriteVersion() < data.getResult().getWriteVersion()){
+ CallerLogger.INSTANCE.d(M_BUS + TAG, "更新小巴路线数据: " + data);
+ updateBusStatus(data.getResult());
+ pushCacheTransferData(data.getResult());
+ }
}
@@ -559,6 +631,11 @@ public class OrderModel {
, ""
, false);
}
+
+ CacheDataManager.Companion.getInstance().clearCacheData(mContext, BusCacheKey.BUS_LINE_CACHE);
+ busRoutesResult = null;
+
+ sendTaskDetailsToClients();
}
/**
@@ -587,6 +664,30 @@ public class OrderModel {
, nextStation
, isLastStop);
}
+
+ reBuildCacheRouteData(leaveIndex,BusConst.STATION_STATUS_STOPPED,true);
+ }
+
+ private void reBuildCacheRouteData(int currentIndex, int currentDrivingStatus, boolean isLeaving) {
+ if (busRoutesResult != null){
+ busRoutesResult.setWriteVersion(DateTimeUtil.getCurrentTimeStamp());
+ List sites = busRoutesResult.getSites();
+ BusStationBean bean = sites.get(currentIndex);
+ bean.setDrivingStatus(currentDrivingStatus);
+ bean.setLeaving(isLeaving);
+ sites.set(currentIndex,bean);
+ if (currentDrivingStatus == STATION_STATUS_STOPPED && !isLeaving){
+ BusStationBean beanPre = sites.get(currentIndex -1);
+ beanPre.setDrivingStatus(BusConst.STATION_STATUS_LEAVING);
+ beanPre.setLeaving(false);
+ sites.set(currentIndex -1,beanPre);
+ }
+ busRoutesResult.setSite(sites);
+
+ pushCacheTransferData(busRoutesResult);
+
+ updateBusStatus(busRoutesResult);
+ }
}
private void onStartAutopilot(int leaveIndex) {
@@ -649,6 +750,11 @@ public class OrderModel {
String departureStopName = stationList.get(backgroundCurrentStationIndex).getName();
CallerLogger.INSTANCE.d(M_BUS + TAG, "arriveSiteStation-currentStationIndex = " + arrivedStationIndex);
+ isArrivedStation = true;
+ isGoingToNextStation = false;
+ arriveStationSuccess(arrivedStationIndex, departureStopName,
+ arriveStation,arriveStationKr);
+
OrderServiceManager.arriveSiteStation(mContext,
stationList.get(arrivedStationIndex).getSeq(),
stationList.get(arrivedStationIndex).getSiteId(),
@@ -657,36 +763,35 @@ public class OrderModel {
@Override
public void onSuccess(BaseData o) {
CallerLogger.INSTANCE.d(M_BUS + TAG, "行程日志-arriveSiteStation success");
- if (o != null && o.code == 0){
- queryBusRoutes();
- isArrivedStation = true;
- isGoingToNextStation = false;
- arriveStationSuccess(arrivedStationIndex, departureStopName,
- arriveStation,arriveStationKr);
- }
+// if (o != null && o.code == 0){
+// queryBusRoutes();
+// isArrivedStation = true;
+// isGoingToNextStation = false;
+// arriveStationSuccess(arrivedStationIndex, departureStopName, arriveStation);
+// }
//5s轮询核销乘客
// startOrStopQueryPassengerWriteOff(true);
}
@Override
public void onError() {
- if (!NetworkUtils.isConnected(mContext)) {
- ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
- } else {
- ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
- }
+// if (!NetworkUtils.isConnected(mContext)) {
+// ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+// } else {
+// ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+// }
}
@Override
public void onFail(int code, String failMsg) {
- if (ToastUtilsOch.isCustomFastClick(5000)) {
- if (!NetworkUtils.isConnected(mContext)) {
- ToastUtils.showShort("网络异常,请稍后重试");
- } else {
- if (isArrivedStation) return;
- ToastUtils.showShort(failMsg);
- }
- }
+// if (ToastUtilsOch.isCustomFastClick(5000)) {
+// if (!NetworkUtils.isConnected(mContext)) {
+// ToastUtils.showShort("网络异常,请稍后重试");
+// } else {
+// if (isArrivedStation) return;
+// ToastUtils.showShort(failMsg);
+// }
+// }
}
});
}
@@ -709,6 +814,24 @@ public class OrderModel {
VoiceManager.INSTANCE.arrivedStation(arriveStation,arriveStationKr);
sendArrivedStationToClient(arriveStation);
+
+ reBuildCacheRouteData(arrivedStationIndex, BusConst.STATION_STATUS_STOPPED,false);
+ }
+
+ private void sendTaskDetailsToClients() {
+
+ BusTransferData data = new BusTransferData(LoginStatusManager.isLogin() ? 1:0,busRoutesResult);
+ TaskDetailsMsg msg = new TaskDetailsMsg(GsonUtils.toJson(data));
+ CallerLogger.INSTANCE.d(M_BUS + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg));
+ CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING,
+ GsonUtils.toJson(msg).getBytes());
+ }
+
+ private void pushCacheTransferData(BusRoutesResult result) {
+ BusTransferData data = new BusTransferData(LoginStatusManager.isLogin() ? 1:0,result);
+ CacheDataManager.Companion.getInstance().putCacheData(mContext,
+ BusCacheKey.BUS_LINE_CACHE,
+ GsonUtils.toJson(data));
}
private void sendArrivedStationToClient(String arriveStation) {
@@ -720,28 +843,28 @@ public class OrderModel {
}
private void sendStartStationToClient(String nextStation) {
- AppConnectMsg arrivedMsg = new AppConnectMsg(false,true,String.format(mContext
+ AppConnectMsg startMsg = new AppConnectMsg(false,true,String.format(mContext
.getString(R.string.bus_leave_station_tip),
nextStation));
- UiThreadHandler.postDelayed(()->{
- CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING,
- GsonUtils.toJson(arrivedMsg).getBytes());
- },DELAY_10S);
+
+ UiThreadHandler.postDelayed(()->
+ CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING,
+ GsonUtils.toJson(startMsg).getBytes()),DELAY_10S);
}
private void sendEndTaskToClient() {
- AppConnectMsg arrivedMsg = new AppConnectMsg(false,true,mContext
+ AppConnectMsg endMsg = new AppConnectMsg(false,true,mContext
.getString(R.string.bus_end_task_tip));
CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING,
- GsonUtils.toJson(arrivedMsg).getBytes());
+ GsonUtils.toJson(endMsg).getBytes());
}
public void sendWriteOffNumToClient(String msg){
- AppConnectMsg arrivedMsg = new AppConnectMsg(false,true,msg);
+ AppConnectMsg passengerMsg = new AppConnectMsg(false,true,msg);
CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING,
- GsonUtils.toJson(arrivedMsg).getBytes());
+ GsonUtils.toJson(passengerMsg).getBytes());
}
/**
@@ -758,6 +881,12 @@ public class OrderModel {
final String currentStationName = stationList.get(backgroundCurrentStationIndex).getName();
String finalNextStationName = nextStationName;
String finalNextStationNameKr = nextStationNameKr;
+
+ isArrivedStation = false;
+ CallerLogger.INSTANCE.d(M_BUS + TAG, "行程日志-离站成功开往下一站====");
+ leaveStationSuccess(backgroundCurrentStationIndex, currentStationName,
+ finalNextStationName,finalNextStationNameKr);
+
OrderServiceManager.leaveStation(mContext,
stationList.get(backgroundCurrentStationIndex).getSeq(),
stationList.get(backgroundCurrentStationIndex).getSiteId(),
@@ -765,32 +894,31 @@ public class OrderModel {
new OchCommonServiceCallback() {
@Override
public void onSuccess(BaseData o) {
- isArrivedStation = false;
- CallerLogger.INSTANCE.d(M_BUS + TAG, "行程日志-离站成功开往下一站====");
- //需要更改当前站和下一站的状态 然后渲染
- //startOrStopQueryPassengerWriteOff(false);
- queryBusRoutes();
- leaveStationSuccess(backgroundCurrentStationIndex, currentStationName,
- finalNextStationName,finalNextStationNameKr);
+// isArrivedStation = false;
+// CallerLogger.INSTANCE.d(M_BUS + TAG, "行程日志-离站成功开往下一站====");
+// //需要更改当前站和下一站的状态 然后渲染
+// //startOrStopQueryPassengerWriteOff(false);
+// queryBusRoutes();
+// leaveStationSuccess(backgroundCurrentStationIndex, currentStationName, finalNextStationName);
}
@Override
public void onError() {
- if (!NetworkUtils.isConnected(mContext)) {
- ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
- } else {
- ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
- }
+// if (!NetworkUtils.isConnected(mContext)) {
+// ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+// } else {
+// ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+// }
}
@Override
public void onFail(int code, String failMsg) {
- if (!NetworkUtils.isConnected(mContext)) {
- ToastUtils.showShort("网络异常,请稍后重试");
- } else {
- ToastUtils.showShort("离站上报失败:" + failMsg);
- }
+// if (!NetworkUtils.isConnected(mContext)) {
+// ToastUtils.showShort("网络异常,请稍后重试");
+// } else {
+// ToastUtils.showShort("离站上报失败:" + failMsg);
+// }
}
});
}
@@ -909,6 +1037,8 @@ public class OrderModel {
slidePanelHideCallback.hideSlidePanel();
}
+ sendTaskDetailsToClients();
+
//更新bus路线面板
updateBusTaskStatus(stationList);
diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java
index 3e97df4a91..0a10e5b41f 100644
--- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java
+++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java
@@ -18,7 +18,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
-import com.mogo.och.bus.bean.BusStationBean;
+import com.mogo.och.data.bean.BusStationBean;
import com.mogo.och.bus.bean.WriteOffPassenger;
import com.mogo.och.bus.callback.IBusADASStatusCallback;
import com.mogo.och.bus.callback.IBusControllerStatusCallback;
@@ -33,6 +33,7 @@ import com.mogo.och.common.module.biz.callback.ILoginCallback;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.manager.OCHAdasAbilityManager;
import com.mogo.och.common.module.voice.VoiceNotice;
+import com.mogo.och.data.manager.cache.CacheDataManager;
import org.jetbrains.annotations.NotNull;
@@ -70,6 +71,8 @@ public class BusPresenter extends Presenter
public void onCreate(@NonNull LifecycleOwner owner) {
super.onCreate(owner);
initModelListener();
+
+ OrderModel.getInstance().queryBusCacheRoutes();
}
@Override
@@ -308,7 +311,8 @@ public class BusPresenter extends Presenter
CallerLogger.INSTANCE.d(M_BUS + TAG, " loginStatus =" + LoginStatusManager.isLogin());
if(LoginStatusManager.isLogin()){
OrderModel.getInstance().startOrStopOrderLoop(true);
- OrderModel.getInstance().queryBusRoutes();
+// OrderModel.getInstance().queryBusRoutes();
+ OrderModel.getInstance().queryBusCacheRoutes();
}else {
BusTrajectoryManager.getInstance().stopTrajReqLoop();
OrderModel.getInstance().startOrStopOrderLoop(false);
diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/util/BusTrajectoryManager.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/util/BusTrajectoryManager.java
index 6cf6eb90c4..aafcea35ee 100644
--- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/util/BusTrajectoryManager.java
+++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/util/BusTrajectoryManager.java
@@ -6,11 +6,10 @@ import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.GsonUtils;
-import com.mogo.och.bus.bean.BusRoutesResult;
+import com.mogo.och.data.bean.BusRoutesResult;
import com.mogo.och.bus.constant.BusConst;
import com.mogo.och.bus.model.OrderModel;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
-import com.zhidao.socket.utils.LoginStatusUtil;
import java.util.concurrent.TimeUnit;
diff --git a/settings.gradle b/settings.gradle
index 84bd6f8517..c52260c59e 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -68,3 +68,4 @@ include ':OCH:mogo-och-charter'
include ':OCH:mogo-och-charter-passenger'
include ':OCH:mogo-och-shuttle'
include ':OCH:mogo-och-shuttle-passenger'
+include ':OCH:mogo-och-data'