diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt index db16aab5bc..815c1d3640 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/TicketModel.kt @@ -68,13 +68,13 @@ object TicketModel { if(passenger==null||passenger.passengerSize==0){ return } + RepositoryManager.saveWriteOff4Socket(passenger) writeOffSuccess( passenger.passengerSize, passenger.phone ?: "", passenger.ticketName?:"", 0 ) - TODO("服务器端核销需要在本地报备一下 用于计算数据") } } @@ -110,29 +110,42 @@ object TicketModel { private fun selectWriteOffCount(){ LineManager.getStations().first?.let { firstStation-> LineModel.currentTask?.let { currentTask-> - RepositoryManager.queryWriteoffCount( + val queryWriteoffCount = RepositoryManager.queryWriteoffCount( AbsMogoApplication.getApp(), - currentTask.taskId?:0L, - firstStation.siteId.toLong(), - object : OchCommonServiceCallback { - override fun onSuccess(data: WriteOffCountResponse?) { - data?.let { - val count = if(it.data==null){ - 0 - }else{ - it.data - } - emitterMain?.onNext(Pair(firstStation.siteId,count)) - d(SceneConstant.M_BUS + TAG, "${firstStation.name}核销人数:${count}") - OchChainLogManager.writeChainLog("核销人数","任务:${currentTask.taskId} zhan'dian") + currentTask.taskId ?: 0L, + firstStation.siteId.toLong() + ) + if(queryWriteoffCount!=null){ + queryWriteoffCount.subscribe( + object : Observer { + override fun onSubscribe(d: Disposable) { + } - } - override fun onFail(code: Int, msg: String?) { + override fun onError(e: Throwable) { + + } + + override fun onComplete() { + + } + + override fun onNext(count: Int) { + emitterMain?.onNext(Pair(firstStation.siteId, count)) + d( + SceneConstant.M_BUS + TAG, + "${firstStation.name}核销人数:${count}" + ) + OchChainLogManager.writeChainLog( + "核销人数", + "任务:${currentTask.taskId} zhan'dian" + ) + } } - }) - return + ) + return + } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt index 5dd2e85fce..066f1c27a6 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/RepositoryManager.kt @@ -7,12 +7,13 @@ 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.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.WaitUploadLine +import com.mogo.och.weaknet.bean.WriteOffPassenger import com.mogo.och.weaknet.bean.request.ShuttleEventRequest import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.db.MyDataBase import com.mogo.och.weaknet.repository.db.bean.LineDataBean import com.mogo.och.weaknet.repository.db.bean.TaskDataBean @@ -179,8 +180,8 @@ object RepositoryManager { } } - fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback?){ - writeOffRepository?.queryWriteoffCount(context,taskId,siteId,callback) + fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long): Observable? { + return writeOffRepository?.queryWriteoffCount(context,taskId,siteId) } fun writeOff(writeOffDetialMsg: WriteOffDetialMsg): Observable? { @@ -196,6 +197,15 @@ object RepositoryManager { return writeOffRepository?.canCanEndTask(taskId)?:true } + /** + * 安全员小程序核销成功的用户计数用 + */ + fun saveWriteOff4Socket(passenger: WriteOffPassenger) { + BizLoopManager.runInIoThread{ + writeOffRepository?.writeOffEvent4Socket(passenger) + } + } + fun closeDb() { if (supportDb()) { MyDataBase.instance?.close() diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt index 7a3a566aa6..4586f37cf0 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt @@ -19,6 +19,11 @@ interface WriteOffDataDao { @Delete fun delete(vararg eventDataBean: WriteOffDataBean) + // 删除过时数据 + @Query("DELETE FROM ${WriteOffDataBean.writeoffDataTable} WHERE event_save_time < :zeroTime") + fun deleteObsoleteData(zeroTime: Long = DateTimeUtil.getCurrentDateZero()):Int + + @Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} WHERE event_save_time > :zeroTime and order_no = :orderNo order by event_save_time") fun queryWriteOffByOrderNo(zeroTime: Long = DateTimeUtil.getCurrentDateZero(),orderNo:String): List? @@ -28,5 +33,8 @@ interface WriteOffDataDao { @Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} WHERE update_status = ${WriteOffDataBean.notUpdate} LIMIT 10 OFFSET 0") fun queryWriteOffEventByStatusWithPage():List? + @Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} WHERE event_save_time > :zeroTime and task_id = :taskId and site_id = :siteId") + fun queryWriteOffByTaskAndSiteId(taskId: Long, siteId: Long,zeroTime: Long = DateTimeUtil.getCurrentDateZero()):List? + } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt index 6bcf688869..988be54510 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt @@ -1,5 +1,6 @@ package com.mogo.och.weaknet.repository.db.repository +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.weaknet.model.EventModel import com.mogo.och.weaknet.repository.db.IDbRepository import com.mogo.och.weaknet.repository.db.MyDataBase @@ -50,5 +51,15 @@ object WriteOffDb: IDbRepository { return queryWriteOffByOrderNo?.size?:0 } + fun queryWriteOffByTaskAndSiteId(taskId: Long, siteId: Long): List? { + return writeOffDataDao?.queryWriteOffByTaskAndSiteId(taskId,siteId) + } + + fun deleteObsoleteData() { + writeOffDataDao?.deleteObsoleteData()?.let { + OchChainLogManager.writeChainLogDb("删除临时数据", "WriteOff删除数量:${it}") + } + } + } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt index 1c0a6170ad..605a791148 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/bus/SaasBusServiceManager.kt @@ -47,22 +47,6 @@ object SaasBusServiceManager: NetInterface { } } - /** - * 只发生在大理和saas环境 查询当前站点核销的人数 - */ - override fun writeOffCount(context: Context?, taskId: Long?, siteId: Long?): Observable { - return mService.writeOffCount( - MoGoAiCloudClientConfig.getInstance().serviceAppId, - SharedPrefsMgr.getInstance().token, - WriteOffCountReqBean(OchSPManager.getSn()?:"",taskId?:0, siteId?:0,) - ) - .transformIoTry() - .flatMap(OchCommonNet("saas shuttle writeOffCount",false)) - .flatMap { - Observable.just(it.data?:0) - } - } - /** * 同步 线路、站点、任务、自驾轨迹信息 */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt index c584cb904e..3e32e4991c 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/IWriteOffRepository.kt @@ -4,13 +4,14 @@ import android.content.Context import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.weaknet.bean.WaitUploadLine +import com.mogo.och.weaknet.bean.WriteOffPassenger import com.mogo.och.weaknet.bean.response.WriteOffCountResponse import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import io.reactivex.Observable interface IWriteOffRepository { - fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long, callback: OchCommonServiceCallback?): Observable? + fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long): Observable? fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable? @@ -21,5 +22,8 @@ interface IWriteOffRepository { } fun queryWaitUploadData(): Observable>? + fun writeOffEvent4Socket(passenger: WriteOffPassenger) { + + } } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt index 8b928b8699..b13b1ca64e 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt @@ -11,11 +11,10 @@ import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.cache.OchSPManager import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg -import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.weaknet.bean.WaitUploadLine import com.mogo.och.weaknet.bean.WaitUploadTask -import com.mogo.och.weaknet.bean.response.WriteOffCountResponse +import com.mogo.och.weaknet.bean.WriteOffPassenger import com.mogo.och.weaknet.model.LineModel import com.mogo.och.weaknet.repository.db.bean.WriteOffDataBean import com.mogo.och.weaknet.repository.db.repository.EventDb @@ -64,10 +63,13 @@ class WriteOffCacheRepository : IWriteOffRepository { override fun queryWriteoffCount( context: Context, taskId: Long, - siteId: Long, - callback: OchCommonServiceCallback? + siteId: Long ): Observable? { - TODO("本地计算核销数量 数据来源有两个地方 1、本地数据库计算 + 2、服务器核销") + val queryWriteOffByTaskAndSiteId = WriteOffDb.queryWriteOffByTaskAndSiteId(taskId, siteId) + return Observable.just(queryWriteOffByTaskAndSiteId) + .flatMap { + return@flatMap Observable.just(it?.size ?:0) + } } override fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable? { @@ -212,6 +214,29 @@ class WriteOffCacheRepository : IWriteOffRepository { ?.observeOn(AndroidSchedulers.mainThread()) } + override fun writeOffEvent4Socket(passenger: WriteOffPassenger) { + val addWrite = WriteOffDataBean() + //addWrite.expiryTime = it.expiryTime + //addWrite.bookingTime = it.bookingTime + //addWrite.type = it.type + addWrite.taskId = LineModel.currentTask?.taskId + LineManager.getStationsWithLine { start, end, lineInfo -> + addWrite.siteId = start.siteId.toLong() + addWrite.lineId = lineInfo.lineId + } + //addWrite.availableTimes = it.availableTimes + addWrite.orderNo = passenger.orderNo + //addWrite.uid = it.uid + addWrite.phone = passenger.phone + addWrite.ticketSize = passenger.passengerSize + addWrite.ticketName = passenger.ticketName + //addWrite.msgId = OchSPManager.getSn()+System.currentTimeMillis() + addWrite.driverId = LoginStatusManager.getLoginInfo()?.driverId?:0 + //addWrite.businessTime = System.currentTimeMillis() + addWrite.updateStatus = WriteOffDataBean.updated + WriteOffDb.addOrUpdate(addWrite) + } + override fun release() { weakNetInterface = null CallerLogger.d(TAG,"重置 weakNetInterface") diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt index 7783af118f..f9deca8196 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffNormallRepository.kt @@ -62,7 +62,6 @@ class WriteOffNormallRepository: IWriteOffRepository { context: Context, taskId: Long, siteId: Long, - callback: OchCommonServiceCallback? ): Observable? { return normalNetInterface?.writeOffCount(context,taskId,siteId) }