[fea]
[核销次数查询和展示]
This commit is contained in:
yangyakun
2024-11-19 19:42:18 +08:00
parent 21003a1a8c
commit f62fb218f7
8 changed files with 99 additions and 45 deletions

View File

@@ -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<WriteOffCountResponse> {
override fun onSuccess(data: WriteOffCountResponse?) {
data?.let {
val count = if(it.data==null){
0
}else{
it.data
}
emitterMain?.onNext(Pair<Int,Int>(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<Int> {
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<Int, Int>(firstStation.siteId, count))
d(
SceneConstant.M_BUS + TAG,
"${firstStation.name}核销人数:${count}"
)
OchChainLogManager.writeChainLog(
"核销人数",
"任务:${currentTask.taskId} zhan'dian"
)
}
}
})
return
)
return
}
}
}

View File

@@ -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<WriteOffCountResponse>?){
writeOffRepository?.queryWriteoffCount(context,taskId,siteId,callback)
fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long): Observable<Int>? {
return writeOffRepository?.queryWriteoffCount(context,taskId,siteId)
}
fun writeOff(writeOffDetialMsg: WriteOffDetialMsg): Observable<PassengerWriteOffResponse.Result>? {
@@ -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()

View File

@@ -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<WriteOffDataBean>?
@@ -28,5 +33,8 @@ interface WriteOffDataDao {
@Query("SELECT * FROM ${WriteOffDataBean.writeoffDataTable} WHERE update_status = ${WriteOffDataBean.notUpdate} LIMIT 10 OFFSET 0")
fun queryWriteOffEventByStatusWithPage():List<WriteOffDataBean>?
@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<WriteOffDataBean>?
}

View File

@@ -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<WriteOffDataBean>? {
return writeOffDataDao?.queryWriteOffByTaskAndSiteId(taskId,siteId)
}
fun deleteObsoleteData() {
writeOffDataDao?.deleteObsoleteData()?.let {
OchChainLogManager.writeChainLogDb("删除临时数据", "WriteOff删除数量:${it}")
}
}
}

View File

@@ -47,22 +47,6 @@ object SaasBusServiceManager: NetInterface {
}
}
/**
* 只发生在大理和saas环境 查询当前站点核销的人数
*/
override fun writeOffCount(context: Context?, taskId: Long?, siteId: Long?): Observable<Int> {
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)
}
}
/**
* 同步 线路、站点、任务、自驾轨迹信息
*/

View File

@@ -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<WriteOffCountResponse>?): Observable<Int>?
fun queryWriteoffCount(context: Context, taskId: Long, siteId: Long): Observable<Int>?
fun writeOffEvent(writeOffDetialMsg: WriteOffDetialMsg): Observable<PassengerWriteOffResponse.Result>?
@@ -21,5 +22,8 @@ interface IWriteOffRepository {
}
fun queryWaitUploadData(): Observable<MutableList<WaitUploadLine>>?
fun writeOffEvent4Socket(passenger: WriteOffPassenger) {
}
}

View File

@@ -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<WriteOffCountResponse>?
siteId: Long
): Observable<Int>? {
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<PassengerWriteOffResponse.Result>? {
@@ -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")

View File

@@ -62,7 +62,6 @@ class WriteOffNormallRepository: IWriteOffRepository {
context: Context,
taskId: Long,
siteId: Long,
callback: OchCommonServiceCallback<WriteOffCountResponse>?
): Observable<Int>? {
return normalNetInterface?.writeOffCount(context,taskId,siteId)
}