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:
yangyakun
2024-10-23 15:17:37 +08:00
18 changed files with 94 additions and 34 deletions

View File

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

View File

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

View File

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

View File

@@ -20,7 +20,7 @@ interface LoginService :CommonService {
fun getBusinessType():BusinessEnum
fun queryLoginStatusByNet()
fun queryLoginStatusByNet(readCatche:Boolean=false)
/**
* 登出

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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("没有站点数据")
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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