[6.6.0]
[上传页面添加loading、优化数据插入]
This commit is contained in:
@@ -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')"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
/**
|
||||
|
||||
@@ -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}")
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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}")
|
||||
}
|
||||
|
||||
@@ -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<Boolean>{
|
||||
return createDefault
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<WaitUploadLine>) {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<Boolean> {
|
||||
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<WaitUploadLine>)
|
||||
fun showUpdating(isupload:Boolean)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/switch_line_btn_commit"
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/upload_btn_commit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_marginStart="@dimen/dp_85"
|
||||
android:layout_marginEnd="@dimen/dp_85"
|
||||
android:layout_height="@dimen/dp_126"
|
||||
android:background="@drawable/bus_switch_line_btn_commit"
|
||||
android:gravity="center"
|
||||
android:layout_marginBottom="@dimen/dp_73"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_73"
|
||||
android:textSize="@dimen/dp_42"
|
||||
android:textColor="@android:color/white"
|
||||
android:text="@string/bus_running_task_upload"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/bus_switch_line_btn_commit"/>
|
||||
app:layout_constraintRight_toRightOf="parent">
|
||||
<ProgressBar
|
||||
android:visibility="gone"
|
||||
android:id="@+id/upload_btn_commit_progress"
|
||||
android:progressBackgroundTint="@color/white"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<TextView
|
||||
android:id="@+id/upload_btn_commit_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="@dimen/dp_42"
|
||||
android:textColor="@android:color/white"
|
||||
android:text="@string/bus_running_task_upload"
|
||||
android:gravity="center" />
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvManagerTitle"
|
||||
|
||||
Reference in New Issue
Block a user