From b24549baa6bfd727cbf0900a191accbe48ae4cf1 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 9 Aug 2024 16:19:56 +0800 Subject: [PATCH] =?UTF-8?q?[6.6.0]=20[=E6=A8=A1=E6=8B=9F=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=20=E7=BA=BF=E8=B7=AF=E5=92=8C=E4=BB=BB=E5=8A=A1=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E3=80=81=E5=B9=B6=E4=BF=9D=E5=AD=98=E5=88=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OCH/shuttle/driver_weaknet/build.gradle | 1 + .../bean/BusQueryLineTaskResponse.java | 25 ++- .../weaknet/bean/BusQueryLinesResponse.java | 21 ++- .../bean/BusResetDrivingLineRequest.java | 4 +- .../weaknet/callback/IBusLinesCallback.java | 6 +- .../och/weaknet/database/bean/TaskDataBean.kt | 2 +- .../och/weaknet/database/dao/LineDataDao.kt | 5 + .../och/weaknet/database/dao/TaskDataDao.kt | 3 +- .../database/repository/DbThreadUtils.kt | 13 ++ .../database/repository/LineRepository.kt | 70 ++++---- .../database/repository/TaskRepository.kt | 53 +++--- .../database/transform/DataBaseTransform.kt | 54 ++++++ .../mogo/och/weaknet/model/BusLineModel.kt | 159 ++++++++++++------ .../mogo/och/weaknet/model/OrderModel.java | 1 + .../och/weaknet/net/OrderServiceManager.kt | 2 +- .../weaknet/presenter/BusLinePresenter.java | 20 +-- .../och/weaknet/ui/BusSwitchLineActivity.kt | 25 ++- .../och/weaknet/ui/BusSwitchLineView.java | 6 +- .../weaknet/ui/adapter/SwitchLineAdapter.kt | 4 +- .../ui/adapter/SwitchLineTaskAdapter.kt | 2 +- 20 files changed, 335 insertions(+), 141 deletions(-) create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/DbThreadUtils.kt create mode 100644 OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/transform/DataBaseTransform.kt diff --git a/OCH/shuttle/driver_weaknet/build.gradle b/OCH/shuttle/driver_weaknet/build.gradle index 0c61e1eb4a..3f2bd62161 100644 --- a/OCH/shuttle/driver_weaknet/build.gradle +++ b/OCH/shuttle/driver_weaknet/build.gradle @@ -58,6 +58,7 @@ dependencies { implementation rootProject.ext.dependencies.rxjava implementation rootProject.ext.dependencies.rxandroid + implementation rootProject.ext.dependencies.roomRxjava implementation rootProject.ext.dependencies.androidxrecyclerview kapt rootProject.ext.dependencies.recyclerviewadapterhelper diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusQueryLineTaskResponse.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusQueryLineTaskResponse.java index 2ef69bd07e..3bd282f492 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusQueryLineTaskResponse.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusQueryLineTaskResponse.java @@ -1,7 +1,14 @@ package com.mogo.och.weaknet.bean; import com.mogo.eagle.core.data.BaseData; +import com.mogo.och.common.module.utils.DateTimeUtil; +import com.mogo.och.weaknet.database.bean.LineDataBean; +import com.mogo.och.weaknet.database.bean.TaskDataBean; +import com.mogo.och.weaknet.database.repository.TaskRepository; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; import java.util.List; /** @@ -12,8 +19,24 @@ public class BusQueryLineTaskResponse extends BaseData { public List data; + public static void save2Db(@NotNull BusQueryLineTaskResponse data,long lineId) { + List save2Db = new ArrayList<>(); + TaskDataBean temp = null; + for (Result datum : data.data) { + temp = new TaskDataBean(); + temp.setLineId((long)lineId); + temp.setTaskId((long)datum.id); + temp.setTaskDate(DateTimeUtil.getCurrentDateZero()); + temp.setTaskStartTime(datum.taskStartTime); + temp.setTaskgetTime(DateTimeUtil.getCurrentTimeStamp()); + temp.setStatus(TaskDataBean.unUse); + save2Db.add(temp); + } + TaskRepository.INSTANCE.addOrUpdate(save2Db,(long)lineId); + } + public static class Result { - public int id; + public long id; public long taskStartTime; } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusQueryLinesResponse.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusQueryLinesResponse.java index 8f94eb131e..6eb4259b9a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusQueryLinesResponse.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusQueryLinesResponse.java @@ -1,7 +1,12 @@ package com.mogo.och.weaknet.bean; import com.mogo.eagle.core.data.BaseData; +import com.mogo.och.weaknet.database.bean.LineDataBean; +import com.mogo.och.weaknet.database.repository.LineRepository; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; import java.util.List; /** @@ -11,9 +16,21 @@ import java.util.List; public class BusQueryLinesResponse extends BaseData { public List data; + public static void save2Db(@NotNull BusQueryLinesResponse data) { + List save2Db = new ArrayList<>(); + LineDataBean temp = null; + for (Result datum : data.data) { + temp = new LineDataBean(); + temp.setLineId((long)datum.lineId); + temp.setLineName(datum.name); + save2Db.add(temp); + } + LineRepository.INSTANCE.checkAndUpdate(save2Db); + } + public static class Result { - public int lineId;//线路id + public long lineId;//线路id public String name;//线路名字 public int choose; // 1:绑定 2:未被绑定 public String startSiteName;//始发站名称 @@ -24,4 +41,6 @@ public class BusQueryLinesResponse extends BaseData { public List taskList; } + + } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusResetDrivingLineRequest.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusResetDrivingLineRequest.java index 132c81ca59..e5022b238a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusResetDrivingLineRequest.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/BusResetDrivingLineRequest.java @@ -9,10 +9,10 @@ import com.mogo.och.common.module.utils.DateTimeUtil; */ public class BusResetDrivingLineRequest { public String sn; - public int taskId; //切换到的线路id + public long taskId; //切换到的线路id public long writeVersion; //更新时间戳 - public BusResetDrivingLineRequest(int taskId) { + public BusResetDrivingLineRequest(long taskId) { this.sn = SharedPrefsMgr.getInstance().getSn(); this.taskId = taskId; this.writeVersion = DateTimeUtil.getCurrentTimeStamp(); diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/callback/IBusLinesCallback.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/callback/IBusLinesCallback.java index 458035b841..c6f24f10ad 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/callback/IBusLinesCallback.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/callback/IBusLinesCallback.java @@ -3,12 +3,14 @@ package com.mogo.och.weaknet.callback; import com.mogo.och.weaknet.bean.BusQueryLineTaskResponse; import com.mogo.och.weaknet.bean.BusQueryLinesResponse; +import java.util.List; + /** * @author: wangmingjun * @date: 2022/2/9 */ public interface IBusLinesCallback { - void onBusLinesChange(BusQueryLinesResponse lines); + void onBusLinesChange(List data); void onChangeLineIdSuccess(); - void onBusLineTasks(BusQueryLineTaskResponse o, int position,boolean autoRefresh); + void onBusLineTasks(List o, int position,boolean autoRefresh); } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskDataBean.kt index 1aa865b167..5aedcf7db4 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/bean/TaskDataBean.kt @@ -22,7 +22,7 @@ class TaskDataBean( var lineId: Long? = null, /** - * 任务安排的时间 + * 任务安排的日期 */ @ColumnInfo(name = "task_data", typeAffinity = ColumnInfo.INTEGER) var taskDate: Long? = null, diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/LineDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/LineDataDao.kt index c7f0885a8a..c493884754 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/LineDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/LineDataDao.kt @@ -7,6 +7,7 @@ import androidx.room.OnConflictStrategy import androidx.room.Query import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.weaknet.database.bean.LineDataBean +import io.reactivex.Observable @Dao interface LineDataDao { @@ -22,6 +23,10 @@ interface LineDataDao { @Query("DELETE FROM ${LineDataBean.lineDataTable} WHERE line_get_time < :zeroTime") fun deleteWeltData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()): Int + //查询当天插入的所有数据 + @Query("SELECT * FROM ${LineDataBean.lineDataTable} WHERE line_get_time > :zeroTime") + fun loadDataRx(zeroTime: Long = DateTimeUtil.getCurrentDateZero()): Observable?> + //查询当天插入的所有数据 @Query("SELECT * FROM ${LineDataBean.lineDataTable} WHERE line_get_time > :zeroTime") fun loadData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()): List? diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskDataDao.kt index 74c31c8f0c..a09e3c0021 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/dao/TaskDataDao.kt @@ -7,6 +7,7 @@ import androidx.room.OnConflictStrategy import androidx.room.Query import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.weaknet.database.bean.TaskDataBean +import io.reactivex.Observable @Dao interface TaskDataDao { @@ -31,7 +32,7 @@ interface TaskDataDao { fun queryRunningTastByLineId(lineId: Long,zeroTime:Long = DateTimeUtil.getCurrentDateZero()): List? @Query("SELECT * FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and status = ${TaskDataBean.unUse} and line_id = :lineId") - fun queryUnuseTask(lineId: Long,zeroTime:Long = DateTimeUtil.getCurrentDateZero()): List? + fun queryUnuseTask(lineId: Long,zeroTime:Long = DateTimeUtil.getCurrentDateZero()): Observable?> @Query("DELETE FROM ${TaskDataBean.taskDataTable} WHERE task_get_time > :zeroTime and line_id = :lineId") fun deleteByLineId(lineId: Long,zeroTime:Long = DateTimeUtil.getCurrentDateZero()) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/DbThreadUtils.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/DbThreadUtils.kt new file mode 100644 index 0000000000..f84869af13 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/DbThreadUtils.kt @@ -0,0 +1,13 @@ +package com.mogo.och.weaknet.database.repository + +import com.mogo.eagle.core.utilcode.util.ThreadUtils + +object DbThreadUtils { + fun runInIoThread(runable:Runnable){ + if(ThreadUtils.isMainThread()){ + ThreadUtils.getIoPool().submit(runable) + }else{ + runable.run() + } + } +} \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/LineRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/LineRepository.kt index 7d18465666..ff770e26da 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/LineRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/repository/LineRepository.kt @@ -4,6 +4,8 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.och.weaknet.database.MyDataBase import com.mogo.och.weaknet.database.bean.LineDataBean import com.mogo.och.weaknet.database.dao.LineDataDao +import io.reactivex.Observable +import rx.Single object LineRepository { @@ -22,50 +24,56 @@ object LineRepository { /** * 读取可用线路 */ - fun queryCanUseLine(): List? { - return lineDao?.loadData() + fun queryCanUseLine(): Observable?>? { + return lineDao?.loadDataRx() } fun checkAndUpdate(serverDatalist:List){ - // 校验数据个数 - lineDao?.let { lineDao-> - val loadData = lineDao.loadData() - if(loadData.isNullOrEmpty()){ - lineDao.insert(*serverDatalist.toTypedArray()) - // TODO: Ui展示需要动态刷新UI去 - return - } - // 后台新增数据 - val needAddDatas = serverDatalist-loadData - // 后台没有本地数据库有的未分配线路 - val needMinusDatas = loadData-serverDatalist + val runable = object :Runnable{ + override fun run() { + // 校验数据个数 + lineDao?.let { lineDao-> + val loadData = lineDao.loadData() + if(loadData.isNullOrEmpty()){ + lineDao.insert(*serverDatalist.toTypedArray()) + // TODO: Ui展示需要动态刷新UI去 + return + } + // 后台新增数据 + val needAddDatas = serverDatalist-loadData + // 后台没有本地数据库有的未分配线路 + val needMinusDatas = loadData-serverDatalist - // TODO: Ui展示需要动态刷新UI去 + // TODO: Ui展示需要动态刷新UI去 - if (needAddDatas.isNotEmpty()) { - // 新增线路 - lineDao.insert(*needAddDatas.toTypedArray()) - } - if (needMinusDatas.isNotEmpty()) { - // 删除线路 - lineDao.delete(*needMinusDatas.toTypedArray()) - needMinusDatas.forEach { minusLine-> - minusLine.lineId?.let { lineId-> - // 删除线路对应的站点 + if (needAddDatas.isNotEmpty()) { + // 新增线路 + lineDao.insert(*needAddDatas.toTypedArray()) + } + if (needMinusDatas.isNotEmpty()) { + // 删除线路 + lineDao.delete(*needMinusDatas.toTypedArray()) + needMinusDatas.forEach { minusLine-> + minusLine.lineId?.let { lineId-> + // 删除线路对应的站点 - SiteRepository.deleteByLineId(lineId) - val runingTask = TaskRepository.queryRunningTastByLineId(lineId) - if(runingTask.isNullOrEmpty()){ - // 删除线路对应的自驾信息 + SiteRepository.deleteByLineId(lineId) + val runingTask = TaskRepository.queryRunningTastByLineId(lineId) + if(runingTask.isNullOrEmpty()){ + // 删除线路对应的自驾信息 - ContraiRepository.deleteByLineId(lineId) + ContraiRepository.deleteByLineId(lineId) - TaskRepository.deleteByLineId(lineId) + TaskRepository.deleteByLineId(lineId) + } + } } } } } } + + DbThreadUtils.runInIoThread(runable) } } \ No newline at end of file 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 3fc12a351b..aa0ad12f11 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 @@ -7,6 +7,7 @@ import com.mogo.och.weaknet.database.bean.LineDataBean import com.mogo.och.weaknet.database.bean.TaskDataBean import com.mogo.och.weaknet.database.dao.TaskDataDao import com.mogo.och.weaknet.database.exception.DataException +import io.reactivex.Observable object TaskRepository { @@ -19,41 +20,47 @@ object TaskRepository { } fun addOrUpdate(serverDateList: List, lineId: Long?) { - taskDataDao?.let { taskDataDao -> - val localTasks = taskDataDao.querySitesByLineId(lineId) - if(localTasks==null){ - taskDataDao.insert(*serverDateList.toTypedArray()) - // TODO: Ui展示需要动态刷新UI去 - return - } + val runable = object :Runnable { + override fun run() { + taskDataDao?.let { taskDataDao -> + val localTasks = taskDataDao.querySitesByLineId(lineId) + if(localTasks==null){ + taskDataDao.insert(*serverDateList.toTypedArray()) + // TODO: Ui展示需要动态刷新UI去 + return + } - // 后台新增数据 - val needAddDatas = serverDateList - localTasks - // 后台没有本地数据库有的未分配线路 - val needMinusDatas = localTasks - serverDateList + // 后台新增数据 + val needAddDatas = serverDateList - localTasks + // 后台没有本地数据库有的未分配线路 + val needMinusDatas = localTasks - serverDateList - // TODO: Ui展示需要动态刷新UI去 + // TODO: Ui展示需要动态刷新UI去 - if (needAddDatas.isNotEmpty()) { - // 新增任务 - taskDataDao.insert(*needAddDatas.toTypedArray()) - } - if (needMinusDatas.isNotEmpty()) { - // 删除任务 - taskDataDao.delete(*needMinusDatas.toTypedArray()) + if (needAddDatas.isNotEmpty()) { + // 新增任务 + taskDataDao.insert(*needAddDatas.toTypedArray()) + } + if (needMinusDatas.isNotEmpty()) { + // 删除任务 + taskDataDao.delete(*needMinusDatas.toTypedArray()) + } + } } } + DbThreadUtils.runInIoThread(runable) + } /** * 获取线路可用的任务 */ - fun queryCanUserTask(lineId:Long):List?{ + fun queryCanUserTask(lineId:Long): Observable?>? { taskDataDao?.let { taskDataDao-> // 查询当天未使用的任务 - val unUseTaskS = taskDataDao.queryUnuseTask(lineId) - // 过滤调任务时间和当前时间相差10分钟的任务 - return unUseTaskS?.filter { (System.currentTimeMillis()-it.taskStartTime!!)<10*60*1000 } + return taskDataDao.queryUnuseTask(lineId).map { + it.filter { (System.currentTimeMillis()-it.taskStartTime!!)<10*60*1000 } + } } return null } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/transform/DataBaseTransform.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/transform/DataBaseTransform.kt new file mode 100644 index 0000000000..cafa5a735b --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/database/transform/DataBaseTransform.kt @@ -0,0 +1,54 @@ +package com.mogo.och.weaknet.database.transform + +import com.mogo.cloud.passport.MoGoAiCloudClient +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.och.common.module.biz.login.LoginStatusEnum +import com.mogo.och.common.module.biz.login.LoginStatusManager +import com.mogo.och.common.module.network.interceptor.FRetryWithTime +import com.mogo.och.common.module.network.interceptor.OchCommonRetryException +import com.mogo.och.common.module.network.interceptor.RetryWithTime +import com.mogo.och.weaknet.bean.BusQueryLineTaskResponse +import com.mogo.och.weaknet.bean.BusQueryLinesResponse +import com.mogo.och.weaknet.database.bean.LineDataBean +import com.mogo.och.weaknet.database.bean.TaskDataBean +import io.reactivex.Observable +import io.reactivex.ObservableSource +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.functions.Function +import io.reactivex.schedulers.Schedulers + +fun Observable.transform4DataBase(transfor:Function>): Observable { + return flatMap(transfor) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) +} + +class FRetryWithTime11 : Function?, ObservableSource>> { + override fun apply(baseData: List): ObservableSource> { + val result = mutableListOf() + var temp:BusQueryLinesResponse.Result? = null + baseData.forEach { + temp = BusQueryLinesResponse.Result() + temp?.lineId = it.lineId + temp?.name = it.lineName + result.add(temp!!) + } + return Observable.just(result) + } +} + +class TransformTask : Function?, ObservableSource>> { + override fun apply(baseData: List): ObservableSource> { + val result = mutableListOf() + var temp:BusQueryLineTaskResponse.Result? = null + baseData.forEach { + temp = BusQueryLineTaskResponse.Result() + temp?.id = it.taskId + temp?.taskStartTime = it.taskStartTime + result.add(temp!!) + } + return Observable.just(result) + } +} 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 a819c46fd9..f467138de2 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 @@ -5,24 +5,36 @@ import android.content.Context import com.mogo.commons.AbsMogoApplication import com.mogo.commons.storage.SharedPrefsMgr 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.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.manager.loop.LoopInfo import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.network.OchCommonSubscribeImpl import com.mogo.och.shuttle.weaknet.R import com.mogo.och.weaknet.bean.BusQueryLineTaskResponse import com.mogo.och.weaknet.bean.BusQueryLinesResponse import com.mogo.och.weaknet.bean.BusRoutesResponse import com.mogo.och.weaknet.bean.CarExecutableTaskResponse import com.mogo.och.weaknet.callback.IBusLinesCallback +import com.mogo.och.weaknet.database.bean.LineDataBean import com.mogo.och.weaknet.database.repository.LineRepository +import com.mogo.och.weaknet.database.repository.TaskRepository +import com.mogo.och.weaknet.database.transform.FRetryWithTime11 +import com.mogo.och.weaknet.database.transform.TransformTask +import com.mogo.och.weaknet.database.transform.transform4DataBase import com.mogo.och.weaknet.net.OrderServiceManager import com.mogo.och.weaknet.net.OrderServiceManager.queryBusLines import com.mogo.och.weaknet.net.OrderServiceManager.queryBusTaskByLineId import com.mogo.och.weaknet.net.OrderServiceManager.switchLine import com.mogo.och.weaknet.ui.BusSwitchLineActivity +import io.reactivex.Observable +import io.reactivex.Observer +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import io.reactivex.schedulers.Schedulers /** * @author: wangmingjun @@ -83,34 +95,60 @@ object BusLineModel { @JvmStatic fun queryBusLines() { - queryBusLines(mContext!!, object : OchCommonServiceCallback { - override fun onSuccess(data: BusQueryLinesResponse) { - if (null == data && mBusLinesCallback != null) { - mBusLinesCallback!!.onBusLinesChange(null) - return + + LineRepository.queryCanUseLine() + ?.transform4DataBase(FRetryWithTime11()) + ?.subscribe(object : Observer> { + override fun onSubscribe(d: Disposable) { + CallerLogger.d(TAG, "onSubscribe") } - if (mBusLinesCallback != null) { - mBusLinesCallback!!.onBusLinesChange(data) + override fun onError(e: Throwable) { + CallerLogger.d(TAG, "onError${e.printStackTrace()}") } - } - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext!!.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip)) + override fun onComplete() { + CallerLogger.d(TAG, "onComplete") } - } - override fun onFail(code: Int, failMsg: String) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试") - } else { - ToastUtils.showShort("查询所有绑定路线失败:$failMsg") + override fun onNext(data: List) { + if (mBusLinesCallback != null) { + mBusLinesCallback!!.onBusLinesChange(data) + } } - } - }) + + }) + +// queryBusLines(mContext!!, object : OchCommonServiceCallback { +// override fun onSuccess(data: BusQueryLinesResponse) { +// if (null == data && mBusLinesCallback != null) { +// mBusLinesCallback!!.onBusLinesChange(null) +// return +// } +// +// if (mBusLinesCallback != null) { +// mBusLinesCallback!!.onBusLinesChange(data) +// } +// +// BusQueryLinesResponse.save2Db(data) +// } +// +// override fun onError() { +// if (!NetworkUtils.isConnected(mContext)) { +// ToastUtils.showShort(mContext!!.getString(R.string.network_error_tip)) +// } else { +// ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip)) +// } +// } +// +// override fun onFail(code: Int, failMsg: String) { +// if (!NetworkUtils.isConnected(mContext)) { +// ToastUtils.showShort("网络异常,请稍后重试") +// } else { +// ToastUtils.showShort("查询所有绑定路线失败:$failMsg") +// } +// } +// }) } /** @@ -119,44 +157,69 @@ object BusLineModel { * @param position 位置 */ @JvmStatic - fun queryBusLineTasksById(lineId: Int, position: Int, autoRefresh: Boolean) { - queryBusTaskByLineId( - mContext!!, - lineId.toString(), - object : OchCommonServiceCallback { - override fun onSuccess(data: BusQueryLineTaskResponse) { - if (null == data && mBusLinesCallback != null) { - mBusLinesCallback!!.onBusLineTasks(null, position, autoRefresh) - return - } + fun queryBusLineTasksById(lineId: Long, position: Int, autoRefresh: Boolean) { + + TaskRepository.queryCanUserTask(lineId) + ?.transform4DataBase(TransformTask()) + ?.subscribe(object : Observer> { + override fun onSubscribe(d: Disposable) { + 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: List) { if (mBusLinesCallback != null) { mBusLinesCallback!!.onBusLineTasks(data, position, autoRefresh) } } - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext!!.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip)) - } - } - - override fun onFail(code: Int, failMsg: String) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试") - } else { - ToastUtils.showShort("查询所有绑定路线失败:$failMsg") - } - } }) +// queryBusTaskByLineId( +// mContext!!, +// lineId.toString(), +// object : OchCommonServiceCallback { +// override fun onSuccess(data: BusQueryLineTaskResponse) { +// if (null == data && mBusLinesCallback != null) { +// mBusLinesCallback!!.onBusLineTasks(null, position, autoRefresh) +// return +// } +// +// if (mBusLinesCallback != null) { +// mBusLinesCallback!!.onBusLineTasks(data, position, autoRefresh) +// } +// BusQueryLineTaskResponse.save2Db(data,lineId) +// } +// +// override fun onError() { +// if (!NetworkUtils.isConnected(mContext)) { +// ToastUtils.showShort(mContext!!.getString(R.string.network_error_tip)) +// } else { +// ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip)) +// } +// } +// +// override fun onFail(code: Int, failMsg: String) { +// if (!NetworkUtils.isConnected(mContext)) { +// ToastUtils.showShort("网络异常,请稍后重试") +// } else { +// ToastUtils.showShort("查询所有绑定路线失败:$failMsg") +// } +// } +// }) } @JvmStatic - fun commitSwitchLineId(taskId: Int, lineId: Int) { + fun commitSwitchLineId(taskId: Long, lineId: Long) { switchLine(mContext!!, taskId, object : OchCommonServiceCallback { override fun onSuccess(o: BusRoutesResponse) { - SharedPrefsMgr.getInstance().putInt(BusSwitchLineActivity.LASTCOMMITLINEID, lineId) + SharedPrefsMgr.getInstance().putLong(BusSwitchLineActivity.LASTCOMMITLINEID, lineId) if (mBusLinesCallback != null) { mBusLinesCallback!!.onChangeLineIdSuccess() } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.java index 495774a776..827bc95132 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.java @@ -61,6 +61,7 @@ import com.mogo.och.data.bean.BusStationBean; import com.mogo.och.data.bean.BusTransferData; import com.mogo.och.data.manager.cache.CacheDataManager; import com.mogo.och.weaknet.constant.BusConst; +import com.mogo.och.weaknet.database.repository.SiteRepository; import com.mogo.och.weaknet.net.OrderServiceManager; import com.mogo.och.weaknet.util.BusSendTripInfoManager; import com.mogo.och.weaknet.util.ShuttleVoiceManager; diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/OrderServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/OrderServiceManager.kt index 2be24c00f5..1769c7439f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/OrderServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/net/OrderServiceManager.kt @@ -57,7 +57,7 @@ object OrderServiceManager { @JvmStatic fun switchLine( context: Context, - taskId: Int, + taskId: Long, callback: OchCommonServiceCallback? ) { mService.switchLine( diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/presenter/BusLinePresenter.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/presenter/BusLinePresenter.java index 96bdaa8100..586a4f3b75 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/presenter/BusLinePresenter.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/presenter/BusLinePresenter.java @@ -12,6 +12,7 @@ import com.mogo.och.weaknet.model.BusLineModel; import com.mogo.och.weaknet.model.OrderModel; import com.mogo.och.weaknet.ui.BusSwitchLineView; +import java.util.List; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; @@ -42,15 +43,10 @@ public class BusLinePresenter extends Presenter implements IB } @Override - public void onBusLinesChange(BusQueryLinesResponse lines) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { - if(mView!=null) { - mView.onBusLinesChange(lines); - } - } - }, UiThreadHandler.MODE.QUEUE); + public void onBusLinesChange(List data) { + if(mView!=null) { + mView.onBusLinesChange(data); + } } @Override @@ -70,7 +66,7 @@ public class BusLinePresenter extends Presenter implements IB BusLineModel.queryBusLines(); } - public void queryBusLineTasks(int lineId, int position,boolean close){ + public void queryBusLineTasks(long lineId, int position,boolean close){ if(subscribe!=null&&!subscribe.isDisposed()){ subscribe.dispose(); } @@ -83,7 +79,7 @@ public class BusLinePresenter extends Presenter implements IB }); } - public void commitSwitchLineId(int taskId,int lineId){ + public void commitSwitchLineId(long taskId,long lineId){ BusLineModel.commitSwitchLineId(taskId,lineId); } @@ -105,7 +101,7 @@ public class BusLinePresenter extends Presenter implements IB @Override - public void onBusLineTasks(BusQueryLineTaskResponse o, int position, boolean autoRefresh) { + public void onBusLineTasks(List o, int position, boolean autoRefresh) { if(mView!=null) { mView.onBusLineTasks(o,position,autoRefresh); } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/BusSwitchLineActivity.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/BusSwitchLineActivity.kt index 64acfd963d..0c34d76e7f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/BusSwitchLineActivity.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/BusSwitchLineActivity.kt @@ -113,16 +113,16 @@ class BusSwitchLineActivity : MvpActivity * 查询返回绑定路线集合 * @param data */ - override fun onBusLinesChange(data: BusQueryLinesResponse?) { - if (null == data) { + override fun onBusLinesChange(data: MutableList?) { + if (data.isNullOrEmpty()) { showNoData(true) return } - val lastCommitLineid = SharedPrefsMgr.getInstance().getInt(LASTCOMMITLINEID, -1) - if (data.data != null && data.data.size > 0) { + val lastCommitLineid = SharedPrefsMgr.getInstance().getLong(LASTCOMMITLINEID, -1) + if (data.size > 0) { showNoData(false) mData.clear() - mData.addAll(data.data) + mData.addAll(data) mAdapter.notifyDataSetChanged() if(lastCommitLineid>0){ mData.forEachIndexed { index, line -> @@ -146,7 +146,7 @@ class BusSwitchLineActivity : MvpActivity finish() } - override fun onBusLineTasks(lineTaskInfo: BusQueryLineTaskResponse?, position: Int, autoRefresh:Boolean) { + override fun onBusLineTasks(lineTaskInfo: List, position: Int, autoRefresh:Boolean) { val result = mData[position] if (result.taskList == null) { result.taskList = ArrayList() @@ -156,17 +156,16 @@ class BusSwitchLineActivity : MvpActivity // 打开操作 mAdapter.notifyItemChanged(position) } else { - if (lineTaskInfo.data == null || lineTaskInfo.data.isEmpty()) { + if ( lineTaskInfo.isEmpty()) { result.haveTask = true - lineTaskInfo.data = ArrayList() } - if (lineTaskInfo.data.size != result.taskList.size) { // 不相等有变动 重新赋值 + if (lineTaskInfo.size != result.taskList.size) { // 不相等有变动 重新赋值 result.taskList.clear() - result.taskList.addAll(lineTaskInfo.data) + result.taskList.addAll(lineTaskInfo) if(autoRefresh) { mAdapter.checkTaskId = -1 mAdapter.checkLineId = -1 - lineTaskInfo.data.forEach { + lineTaskInfo.forEach { if (it.id == mAdapter.checkTaskId) { mAdapter.checkTaskId = it.id mAdapter.checkLineId = result.lineId @@ -177,7 +176,7 @@ class BusSwitchLineActivity : MvpActivity mAdapter.notifyItemChanged(position) linearLayoutManager.stackFromEnd = (position==mData.size-1||position==mData.size-2)&&mData.size>6 mLinesListView.smoothScrollToPosition(position) - }else if(lineTaskInfo.data.isEmpty()){ + }else if(lineTaskInfo.isEmpty()){ mAdapter.notifyItemChanged(position) } } @@ -207,7 +206,7 @@ class BusSwitchLineActivity : MvpActivity } //切换路线提交 if (v.id == R.id.switch_line_btn_commit) { - if(mAdapter.checkLineId!=-1&&mAdapter.checkTaskId!=-1){ + if(mAdapter.checkLineId!=-1L&&mAdapter.checkTaskId!=-1L){ mPresenter?.commitSwitchLineId(mAdapter.checkTaskId,mAdapter.checkLineId) }else{ ToastUtils.showLong("请选择任务") diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/BusSwitchLineView.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/BusSwitchLineView.java index e3c8c82f1c..67d38ef134 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/BusSwitchLineView.java +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/BusSwitchLineView.java @@ -4,15 +4,17 @@ import com.mogo.commons.mvp.IView; import com.mogo.och.weaknet.bean.BusQueryLineTaskResponse; import com.mogo.och.weaknet.bean.BusQueryLinesResponse; +import java.util.List; + /** * @author: wangmingjun * @date: 2022/2/10 */ public interface BusSwitchLineView extends IView { - void onBusLinesChange(BusQueryLinesResponse data); + void onBusLinesChange(List data); void onChangeLineIdSuccess(); - void onBusLineTasks(BusQueryLineTaskResponse o, int position,boolean autoRefresh); + void onBusLineTasks(List o, int position,boolean autoRefresh); } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/adapter/SwitchLineAdapter.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/adapter/SwitchLineAdapter.kt index 986b646714..de88da8f5d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/adapter/SwitchLineAdapter.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/adapter/SwitchLineAdapter.kt @@ -26,8 +26,8 @@ class SwitchLineAdapter( } // RecyclerView设置点击事件 private var mItemClickListener: LineItemClickListener? = null - var checkLineId:Int = -1 - var checkTaskId:Int = -1 + var checkLineId:Long = -1 + var checkTaskId:Long = -1 override fun onCreateViewHolder( parent: ViewGroup, viewType: Int diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/adapter/SwitchLineTaskAdapter.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/adapter/SwitchLineTaskAdapter.kt index 1d5b885270..d305583a9f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/adapter/SwitchLineTaskAdapter.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/adapter/SwitchLineTaskAdapter.kt @@ -16,7 +16,7 @@ import com.mogo.och.shuttle.weaknet.R */ class SwitchLineTaskAdapter( private val mContext: Context, - private var checkTaskId:Int, + private var checkTaskId:Long, private val mData: List?, private val mTaskItemClickListener: TaskItemClickListener? ) : RecyclerView.Adapter() {