diff --git a/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.database.MyDataBase/1.json b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.database.MyDataBase/1.json index 442f316a99..e8140c506b 100644 --- a/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.database.MyDataBase/1.json +++ b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.database.MyDataBase/1.json @@ -2,7 +2,7 @@ "formatVersion": 1, "database": { "version": 1, - "identityHash": "066a91b8d796cc1004c4e438b2c125f3", + "identityHash": "2a452358f8c0aca67794fd0de6b4af1c", "entities": [ { "tableName": "contrail_data_table", @@ -462,35 +462,7 @@ ], "autoGenerate": true }, - "indices": [ - { - "name": "index_used_task_data_table_task_id", - "unique": false, - "columnNames": [ - "task_id" - ], - "orders": [], - "createSql": "CREATE INDEX IF NOT EXISTS `index_used_task_data_table_task_id` ON `${TABLE_NAME}` (`task_id`)" - }, - { - "name": "index_used_task_data_table_line_id", - "unique": false, - "columnNames": [ - "line_id" - ], - "orders": [], - "createSql": "CREATE INDEX IF NOT EXISTS `index_used_task_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" - }, - { - "name": "index_used_task_data_table_site_id", - "unique": false, - "columnNames": [ - "site_id" - ], - "orders": [], - "createSql": "CREATE INDEX IF NOT EXISTS `index_used_task_data_table_site_id` ON `${TABLE_NAME}` (`site_id`)" - } - ], + "indices": [], "foreignKeys": [] }, { @@ -593,7 +565,7 @@ "views": [], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '066a91b8d796cc1004c4e438b2c125f3')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '2a452358f8c0aca67794fd0de6b4af1c')" ] } } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskSiteDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskSiteDataBean.kt index 8343f51bd3..2ff89f8421 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskSiteDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskSiteDataBean.kt @@ -12,19 +12,19 @@ data class TaskSiteDataBean( /** * 任务id */ - @ColumnInfo(name = "task_id", typeAffinity = ColumnInfo.INTEGER, index = true) + @ColumnInfo(name = "task_id", typeAffinity = ColumnInfo.INTEGER) var taskId: Long? = null, /** * 线路id */ - @ColumnInfo(name = "line_id", typeAffinity = ColumnInfo.INTEGER, index = true) + @ColumnInfo(name = "line_id", typeAffinity = ColumnInfo.INTEGER) var lineId: Long? = null, /** * 站点id */ - @ColumnInfo(name = "site_id", typeAffinity = ColumnInfo.INTEGER, index = true) + @ColumnInfo(name = "site_id", typeAffinity = ColumnInfo.INTEGER) var siteId: Long? = null, /** diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskRepository.kt index 5062429710..20ddf811bd 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskRepository.kt @@ -1,6 +1,8 @@ package com.mogo.och.weaknet.database.repository +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.weaknet.database.MyDataBase import com.mogo.och.weaknet.database.bean.TaskDataBean @@ -64,17 +66,36 @@ object TaskRepository { fun startTask(taskId: Long, lineId: Long,lineName:String,callback: TaskStatusCallback){ DbThreadUtils.runInIoThread { + var updateCount:Int? = 0 + var startTime = System.currentTimeMillis() try { - MyDataBase.instance.runInTransaction { - // 更新task状态 + // 更新task状态 + taskDataDao?.queryTaskByTaskIdOne(taskId)?.let { + it.startTime = System.currentTimeMillis() + it.status = TaskDataBean.useing + // 更新任务状态 + taskDataDao?.insert(it) + } + CallerLogger.d(TAG,"更新任务状态用时:${System.currentTimeMillis()-startTime}") + startTime = System.currentTimeMillis() + updateCount = TaskSiteRepository.startTask(taskId, lineId, lineName) + CallerLogger.d(TAG,"插入正在运行的线路用时:${System.currentTimeMillis()-startTime}") + } catch (e: Exception) { + if (e is DataException) { + println("数据不全") + // 恢复数据 taskDataDao?.queryTaskByTaskIdOne(taskId)?.let { - it.startTime = System.currentTimeMillis() - it.status = TaskDataBean.useing + it.startTime = null + it.status = TaskDataBean.unUse // 更新任务状态 taskDataDao?.insert(it) } - val updateCount = TaskSiteRepository.startTask(taskId, lineId, lineName) - if(updateCount==null||updateCount<=0){ + } + updateCount = null + callback.startFail("错误信息:${e.message}") + }finally { + updateCount?.let { + if(it<=0){ // 插入失败 callback.startFail("未插入数据") }else{ @@ -82,11 +103,7 @@ object TaskRepository { callback.startSuccess() } } - } catch (e: Exception) { - if (e is DataException) { - println("数据不全") - } - callback.startFail("错误信息:${e.message}") + } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskSiteRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskSiteRepository.kt index 7bba52a84c..1437e42c87 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskSiteRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/TaskSiteRepository.kt @@ -1,5 +1,7 @@ package com.mogo.och.weaknet.database.repository +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.weaknet.database.MyDataBase import com.mogo.och.weaknet.database.bean.TaskSiteDataBean @@ -21,20 +23,26 @@ object TaskSiteRepository { // 开始线路 fun startTask(taskId: Long, linId: Long,lineName:String):Int? { // 获取线路的站点 + var startTime = System.currentTimeMillis() val querySites = SiteRepository.querySiteByLineId(linId) if(querySites.isNullOrEmpty()){ throw DataException("没有站点数据") } + CallerLogger.d(TAG,"查询站点用时:${System.currentTimeMillis()-startTime}") + startTime = System.currentTimeMillis() val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas( querySites, taskId, lineName ) + CallerLogger.d(TAG,"数据转换用时:${System.currentTimeMillis()-startTime}") if(toTaskSiteDatas.size<2){ throw DataException("站点数据不全请稍后再试") } // 把线路所有的站点搬迁到运行中表格中 - val result = taskSiteDataDao?.insert(*toTaskSiteDatas.toTypedArray()) + startTime = System.currentTimeMillis() + val result = taskSiteDataDao?.insert(*toTaskSiteDatas.toTypedArray()) + CallerLogger.d(TAG,"数据插入用时:${System.currentTimeMillis()-startTime}") return if(result.isNullOrEmpty()){ null }else{ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/BusLineModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/BusLineModel.kt index 8150e645c3..586aad1940 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/BusLineModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/BusLineModel.kt @@ -243,9 +243,7 @@ object BusLineModel { SharedPrefsMgr.getInstance() .putLong(BusSwitchLineActivity.LASTCOMMITLINEID, line.lineId) EventRepository.saveEventTaskStart(task.id,line.lineId,task.taskStartTime,line.name) - if (mBusLinesCallback != null) { - mBusLinesCallback!!.onChangeLineIdSuccess() - } + mBusLinesCallback?.onChangeLineIdSuccess() val taskTime = DateTimeUtil.formatLongToString(task.taskStartTime, DateTimeUtil.HH_mm) CallerOrderListenerManager.invokeOrderLineUpdate("${line.name} ${taskTime}") } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt index 0f065d4c2c..92f8808cba 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt @@ -15,14 +15,16 @@ import com.mogo.och.weaknet.net.OrderServiceManager import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers +import io.reactivex.subjects.BehaviorSubject import java.util.concurrent.atomic.AtomicBoolean -import kotlin.properties.Delegates object EventModel : EventRepository.EventCallback { private val isUpdating by lazy { AtomicBoolean(false) } + private val createDefault = BehaviorSubject.createDefault(isUpdating.get()) + fun load(){ EventRepository.eventCallback = this BizLoopManager.postDelayed(loopUpdateInfo,2*60*1000) @@ -46,11 +48,14 @@ object EventModel : EventRepository.EventCallback { private fun updateEvent(){ isUpdating.set(true) + createDefault.onNext(isUpdating.get()) ThreadUtils.getSinglePool().submit { val waitUpdateEvent = EventRepository.queryWaitUpdateEvent() if(waitUpdateEvent.isNullOrEmpty()){ OchChainLogManager.writeChainLogDb("上报event","没有数据需要上报${Thread.currentThread().name}") isUpdating.set(false) + createDefault.onNext(isUpdating.get()) + BizLoopManager.postDelayed(loopUpdateInfo,2*60*1000) return@submit } OchChainLogManager.writeChainLogDb("上报event","开始上报:${Thread.currentThread().name}") @@ -63,17 +68,20 @@ object EventModel : EventRepository.EventCallback { OchChainLogManager.writeChainLogDb("上报event成功","$transformDb2Net ${Thread.currentThread().name}") EventRepository.saveUpdateSuccess(waitUpdateEvent) isUpdating.set(false) + createDefault.onNext(isUpdating.get()) BizLoopManager.postDelayed(loopUpdateInfo,2*60*1000) } override fun onFail(code: Int, msg: String?) { isUpdating.set(false) + createDefault.onNext(isUpdating.get()) OchChainLogManager.writeChainLogDb("上报event失败","$transformDb2Net ${Thread.currentThread().name}") BizLoopManager.postDelayed(loopUpdateInfo,2*60*1000) } override fun onError() { isUpdating.set(false) + createDefault.onNext(isUpdating.get()) OchChainLogManager.writeChainLogDb("上报event失败","$transformDb2Net ${Thread.currentThread().name}") BizLoopManager.postDelayed(loopUpdateInfo,2*60*1000) } @@ -112,4 +120,9 @@ object EventModel : EventRepository.EventCallback { }?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) } + + fun getUploadTaskObservable():BehaviorSubject{ + return createDefault + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManagerView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManagerView.kt index acc2fe4ae4..c7d8491da7 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManagerView.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTaskManagerView.kt @@ -5,11 +5,11 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.util.AttributeSet import android.view.LayoutInflater -import androidx.constraintlayout.widget.ConstraintLayout import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.findViewTreeViewModelStoreOwner import androidx.recyclerview.widget.LinearLayoutManager +import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.ResourcesUtils import com.mogo.och.common.module.wigets.WindowRelativeLayout import com.mogo.och.shuttle.weaknet.R import com.mogo.och.weaknet.bean.WaitUploadLine @@ -18,6 +18,10 @@ import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.actvCurrent import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.clLayout import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.ivTaskRunningClose import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.rvDataLiet +import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.tvManagerTitle +import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.upload_btn_commit +import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.upload_btn_commit_progress +import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.upload_btn_commit_title import me.jessyan.autosize.utils.AutoSizeUtils @@ -73,6 +77,10 @@ class RunningTaskManagerView: WindowRelativeLayout, RunningTastViewModel.Running ) ) rvDataLiet.setAdapter(mAdapter) + + upload_btn_commit.onClick { + viewModel?.uploadData() + } } fun setOnClickListener(clickListener: ClickListener) { @@ -105,6 +113,23 @@ class RunningTaskManagerView: WindowRelativeLayout, RunningTastViewModel.Running override fun showData(data: MutableList) { mAdapter.setDataList(data) + if(data.isEmpty()){ + rvDataLiet.visibility = GONE + tvManagerTitle.visibility = VISIBLE + }else{ + rvDataLiet.visibility = VISIBLE + tvManagerTitle.visibility = GONE + } + } + + override fun showUpdating(isupload: Boolean) { + if(isupload){ + upload_btn_commit_progress.visibility = VISIBLE + upload_btn_commit_title.text = "上传中" + }else{ + upload_btn_commit_progress.visibility = GONE + upload_btn_commit_title.text = ResourcesUtils.getString(R.string.bus_running_task_upload) + } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTastViewModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTastViewModel.kt index fbbb45adae..d2d0af6b72 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTastViewModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/RunningTastViewModel.kt @@ -2,10 +2,13 @@ package com.mogo.och.weaknet.ui.taskrunning import androidx.lifecycle.ViewModel import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.weaknet.bean.WaitUploadLine import com.mogo.och.weaknet.model.EventModel import io.reactivex.Observer +import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable +import io.reactivex.schedulers.Schedulers /** * @author XuXinChao @@ -17,14 +20,42 @@ class RunningTastViewModel : ViewModel() { private val TAG = RunningTastViewModel::class.java.simpleName private var viewCallback:RunningTaskViewCallback?=null + private var subscribe: Disposable?=null fun setDistanceCallback(viewCallback:RunningTaskViewCallback){ this.viewCallback = viewCallback + EventModel.getUploadTaskObservable() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Observer { + override fun onSubscribe(d: Disposable) { + subscribe = d + CallerLogger.d(TAG, "onSubscribe") + } + + override fun onError(e: Throwable) { + CallerLogger.d(TAG, "onError${e.printStackTrace()}") + } + + override fun onComplete() { + CallerLogger.d(TAG, "onComplete") + } + + override fun onNext(data: Boolean) { + CallerLogger.d(TAG, "onNext:${data}") + this@RunningTastViewModel.viewCallback?.showUpdating(data) + if(!data){ + queryNewData() + } + } + + }) } override fun onCleared() { - + RxUtils.disposeSubscribe(subscribe) + subscribe = null } fun queryNewData() { @@ -49,8 +80,13 @@ class RunningTastViewModel : ViewModel() { }) } + fun uploadData() { + EventModel.notifySyn() + } + interface RunningTaskViewCallback{ fun showData(data: MutableList) + fun showUpdating(isupload:Boolean) } } diff --git a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_wadk_task_running.xml b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_wadk_task_running.xml index 7d503a1648..ae75520d60 100644 --- a/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_wadk_task_running.xml +++ b/OCH/shuttle/driver_weaknet/src/main/res/layout/shuttle_wadk_task_running.xml @@ -4,6 +4,7 @@ android:layout_width="960dp" android:layout_height="match_parent" android:background="#F0151D41" + android:paddingBottom="@dimen/dp_72" android:id="@+id/clLayout" > @@ -74,21 +75,35 @@ android:layout_width="0dp" android:layout_height="0dp"/> - + app:layout_constraintRight_toRightOf="parent"> + + +