Merge branch 'dev_robotaxi-d_251110_8.2.8_i18n' into dev_robotaxi-d_251204_8.3.0_xfk_temp

# Conflicts:
#	OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt
This commit is contained in:
xinfengkun
2025-12-17 11:29:10 +08:00
471 changed files with 10137 additions and 2778 deletions

View File

@@ -133,14 +133,16 @@ object LineModel {
if(RepositoryManager.supportDb()) {
if (e is DataException) {
OchChainLogManager.writeChainLog("开始任务", "${e.message}")
ToastUtils.showShort("选择任务失败:${e.message}")
// ToastUtils.showShort("选择任务失败:${e.message}")
ToastUtils.showShort(R.string.module_och_choose_task_fail, e.message)
mBusLinesCallbackMap.forEach {
it.value.onChangeLineIdFail()
}
}
}else{
OchChainLogManager.writeChainLog("开始任务", "${e.message}")
ToastUtils.showShort("选择任务失败:${e.message}")
// ToastUtils.showShort("选择任务失败:${e.message}")
ToastUtils.showShort(R.string.module_och_choose_task_fail, e.message)
mBusLinesCallbackMap.forEach {
it.value.onChangeLineIdFail()
}
@@ -275,7 +277,8 @@ object LineModel {
"taskId:${currentTask?.taskId}--lineInfo:${LineManager.lineInfos}"
OchChainLogManager.writeChainLog("结束任务", changeInfo)
} else {
ToastUtils.showShort("结束任务失败请稍后再试")
// ToastUtils.showShort("结束任务失败请稍后再试")
ToastUtils.showShort(R.string.module_och_task_finish_fail)
mBusLinesCallbackMap.forEach {
it.value.onCompleteTaskFail()
}

View File

@@ -2,6 +2,7 @@ package com.mogo.och.weaknet.model
import android.annotation.SuppressLint
import android.content.Context
import android.text.TextUtils
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.data.config.FunctionBuildConfig
@@ -13,6 +14,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
@@ -111,12 +113,15 @@ object OrderModel {
private val bridgeListener = object : BridgeListener{
override fun onPncInfoListener(pncAction: String) {
when (pncAction) {
OchCommonConst.PNC_ACTION_ENTERSTATION -> {
ShuttleVoiceManager.arrivedStationOut(ResourcesUtils.getString(R.string.m2_voice_out_arriving_station))
}
else -> {}
if (TextUtils.equals(pncAction, StringUtils.getString(R.string.module_core_entering_the_station))) {
ShuttleVoiceManager.arrivedStationOut(ResourcesUtils.getString(R.string.m2_voice_out_arriving_station))
}
// when (pncAction) {
// OchCommonConst.PNC_ACTION_ENTERSTATION -> {
// ShuttleVoiceManager.arrivedStationOut(ResourcesUtils.getString(R.string.m2_voice_out_arriving_station))
// }
// else -> {}
// }
}
}

View File

@@ -117,7 +117,8 @@ object SynchDataModel {
}
if (!isBackground) {
if (!NetworkUtils.isConnected(AbsMogoApplication.getApp())) {
ToastUtils.showShort("网络异常,请稍后重试")
// ToastUtils.showShort("网络异常,请稍后重试")
ToastUtils.showShort(R.string.module_och_network_error)
} else {
ToastUtils.showShort(failMsg)
}

View File

@@ -50,7 +50,8 @@ object ThirdDeviceData {
end.isPlayTts = true
if (StringUtils.isEmpty(end.introduction)) {
if(!StringUtils.isEmpty(end.name)){
val message = "前方到站:${end.name},请下车的乘客做好准备"
// val message = "前方到站:${end.name},请下车的乘客做好准备"
val message = StringUtils.getString(R.string.module_och_next_station, end.name)
ShuttleVoiceManager.leave200Distance(message)
}
}else{

View File

@@ -13,6 +13,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.bridge.autopilot.line.LineManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
@@ -25,6 +26,7 @@ import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType
import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg
import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffResultMsg
import com.mogo.och.common.module.utils.OchPhoneUtil
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.bean.WriteOffPassenger
import com.mogo.och.weaknet.repository.RepositoryManager
import com.mogo.och.weaknet.repository.exception.DataException
@@ -212,16 +214,26 @@ object TicketModel {
*/
private fun parseData(code:Int,msg:String,phone: String,orderNo: String){
when (code) {
1009 -> sendMessage2Driver("乘车日期非今日", phone,1009,orderNo)
1005 -> sendMessage2Driver("当前无路线任务", phone,1005,orderNo)
1006 -> sendMessage2Driver("车票非当前路线", phone,1006,orderNo)
1008 -> sendMessage2Driver("车票无剩余可用次数", phone,99,orderNo)
6001 -> sendMessage2Driver("二维码已过期", phone,6001,orderNo)
6002 -> sendMessage2Driver("同一订单核销间隔时间需大于2分钟", phone,6002,orderNo)
6003 -> sendMessage2Driver("车票非当前站点", phone,6003,orderNo)
6004 -> sendMessage2Driver("车辆未执行任务", phone,6004,orderNo)
6005 -> sendMessage2Driver("车票非当前班次", phone,6005,orderNo)
1012 -> sendMessage2Driver("车票与车辆所属租户不一致", phone,1012,orderNo)
// 1009 -> sendMessage2Driver("乘车日期非今日", phone,1009,orderNo)
1009 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_travel_date_not_today), phone,1009,orderNo)
// 1005 -> sendMessage2Driver("当前路线任务", phone,1005,orderNo)
1005 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_there_are_no_route_tasks), phone,1005,orderNo)
// 1006 -> sendMessage2Driver("车票非当前路线", phone,1006,orderNo)
1006 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_ticket_not_current_route), phone,1006,orderNo)
// 1008 -> sendMessage2Driver("车票无剩余可用次数", phone,99,orderNo)
1008 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_ticket_has_no_remaining_valid_rides_available), phone,99,orderNo)
// 6001 -> sendMessage2Driver("二维码已过期", phone,6001,orderNo)
6001 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_qr_code_expired), phone,6001,orderNo)
// 6002 -> sendMessage2Driver("同一订单核销间隔时间需大于2分钟", phone,6002,orderNo)
6002 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_interval_canceling_same_order_too_short), phone,6002,orderNo)
// 6003 -> sendMessage2Driver("车票非当前站点", phone,6003,orderNo)
6003 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_ticket_not_valid_for_current_station), phone,6003,orderNo)
// 6004 -> sendMessage2Driver("车辆未执行任务", phone,6004,orderNo)
6004 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_vehicle_not_duty), phone,6004,orderNo)
// 6005 -> sendMessage2Driver("车票非当前班次", phone,6005,orderNo)
6005 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_ticket_not_for_current_train), phone,6005,orderNo)
// 1012 -> sendMessage2Driver("车票与车辆所属租户不一致", phone,1012,orderNo)
1012 -> sendMessage2Driver(StringUtils.getString(R.string.module_och_ticket_does_not_match_tenant_who_owns_vehicle), phone,1012,orderNo)
else -> {
try {
val tempcode=msg.toInt()
@@ -242,14 +254,16 @@ object TicketModel {
private fun sendMessage2Driver(message:String,phone:String,code:Int,orderNo: String){
// 发送乘客屏 通过蓝牙告知小程序
LanSocketManager.sendMsgToClient(WriteOffResultMsg(code, phone,orderNo, System.currentTimeMillis(),LineManager.lineInfos?.lineId?:0,LineManager.getStations()?.first?.siteId?.toLong()?:0L))
val failedReason = "核销失败,${message}"
// val failedReason = "核销失败,${message}"
val failedReason = StringUtils.getString(R.string.module_och_recognition_failed, message)
// tts
ShuttleVoiceManager.writeOffFaile(failedReason)
val tempPhone = OchPhoneUtil.getPhoneWithoutMiddle(phone)
val reaseonAndPhone = if(tempPhone.isEmpty()) {
failedReason
}else{
"${failedReason};乘客:${tempPhone}"
// "${failedReason};乘客:${tempPhone}"
"${failedReason}${StringUtils.getString(R.string.module_och_passenger)}${tempPhone}"
}
saveMsgBox(
MsgBoxBean(
@@ -295,7 +309,8 @@ object TicketModel {
val phoneNumFix = tempPhone.substring(7)
tempPhone = "$phoneNumPre****$phoneNumFix"
}
val content = "${ticketSize}$ticketName $tempPhone"
// val content = "${ticketSize}$ticketName $tempPhone"
val content = "${ticketSize}${StringUtils.getString(R.string.module_och_piece)} $ticketName $tempPhone"
saveMsgBox(MsgBoxBean(
MsgBoxType.V2X,
V2XMsg(

View File

@@ -2,6 +2,7 @@ package com.mogo.och.weaknet.repository.db.repository
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.common.module.utils.DateTimeUtil
@@ -11,6 +12,7 @@ import com.mogo.och.weaknet.repository.db.MyDataBase
import com.mogo.och.weaknet.repository.db.bean.TaskDataBean
import com.mogo.och.weaknet.repository.db.dao.TaskDataDao
import com.mogo.och.data.db.exception.DbException
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.repository.exception.DataException
import io.reactivex.Observable
@@ -136,7 +138,7 @@ object TaskDb : IDbRepository {
updateCount?.let {
if(it<=0){
// 插入失败
return@flatMap Observable.error(DataException(DataException.startTaskErrorCode,"未插入数据"))
return@flatMap Observable.error(DataException(DataException.startTaskErrorCode,StringUtils.getString(R.string.module_och_no_data_inserted)))
}else{
// 开始任务成功
return@flatMap Observable.just(true)

View File

@@ -2,6 +2,7 @@ package com.mogo.och.weaknet.repository.db.repository
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.weaknet.repository.db.IDbRepository
@@ -9,6 +10,7 @@ import com.mogo.och.weaknet.repository.db.MyDataBase
import com.mogo.och.weaknet.repository.db.bean.TaskSiteDataBean
import com.mogo.och.weaknet.repository.db.dao.TaskSiteDataDao
import com.mogo.och.data.db.exception.DbException
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.repository.db.bean.LineDataBean
object TaskSiteDb : IDbRepository {
@@ -38,11 +40,13 @@ object TaskSiteDb : IDbRepository {
// 获取线路的站点
val querySites = SiteDb.querySiteByLineId(linId)?.distinctBy { it.siteId }?.sortedBy { it.seq }
if (querySites.isNullOrEmpty()) {
throw DbException(DbException.NEEDSYNDATA,"没有站点数据")
// throw DbException(DbException.NEEDSYNDATA,"没有站点数据")
throw DbException(DbException.NEEDSYNDATA,StringUtils.getString(R.string.module_och_no_station_data))
}
querySites.forEachIndexed { index, siteDataBean ->
if(index+1!=siteDataBean.seq){
throw DbException(DbException.NEEDSYNDATA,"站点数据排序不对")
// throw DbException(DbException.NEEDSYNDATA,"站点数据排序不对")
throw DbException(DbException.NEEDSYNDATA,StringUtils.getString(R.string.module_och_station_data_order_incorrect))
}
}
val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas(
@@ -52,7 +56,8 @@ object TaskSiteDb : IDbRepository {
lineName
)
if (toTaskSiteDatas.size < 2) {
throw DbException(DbException.NEEDSYNDATA,"站点数据不全请稍后再试")
// throw DbException(DbException.NEEDSYNDATA,"站点数据不全请稍后再试")
throw DbException(DbException.NEEDSYNDATA,StringUtils.getString(R.string.module_och_station_data_incomplete))
}
// 把线路所有的站点搬迁到运行中表格中
val result = taskSiteDataDao?.insert(*toTaskSiteDatas.toTypedArray())
@@ -124,7 +129,8 @@ object TaskSiteDb : IDbRepository {
// 获取线路的站点
val querySites = SiteDb.querySiteByLineId(lineInfo.lineId!!)?.distinctBy { it.siteId }
if (querySites.isNullOrEmpty()) {
throw DbException(DbException.NEEDSYNDATA,"没有站点数据")
// throw DbException(DbException.NEEDSYNDATA,"没有站点数据")
throw DbException(DbException.NEEDSYNDATA,StringUtils.getString(R.string.module_och_no_station_data))
}
val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas(
querySites,

View File

@@ -8,12 +8,14 @@ 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.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.bridge.autopilot.line.LineManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.data.bean.BusStationBean
import com.mogo.och.data.bean.ContraiInfo
import com.mogo.och.data.bean.LineInfo
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
import com.mogo.och.weaknet.bean.response.CarExecutableTaskResponse
import com.mogo.och.weaknet.bean.response.PointResponse
@@ -39,14 +41,17 @@ class NormalRepository: ILineRepository {
when (ProjectUtils.getProjectType()) {
Project.SAAS -> {
if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
throw NetException("非缓存weakNetInterface 初始化环境错误 isBus")
// throw NetException("非缓存weakNetInterface 初始化环境错误 isBus")
throw NetException(StringUtils.getString(R.string.module_och_init_env_error_bus))
}else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
throw NetException("非缓存weakNetInterface 初始化环境错误 isBus")
// throw NetException("非缓存weakNetInterface 初始化环境错误 isBus")
throw NetException(StringUtils.getString(R.string.module_och_init_env_error_bus))
}
}
Project.DALI -> {
if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
throw NetException("非缓存weakNetInterface 初始化环境错误 isBus")
// throw NetException("非缓存weakNetInterface 初始化环境错误 isBus")
throw NetException(StringUtils.getString(R.string.module_och_init_env_error_bus))
}else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
field = DaliBusServiceManager
}

View File

@@ -9,6 +9,7 @@ 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.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.bridge.autopilot.line.LineManager
import com.mogo.och.common.module.biz.login.LoginStatusManager
@@ -16,6 +17,7 @@ import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.data.bean.ContraiInfo
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.bean.request.QueryPointRequest
import com.mogo.och.weaknet.bean.request.ShuttleEventRequest
import com.mogo.och.weaknet.bean.response.BusRoutesResponse
@@ -64,14 +66,17 @@ class WeaknetRepository : ILineRepository {
if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
field = DaliShuttleServiceManager
}else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
throw NetException("缓存weakNetInterface 初始化环境错误 isBus")
// throw NetException("缓存weakNetInterface 初始化环境错误 isBus")
throw NetException(StringUtils.getString(R.string.module_och_cache_init_env_error_bus))
}
}
Project.MOGO -> {
throw NetException("缓存weakNetInterface 初始化环境错误 MOGO")
// throw NetException("缓存weakNetInterface 初始化环境错误 MOGO")
throw NetException(StringUtils.getString(R.string.module_och_cache_init_env_error_mogo))
}
else->{
throw NetException("缓存weakNetInterface 初始化环境错误 未知")
// throw NetException("缓存weakNetInterface 初始化环境错误 未知")
throw NetException(StringUtils.getString(R.string.module_och_cache_init_env_error_unknown))
}
}
}
@@ -127,7 +132,8 @@ class WeaknetRepository : ILineRepository {
currentTask?.lineId?.let {
ContraiDb.queryAutopilotInfoByLineid(it)?.apply {
if (lineId == null || lineId!! < 0L||csvFileUrl.isNullOrEmpty()||csvFileMd5.isNullOrEmpty()||txtFileUrl.isNullOrEmpty()||txtFileMd5.isNullOrEmpty()) {
ToastUtils.showLong("请设置轨迹信息")
// ToastUtils.showLong("请设置轨迹信息")
ToastUtils.showLong(R.string.module_och_set_line_info)
OchChainLogManager.writeChainLogAutopilot("轨迹错误",this.toString())
CallerLogger.d(TAG,"轨迹错误,$this")
}

View File

@@ -8,11 +8,13 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.bridge.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.utils.DateTimeUtil
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.bean.WaitUploadLine
import com.mogo.och.weaknet.bean.WaitUploadTask
import com.mogo.och.weaknet.bean.WriteOffPassenger
@@ -46,13 +48,16 @@ class WriteOffCacheRepository : IWriteOffRepository {
}
}
Project.DALI -> {
throw NetException("缓存weakNetInterface 初始化环境错误 Dali")
// throw NetException("缓存weakNetInterface 初始化环境错误 Dali")
throw NetException(StringUtils.getString(R.string.module_och_cache_init_env_error_dali))
}
Project.MOGO -> {
throw NetException("缓存weakNetInterface 初始化环境错误 MOGO")
// throw NetException("缓存weakNetInterface 初始化环境错误 MOGO")
throw NetException(StringUtils.getString(R.string.module_och_cache_init_env_error_mogo))
}
else->{
throw NetException("缓存weakNetInterface 初始化环境错误 未知")
// throw NetException("缓存weakNetInterface 初始化环境错误 未知")
throw NetException(StringUtils.getString(R.string.module_och_cache_init_env_error_unknown))
}
}
}
@@ -110,51 +115,61 @@ class WriteOffCacheRepository : IWriteOffRepository {
if(LoginStatusManager.getOchCarInfo()?.tenantId==tenantId){
}else{
throw DataException(1012,"当前用户下单路线非当前的车辆所属公司")
// throw DataException(1012,"当前用户下单路线非当前的车辆所属公司")
throw DataException(1012, StringUtils.getString(R.string.module_och_current_user_order_not_current_company))
}
}
// 2、校验project
if(ProjectUtils.isSaas()){
if(it.pipe != WriteOffDataBean.saasXiaoChengXu){
throw DataException(1012,"当前用户下单路线非当前的车辆所属公司")
// throw DataException(1012,"当前用户下单路线非当前的车辆所属公司")
throw DataException(1012, StringUtils.getString(R.string.module_och_current_user_order_not_current_company))
}
}else if(ProjectUtils.isDali()){
if(it.pipe != WriteOffDataBean.daliXiaoChengXu){
throw DataException(1012,"当前用户下单路线非当前的车辆所属公司")
// throw DataException(1012,"当前用户下单路线非当前的车辆所属公司")
throw DataException(1012, StringUtils.getString(R.string.module_och_current_user_order_not_current_company))
}
}
// 3、校验 bus和shuttle
if (LoginStatusManager.getProductType()!=Product.valueOf(it.typeBiz)) {
throw DataException(1005,"车辆未登录、或没有任务")
// throw DataException(1005,"车辆未登录、或没有任务")
throw DataException(1005, StringUtils.getString(R.string.module_och_not_login_car))
}
// 4 二维码1分钟失效
if(System.currentTimeMillis()-(it.expiryTime?:0L)>60_000){
throw DataException(6001,"二维码已过期")
// throw DataException(6001,"二维码已过期")
throw DataException(6001, StringUtils.getString(R.string.module_och_qr_code_expires))
}
// 5 校验乘车日期
if(!DateTimeUtil.isSameDay(System.currentTimeMillis(),it.bookingTime?:0)){
throw DataException(1009,"车票所选乘车日期非今日")
// throw DataException(1009,"车票所选乘车日期非今日")
throw DataException(1009, StringUtils.getString(R.string.module_och_ticket_not_today))
}
// 6、校验线路
if(LineManager.lineInfos==null||LineManager.lineInfos?.lineId==null){
throw DataException(1005,"车辆未登录、或没有任务")
// throw DataException(1005,"车辆未登录、或没有任务")
throw DataException(1005, StringUtils.getString(R.string.module_och_not_login_car))
}
if(it.lineId==LineManager.lineInfos?.lineId){
lineId = it.lineId
}else{
throw DataException(1006,"车票路线信息与当前车辆执行任务的路线信息不符合")
// throw DataException(1006,"车票路线信息与当前车辆执行任务的路线信息不符合")
throw DataException(1006, StringUtils.getString(R.string.module_och_ticket_line_current_car_line_inconformity))
}
if (!it.orderNo.isNullOrEmpty()) {
val lastWriteOff = WriteOffDb.queryWaitUpdateEventCount(it.orderNo!!)
// 7、校验次数
if ((it.availableTimes ?: 0) <= (lastWriteOff?.size ?: 0)) {
throw DataException(1008, "车票剩余可用次数为0")
// throw DataException(1008, "车票剩余可用次数为0")
throw DataException(1008, StringUtils.getString(R.string.module_och_ticket_not_used))
}
if (AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
// 8、同一个订单2分钟内只能核销一次
if (lastWriteOff != null && lastWriteOff.size > 0) {
if (System.currentTimeMillis() - lastWriteOff.last().eventSaveTime <= 120_000) {
throw DataException(6002, "同一订单核销间隔时间需大于2分钟")
// throw DataException(6002, "同一订单核销间隔时间需大于2分钟")
throw DataException(6002, StringUtils.getString(R.string.module_och_interval_canceling_same_order_too_short))
}
}
@@ -166,7 +181,8 @@ class WriteOffCacheRepository : IWriteOffRepository {
if (start?.siteId?.toLong() == it.startStationId) {
siteId = it.startStationId
} else {
throw DataException(6003, "车票站点信息与当前车辆执行任务的站点信息不符合")
// throw DataException(6003, "车票站点信息与当前车辆执行任务的站点信息不符合")
throw DataException(6003, StringUtils.getString(R.string.module_och_ticket_station_current_car_station_inconformity))
}
} else if(AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)){
val (start, _) = LineManager.getStations()
@@ -174,15 +190,18 @@ class WriteOffCacheRepository : IWriteOffRepository {
// 8、校验起始站点
val task = LineModel.currentTask
if(task==null){
throw DataException(6004, "车辆未执行任务")
// throw DataException(6004, "车辆未执行任务")
throw DataException(6004, StringUtils.getString(R.string.module_och_vehicle_not_duty))
}else{
if (task.taskId!=it.shiftsId) {
throw DataException(6005, "车票站点信息与当前车辆执行任务信息不符合")
// throw DataException(6005, "车票站点信息与当前车辆执行任务信息不符合")
throw DataException(6005, StringUtils.getString(R.string.module_och_ticket_station_current_car_task_inconformity))
}
}
}
} else {
throw DataException(11000, "缺少orderNo")
// throw DataException(11000, "缺少orderNo")
throw DataException(11000, StringUtils.getString(R.string.module_och_not_order_no))
}
val addWrite = WriteOffDataBean()

View File

@@ -8,8 +8,10 @@ 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.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDetialMsg
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.bean.WaitUploadLine
import com.mogo.och.weaknet.bean.WaitUploadTask
import com.mogo.och.weaknet.bean.response.WriteOffCountResponse
@@ -34,7 +36,8 @@ class WriteOffNormallRepository: IWriteOffRepository {
if(field==null){
when (ProjectUtils.getProjectType()) {
Project.SAAS -> {
throw NetException("writeoff 核销 初始化环境错误 SAAS")
// throw NetException("writeoff 核销 初始化环境错误 SAAS")
throw NetException(StringUtils.getString(R.string.module_och_verification_init_env_error_saas))
}
Project.DALI -> {
if(AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
@@ -44,10 +47,12 @@ class WriteOffNormallRepository: IWriteOffRepository {
}
}
Project.MOGO -> {
throw NetException("writeoff 核销 初始化环境错误 MOGO")
// throw NetException("writeoff 核销 初始化环境错误 MOGO")
throw NetException(StringUtils.getString(R.string.module_och_verification_init_env_error_mogo))
}
else->{
throw NetException("writeoff 核销 初始化环境错误 未知")
// throw NetException("writeoff 核销 初始化环境错误 未知")
throw NetException(StringUtils.getString(R.string.module_och_verification_init_env_error_unknown))
}
}
}

View File

@@ -15,6 +15,7 @@ import com.mogo.eagle.core.function.call.och.CallerEagleBaseFunctionCall4OchMana
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.bridge.ui.drawline.LineView
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.repository.RepositoryManager
@@ -51,7 +52,8 @@ class ShuttleFragment : MvpFragment<ShuttleFragment?, BusPresenter?>() {
context?.let {
if(RepositoryManager.supportDb()){
CallerEagleBaseFunctionCall4OchManager.addSingleToolKitDefaultItem(runningTaskGateWay,"本地缓存任务", R.drawable.bus_running_task_history,4)
// CallerEagleBaseFunctionCall4OchManager.addSingleToolKitDefaultItem(runningTaskGateWay,"本地缓存任务", R.drawable.bus_running_task_history,4)
CallerEagleBaseFunctionCall4OchManager.addSingleToolKitDefaultItem(runningTaskGateWay,StringUtils.getString(R.string.module_och_local_cache_task), R.drawable.bus_running_task_history,4)
CallerEagleBaseFunctionCall4OchManager.addToolKitDefaultItemClickListener(runningTaskGateWay,object :
IToolKitItemClickListener{
override fun onItemClick(toolTag: String, ctx: Context?) {

View File

@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.GridLayoutManager
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.common.module.utils.ResourcesUtils
@@ -72,14 +73,17 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba
actv_submit_task.onClick {
val tempCheckTask = mAdapter.getCheckTask()
if(tempCheckTask==null){
ToastUtils.showShort("请选择任务")
// ToastUtils.showShort("请选择任务")
ToastUtils.showShort(R.string.module_och_please_choose_task)
}else{
if(tempCheckTask.status == TaskDataBean.used){
val reason = tempData[tempCheckTask.taskId]
if(reason==null){
ToastUtils.showShort("该任务已被其他车辆使用、请切换任务")
// ToastUtils.showShort("该任务已被其他车辆使用、请切换任务")
ToastUtils.showShort(R.string.module_och_this_task_not_use)
}else{
ToastUtils.showShort("该任务已被${reason}使用、请切换任务")
// ToastUtils.showShort("该任务已被${reason}使用、请切换任务")
ToastUtils.showShort(R.string.module_och_this_task_not_use1, reason)
}
}else {
viewModel?.changeLineStart(tempCheckTask)
@@ -114,7 +118,8 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba
d(TAG, "queryTaskByLineInfo 查询线路的任务线路id:${lineInfo}")
viewModel?.queryBusLineTasksById(lineInfo)
busLineName.text = lineInfo.lineName
actvLineEndStationName.text = "${lineInfo.endStationName}方向"
// actvLineEndStationName.text = "往${lineInfo.endStationName}方向"
actvLineEndStationName.text = StringUtils.getString(R.string.module_och_leave_for, lineInfo.endStationName)
}
override fun showTaskByLineIdResult(taskList: MutableList<TaskDataBean>?) {
@@ -154,7 +159,8 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba
}
override fun showErrorInfo() {
tv_error_msg.text = "发生错误点击重试"
// tv_error_msg.text = "发生错误点击重试"
tv_error_msg.text = StringUtils.getString(R.string.module_och_error_try_again)
actv_submit_task.setTextColor(ResourcesUtils.getColor(R.color.bus_color_66666))
actv_submit_task.isEnabled = false
include_error.visibility = VISIBLE
@@ -170,7 +176,8 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba
override fun setCurrentTaskUsed(taskId: Long,plateNumber: String) {
BizLoopManager.runInMainThread{
mAdapter.setCurrentTaskUsed(taskId)
tempData[taskId] = "该任务已被${plateNumber}使用"
// tempData[taskId] = "该任务已被${plateNumber}使用"
tempData[taskId] = StringUtils.getString(R.string.module_och_task_has_been_completed)
}
}

View File

@@ -7,6 +7,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.callback.IBusLinesCallback
import com.mogo.och.weaknet.model.LineModel
import com.mogo.och.weaknet.repository.RepositoryManager
@@ -116,7 +117,8 @@ class SwtichTaskModel : ViewModel(), IBusLinesCallback {
fun changeLineStart(checkTask:TaskDataBean) {
if(tasksBelongLine==null){
ToastUtils.showShort("请重新选择线路")
// ToastUtils.showShort("请重新选择线路")
ToastUtils.showShort(R.string.module_och_please_choose_line)
return
}
viewCallback?.showLoading()

View File

@@ -8,6 +8,7 @@ import android.widget.TextView
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.DiffUtil.Callback
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.bean.WaitUploadLine
@@ -42,7 +43,8 @@ class RunningTaskAdapter(
override fun onBindViewHolder(holder: RunningTaskViewHolder, position: Int) {
val currentPosition = holder.bindingAdapterPosition
val lineTasks = dataList!![currentPosition]
val sb = StringBuilder().append("班次:")
// val sb = StringBuilder().append("班次:")
val sb = StringBuilder().append(StringUtils.getString(R.string.module_och_classes))
lineTasks.task.forEach {
sb.append(TimeUtils.millis2String(it.taskStartTime, "HH:mm"))
if(it.waitUploadWriteOff>0){

View File

@@ -7,6 +7,7 @@ import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.common.module.wigets.WindowRelativeLayout
@@ -105,7 +106,8 @@ class RunningTaskManagerView : WindowRelativeLayout, RunningTastViewModel.Runnin
actvCurrentDate.setText(
DateTimeUtil.formatLongToString(
System.currentTimeMillis(),
DateTimeUtil.MM_dd_HH_mm_china
// DateTimeUtil.MM_dd_HH_mm_china
StringUtils.getString(R.string.module_och_date_format)
)
)
}
@@ -133,7 +135,8 @@ class RunningTaskManagerView : WindowRelativeLayout, RunningTastViewModel.Runnin
override fun showUpdating(isupload: Boolean) {
if (isupload) {
upload_btn_commit_progress.visibility = VISIBLE
upload_btn_commit_title.text = "上传中"
// upload_btn_commit_title.text = "上传中"
upload_btn_commit_title.text = ResourcesUtils.getString(R.string.bus_running_task_uploading)
} else {
upload_btn_commit_progress.visibility = GONE
upload_btn_commit_title.text =

View File

@@ -9,6 +9,7 @@ import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.bridge.autopilot.line.LineManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.utils.ResourcesUtils
@@ -120,9 +121,11 @@ class TaskRunningView : ConstraintLayout, TaskRunningModel.SwtichLineViewCallbac
LineManager.getLineInfo { lineInfo ->
bus_task_running_line_name.text = lineInfo.lineName
}
actv_running_task_time.text = "班次:${LineModel.getTaskTime()}"
// actv_running_task_time.text = "班次:${LineModel.getTaskTime()}"
actv_running_task_time.text = "${StringUtils.getString(R.string.module_och_classes)}${LineModel.getTaskTime()}"
LineModel.stationList?.takeIf { it.size >= 2 }?.let {
actv_running_task_last_station.text = "${it.last().name ?: ""}"
// actv_running_task_last_station.text = "往${it.last().name ?: ""}"
actv_running_task_last_station.text = "${StringUtils.getString(R.string.module_och_go)}${it.last().name ?: ""}"
mAdapter.setDataList(it)
CallerLogger.d(
TAG,
@@ -136,9 +139,11 @@ class TaskRunningView : ConstraintLayout, TaskRunningModel.SwtichLineViewCallbac
}
// if (LineModel.startStationIndex == it.size - 1) {
if (LineModel.isLastStation() == true) {
aciv_task_leave_station_slide_bg.setTextValue("单程结束")
// aciv_task_leave_station_slide_bg.setTextValue("单程结束")
aciv_task_leave_station_slide_bg.setTextValue(StringUtils.getString(R.string.module_och_one_way_completion))
} else {
aciv_task_leave_station_slide_bg.setTextValue("滑动出发")
// aciv_task_leave_station_slide_bg.setTextValue("滑动出发")
aciv_task_leave_station_slide_bg.setTextValue(StringUtils.getString(R.string.module_och_slide_moving))
}
}
}

View File

@@ -4,6 +4,7 @@ import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager
import com.mogo.och.common.module.manager.socket.lan.bean.AppConnectMsg
import com.mogo.och.common.module.utils.ResourcesUtils
@@ -105,9 +106,11 @@ object ShuttleVoiceManager {
fun writeOffCount(successNum:Int){
if(successNum<=1){
VoiceNotice.showNotice("核验通过", AIAssist.LEVEL3)
// VoiceNotice.showNotice("核验通过", AIAssist.LEVEL3)
VoiceNotice.showNotice(StringUtils.getString(R.string.module_och_verification_successful), AIAssist.LEVEL3)
}else{
VoiceNotice.showNotice("$successNum 人核验通过", AIAssist.LEVEL3)
// VoiceNotice.showNotice("$successNum 人核验通过", AIAssist.LEVEL3)
VoiceNotice.showNotice(StringUtils.getString(R.string.module_och_verification_successful1, successNum), AIAssist.LEVEL3)
}
}
@@ -137,7 +140,8 @@ object ShuttleVoiceManager {
VoiceNotice.showNotice(message, AIAssist.LEVEL0)
} else if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
sendPassengerPlay(message)
arrivedStationOut("车辆遇到紧急情况,正在安全处理")
// arrivedStationOut("车辆遇到紧急情况,正在安全处理")
arrivedStationOut(ResourcesUtils.getString(R.string.m2_vehicle_emergency))
}
}

View File

@@ -46,11 +46,12 @@
android:layout_width="@dimen/dp_97"
android:layout_height="@dimen/dp_39"/>
<!-- android:text="本地任务执行信息"-->
<TextView
android:id="@+id/tvManagerTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="本地任务执行信息"
android:text="@string/module_och_local_task_execution_information"
android:textColor="#FFFFFFFF"
android:textSize="42dp"
app:layout_constraintTop_toTopOf="@id/viewManagerTitleLine"
@@ -58,7 +59,7 @@
app:layout_constraintLeft_toLeftOf="@id/viewManagerTitleLine"
android:layout_marginStart="50dp"
/>
<!-- android:text="时间"-->
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actvCurrentDate"
app:layout_constraintTop_toBottomOf="@+id/ivTaskRunningClose"
@@ -67,7 +68,7 @@
app:layout_constraintEnd_toEndOf="@id/guideline_v_right"
android:background="@color/shuttle_driver_80000000"
android:layout_marginEnd="@dimen/dp_60"
android:text="时间"
android:text="@string/module_och_time"
android:textColor="@color/white"
android:textSize="@dimen/dp_32"
android:gravity="center"

View File

@@ -67,13 +67,13 @@
android:layout_marginStart="@dimen/dp_36"
android:layout_marginEnd="@dimen/dp_36"
app:layout_constraintEnd_toStartOf="@+id/actv_write_off_count"
android:text="天安门天安门天安门…"
android:singleLine="true"
android:textColor="@color/white"
android:ellipsize="end"
android:textSize="@dimen/dp_45"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
tools:text="天安门天安门天安门…"/>
<com.mogo.och.weaknet.ui.writeoff.WriteOffView
android:id="@+id/actv_write_off_count"

View File

@@ -48,13 +48,13 @@
app:layout_constraintTop_toBottomOf="@+id/actv_last_refresh_date"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="@dimen/dp_22" />
<!-- app:empty_title="暂无线路"-->
<com.mogo.och.common.module.wigets.commonview.EmptyView
android:id="@+id/include_empty"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
app:empty_title="暂无线路"
app:empty_title="@string/module_och_empty_line"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="wrap_content"

View File

@@ -102,12 +102,13 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<!-- app:empty_title="暂无班次"-->
<com.mogo.och.common.module.wigets.commonview.EmptyView
android:id="@+id/include_empty"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
app:empty_title="暂无班次"
app:empty_title="@string/module_och_empty_task"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="wrap_content"

View File

@@ -0,0 +1,90 @@
<resources>
<string name="bus_map_model_normal">Near View</string>
<string name="bus_map_model_faster">Far View</string>
<string name="bus_loading_autopilot_tv">Starting...</string>
<string name="bus_loading_autopilot_success_tv">Start successful</string>
<string name="bus_loading_autopilot_failure_tv">Start failed</string>
<string name="bus_loading_autopilot_runnig_tv">Autopilot</string>
<string name="bus_switch_line_title">Please select task</string>
<string name="bus_running_task_arrive_station">Arrived at Station</string>
<string name="bus_running_task_complete">Complete</string>
<string name="bus_switch_line_no_task">No task available</string>
<string name="bus_switch_line_select_task">Select Time</string>
<string name="bus_switch_task_submit">Confirm Schedule</string>
<string name="bus_switch_task_cancle">Return</string>
<string name="bus_switch_biz_loading">Loading...</string>
<string name="bus_switch_line_name">Route: </string>
<string name="bus_switch_line_start">Start: </string>
<string name="bus_switch_line_end">Destination:</string>
<string name="bus_switch_line_btn_txt">Confirm</string>
<string name="bus_switch_line_btn">Select Task</string>
<string name="bus_close_line_btn">End Task</string>
<string name="bus_switch_line_btn_warning1">Cannot switch or end route in autopilot state</string>
<string name="bus_switch_line_btn_warning2">Current journey is not complete, cannot switch route</string>
<string name="bus_no_line_tip">Current vehicle has no route\nPlease contact operations personnel to bind</string>
<string name="bus_no_task">No task available</string>
<string name="bus_line_start">Start: </string>
<string name="bus_line_end">Destination: </string>
<string name="bus_line_goto_end">Towards %1$s</string>
<string name="bus_change_line_commit_tip_s">Task switched successfully</string>
<string name="bus_change_line_commit_tip_f">Task switch failed</string>
<string name="bus_task_leave_station">Swipe to Depart</string>
<string name="bus_arrive_to_end_start">Start:</string>
<string name="bus_arrive_to_end_end">Destination:</string>
<string name="bus_arrive_to_current_tag">Current Station:</string>
<string name="bus_arrive_to_next_tag">Next Station:</string>
<string name="bus_auto_disable_tip">Autopilot status is 0 and unavailable</string>
<string name="bus_arrived_str">Arriving at Station</string>
<string name="bus_station_txt_tag_start">Start</string>
<string name="bus_station_txt_tag_end">End</string>
<string name="shuttle_line_time_tag">Schedule: %1$s</string>
<string name="bus_refresh_time">Update Time: %1$s</string>
<string name="bus_dialog_title">Hint</string>
<string name="bus_dialog_tips">Are you sure you want to end the task?</string>
<string name="bus_dialog_confirm">Confirm</string>
<string name="bus_dialog_cancel">Cancel</string>
<string name="m2_voice_out_arrive_station">Welcome aboard Mogo Minibus</string>
<string name="m2_voice_out_arriving_station">Mogo Minibus is arriving at the station</string>
<string name="m2_voice_out_autopilot_start_in15m">Mogo Minibus is departing</string>
<string name="m2_voice_collision_risk">Dear passengers, the vehicle has encountered an emergency and is processing it safely. Please sit tight, follow the guidance, and thank you for your cooperation</string>
<string name="m2_vehicle_emergency">Vehicle encountered an emergency and is processing it safely</string>
<string name="shuttle_logout_error">Please log out after completing task information synchronization in an area with good network</string>
<string name="shuttle_logout_error_running">Please end the task before logging out</string>
<string name="bus_no_task_tip">No task available</string>
<string name="shuttle_write_off_count">Checked in %1$d people</string>
<string name="shuttle_write_off_count_default">Checked in: 0 people</string>
<string name="bus_no_running_task">No tasks pending upload</string>
<string name="bus_running_task_upload">One-click Upload</string>
<string name="bus_running_task_uploading">Uploading</string>
<string name="bus_before_tips_s">The departure time is in %1$s minutes</string>
<string name="bus_pingxing_driver">Parallel Driving</string>
<string name="bus_running_tasked_gateway">Local Cache Task</string>
<!-- region tts -->
<string name="bus_arrived_station_tip">Arrived at %1$s. Please take your belongings and be aware of oncoming vehicles when getting off.</string>
<string name="bus_arrived_station_english_tip">We are arriving at %1$s , get off with your belongings</string>
<string name="bus_arrived_station_korean_tip">%1$s 역에 도착했습니다 , 소지품 챙겨서 내리세요</string>
<string name="bus_leave_station_tip">Vehicle starting, please hold tight. The next station is %1$s. Passengers getting off please prepare.</string>
<string name="bus_leave_station_english_tip">The next station is %1$s , please get ready for your arrival</string>
<string name="bus_leave_station_korean_tip">전방에서 역에 도착하는 %1$s ,차에서 내리는 승객은 준비하세요</string>
<string name="bus_end_task_tip">Thank you for experiencing the \'Mogo\' self-driving minibus. See you next time.</string>
<string name="bus_end_task_english_tip">Thank you for experiencing the self-driving minibus. See you next time</string>
<string name="bus_end_task_korean_tip">자율주행 버스를 체험해 주셔서 감사합니다. 다음에 또 뵙겠습니다</string>
<!-- endregion -->
</resources>

View File

@@ -50,6 +50,7 @@
<string name="m2_voice_out_arriving_station">蘑菇小巴正在进站</string>
<string name="m2_voice_out_autopilot_start_in15m">蘑菇小巴出发咯</string>
<string name="m2_voice_collision_risk">尊敬的乘客,车辆遇到紧急情况,正在安全处理,请坐稳扶好,听从指引,感谢配合</string>
<string name="m2_vehicle_emergency">车辆遇到紧急情况,正在安全处理</string>
@@ -62,6 +63,7 @@
<string name="bus_no_running_task">暂无待上传任务</string>
<string name="bus_running_task_upload">一键上传</string>
<string name="bus_running_task_uploading">上传中</string>