diff --git a/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/6.json b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/6.json new file mode 100644 index 0000000000..e9fdee1966 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/schemas/com.mogo.och.weaknet.repository.db.MyDataBase/6.json @@ -0,0 +1,745 @@ +{ + "formatVersion": 1, + "database": { + "version": 6, + "identityHash": "b2c07e9188f2ee54eabad0eee83647cf", + "entities": [ + { + "tableName": "contrail_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `line_id` INTEGER, `csv_file_url` TEXT, `csv_file_md5` TEXT, `txt_file_url` TEXT, `txt_file_md5` TEXT, `contrail_save_time` INTEGER, `md5` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "csvFileUrl", + "columnName": "csv_file_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "csvFileMd5", + "columnName": "csv_file_md5", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "txtFileUrl", + "columnName": "txt_file_url", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "txtFileMd5", + "columnName": "txt_file_md5", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "contrailSaveTime", + "columnName": "contrail_save_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "md5", + "columnName": "md5", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_contrail_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_contrail_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + }, + { + "name": "index_contrail_data_table_md5", + "unique": false, + "columnNames": [ + "md5" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_contrail_data_table_md5` ON `${TABLE_NAME}` (`md5`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "line_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `line_id` INTEGER, `line_name` TEXT, `end_station_name` TEXT, `line_get_time` INTEGER NOT NULL)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineName", + "columnName": "line_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "endStationName", + "columnName": "end_station_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "linegetTime", + "columnName": "line_get_time", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_line_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_line_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "site_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `site_id` INTEGER, `line_id` INTEGER, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `introduction` TEXT, `is_play_tts` INTEGER, `md5` TEXT, `videoList` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "nameKr", + "columnName": "name_kr", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "seq", + "columnName": "seq", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "gcjLon", + "columnName": "gcj_lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "gcjLat", + "columnName": "gcj_lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lon", + "columnName": "lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lat", + "columnName": "lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "introduction", + "columnName": "introduction", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isPlayTts", + "columnName": "is_play_tts", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "md5", + "columnName": "md5", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "videoListDB", + "columnName": "videoList", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_site_data_table_site_id", + "unique": false, + "columnNames": [ + "site_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_site_data_table_site_id` ON `${TABLE_NAME}` (`site_id`)" + }, + { + "name": "index_site_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_site_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "task_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `task_data` INTEGER, `task_start_time` INTEGER, `start_time` INTEGER, `end_time` INTEGER, `task_get_time` INTEGER NOT NULL, `status` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskDate", + "columnName": "task_data", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskStartTime", + "columnName": "task_start_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "startTime", + "columnName": "start_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "endtime", + "columnName": "end_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskgetTime", + "columnName": "task_get_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "status", + "columnName": "status", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_task_data_table_task_id", + "unique": false, + "columnNames": [ + "task_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_task_data_table_task_id` ON `${TABLE_NAME}` (`task_id`)" + }, + { + "name": "index_task_data_table_line_id", + "unique": false, + "columnNames": [ + "line_id" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_task_data_table_line_id` ON `${TABLE_NAME}` (`line_id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "used_task_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `line_name` TEXT, `name` TEXT, `name_kr` TEXT, `seq` INTEGER, `gcj_lon` REAL, `gcj_lat` REAL, `lon` REAL, `lat` REAL, `driving_status` INTEGER, `leaving` INTEGER, `arrived_time` INTEGER, `leave_time` INTEGER, `introduction` TEXT, `is_play_tts` INTEGER, `event_save_time` INTEGER NOT NULL, `videoList` TEXT)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineName", + "columnName": "line_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "name", + "columnName": "name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "nameKr", + "columnName": "name_kr", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "seq", + "columnName": "seq", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "gcjLon", + "columnName": "gcj_lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "gcjLat", + "columnName": "gcj_lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lon", + "columnName": "lon", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "lat", + "columnName": "lat", + "affinity": "REAL", + "notNull": false + }, + { + "fieldPath": "drivingStatus", + "columnName": "driving_status", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "leaving", + "columnName": "leaving", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "arrivedTime", + "columnName": "arrived_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "leaveTime", + "columnName": "leave_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "introduction", + "columnName": "introduction", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "isPlayTts", + "columnName": "is_play_tts", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "eventSaveTime", + "columnName": "event_save_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "videoList", + "columnName": "videoList", + "affinity": "TEXT", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [], + "foreignKeys": [] + }, + { + "tableName": "event_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT, `lineId` INTEGER, `taskDate` INTEGER, `lineName` TEXT, `task_id` INTEGER, `task_start_time` INTEGER, `business_time` INTEGER, `write_version` INTEGER, `site_id` INTEGER, `seq` INTEGER, `driver_id` INTEGER, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL, `msg_id` TEXT, `update_time` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "eventType", + "columnName": "event_type", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "lineId", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskDate", + "columnName": "taskDate", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineName", + "columnName": "lineName", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskStartTime", + "columnName": "task_start_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "businessTime", + "columnName": "business_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "writeVersion", + "columnName": "write_version", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "seq", + "columnName": "seq", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "driverId", + "columnName": "driver_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "eventSaveTime", + "columnName": "event_save_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updateStatus", + "columnName": "update_status", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "msgId", + "columnName": "msg_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "upDateTime", + "columnName": "update_time", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_event_data_table_event_save_time", + "unique": false, + "columnNames": [ + "event_save_time" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_event_data_table_event_save_time` ON `${TABLE_NAME}` (`event_save_time`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "writeoff_data_table", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `msg_id` TEXT, `expiry_time` INTEGER, `booking_time` INTEGER, `type` INTEGER, `task_id` INTEGER, `line_id` INTEGER, `site_id` INTEGER, `driver_id` INTEGER, `available_times` INTEGER, `order_no` TEXT, `uid` TEXT, `seq` TEXT, `business_time` INTEGER, `tick_size` INTEGER, `tick_name` TEXT, `event_save_time` INTEGER NOT NULL, `update_status` INTEGER NOT NULL, `update_time` INTEGER)", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "msgId", + "columnName": "msg_id", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "expiryTime", + "columnName": "expiry_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "bookingTime", + "columnName": "booking_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "type", + "columnName": "type", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "taskId", + "columnName": "task_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "lineId", + "columnName": "line_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "siteId", + "columnName": "site_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "driverId", + "columnName": "driver_id", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "availableTimes", + "columnName": "available_times", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "orderNo", + "columnName": "order_no", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "uid", + "columnName": "uid", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "phone", + "columnName": "seq", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "businessTime", + "columnName": "business_time", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "ticketSize", + "columnName": "tick_size", + "affinity": "INTEGER", + "notNull": false + }, + { + "fieldPath": "ticketName", + "columnName": "tick_name", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "eventSaveTime", + "columnName": "event_save_time", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updateStatus", + "columnName": "update_status", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "upDateTime", + "columnName": "update_time", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "id" + ], + "autoGenerate": true + }, + "indices": [ + { + "name": "index_writeoff_data_table_event_save_time", + "unique": false, + "columnNames": [ + "event_save_time" + ], + "orders": [], + "createSql": "CREATE INDEX IF NOT EXISTS `index_writeoff_data_table_event_save_time` ON `${TABLE_NAME}` (`event_save_time`)" + } + ], + "foreignKeys": [] + } + ], + "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, 'b2c07e9188f2ee54eabad0eee83647cf')" + ] + } +} \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/request/ShuttleEventRequest.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/request/ShuttleEventRequest.kt index a8dddaa3bb..e5bc3b211c 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/request/ShuttleEventRequest.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/request/ShuttleEventRequest.kt @@ -1,7 +1,9 @@ package com.mogo.och.weaknet.bean.request import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.network.utils.digest.DigestUtils +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.bridge.device.checkvin.CheckVinManager import com.mogo.och.weaknet.repository.db.bean.EventDataBean @@ -20,9 +22,15 @@ data class ShuttleEventRequest(val requestId: String, val sn: String,val vin:Str val eventList4Request = mutableListOf() var tempEvent: Event?=null waitUpdateEvent?.forEach { - tempEvent = Event(it.eventType, - EventData(it.taskId,it.businessTime,it.writeVersion,it.siteId,it.seq,it.driverId,it.msgId) - ) + tempEvent = if(AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { + Event(it.eventType, + EventData(0,it.taskId,it.taskDate,it.businessTime,it.writeVersion,it.siteId,it.seq,it.driverId,it.msgId) + ) + }else{ + Event(it.eventType, + EventData(it.taskId,0,it.taskDate,it.businessTime,it.writeVersion,it.siteId,it.seq,it.driverId,it.msgId) + ) + } eventList4Request.add(tempEvent!!) } @@ -46,6 +54,8 @@ open class EventDataBase(val msgtype:String,var businessTime: Long?) data class EventData( var taskId: Long?, + var detailId: Long?, + var taskDate: Long?, var businessTimeout: Long?, var writeVersion: Long?, var siteId: Long?, diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt index 848919859b..3a0102681c 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/LineModel.kt @@ -160,7 +160,7 @@ object LineModel { ) val startTime = System.currentTimeMillis() CarExecutableTaskResponse.save2Db(data) - d(TAG,"更新数据耗时${System.currentTimeMillis()-startTime}___${Thread.currentThread().name}") + d(TAG,"更新数据耗时${System.currentTimeMillis()-startTime}") RxUtils.createSubscribe(800) { // 等待写入数据库 mBusLinesCallbackMap.forEach { callback -> @@ -211,7 +211,7 @@ object LineModel { fun commitSwitchLineId(task: TaskDataBean, line: LineDataBean) { RxUtils.disposeSubscribe(startTaskDisposable) line.getLineIdAndName { lineId, lineName -> - task.getLineIdAndName { taskId, taskTime -> + task.getLineIdAndName { taskId, taskTime,taskDate -> RepositoryManager.startTask(taskId, lineId, taskTime, lineName) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) @@ -247,7 +247,7 @@ object LineModel { override fun onNext(data: Boolean) { d(TAG, "commitSwitchLineId onNext ${data}") if (data) { - EventDb.saveEventTaskStart(taskId, lineId, taskTime, lineName) + EventDb.saveEventTaskStart(taskId, lineId, taskTime, lineName,taskDate) OrderModel.queryBusRoutes() BizLoopManager.runInIoThread{ val querySiteByLineId = SiteDb.querySiteByLineId(lineId) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt index 1dde819bc8..8038400490 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt @@ -266,7 +266,9 @@ object OrderModel { startStation.siteId.toLong(), task.taskId?:0L, task.lineId?:0L, - task.taskStartTime?:System.currentTimeMillis()) + task.taskStartTime?:System.currentTimeMillis(), + task.taskDate?:0L + ) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) ?.subscribe(object : Observer { 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 fe7d8b391e..b9be4d96bb 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 @@ -39,6 +39,9 @@ object RepositoryManager { if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { field = WeaknetRepository() CallerLogger.d(TAG,"saas shuttle 支持db") + }else if(AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { + field = WeaknetRepository() + CallerLogger.d(TAG,"saas scheduled 支持db") }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { field = WeaknetRepository() CallerLogger.d(TAG,"saas bus 支持db") @@ -76,7 +79,10 @@ object RepositoryManager { if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { field = WriteOffCacheRepository() CallerLogger.d(TAG,"saas shuttle 核销缓存") - }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { + }else if(AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { + field = WriteOffCacheRepository() + CallerLogger.d(TAG,"saas sceduletd 核销缓存") + }else if(AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { field = WriteOffCacheRepository() CallerLogger.d(TAG,"saas bus 核销缓存") } @@ -116,9 +122,10 @@ object RepositoryManager { return lineRepository?.startTask(taskId,lineId,taskTime,lineName) } - fun leaveStation(seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime:Long + fun leaveStation( + seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime: Long, taskDate: Long ): Observable?{ - return lineRepository?.leaveStation(seq,siteId,taskId,lineId,taskStartTime) + return lineRepository?.leaveStation(seq,siteId,taskId,lineId,taskStartTime,taskDate) } fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable?{ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt index 24b300af19..91eeb11af6 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/MyDataBase.kt @@ -33,7 +33,7 @@ import java.io.File //entities指定该数据库有哪些表,多张表就逗号分隔 //version指定数据库版本号,升级时需要用到 //数据库继承自RoomDatabase -@Database(entities = [ContrailDataBean::class, LineDataBean::class, SiteDataBean::class, TaskDataBean::class, TaskSiteDataBean::class, EventDataBean::class, WriteOffDataBean::class], version = 5) +@Database(entities = [ContrailDataBean::class, LineDataBean::class, SiteDataBean::class, TaskDataBean::class, TaskSiteDataBean::class, EventDataBean::class, WriteOffDataBean::class], version = 6) abstract class MyDataBase : RoomDatabase() { override fun getOpenHelper(): SupportSQLiteOpenHelper { @@ -88,6 +88,13 @@ abstract class MyDataBase : RoomDatabase() { } } + private val MIGRATION_5_6 = object : Migration(5, 6) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL("ALTER TABLE ${EventDataBean.evnetDataTable} ADD COLUMN taskDate INTEGER") + } + } + + fun getDBName():MyDataBase{ val roomName = when (ProjectUtils.getProjectType()) { Project.SAAS -> { @@ -95,6 +102,8 @@ abstract class MyDataBase : RoomDatabase() { "shuttle_db" }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { "saas_bus_db" + }else if(AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { + "saas_scheduled_db" }else{ FunctionBuildConfig.appIdentityMode } @@ -131,6 +140,7 @@ abstract class MyDataBase : RoomDatabase() { .addMigrations(MIGRATION_2_3) .addMigrations(MIGRATION_3_4) .addMigrations(MIGRATION_4_5) + .addMigrations(MIGRATION_5_6) .fallbackToDestructiveMigration() .build() } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt index bfd343051b..d502c50945 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/EventDataBean.kt @@ -19,11 +19,18 @@ data class EventDataBean( var eventType: String? = null, /** - * 任务id + * 任务id、模板id */ @ColumnInfo(name = "lineId", typeAffinity = ColumnInfo.INTEGER) var lineId: Long? = null, + /** + * 模板发生日期 + */ + @ColumnInfo(name = "taskDate", typeAffinity = ColumnInfo.INTEGER) + var taskDate: Long? = null, + + /** * 任务id */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskDataBean.kt index 6c09f22041..c7d521be5d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskDataBean.kt @@ -16,7 +16,7 @@ data class TaskDataBean( * 任务id */ @ColumnInfo(name = "task_id", typeAffinity = ColumnInfo.INTEGER, index = true) - @SerializedName("id") + @SerializedName("id", alternate = ["detailId"]) var taskId: Long? = null, /** @@ -87,10 +87,12 @@ data class TaskDataBean( return result } - fun getLineIdAndName(function: (lineId:Long,lineName:Long) -> Unit) { - taskId?.let {id-> - taskStartTime?.let {time-> - function(id,time) + fun getLineIdAndName(function: (taskId: Long, taskTime: Long , taskDate:Long) -> Unit) { + taskId?.let { id -> + taskStartTime?.let { time -> + taskDate?.let { date -> + function(id, time, date) + } } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt index 348ddb8521..ef18ff9549 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/EventDb.kt @@ -29,11 +29,12 @@ object EventDb: IDbRepository { eventDataDao = null } - fun saveEventTaskStart(taskId: Long, lineId: Long, taskStartTime: Long, name: String) { + fun saveEventTaskStart(taskId: Long, lineId: Long, taskStartTime: Long, name: String,taskDate:Long) { val event = EventDataBean() event.eventType = EventDataBean.TaskStart event.lineId = lineId event.taskId = taskId + event.taskDate = taskDate event.lineName = name event.taskStartTime = taskStartTime event.businessTime = DateTimeUtil.getCurrentTimeStamp() @@ -54,7 +55,8 @@ object EventDb: IDbRepository { siteId: Long, seq: Int, taskStartTime: Long?, - lineName: String + lineName: String, + taskDate: Long? ) { val event = EventDataBean() event.eventType = EventDataBean.TaskArriveSite @@ -62,6 +64,7 @@ object EventDb: IDbRepository { event.taskStartTime = taskStartTime event.lineName = lineName event.taskId = taskId + event.taskDate = taskDate event.businessTime = DateTimeUtil.getCurrentTimeStamp() event.writeVersion = DateTimeUtil.getCurrentTimeStamp() event.siteId = siteId @@ -80,12 +83,13 @@ object EventDb: IDbRepository { siteId: Long, seq: Int, taskStartTime: Long?, - lineName: String + lineName: String, + taskDate: Long ) { val event = EventDataBean() event.eventType = EventDataBean.TaskLeaveSite event.lineId = lineId - event.taskId = taskId + event.taskDate = taskDate event.taskStartTime = taskStartTime event.lineName = lineName event.businessTime = DateTimeUtil.getCurrentTimeStamp() @@ -100,11 +104,18 @@ object EventDb: IDbRepository { } } - fun saveEventTaskEnd(taskId: Long, lineId: Long, taskStartTime: Long?, lineName: String) { + fun saveEventTaskEnd( + taskId: Long, + lineId: Long, + taskStartTime: Long?, + lineName: String, + taskDate: Long + ) { val event = EventDataBean() event.eventType = EventDataBean.TaskEnd event.lineId = lineId event.taskId = taskId + event.taskDate = taskDate event.lineName = lineName event.taskStartTime = taskStartTime event.businessTime = DateTimeUtil.getCurrentTimeStamp() diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt index 1f2864563d..5d122f8fd8 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/ILineRepository.kt @@ -19,7 +19,14 @@ interface ILineRepository { fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? - fun leaveStation(seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime:Long): Observable? + fun leaveStation( + seq: Int, + siteId: Long, + taskId: Long, + lineId: Long, + taskStartTime: Long, + taskDate: Long + ): Observable? fun arriveStation( seq: Int, siteId: Long, taskId: Long): Observable? diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt index 4036cb1039..30a448a927 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/NormalRepository.kt @@ -157,7 +157,8 @@ class NormalRepository: ILineRepository { siteId: Long, taskId: Long, lineId: Long, - taskStartTime: Long + taskStartTime: Long, + taskDate: Long ): Observable? { return normalLineInterface?.leaveStation(seq, siteId, taskId, System.currentTimeMillis()) } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt index 2e224f80b0..50a93f0bfe 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/line/impl/WeaknetRepository.kt @@ -32,6 +32,7 @@ import com.mogo.och.weaknet.repository.net.exception.NetException import com.mogo.och.weaknet.repository.net.NetInterface import com.mogo.och.weaknet.repository.net.project.dali.shuttle.DaliShuttleServiceManager import com.mogo.och.weaknet.repository.net.project.saas.bus.SaasBusServiceManager +import com.mogo.och.weaknet.repository.net.project.saas.scheduled.SaasScheduledServiceManager import com.mogo.och.weaknet.repository.net.project.saas.shuttle.SaasShuttleServiceManager import io.reactivex.Observable @@ -46,6 +47,8 @@ class WeaknetRepository : ILineRepository { Project.SAAS -> { if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { field = SaasShuttleServiceManager + }else if(AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { + field = SaasScheduledServiceManager }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { field = SaasBusServiceManager } @@ -220,7 +223,14 @@ class WeaknetRepository : ILineRepository { return TaskDb.startTask(taskId, lineId, lineName) } - override fun leaveStation(seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime:Long): Observable? { + override fun leaveStation( + seq: Int, + siteId: Long, + taskId: Long, + lineId: Long, + taskStartTime: Long, + taskDate: Long + ): Observable? { return Observable.just(taskId) .flatMap { //开始站点: leaving false->true @@ -239,7 +249,8 @@ class WeaknetRepository : ILineRepository { it.siteId.toLong(), it.seq, taskStartTime, - lineInfo.lineName + lineInfo.lineName, + taskDate ) } @@ -278,7 +289,8 @@ class WeaknetRepository : ILineRepository { end.siteId.toLong(), end.seq, task.taskStartTime, - lineInfo.lineName + lineInfo.lineName, + task.taskDate ) } } @@ -323,7 +335,7 @@ class WeaknetRepository : ILineRepository { if (task.taskId!=null&&task.lineId!=null) { TaskDb.endTask(task.taskId!!) LineManager.getLineInfo { lineInfo -> - EventDb.saveEventTaskEnd(task.taskId!!,task.lineId!!,task.taskStartTime,lineInfo.lineName) + EventDb.saveEventTaskEnd(task.taskId!!,task.lineId!!,task.taskStartTime,lineInfo.lineName,task.taskDate?:0L) } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/scheduled/ISaasScheduledApiService.java b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/scheduled/ISaasScheduledApiService.java new file mode 100644 index 0000000000..8b6100aa34 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/scheduled/ISaasScheduledApiService.java @@ -0,0 +1,69 @@ +package com.mogo.och.weaknet.repository.net.project.saas.scheduled; + +import com.mogo.eagle.core.data.BaseData; +import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest; +import com.mogo.och.weaknet.bean.request.ShuttleEventRequest; +import com.mogo.och.weaknet.bean.response.BusRoutesResponse; +import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse; +import com.mogo.och.weaknet.bean.response.WriteOffCountResponse; +import com.mogo.och.weaknet.repository.net.bean.request.PassengerWriteOffRequest; +import com.mogo.och.weaknet.repository.net.bean.request.WriteOffCountReqBean; +import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse; + +import io.reactivex.Observable; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Headers; +import retrofit2.http.POST; +import retrofit2.http.Query; + +/** + * 小巴车相关接口 + * + * @author tongchenfei + *

+ * wiki: http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48970072 + */ +public interface ISaasScheduledApiService { + + /** + * 查询当前运行任务 + * + * @param request 请求参数 + * @return 接口返回数据 + */ + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @POST( "/och-shuttle-cabin/api/business/v1/driver/lineDataWithDriver/query" ) + Observable queryBusRoutes(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusQueryLineStationsRequest request); + + /** + * 查询当前站点核销的人数 + */ + @Headers( {"Content-type:application/json;charset=UTF-8"} ) + @POST("/och-vehicle/api/car/v2/task/site/writeOffCount") + Observable writeOffCount(@Header ("appId") String appId, @Header("ticket") String ticket, @Body WriteOffCountReqBean writeOffCountReqBean); + + /** + * 同步核销接口 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/och-vehicle/api/car/v2/device/writeOff") + Observable saaswriteOffTicket(@Header ("appId") String appId, @Header("ticket") String ticket, @Body PassengerWriteOffRequest request); + + /** + * 同步 线路、站点、任务、自驾轨迹信息 + */ + @Headers( {"Content-type:application/json;charset=UTF-8"} ) + @GET("/och-vehicle/cabin/queryCarExecutableTaskList") + Observable queryCarExecutableTaskList(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); + + /** + * 上传 开始线路 滑动出发 到站 完成线路 各个任务到服务器端 + */ + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @POST( "/och-vehicle/cabin/reportCabinEvent" ) + Observable reportCabinEvent(@Header ("appId") String appId, @Header("ticket") String ticket, @Body ShuttleEventRequest request); + +} + diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/scheduled/SaasScheduledServiceManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/scheduled/SaasScheduledServiceManager.kt new file mode 100644 index 0000000000..c696fefd21 --- /dev/null +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/net/project/saas/scheduled/SaasScheduledServiceManager.kt @@ -0,0 +1,81 @@ +package com.mogo.och.weaknet.repository.net.project.saas.scheduled + +import android.content.Context +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.cache.OchSPManager +import com.mogo.och.common.module.network.OchCommonNet +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.network.interceptor.transformIoTry +import com.mogo.och.data.bean.BusRoutesResult +import com.mogo.och.weaknet.bean.request.BusQueryLineStationsRequest +import com.mogo.och.weaknet.bean.request.ShuttleEventRequest +import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse +import com.mogo.och.weaknet.repository.net.NetInterface +import io.reactivex.Observable + +/** + * @author: wangmingjun + * @date: 2021/10/20 + */ +object SaasScheduledServiceManager: NetInterface { + + private val mService: ISaasScheduledApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( + ISaasScheduledApiService::class.java + ) + + + /** + * 查询小巴车当前任务 + */ + override fun queryBusRoutes(): Observable? { + //获取当前高德坐标 + return mService.queryBusRoutes( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + BusQueryLineStationsRequest() + ) .transformIoTry() + .flatMap(OchCommonNet("queryBusRoutes",false)) + .flatMap { + Observable.just(it.data?:BusRoutesResult()) + } + } + + /** + * 同步 线路、站点、任务、自驾轨迹信息 + */ + override fun queryCarExecutableTaskList( + context: Context, + callback: OchCommonServiceCallback? + ) { + mService.queryCarExecutableTaskList( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + OchSPManager.getSn() + ) + .transformIoTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryCarExecutableTaskList")) + } + + /** + * 上传 开始线路 滑动出发 到站 完成线路 各个任务到服务器端 + */ + override fun reportCabinEvent( + context: Context, + data: ShuttleEventRequest, + callback: OchCommonServiceCallback?, + ) { + mService.reportCabinEvent( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + data, + ) + .subscribe(OchCommonSubscribeImpl(context, callback, "reportCabinEvent")) + } + + +} \ 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 fdaea3032c..1fc2c1c8fc 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 @@ -1,7 +1,6 @@ package com.mogo.och.weaknet.repository.writeoff.impl import android.content.Context -import com.mogo.commons.AbsMogoApplication import com.mogo.commons.env.Project import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.data.config.FunctionBuildConfig @@ -25,7 +24,7 @@ import com.mogo.och.weaknet.repository.net.exception.NetException import com.mogo.och.weaknet.repository.net.NetInterface import com.mogo.och.weaknet.repository.net.bean.response.PassengerWriteOffResponse import com.mogo.och.weaknet.repository.net.project.saas.bus.SaasBusServiceManager -import com.mogo.och.weaknet.repository.net.project.saas.shuttle.SaasShuttleServiceManager +import com.mogo.och.weaknet.repository.net.project.saas.scheduled.SaasScheduledServiceManager import com.mogo.och.weaknet.repository.writeoff.IWriteOffRepository import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers @@ -40,7 +39,7 @@ class WriteOffCacheRepository : IWriteOffRepository { when (ProjectUtils.getProjectType()) { Project.SAAS -> { if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { - field = SaasShuttleServiceManager + field = SaasScheduledServiceManager }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { field = SaasBusServiceManager }