Merge branch 'refs/heads/dev_robotaxi-d_240912_6.7.0' into dev_robotaxi-d_240912_6.7.2_local
# Conflicts: # OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt
This commit is contained in:
@@ -99,9 +99,9 @@ class LoginProvider : LoginService {
|
||||
}
|
||||
}
|
||||
|
||||
override fun queryLoginStatusByNet() {
|
||||
override fun queryLoginStatusByNet(readCatche:Boolean) {
|
||||
CallerLogger.d(tag, "queryLoginStatusByNet")
|
||||
LoginModel.queryCarStatus()
|
||||
LoginModel.queryCarStatus(readCatche)
|
||||
}
|
||||
|
||||
override fun loginOut() {
|
||||
|
||||
@@ -52,7 +52,7 @@ import java.util.concurrent.TimeUnit
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
object LoginModel {
|
||||
|
||||
private const val TAG = "TaxiLoginModel"
|
||||
private const val TAG = "LoginModel"
|
||||
private var mContext: Context? = null
|
||||
var iTaxiLoginCallback: ITaxiLoginCallback? = null
|
||||
private var subscribe: Disposable? = null
|
||||
@@ -63,6 +63,7 @@ object LoginModel {
|
||||
d(TAG, "onIntentReceived = %s", intentStr)
|
||||
if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) {
|
||||
if (NetworkUtils.isConnected(mContext)) {
|
||||
// 网络链接成功可以先读取本地再获取服务器
|
||||
queryCarStatus()
|
||||
}
|
||||
}
|
||||
@@ -139,7 +140,8 @@ object LoginModel {
|
||||
if (null != data && 0 == data.code) {
|
||||
// 获取验证码成功
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.module_och_taxi_login_login_success))
|
||||
queryCarStatus()
|
||||
// 登录成功需要新的值
|
||||
queryCarStatus(false)
|
||||
} else {
|
||||
if (data != null) {
|
||||
ToastCharterUtils.showToastShort(data.code.toString())
|
||||
@@ -173,8 +175,9 @@ object LoginModel {
|
||||
* 7、网络状态变更后查询
|
||||
* 8、登录页面关闭后查下状态
|
||||
*/
|
||||
fun queryCarStatus() {
|
||||
fun queryCarStatus(readCatche:Boolean = true) {
|
||||
mContext?.let {
|
||||
if(readCatche){
|
||||
val logingInfoJson = OchSPManager.getString(loginInfoKey)
|
||||
val timeText = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd)
|
||||
logingInfoJson?.let {logininfo->
|
||||
@@ -184,6 +187,7 @@ object LoginModel {
|
||||
go2LoginInfo(oldLoginInfo,"缓存获取")
|
||||
}
|
||||
}
|
||||
}
|
||||
OchCommonServiceManager.queryDriverServiceStatus(it, object : OchCommonServiceCallback<DriverStatusQueryRespBean> {
|
||||
override fun onSuccess(data: DriverStatusQueryRespBean?) {
|
||||
go2LoginInfo(data,"接口获取")
|
||||
@@ -204,15 +208,17 @@ object LoginModel {
|
||||
ToastCharterUtils.showToastShort(mContext!!.getString(R.string.request_error_tip))
|
||||
}
|
||||
LoginStatusManager.setLoginError(-10012,"网络错误")
|
||||
// 依赖参数
|
||||
subscribe = Observable.timer(5, TimeUnit.SECONDS)
|
||||
.subscribe { _: Long? -> queryCarStatus() }
|
||||
.subscribe { _: Long? -> queryCarStatus(readCatche) }
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
LoginStatusManager.setLoginError(code,"msg:${msg}")
|
||||
ToastUtilsOch.showWithCodeMessage(code, msg)
|
||||
// 依赖参数
|
||||
subscribe = Observable.timer(3, TimeUnit.SECONDS)
|
||||
.subscribe { _: Long? -> queryCarStatus() }
|
||||
.subscribe { _: Long? -> queryCarStatus(readCatche) }
|
||||
// if (code == OchCommonConst.WAIT_TAKEN) {
|
||||
//
|
||||
// } else {
|
||||
@@ -223,9 +229,10 @@ object LoginModel {
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun go2LoginInfo(data: DriverStatusQueryRespBean?, source: String) {
|
||||
CallerLogger.d(TAG,"设置源:${source}")
|
||||
data?.let {
|
||||
CallerLogger.d(TAG,"设置源:${source}")
|
||||
LoginStatusManager.setLoginInfo(data.data)
|
||||
}
|
||||
if (FunctionBuildConfig.ochdebug) {
|
||||
@@ -271,7 +278,8 @@ object LoginModel {
|
||||
if (null != data && 0 == data.code) {
|
||||
loginFail(false)
|
||||
OchSPManager.remove(loginInfoKey)
|
||||
queryCarStatus()
|
||||
// 退出登录成功需要查询新的
|
||||
queryCarStatus(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,8 @@ class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view), IT
|
||||
gotoOfflineMode()
|
||||
return
|
||||
}
|
||||
LoginModel.queryCarStatus()
|
||||
// 需要实时查询新的
|
||||
LoginModel.queryCarStatus(false)
|
||||
mView?.closeSoftInput()
|
||||
this.phone = phone
|
||||
this.code = code
|
||||
|
||||
@@ -20,7 +20,7 @@ interface LoginService :CommonService {
|
||||
|
||||
fun getBusinessType():BusinessEnum
|
||||
|
||||
fun queryLoginStatusByNet()
|
||||
fun queryLoginStatusByNet(readCatche:Boolean=false)
|
||||
|
||||
/**
|
||||
* 登出
|
||||
|
||||
@@ -43,8 +43,8 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun queryLoginStatusByNet() {
|
||||
loginService?.queryLoginStatusByNet()
|
||||
fun queryLoginStatusByNet(readCatche:Boolean=false) {
|
||||
loginService?.queryLoginStatusByNet(readCatche)
|
||||
}
|
||||
@JvmStatic
|
||||
fun getPurpose(): RoleEnum {
|
||||
|
||||
@@ -34,7 +34,8 @@ class FacadeDriverProvider : FacadeProvider() {
|
||||
sweeperFacadeProvider.init(context)
|
||||
}else {
|
||||
super.init(context)
|
||||
LoginStatusManager.queryLoginStatusByNet()
|
||||
// 初始化先读取客户端 让客户尽快进入
|
||||
LoginStatusManager.queryLoginStatusByNet(true)
|
||||
LanSocketManager.load()
|
||||
LoginLanDriverSocket.load()
|
||||
CheckVinManager.load()
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.mogo.och.weaknet.repository.net.weaknet.dali.shuttle.DaliShuttleServi
|
||||
import com.mogo.och.weaknet.repository.db.bean.EventDataBean
|
||||
import com.mogo.och.weaknet.repository.db.repository.EventDb
|
||||
import com.mogo.och.weaknet.repository.RepositoryManager
|
||||
import com.mogo.och.weaknet.repository.db.repository.SiteDb
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
@@ -43,6 +44,11 @@ object EventModel : EventDb.EventCallback {
|
||||
override fun notifySyn() {
|
||||
BizLoopManager.removeCallback(loopUpdateInfo)
|
||||
updateEvent()
|
||||
checkDbData()
|
||||
}
|
||||
|
||||
private fun checkDbData() {
|
||||
SiteDb.checkData()
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mogo.och.weaknet.repository.db.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
@@ -12,6 +13,10 @@ interface SiteDataDao {
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
fun insert(vararg lineDataBean: SiteDataBean)
|
||||
|
||||
@Delete()
|
||||
fun deleteById(vararg siteDataBean: SiteDataBean)
|
||||
|
||||
|
||||
// 线路删除时同步删除所属站点
|
||||
@Query("DELETE FROM ${SiteDataBean.siteDataTable} WHERE line_id = :lineId")
|
||||
fun deleteByLineId(lineId: Long)
|
||||
@@ -26,6 +31,9 @@ interface SiteDataDao {
|
||||
@Query("SELECT * FROM ${SiteDataBean.siteDataTable} WHERE line_id = :lineId")
|
||||
fun querySitesByLineId(lineId: Long):List<SiteDataBean>?
|
||||
|
||||
@Query("SELECT * FROM ${SiteDataBean.siteDataTable} GROUP by md5 HAVING count(1) > 1")
|
||||
fun checkData():List<SiteDataBean>?
|
||||
|
||||
fun querySiteByLineIdAndSiteId(lineId: Long,siteId:Long): SiteDataBean?{
|
||||
val queryContrailByLineId = querySitesByLineIdAndSiteId(lineId,siteId)
|
||||
return if(queryContrailByLineId.isNullOrEmpty()){
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.mogo.och.weaknet.repository.db.repository
|
||||
|
||||
import com.mogo.eagle.core.network.utils.digest.DigestUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.TAG
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.weaknet.repository.db.MyDataBase
|
||||
import com.mogo.och.weaknet.repository.db.bean.SiteDataBean
|
||||
@@ -31,11 +34,25 @@ object SiteDb {
|
||||
siteDataDao.insert(it)
|
||||
}
|
||||
}
|
||||
checkData()
|
||||
}
|
||||
}
|
||||
BizLoopManager.runInIoThread(runnable)
|
||||
}
|
||||
|
||||
fun checkData() {
|
||||
CallerLogger.d(TAG,"检测站点数据")
|
||||
siteDataDao?.checkData()?.let { list ->
|
||||
list.forEach {
|
||||
siteDataDao?.deleteById(it)
|
||||
}
|
||||
if (list.isNotEmpty()) {
|
||||
OchChainLogManager.writeChainLogDb("数据检测", "有重复数据${list}")
|
||||
checkData()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteByLineId(lineId: Long) {
|
||||
siteDataDao?.deleteByLineId(lineId)
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ object TaskSiteDb {
|
||||
fun startTask(taskId: Long, linId: Long,lineName:String):Int? {
|
||||
// 获取线路的站点
|
||||
var startTime = System.currentTimeMillis()
|
||||
val querySites = SiteDb.querySiteByLineId(linId)
|
||||
val querySites = SiteDb.querySiteByLineId(linId)?.distinctBy { it.siteId }
|
||||
if(querySites.isNullOrEmpty()){
|
||||
throw DbException("没有站点数据")
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ class DaliBusServiceManager: NormalNetInterface {
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
BusQueryLineStationsRequest()
|
||||
) .transformTry()
|
||||
.flatMap(OchCommonNet("queryBusRoutes",false))
|
||||
.flatMap(OchCommonNet("saas bus queryBusRoutes",false))
|
||||
.flatMap {
|
||||
Observable.just(it.data?: BusRoutesResult())
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ class MogoBusServiceManager: NormalNetInterface {
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
BusQueryLineStationsRequest()
|
||||
) .transformTry()
|
||||
.flatMap(OchCommonNet("queryBusRoutes",false))
|
||||
.flatMap(OchCommonNet("mogo/dali bus queryBusRoutes",false))
|
||||
.flatMap {
|
||||
Observable.just(it.data?: BusRoutesResult())
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ class MogoShuttleServiceManager: NormalNetInterface {
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
BusQueryLineStationsRequest()
|
||||
) .transformTry()
|
||||
.flatMap(OchCommonNet("queryBusRoutes",false))
|
||||
.flatMap(OchCommonNet("mogo/dali shuttle queryBusRoutes",false))
|
||||
.flatMap {
|
||||
Observable.just(it.data?: BusRoutesResult())
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ object DaliShuttleServiceManager: WeakNetInterface {
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
BusQueryLineStationsRequest()
|
||||
) .transformIoTry()
|
||||
.flatMap(OchCommonNet("queryBusRoutes",false))
|
||||
.flatMap(OchCommonNet("saas shuttle queryBusRoutes",false))
|
||||
.flatMap {
|
||||
Observable.just(it.data?:BusRoutesResult())
|
||||
}
|
||||
|
||||
@@ -107,13 +107,17 @@ class BoneTabLayout @JvmOverloads constructor(
|
||||
|
||||
faultReasonView.setClickListener(object: FaultReasonView.ClickListener{
|
||||
override fun closeFaultReasonView() {
|
||||
updateTabType(TabType.REPORT_INFO)
|
||||
if(tabType == TabType.REPORT_INFO){
|
||||
updateTabType(TabType.REPORT_INFO)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
workOrderView.setClickListener(object: WorkOrderView.ClickListener{
|
||||
override fun closeWorkOrderView() {
|
||||
updateTabType(TabType.REPORT_INFO)
|
||||
if(tabType == TabType.REPORT_INFO){
|
||||
updateTabType(TabType.REPORT_INFO)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ class FaultReasonView @JvmOverloads constructor(
|
||||
private var reportNote: String = "" //上报描述
|
||||
private val reportType: Int = 1 //上报方式:0:小程序 1:司机屏 2:云端上报
|
||||
|
||||
private var source: Int = 0 //操作源,0:默认,一级分类 1:类型,二级分类;2:原因,三级分类
|
||||
private var source: Int = 0 //操作源,0:默认,一级分类 ; 1:类型,二级分类; 2:原因,三级分类
|
||||
private var hasLevel2: Boolean = false //是否有二级分类
|
||||
private var hasLevel3: Boolean = false //是否有三级分类
|
||||
|
||||
@@ -506,7 +506,6 @@ class FaultReasonView @JvmOverloads constructor(
|
||||
if (source == 0) {
|
||||
level1Id = list[0].id
|
||||
level1Name = list[0].name
|
||||
|
||||
source = 1
|
||||
//获取故障二级分类即故障类型
|
||||
CallerDevaToolsManager.getCategories(
|
||||
@@ -573,6 +572,7 @@ class FaultReasonView @JvmOverloads constructor(
|
||||
)
|
||||
)
|
||||
setAudio(false)
|
||||
source = 0
|
||||
level1Id = 0 //一级分类ID
|
||||
level2Id = 0 //二级分类ID
|
||||
level3Id = 0 //三级分类ID
|
||||
@@ -580,6 +580,8 @@ class FaultReasonView @JvmOverloads constructor(
|
||||
level2Name = ""
|
||||
level3Name = ""
|
||||
reportNote = "" //上报描述
|
||||
tvUploadSuccess.visibility = View.GONE
|
||||
faultReasonGroup.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.text.Editable
|
||||
import android.util.AttributeSet
|
||||
import android.widget.EditText
|
||||
import android.widget.TextView
|
||||
import androidx.core.widget.doAfterTextChanged
|
||||
import androidx.core.widget.doBeforeTextChanged
|
||||
import androidx.core.widget.doOnTextChanged
|
||||
import androidx.preference.Preference
|
||||
@@ -13,6 +14,7 @@ import androidx.preference.PreferenceViewHolder
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClickWidthDuration
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import java.math.BigDecimal
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
@@ -70,20 +72,32 @@ class PreferenceWithSpeedSetting : Preference {
|
||||
speedUnit?.text = unit
|
||||
val speedLimit = holder.findViewById(R.id.tv_speed_limit) as? TextView
|
||||
if (cache.containsKey(key)) {
|
||||
cur = max(cur, cache[key] ?: 0.0)
|
||||
cur = cache[key] ?: cur
|
||||
}
|
||||
cur = BigDecimal.valueOf(cur).setScale(1).toDouble()
|
||||
if (speedLimit is EditText) {
|
||||
speedLimit.setText(cur.toString())
|
||||
speedLimit.doOnTextChanged { text, _, _, _ ->
|
||||
speedLimit.doAfterTextChanged { text ->
|
||||
val current = text?.let { runCatching { it.toString().toDouble() }.getOrNull() }
|
||||
if (current == null) {
|
||||
return@doOnTextChanged
|
||||
btnOk.isEnabled = false
|
||||
holder.itemView.isEnabled = false
|
||||
ll.isSelected = false
|
||||
return@doAfterTextChanged
|
||||
}
|
||||
if (current > max) {
|
||||
btnOk.isEnabled = false
|
||||
holder.itemView.isEnabled = false
|
||||
ll.isSelected = false
|
||||
ToastUtils.showShort("阈值最大为${BigDecimal.valueOf(max).setScale(1)}$unit")
|
||||
return@doOnTextChanged
|
||||
return@doAfterTextChanged
|
||||
}
|
||||
cur = current
|
||||
val temp = BigDecimal.valueOf(current).setScale(1).toDouble()
|
||||
if (cur == temp) {
|
||||
return@doAfterTextChanged
|
||||
}
|
||||
Logger.d("RWJ", "--- cache ---- 2 ---: $cur, $temp")
|
||||
cur = temp
|
||||
btnOk.isEnabled = true
|
||||
ll.isSelected = true
|
||||
cache[key] = cur
|
||||
@@ -131,7 +145,6 @@ class PreferenceWithSpeedSetting : Preference {
|
||||
btnOk.isEnabled = true
|
||||
enabled[key] = true
|
||||
if (speedLimit is EditText) {
|
||||
speedLimit.setText("")
|
||||
speedLimit.setText(addAfter.toString())
|
||||
} else {
|
||||
speedLimit?.text = addAfter.toString()
|
||||
@@ -141,7 +154,6 @@ class PreferenceWithSpeedSetting : Preference {
|
||||
btnOk.onClick {
|
||||
onPreferenceClickListener?.also {
|
||||
enabled[key] = false
|
||||
cache.remove(key)
|
||||
extras.putDouble(KEY_BUNDLE_CURRENT_VALUE, cur)
|
||||
it.onPreferenceClick(this)
|
||||
}
|
||||
|
||||
@@ -38,7 +38,8 @@
|
||||
android:textSize="@dimen/sp_32"
|
||||
app:layout_constraintTop_toTopOf="@id/tvFaultTitle"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvFaultTitle"
|
||||
app:layout_constraintRight_toRightOf="@id/tvFaultType"
|
||||
app:layout_constraintRight_toRightOf="@id/viewTitleBg"
|
||||
android:layout_marginEnd="@dimen/dp_40"
|
||||
/>
|
||||
|
||||
<View
|
||||
@@ -332,10 +333,10 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:constraint_referenced_ids="viewFaultTypeLabel,tvTypeTitle,tvFaultType,
|
||||
viewFaultReasonLabel,tvFaultReasonTitle,viewFaultTimeLabel,
|
||||
tvFaultTimeTitle,ivTimeReduce,tvOccurrenceTime,ivTimeAdd,
|
||||
viewFaultReasonLabel,tvFaultReasonTitle,tvFaultReason,viewFaultTimeLabel,
|
||||
tvFaultTimeTitle,viewTimeBg,ivTimeReduce,tvOccurrenceTime,ivTimeAdd,
|
||||
viewFaultNoteLabel,tvFaultNoteTitle,tvFaultNoteSupplement,
|
||||
etNoteInput,ivNoteAudio,tvFaultReport,tvFaultCancel,tvFaultReason"
|
||||
etNoteInput,ivNoteAudio,tvFaultReport,tvFaultCancel"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
Reference in New Issue
Block a user