diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index f54755fb19..6ebb47ae72 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -750,7 +750,10 @@ class DriverM1Model { if (it == null || it < 0) { LineManager.setLineInfo(null) } else { - LineManager.setLineInfo(LineInfo(it.toLong(),mCurrentOrder?.lineName?:"", orderId = data.data.orderNo)) + LineManager.setLineInfo( + LineInfo(it.toLong(), + mCurrentOrder?.lineName?:"", + orderId = data.data.orderNo)) } } diff --git a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt index 4bb2db0970..136abe3360 100644 --- a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt +++ b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt @@ -234,6 +234,10 @@ object OchAutoPilotStatusListenerManager : CallerBase() { const val TAG = "LineManager" + + const val firstStationFirstStartAutopilotFlag = 1 + const val middleStationFirstStartAutopilotFlag = 2 + const val norFirstStartAutopilotFlag = 3 + /** * 线路信息 */ @@ -73,10 +78,35 @@ object LineManager : CallerBase() { */ private var endStation: BusStationBean? = null + + /** + * 和[autopilotId]相关 默认为true + * 一个autopilotId范围内第一次启动自驾成功后 为false + */ var isFirstStartAutopilot = true /** - * 线路、轨迹、站点 三者确定的id + * 和[teleOrderId] 相关的 默认为true + * 一个teleOrderId范围内第一次启动自驾成功后 为false + */ + var teleIsFirstStartAutopilot = true + + /** + * 1 首站点触发 + * 2 中间站点触发 + * 3 新的站点第一次启动自驾成功后 + */ + var autopilotFlag : Int by Delegates.observable(firstStationFirstStartAutopilotFlag) { _, oldValue, newValue -> + if(oldValue!=newValue){ + d(TAG,"autopilotFlag old=$oldValue new=$newValue") + } + } + + /** + * bizId 小巴、接驳、班车 时任务id + * taxi 目前是orderNo 6.9.0改为任务id + * ochCommon 抽象的自驾id + * 生成规则 lineId_startsiteId_endsiteId_bizId */ private var autopilotId: String by Delegates.observable("") { _, oldValue, newValue -> if (oldValue != newValue) { @@ -103,8 +133,21 @@ object LineManager : CallerBase() { } } + /** + * bizId 小巴、接驳、班车 时任务id + * taxi 目前是orderNo 6.9.0改为任务id + * 向地盘传递的orderId + * 生成规则 lineId_siteId1_siteId2_siteId3...siteIdn_bizId + */ + private var teleOrderId: String by Delegates.observable("") { _, oldValue, newValue -> + if (oldValue != newValue) { + teleIsFirstStartAutopilot = true + } + } - // 自车定位 + /** + * 当前车辆经纬度 + */ private val mMapLocationListener = object : IMoGoChassisLocationGCJ02Listener { override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { if (null == mogoLocation) return @@ -116,28 +159,43 @@ object LineManager : CallerBase() { mogoLocation.longitude, mogoLocation.latitude ) if (distance <= OchCommonConst.ARRIVE_AT_END_STATION_DISTANCE) { - val token = CallerAutoPilotControlManager.sendSsmFuncQueryAutoPilotStation(autopilotId) + /** + * 在终点10m 范围内向地盘查询是否到站 + * [com.mogo.och.bridge.autopilot.autopilot.OchAutoPilotStatusListenerManager.onAutoPilotStation] + */ + val token = CallerAutoPilotControlManager.sendSsmFuncQueryAutoPilotStation(teleOrderId) OchChainLogManager.writeChainLogAutopilot("到站逻辑","距离站点:$distance 请求token:$token") } } } } - + /** + * [mMapLocationListener] 距离终点小于[OchCommonConst.ARRIVE_AT_END_STATION_DISTANCE]后向底盘请求的返回值调用 + * @param orderId 和线路相关的值 + * @param arrivedStationFlag 是否到站 true 到站 false 没有到站 + */ fun invokeArrivedStation(orderId: String, arrivedStationFlag: Boolean) { - if (this.autopilotId==orderId&&arrivedStationFlag){ + if (this.teleOrderId == orderId && arrivedStationFlag) { M_LISTENERS.forEach { it.value.arrivedStationSuccessBySearch() } } } + fun searchAutopilotState(){ + CallerAutoPilotControlManager.sendSsmFuncQueryAutoPilotInfo() + } + + /** + * [searchAutopilotState] 方法请求的返回值 + */ fun invokeSetIsFirstAutopilot(orderId: String?, firstAutopilotFlag: Boolean, count: Int) { - if (this.autopilotId==orderId){ + if (this.teleOrderId==orderId){ if(count>=1){ - isFirstStartAutopilot = false + teleIsFirstStartAutopilot = false }else{ - isFirstStartAutopilot = true + teleIsFirstStartAutopilot = true } } } @@ -146,9 +204,6 @@ object LineManager : CallerBase() { * 设置站点信息 */ fun setStartAndEndStation(startStation: BusStationBean?, endStation: BusStationBean?) { - if(this.startStation!=startStation||this.endStation!=endStation){ - isFirstStartAutopilot = true - } this.startStation = startStation this.endStation = endStation if(startStation==null||endStation==null){ @@ -168,6 +223,7 @@ object LineManager : CallerBase() { @JvmStatic fun setLineInfo(lineInfo: LineInfo?) { if (lineInfo == null) { + teleOrderId = "" clearGlobalTrajectory(true) CallerEagleBaseFunctionCall4OchManager.updateOrderLine("") } @@ -180,10 +236,11 @@ object LineManager : CallerBase() { line.multiMap?.forEach { sb.append(it.value) } + OchChainLogManager.writeChainLogAutopilot("设置线路", "$sb") CallerEagleBaseFunctionCall4OchManager.updateOrderLine(sb.toString()) } } - OchChainLogManager.writeChainLogAutopilot("自驾参数", "线路信息:$contraiInfo") + OchChainLogManager.writeChainLogAutopilot("设置线路", "线路信息:$_lineInfos") } fun getStations(): Pair { @@ -266,6 +323,11 @@ object LineManager : CallerBase() { return@getStationsWithLine } d(M_BUS + TAG, "AutopilotControlParameters is update.") + if (lineInfo.isFirstStation(start)) { + autopilotFlag = firstStationFirstStartAutopilotFlag + }else{ + autopilotFlag = middleStationFirstStartAutopilotFlag + } CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(parameters) val startStationLocation = MogoLocation() startStationLocation.latitude = start.gcjLat @@ -280,13 +342,12 @@ object LineManager : CallerBase() { searchAutopilotState() } } - fun searchAutopilotState(){ - CallerAutoPilotControlManager.sendSsmFuncQueryAutoPilotInfo() - } + private fun clearAutopilotControlParameters(){ CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) TrajectoryAndDistanceManager.setStationPoint(null, null, null) autopilotId = "" + autopilotFlag = firstStationFirstStartAutopilotFlag OchLocationManager.removeGCJ02Listener(TAG) } @@ -324,6 +385,7 @@ object LineManager : CallerBase() { var parameters: AutopilotControlParameters? = null getStationsWithLine { start, end, lineInfo -> this.autopilotId = "${lineInfo.lineId}_${start.siteId}_${end.siteId}_${lineInfo.orderId}" + this.teleOrderId = lineInfo.genAutopilotId() } getStationsWithLineAndContrai { start, end, lineInfo, contrai -> parameters = AutopilotControlParameters() @@ -334,8 +396,8 @@ object LineManager : CallerBase() { parameters?.startLatLon = AutoPilotLonLat(start.lat, start.lon) parameters?.endLatLon = AutoPilotLonLat(end.lat, end.lon) parameters?.vehicleType = 10 - parameters?.orderId = this.autopilotId - parameters?.firstAutopilotFlag = isFirstStartAutopilot + parameters?.orderId = this.teleOrderId + parameters?.firstAutopilotFlag = teleIsFirstStartAutopilot if (parameters?.autoPilotLine == null) { parameters?.autoPilotLine = AutoPilotLine( @@ -355,7 +417,7 @@ object LineManager : CallerBase() { ) } - val (wayLatLons, blackLatLons) = getWayBlackLatLons(contrai.passPoints, contrai.blackPoints) + val (wayLatLons, blackLatLons) = contrai.getWayBlackLatLons() parameters?.wayLatLons = wayLatLons parameters?.blackLatLons = blackLatLons @@ -545,7 +607,10 @@ object LineManager : CallerBase() { type, source ) - if(send){ + if(send){// 启动自驾成功回调 + teleIsFirstStartAutopilot = false + isFirstStartAutopilot = false + autopilotFlag = norFirstStartAutopilotFlag M_LISTENERS.forEach { it.value.startAutopilotSuccess(source,autopilotId) } @@ -575,7 +640,7 @@ object LineManager : CallerBase() { } fun compareFSMAndOchOrderId(autopilotIdFromFsm: String?) { - if(autopilotIdFromFsm == autopilotId){ + if(autopilotIdFromFsm == teleOrderId){ // 地盘有和上层一样 不用操作 }else{ if(autopilotIdFromFsm.isNullOrEmpty()){ @@ -583,8 +648,8 @@ object LineManager : CallerBase() { }else{ // 地盘有但是和och出不一样 // todo 需要och 重新出发轨迹下载操作 - ToastUtils.showShort("${autopilotIdFromFsm}_${autopilotId}_自动驾驶id不同请排查") - OchChainLogManager.writeChainLogAutopilot("自驾Id","${autopilotIdFromFsm}_${autopilotId}_自动驾驶id不同请排查") + ToastUtils.showShort("${autopilotIdFromFsm}_${teleOrderId}_自动驾驶id不同请排查") + OchChainLogManager.writeChainLogAutopilot("自驾Id","${autopilotIdFromFsm}_${teleOrderId}_自动驾驶id不同请排查") // val initAutopilotControlParameters = initAutopilotControlParameters() // if (initAutopilotControlParameters!==null&&initAutopilotControlParameters.autoPilotLine!=null // && contraiInfo!=null diff --git a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/utils/CoordinateCalculateRouteUtil.kt b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/utils/CoordinateCalculateRouteUtil.kt index 78ac9a26e2..f8e6bcbf22 100644 --- a/OCH/common/bridge/src/main/java/com/mogo/och/bridge/utils/CoordinateCalculateRouteUtil.kt +++ b/OCH/common/bridge/src/main/java/com/mogo/och/bridge/utils/CoordinateCalculateRouteUtil.kt @@ -549,7 +549,7 @@ object CoordinateCalculateRouteUtil { } fun getHeadingAngle(location: MogoLocation, nextPoint: MogoLocation): Double { - return getHeadingAngle( + return getHeadingAngleTemp( location.longitude, location.latitude, nextPoint.longitude, diff --git a/OCH/common/common/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt b/OCH/common/common/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt index c255209fb5..7933ec7cca 100644 --- a/OCH/common/common/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt +++ b/OCH/common/common/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt @@ -33,6 +33,8 @@ import com.mogo.eagle.core.utilcode.util.ActivityUtils import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.och.common.module.debug.location.MogoLocationExit +import com.mogo.och.common.module.manager.loop.BizLoopManager +import com.mogo.och.common.module.manager.scnner.ScannerManager //import com.mogo.och.bridge.distance.TrajectoryAndDistanceManager //import com.mogo.och.bridge.utils.CoordinateCalculateRouteUtil //import com.mogo.och.bridge.utils.CoordinateCalculateRouteUtil @@ -63,6 +65,7 @@ object DebugDataDispatch { const val v2N = "xiaozhiV2N" const val romal = "romal" const val visualView = "visual" + const val scanner = "scanner" // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "location" --es path "1111/11111" // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "globalPath" --es path "sy73.json" @@ -77,6 +80,7 @@ object DebugDataDispatch { // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "romal" --ei show 0 // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "visual" --ei show 0 // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "showDebugView" +// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "scanner" --es qrInfo "" val ROOT_PATH = @@ -89,6 +93,12 @@ object DebugDataDispatch { } when (type) { + scanner -> { + val qrInfo = intent.getStringExtra("qrInfo") + BizLoopManager.runInIoThread{ + ScannerManager.parseParams("orderNo=1871744897569038336&uid=828aa91f-49a1-f9b3-4526-f58acda9df60&pipe=mogogosafety&phone=houyanli&lineId=134&expiryTime=1735094149070&bookingTime=1735056000000&tenantId=337197925358633123&availableTimes=1&ticketSize=1&ticketName=%E9%80%9A%E5%8B%A4%E7%A5%A8%E3%81%AE&type=14&shiftsId=4249") + } + } globalPathMock -> { sourceFilePath?.let { loadRawPoints(ROOT_PATH+it) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerManager.kt index 3eb351e1a6..257da196a5 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/scnner/ScannerManager.kt @@ -235,7 +235,7 @@ object ScannerManager : IOchLanPassengerStatusListener { } } - private fun parseParams(payload: String?) { + fun parseParams(payload: String?) { val parse = Uri.parse("${OchCommonConst.getShuttleUrl()}?${payload}") val queryParameterNames = parse.queryParameterNames val mutableMapOf = mutableMapOf() diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/CustomManager.java b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/CustomManager.java new file mode 100644 index 0000000000..d41245c3af --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/CustomManager.java @@ -0,0 +1,188 @@ +package com.mogo.och.common.module.utils; + +import android.app.Activity; +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; + +import com.shuyu.gsyvideoplayer.GSYVideoBaseManager; +import com.shuyu.gsyvideoplayer.player.IPlayerManager; +import com.shuyu.gsyvideoplayer.player.IjkPlayerManager; +import com.shuyu.gsyvideoplayer.utils.CommonUtil; +import com.shuyu.gsyvideoplayer.video.base.GSYVideoPlayer; +import com.mogo.och.common.module.R; + +import java.util.HashMap; +import java.util.Map; + +import static com.shuyu.gsyvideoplayer.utils.CommonUtil.hideNavKey; + +/** + * 多个播放的管理器 + * Created by guoshuyu on 2018/1/31. + */ + +public class CustomManager extends GSYVideoBaseManager { + + public static final int SMALL_ID = R.id.custom_small_id; + + public static final int FULLSCREEN_ID = R.id.custom_full_id; + + public static String TAG = "GSYVideoManager"; + + private static Map sMap = new HashMap<>(); + + + public CustomManager() { + init(); + } + + @Override + protected IPlayerManager getPlayManager() { + return new IjkPlayerManager(); + } + + /** + * 退出全屏,主要用于返回键 + * + * @return 返回是否全屏 + */ + @SuppressWarnings("ResourceType") + public static boolean backFromWindowFull(Context context, String key) { + boolean backFrom = false; + ViewGroup vp = (ViewGroup) (CommonUtil.scanForActivity(context)).findViewById(Window.ID_ANDROID_CONTENT); + View oldF = vp.findViewById(FULLSCREEN_ID); + if (oldF != null) { + backFrom = true; + hideNavKey(context); + if (getCustomManager(key).lastListener() != null) { + getCustomManager(key).lastListener().onBackFullscreen(); + } + } + return backFrom; + } + + /** + * 页面销毁了记得调用是否所有的video + */ + public static void releaseAllVideos(String key) { + if (getCustomManager(key).listener() != null) { + getCustomManager(key).listener().onCompletion(); + } + getCustomManager(key).releaseMediaPlayer(); + } + + + /** + * 暂停播放 + */ + public void onPause(String key) { + if (getCustomManager(key).listener() != null) { + getCustomManager(key).listener().onVideoPause(); + } + } + + /** + * 恢复播放 + */ + public void onResume(String key) { + if (getCustomManager(key).listener() != null) { + getCustomManager(key).listener().onVideoResume(); + } + } + + + /** + * 恢复暂停状态 + * + * @param seek 是否产生seek动作,直播设置为false + */ + public void onResume(String key, boolean seek) { + if (getCustomManager(key).listener() != null) { + getCustomManager(key).listener().onVideoResume(seek); + } + } + + + /** + * 单例管理器 + */ + public static synchronized Map instance() { + return sMap; + } + + /** + * 单例管理器 + */ + public static synchronized CustomManager getCustomManager(String key) { + if (TextUtils.isEmpty(key)) { + throw new IllegalStateException("key not be empty"); + } + CustomManager customManager = sMap.get(key); + if (customManager == null) { + customManager = new CustomManager(); + sMap.put(key, customManager); + } + return customManager; + } + + public static void onPauseAll() { + if (sMap.size() > 0) { + for (Map.Entry header : sMap.entrySet()) { + header.getValue().onPause(header.getKey()); + } + } + } + + public static void onResumeAll() { + if (sMap.size() > 0) { + for (Map.Entry header : sMap.entrySet()) { + header.getValue().onResume(header.getKey()); + } + } + } + + /** + * 恢复暂停状态 + * + * @param seek 是否产生seek动作 + */ + public static void onResumeAll(boolean seek) { + if (sMap.size() > 0) { + for (Map.Entry header : sMap.entrySet()) { + header.getValue().onResume(header.getKey(), seek); + } + } + } + + public static void clearAllVideo() { + if (sMap.size() > 0) { + for (Map.Entry header : sMap.entrySet()) { + CustomManager.releaseAllVideos(header.getKey()); + } + } + sMap.clear(); + } + + public static void removeManager(String key) { + sMap.remove(key); + } + + /** + * 当前是否全屏状态 + * + * @return 当前是否全屏状态, true代表是。 + */ + @SuppressWarnings("ResourceType") + public static boolean isFullState(Activity activity) { + ViewGroup vp = (ViewGroup) (CommonUtil.scanForActivity(activity)).findViewById(Window.ID_ANDROID_CONTENT); + final View full = vp.findViewById(FULLSCREEN_ID); + GSYVideoPlayer gsyVideoPlayer = null; + if (full != null) { + gsyVideoPlayer = (GSYVideoPlayer) full; + } + return gsyVideoPlayer != null; + } +} diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerCustomView.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerCustomView.kt index 83ad2d60ec..887d26c5ea 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerCustomView.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerCustomView.kt @@ -1,6 +1,7 @@ import android.content.Context import android.media.AudioManager import android.net.Uri +import android.text.TextUtils import android.util.AttributeSet import android.widget.ImageView import android.widget.RelativeLayout @@ -13,6 +14,7 @@ import com.mogo.eagle.core.utilcode.util.FileUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider +import com.mogo.och.common.module.utils.CustomManager import com.mogo.och.common.module.R import com.mogo.och.common.module.wigets.media.MediaFileCacheManager import com.mogo.och.common.module.wigets.media.MediaItem @@ -22,8 +24,10 @@ import com.mogo.skin.utils.SkinResources import com.mogo.skin.widget.SkinImageView import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack +import com.shuyu.gsyvideoplayer.utils.Debuger import com.shuyu.gsyvideoplayer.utils.GSYVideoType import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import com.shuyu.gsyvideoplayer.video.base.GSYVideoViewBridge import me.jessyan.autosize.utils.AutoSizeUtils import java.io.File @@ -250,6 +254,49 @@ class AdvanceGSYVideoPlayer : StandardGSYVideoPlayer { GSYVideoType.setRenderType(GSYVideoType.GLSURFACE) } + override fun init(context: Context) { + super.init(context) + onAudioFocusChangeListener = + AudioManager.OnAudioFocusChangeListener { focusChange -> + when (focusChange) { + AudioManager.AUDIOFOCUS_GAIN -> {} + AudioManager.AUDIOFOCUS_LOSS -> { + //todo 判断如果不是外界造成的就不处理 + } + + AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> { + //todo 判断如果不是外界造成的就不处理 + } + + AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> {} + } + } + } + + override fun getGSYVideoManager(): GSYVideoViewBridge { + CustomManager.getCustomManager(getKey()).initContext(getContext().getApplicationContext()); + return CustomManager.getCustomManager(getKey()); + } + + override fun releaseVideos() { + CustomManager.releaseAllVideos(getKey()) + } + + override fun backFromFull(context: Context?): Boolean { + return CustomManager.backFromWindowFull(context, getKey()) + } + + fun getKey(): String { + if (mPlayPosition == -22) { + Debuger.printfError(javaClass.simpleName + " used getKey() " + "******* PlayPosition never set. ********") + } + if (TextUtils.isEmpty(mPlayTag)) { + Debuger.printfError(javaClass.simpleName + " used getKey() " + "******* PlayTag never set. ********") + } + Logger.d("MediaLoopPlayView", "key ${(MediaLoopPlayView.TAG + mPlayPosition).toString() + mPlayTag}") + return (MediaLoopPlayView.TAG + mPlayPosition).toString() + mPlayTag + } + override fun hideAllWidget() { Logger.d(MediaLoopPlayView.TAG, "AdvanceGSYVideoPlayer,hideAllWidget") } diff --git a/OCH/common/common/src/main/res/values/ids.xml b/OCH/common/common/src/main/res/values/ids.xml new file mode 100644 index 0000000000..3b52790d4e --- /dev/null +++ b/OCH/common/common/src/main/res/values/ids.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/ContraiInfo.kt b/OCH/common/data/src/main/java/com/mogo/och/data/bean/ContraiInfo.kt index 5ae6b1ca1c..59ed5743d6 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/bean/ContraiInfo.kt +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/ContraiInfo.kt @@ -1,5 +1,7 @@ package com.mogo.och.data.bean +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLonLat + data class ContraiInfo( /** * 线路id @@ -34,4 +36,67 @@ data class ContraiInfo( var passPoints: MutableList?=null, // 用于算路的经停点 var blackPoints: MutableList?=null, // 用于算路的黑名單點 val source:Int = 1, //轨迹来源:1 录制;2 自主计算 -) +){ + fun getWayBlackLatLons( + ): Pair, MutableList> { + val wayLatLons = mutableListOf() + // 途经点 + if (!passPoints.isNullOrEmpty()) { + for (mogoLatLng in passPoints!!) { + wayLatLons.add( + AutoPilotLonLat( + mogoLatLng.lat, + mogoLatLng.lon, + when (mogoLatLng.pointType) { + 1 -> {//途径点 + false + } + + 2 -> {//禁行点 + false + } + + 3 -> {//站点 + true + } + + else -> { + false + } + } + ) + ) + } + } + val blackLatLons = mutableListOf() + // 黑名单点 + if (!blackPoints.isNullOrEmpty()) { + for (mogoLatLng in blackPoints!!) { + blackLatLons.add( + AutoPilotLonLat( + mogoLatLng.lat, + mogoLatLng.lat, + when (mogoLatLng.pointType) { + 1 -> {//途径点 + false + } + + 2 -> {//禁行点 + false + } + + 3 -> {//站点 + true + } + + else -> { + false + } + } + ) + ) + } + } + return Pair(wayLatLons,blackLatLons) + } +} diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/LineInfo.kt b/OCH/common/data/src/main/java/com/mogo/och/data/bean/LineInfo.kt index b0e0647fba..1e51f328fb 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/bean/LineInfo.kt +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/LineInfo.kt @@ -16,6 +16,42 @@ data class LineInfo( */ var multiMap: MutableMap? = mutableMapOf(), - val orderId:String?=null + val orderId:String?=null, -) + /** + * 站点包含的线路 + */ + var siteInfos:MutableList = mutableListOf(), + +) { + fun genAutopilotId(): String { + val tempAutopilotId = StringBuilder() + tempAutopilotId.append(lineId) + siteInfos.forEach { + tempAutopilotId.append("_") + tempAutopilotId.append(it.siteId) + } + tempAutopilotId.append("_") + tempAutopilotId.append(orderId) + return tempAutopilotId.toString() + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as LineInfo + + return lineId == other.lineId + } + + override fun hashCode(): Int { + return lineId.hashCode() + } + + fun isFirstStation(start: BusStationBean):Boolean { + return siteInfos.first()==start + } + + +} diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/db/exception/DbException.kt b/OCH/common/data/src/main/java/com/mogo/och/data/db/exception/DbException.kt index 2ee4abcf3c..024a3e277f 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/db/exception/DbException.kt +++ b/OCH/common/data/src/main/java/com/mogo/och/data/db/exception/DbException.kt @@ -1,6 +1,15 @@ package com.mogo.och.data.db.exception class DbException: RuntimeException { + var code:Int = 0 + var msg:String = "" constructor() : super() - constructor(message: String?) : super(message) + constructor(code:Int, message: String) : super("${code}_${message}"){ + this.code = code + this.msg = message + } + + companion object{ + const val NEEDSYNDATA = 10001 + } } \ No newline at end of file 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 index 90b5eed5db..68154b9555 100644 --- 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 @@ -2,7 +2,7 @@ "formatVersion": 1, "database": { "version": 6, - "identityHash": "1d1af100293dd1557307b49359621a5f", + "identityHash": "a2451ba8fe1fb6312258d93e3c2c2c8c", "entities": [ { "tableName": "contrail_data_table", @@ -258,7 +258,7 @@ }, { "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)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `shifts_id` INTEGER, `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", @@ -266,6 +266,12 @@ "affinity": "INTEGER", "notNull": true }, + { + "fieldPath": "shiftsId", + "columnName": "shifts_id", + "affinity": "INTEGER", + "notNull": false + }, { "fieldPath": "taskId", "columnName": "task_id", @@ -345,7 +351,7 @@ }, { "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)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `task_id` INTEGER, `shifts_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", @@ -359,6 +365,12 @@ "affinity": "INTEGER", "notNull": false }, + { + "fieldPath": "shiftsId", + "columnName": "shifts_id", + "affinity": "INTEGER", + "notNull": false + }, { "fieldPath": "lineId", "columnName": "line_id", @@ -479,7 +491,7 @@ }, { "tableName": "event_data_table", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT, `lineId` INTEGER, `task_date` 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)", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `event_type` TEXT, `shifts_id` INTEGER, `lineId` INTEGER, `task_date` 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", @@ -493,6 +505,12 @@ "affinity": "TEXT", "notNull": false }, + { + "fieldPath": "shiftsId", + "columnName": "shifts_id", + "affinity": "INTEGER", + "notNull": false + }, { "fieldPath": "lineId", "columnName": "lineId", @@ -599,7 +617,7 @@ }, { "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, `task_date` 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)", + "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, `shifts_id` INTEGER, `task_id` INTEGER, `task_date` 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", @@ -631,6 +649,12 @@ "affinity": "INTEGER", "notNull": false }, + { + "fieldPath": "shiftsId", + "columnName": "shifts_id", + "affinity": "INTEGER", + "notNull": false + }, { "fieldPath": "taskId", "columnName": "task_id", @@ -745,7 +769,7 @@ "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, '1d1af100293dd1557307b49359621a5f')" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'a2451ba8fe1fb6312258d93e3c2c2c8c')" ] } } \ No newline at end of file diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/BusRoutesResponse.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/BusRoutesResponse.kt index fc98509b6b..d589026918 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/BusRoutesResponse.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/BusRoutesResponse.kt @@ -74,8 +74,9 @@ class BusRoutesResponse : BaseData() { if (lineInfo == null && taskAndsite.lineId != null && taskAndsite.lineName != null) { lineInfo = LineInfo(taskAndsite.lineId!!, taskAndsite.lineName!!, orderId = taskAndsite.taskId.toString()) } - lineInfo?.multiMap?.put("taskInfo",LineModel.getTaskTime()) } + lineInfo?.multiMap?.put("taskInfo",LineModel.getTaskTime()) + lineInfo?.siteInfos = result LineManager.setLineInfo(lineInfo) return Pair(result,currentStationIndex) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/CarExecutableTaskResponse.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/CarExecutableTaskResponse.kt index 32f1658328..cd60007481 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/CarExecutableTaskResponse.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/bean/response/CarExecutableTaskResponse.kt @@ -1,6 +1,8 @@ package com.mogo.och.weaknet.bean.response 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.util.GsonUtils import com.mogo.och.data.bean.SiteIntroduce import com.mogo.och.data.db.bean.ContrailDataBean @@ -82,6 +84,10 @@ data class CarExecutableTaskResponse(val data: List?) : BaseData(){ dataInfo.taskList?.let { taskInfs -> taskInfs.forEach { it.lineId = lineId + if(AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { + // 班车需要前台生产任务Id 前台规则 任务id 等同模板id + it.taskId = it.shiftsId + } } TaskDb.addOrUpdate(taskInfs,lineId) } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt index 97a018c811..8adedf39fd 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/EventModel.kt @@ -98,11 +98,7 @@ object EventModel { } waitUpdateWriteOffEvent?.let {writeOffEvents-> - writeOffEvents.forEach { - it.updateStatus = EventDataBean.updated - it.upDateTime = System.currentTimeMillis() - } - WriteOffDb.saveUpdateSuccess(writeOffEvents) + WriteOffDb.saveUpdateSuccess(writeOffEvents,EventDataBean.updated,System.currentTimeMillis()) } isUpdating.set(false) 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 12f8725be4..8035fd3ffe 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 @@ -211,8 +211,8 @@ object LineModel { fun commitSwitchLineId(task: TaskDataBean, line: LineDataBean) { RxUtils.disposeSubscribe(startTaskDisposable) line.getLineIdAndName { lineId, lineName -> - task.getLineIdAndName { taskId, taskTime,taskDate -> - RepositoryManager.startTask(taskId, lineId, taskTime, lineName) + task.getLineIdAndName { shiftsId,taskId, taskTime,taskDate -> + RepositoryManager.startTask(shiftsId,taskId, lineId, taskTime, lineName) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) ?.subscribe(object : Observer { @@ -247,7 +247,7 @@ object LineModel { override fun onNext(data: Boolean) { d(TAG, "commitSwitchLineId onNext ${data}") if (data) { - EventDb.saveEventTaskStart(taskId, lineId, taskTime, lineName,taskDate) + EventDb.saveEventTaskStart(shiftsId,taskId, lineId, taskTime, lineName,taskDate) OrderModel.queryBusRoutes() BizLoopManager.runInIoThread{ val querySiteByLineId = SiteDb.querySiteByLineId(lineId) @@ -311,8 +311,8 @@ object LineModel { } fun endTask() { - currentTask?.taskId?.let { taskId -> - RepositoryManager.endTask(taskId) + currentTask?.getLineIdAndName { shiftsId, taskId, taskTime, taskDate -> + RepositoryManager.endTask(shiftsId,taskId) ?.subscribeOn(Schedulers.io()) ?.observeOn(AndroidSchedulers.mainThread()) ?.subscribe(object : Observer { 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 7316f920d0..eee80c62d5 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 @@ -265,6 +265,7 @@ object OrderModel { RepositoryManager.leaveStation( startStation.seq, startStation.siteId.toLong(), + task.shiftsId?:0L, task.taskId?:0L, task.lineId?:0L, task.taskStartTime?:System.currentTimeMillis(), 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 994fb39b28..1cff07c3a7 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 @@ -118,22 +118,22 @@ object RepositoryManager { return lineRepository?.queryCanUserTask(lineId) } - fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? { - return lineRepository?.startTask(taskId,lineId,taskTime,lineName) + fun startTask(shiftsId:Long,taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? { + return lineRepository?.startTask(shiftsId,taskId,lineId,taskTime,lineName) } fun leaveStation( - seq: Int, siteId: Long, taskId: Long, lineId: Long, taskStartTime: Long, taskDate: Long + seq: Int, siteId: Long,shiftsId:Long ,taskId: Long, lineId: Long, taskStartTime: Long, taskDate: Long ): Observable?{ - return lineRepository?.leaveStation(seq,siteId,taskId,lineId,taskStartTime,taskDate) + return lineRepository?.leaveStation(seq,siteId,shiftsId,taskId,lineId,taskStartTime,taskDate) } fun arriveStation(seq: Int, siteId: Long, taskId: Long): Observable?{ return lineRepository?.arriveStation(seq,siteId,taskId) } - fun endTask(taskId: Long): Observable?{ - return lineRepository?.endTask(taskId) + fun endTask(shiftsId:Long,taskId: Long): Observable?{ + return lineRepository?.endTask(shiftsId,taskId) } 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 fcd604a143..ec8bf190af 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 @@ -91,7 +91,11 @@ abstract class MyDataBase : RoomDatabase() { private val MIGRATION_5_6 = object : Migration(5, 6) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("ALTER TABLE ${EventDataBean.tableName} ADD COLUMN task_date INTEGER") + database.execSQL("ALTER TABLE ${EventDataBean.tableName} ADD COLUMN shifts_id INTEGER") database.execSQL("ALTER TABLE ${WriteOffDataBean.tableName} ADD COLUMN task_date INTEGER") + database.execSQL("ALTER TABLE ${WriteOffDataBean.tableName} ADD COLUMN shifts_id INTEGER") + database.execSQL("ALTER TABLE ${TaskDataBean.tableName} ADD COLUMN shifts_id INTEGER") + database.execSQL("ALTER TABLE ${TaskSiteDataBean.tableName} ADD COLUMN shifts_id INTEGER") } } 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 c4d72d70eb..e44776478e 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 @@ -18,6 +18,12 @@ data class EventDataBean( @ColumnInfo(name = "event_type", typeAffinity = ColumnInfo.TEXT) var eventType: String? = null, + /** + * 生成任务的模板id + */ + @ColumnInfo(name = "shifts_id", typeAffinity = ColumnInfo.INTEGER) + var shiftsId: Long? = null, + /** * 任务id、模板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 b93ea1c079..4470f588ee 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 @@ -12,11 +12,17 @@ data class TaskDataBean( @SerializedName("idtemp") var id: Int = 0, + /** + * 生成任务的模板id + */ + @ColumnInfo(name = "shifts_id", typeAffinity = ColumnInfo.INTEGER) + var shiftsId: Long? = null, + /** * 任务id */ @ColumnInfo(name = "task_id", typeAffinity = ColumnInfo.INTEGER, index = true) - @SerializedName("id", alternate = ["shiftsId"]) + @SerializedName("id") var taskId: Long? = null, /** @@ -87,11 +93,13 @@ data class TaskDataBean( return result } - fun getLineIdAndName(function: (taskId: Long, taskTime: Long , taskDate:Long) -> Unit) { + fun getLineIdAndName(function: (shiftsId:Long,taskId: Long, taskTime: Long , taskDate:Long) -> Unit) { taskId?.let { id -> taskStartTime?.let { time -> taskDate?.let { date -> - function(id, time, date) + shiftsId?.let {shiftsId-> + function(shiftsId,id, time, date) + } } } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt index e2379e6295..0dc289b0dd 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/TaskSiteDataBean.kt @@ -16,6 +16,12 @@ data class TaskSiteDataBean( @ColumnInfo(name = "task_id", typeAffinity = ColumnInfo.INTEGER) var taskId: Long? = null, + /** + * 生成任务的模板id + */ + @ColumnInfo(name = "shifts_id", typeAffinity = ColumnInfo.INTEGER) + var shiftsId: Long? = null, + /** * 线路id */ @@ -130,12 +136,13 @@ data class TaskSiteDataBean( /** * 开始任务 并把第一站置为 2 当前站 */ - fun toTaskSiteDatas(querySites: List, taskId:Long, lineName: String): MutableList { + fun toTaskSiteDatas(querySites: List,shiftsId:Long, taskId:Long, lineName: String): MutableList { val result = mutableListOf() var temp: TaskSiteDataBean?=null querySites.forEach { temp = TaskSiteDataBean() temp?.taskId = taskId + temp?.shiftsId = shiftsId temp?.lineId = it.lineId temp?.lineName = lineName temp?.siteId = it.siteId diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/WriteOffDataBean.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/WriteOffDataBean.kt index c49cc5801f..8d0a68de4d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/WriteOffDataBean.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/bean/WriteOffDataBean.kt @@ -36,6 +36,13 @@ data class WriteOffDataBean( @ColumnInfo(name = "type", typeAffinity = ColumnInfo.INTEGER) var type: Int? = null, + + /** + * 生成任务的模板id + */ + @ColumnInfo(name = "shifts_id", typeAffinity = ColumnInfo.INTEGER) + var shiftsId: Long? = null, + /** * 当前的任务id、模板id */ diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/EventDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/EventDataDao.kt index 52f32f1de6..dbf7a07e4f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/EventDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/EventDataDao.kt @@ -20,8 +20,8 @@ interface EventDataDao { @Delete fun delete(vararg eventDataBean: EventDataBean) - @Query("UPDATE ${EventDataBean.tableName} SET update_status = :status WHERE id = :id") - fun updateUpdateSatus(id:Int,status:Int):Int + @Query("UPDATE ${EventDataBean.tableName} SET update_status = :status,update_time = :currentTimeMillis WHERE id = :id") + fun updateUpdateSatus(id: Int, status: Int, currentTimeMillis: Long):Int // 删除过时数据 diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt index fab9d29d9b..5eb927069d 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/dao/WriteOffDataDao.kt @@ -39,5 +39,8 @@ interface WriteOffDataDao { @Query("SELECT count(1) FROM ${WriteOffDataBean.tableName} WHERE update_status = ${WriteOffDataBean.notUpdate}") fun queryWriteOffByStatusWithPageCount(): Int + @Query("UPDATE ${WriteOffDataBean.tableName} SET update_status = :updated ,update_time = :currentTimeMillis WHERE id = :id") + fun updateStatusAndTime(updated: Int, currentTimeMillis: Long, id: Int) + } 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 d6c077becf..80dbb67b1f 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 @@ -30,11 +30,12 @@ object EventDb: IDbRepository { eventDataDao = null } - fun saveEventTaskStart(taskId: Long, lineId: Long, taskStartTime: Long, name: String,taskDate:Long) { + fun saveEventTaskStart(shiftsId:Long,taskId: Long, lineId: Long, taskStartTime: Long, name: String,taskDate:Long) { val event = EventDataBean() event.eventType = EventDataBean.TaskStart event.lineId = lineId event.taskId = taskId + event.shiftsId = shiftsId event.taskDate = taskDate event.lineName = name event.taskStartTime = taskStartTime @@ -51,6 +52,7 @@ object EventDb: IDbRepository { } fun saveEventTaskArriveSite( + shiftsId:Long, taskId: Long, lineId: Long, siteId: Long, @@ -62,6 +64,7 @@ object EventDb: IDbRepository { val event = EventDataBean() event.eventType = EventDataBean.TaskArriveSite event.lineId = lineId + event.shiftsId = shiftsId event.taskStartTime = taskStartTime event.lineName = lineName event.taskId = taskId @@ -79,6 +82,7 @@ object EventDb: IDbRepository { } fun saveEventTaskLeaveSite( + shiftsId:Long, taskId: Long, lineId: Long, siteId: Long, @@ -90,6 +94,7 @@ object EventDb: IDbRepository { val event = EventDataBean() event.eventType = EventDataBean.TaskLeaveSite event.lineId = lineId + event.shiftsId = shiftsId event.taskId = taskId event.taskDate = taskDate event.taskStartTime = taskStartTime @@ -107,6 +112,7 @@ object EventDb: IDbRepository { } fun saveEventTaskEnd( + shiftsId: Long, taskId: Long, lineId: Long, taskStartTime: Long?, @@ -116,6 +122,7 @@ object EventDb: IDbRepository { val event = EventDataBean() event.eventType = EventDataBean.TaskEnd event.lineId = lineId + event.shiftsId = shiftsId event.taskId = taskId event.taskDate = taskDate event.lineName = lineName @@ -151,7 +158,7 @@ object EventDb: IDbRepository { @Transaction fun saveUpdateSuccess(waitUpdateEvent: List) { waitUpdateEvent.forEach { - eventDataDao?.updateUpdateSatus(it.id,it.updateStatus) + eventDataDao?.updateUpdateSatus(it.id,it.updateStatus,System.currentTimeMillis()) } } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt index 20087c9174..102b5c6752 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskDb.kt @@ -5,6 +5,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ 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 +import com.mogo.och.weaknet.model.LineModel import com.mogo.och.weaknet.repository.db.IDbRepository import com.mogo.och.weaknet.repository.db.MyDataBase import com.mogo.och.weaknet.repository.db.bean.TaskDataBean @@ -88,7 +89,7 @@ object TaskDb : IDbRepository { return null } - fun startTask(taskId: Long, lineId: Long,lineName:String): Observable? { + fun startTask(shiftsId:Long,taskId: Long, lineId: Long,lineName:String): Observable? { return Observable.just(taskId) .flatMap { var updateCount:Int? = 0 @@ -104,19 +105,30 @@ object TaskDb : IDbRepository { } CallerLogger.d(TAG,"更新任务状态用时:${System.currentTimeMillis()-startTime}") startTime = System.currentTimeMillis() - updateCount = TaskSiteDb.startTask(taskId, lineId, lineName) + updateCount = TaskSiteDb.startTask(shiftsId,taskId, lineId, lineName) OchChainLogManager.writeChainLogDb("开始任务", "把正在使用的数据更新到RunningTask表格一共${updateCount}行数据") CallerLogger.d(TAG,"插入正在运行的线路用时:${System.currentTimeMillis()-startTime}") } catch (e: Exception) { if (e is DbException) { - println("数据不全") - // 恢复数据 - taskDataDao?.queryTaskByTaskIdOne(taskId)?.let { - it.startTime = null - it.status = TaskDataBean.unUse - // 更新任务状态 - taskDataDao?.updateStatus(System.currentTimeMillis(),TaskDataBean.unUse,it.id) - OchChainLogManager.writeChainLogDb("开始任务", "异常情况${lineId}_${lineName}_task:${taskId} 为未使用的状态 原因:${e.message}") + if(e.code==DbException.NEEDSYNDATA) { + // 重新同步 信息 + LineModel.refreshTask() + println("数据不全") + // 恢复数据 + taskDataDao?.queryTaskByTaskIdOne(taskId)?.let { + it.startTime = null + it.status = TaskDataBean.unUse + // 更新任务状态 + taskDataDao?.updateStatus( + System.currentTimeMillis(), + TaskDataBean.unUse, + it.id + ) + OchChainLogManager.writeChainLogDb( + "开始任务", + "异常情况${lineId}_${lineName}_task:${taskId} 为未使用的状态 原因:${e.message}" + ) + } } } return@flatMap Observable.error(DataException(DataException.startTaskErrorCode,e.message?:"")) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt index ffe5787330..87f47626e3 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/TaskSiteDb.kt @@ -34,28 +34,28 @@ object TaskSiteDb : IDbRepository { } // 开始线路 - fun startTask(taskId: Long, linId: Long, lineName: String): Int? { + fun startTask(shiftsId:Long,taskId: Long, linId: Long, lineName: String): Int? { // 获取线路的站点 - var startTime = System.currentTimeMillis() - val querySites = SiteDb.querySiteByLineId(linId)?.distinctBy { it.siteId } + val querySites = SiteDb.querySiteByLineId(linId)?.distinctBy { it.siteId }?.sortedBy { it.seq } if (querySites.isNullOrEmpty()) { - throw DbException("没有站点数据") + throw DbException(DbException.NEEDSYNDATA,"没有站点数据") + } + querySites.forEachIndexed { index, siteDataBean -> + if(index+1!=siteDataBean.seq){ + throw DbException(DbException.NEEDSYNDATA,"站点数据排序不对") + } } - CallerLogger.d(TAG, "查询站点用时:${System.currentTimeMillis() - startTime}") - startTime = System.currentTimeMillis() val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas( querySites, + shiftsId, taskId, lineName ) - CallerLogger.d(TAG, "数据转换用时:${System.currentTimeMillis() - startTime}") if (toTaskSiteDatas.size < 2) { - throw DbException("站点数据不全请稍后再试") + throw DbException(DbException.NEEDSYNDATA,"站点数据不全请稍后再试") } // 把线路所有的站点搬迁到运行中表格中 - startTime = System.currentTimeMillis() val result = taskSiteDataDao?.insert(*toTaskSiteDatas.toTypedArray()) - CallerLogger.d(TAG, "数据插入用时:${System.currentTimeMillis() - startTime}") return if (result.isNullOrEmpty()) { null } else { @@ -110,6 +110,7 @@ object TaskSiteDb : IDbRepository { * 从后台恢复正在执行的任务 */ fun restoreRunningTask( + shiftsId:Long, taskId: Long, currentSiteId: Long, leaving: Boolean, @@ -123,10 +124,11 @@ object TaskSiteDb : IDbRepository { // 获取线路的站点 val querySites = SiteDb.querySiteByLineId(lineInfo.lineId!!)?.distinctBy { it.siteId } if (querySites.isNullOrEmpty()) { - throw DbException("没有站点数据") + throw DbException(DbException.NEEDSYNDATA,"没有站点数据") } val toTaskSiteDatas = TaskSiteDataBean.toTaskSiteDatas( querySites, + shiftsId, taskId, lineInfo.lineName!! ) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt index ac695c9d56..108d69135a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/db/repository/WriteOffDb.kt @@ -1,5 +1,6 @@ package com.mogo.och.weaknet.repository.db.repository +import androidx.room.Transaction import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.weaknet.model.EventModel import com.mogo.och.weaknet.repository.db.IDbRepository @@ -37,8 +38,15 @@ object WriteOffDb: IDbRepository { return writeOffDataDao?.queryWriteOffEventByStatusWithPage() } - fun saveUpdateSuccess(writeOffEvents: List) { - writeOffDataDao?.insert(*writeOffEvents.toTypedArray()) + @Transaction + fun saveUpdateSuccess( + writeOffEvents: List, + updated: Int, + currentTimeMillis: Long + ) { + writeOffEvents.forEach { + writeOffDataDao?.updateStatusAndTime(updated,currentTimeMillis,it.id) + } } fun queryWaitUpdateEventByTaskId(taskId: Long): List? { 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 e2cbfc3033..23444ead1b 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 @@ -17,11 +17,12 @@ interface ILineRepository { fun queryCanUserTask(lineId:Long): Observable?>? - fun startTask(taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? + fun startTask(shiftsId:Long,taskId:Long,lineId:Long,taskTime:Long,lineName:String): Observable? fun leaveStation( seq: Int, siteId: Long, + shiftsId:Long, taskId: Long, lineId: Long, taskStartTime: Long, @@ -30,7 +31,7 @@ interface ILineRepository { fun arriveStation( seq: Int, siteId: Long, taskId: Long): Observable? - fun endTask( taskId: Long): Observable? + fun endTask(shiftsId:Long, taskId: Long): Observable? fun queryCarExecutableTaskList(ochCommonServiceCallback: OchCommonServiceCallback) 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 62d991a6e4..a1cae527f7 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 @@ -101,8 +101,10 @@ class NormalRepository: ILineRepository { if (lineInfo == null && busRoutesResult.name != null) { lineInfo = LineInfo(busRoutesResult.lineId.toLong(), busRoutesResult.name, orderId = busRoutesResult.taskId.toString() ) } - lineInfo?.multiMap?.put("taskInfo", LineModel.getTaskTime()) + } + lineInfo?.multiMap?.put("taskInfo", LineModel.getTaskTime()) + lineInfo?.siteInfos = result LineManager.setLineInfo(lineInfo) LineManager.setContraiInfo( @@ -144,6 +146,7 @@ class NormalRepository: ILineRepository { } override fun startTask( + shiftsId:Long, taskId: Long, lineId: Long, taskTime: Long, @@ -155,6 +158,7 @@ class NormalRepository: ILineRepository { override fun leaveStation( seq: Int, siteId: Long, + shiftsId:Long, taskId: Long, lineId: Long, taskStartTime: Long, @@ -172,7 +176,7 @@ class NormalRepository: ILineRepository { ) } - override fun endTask(taskId: Long): Observable? { + override fun endTask(shiftsId:Long,taskId: Long): Observable? { return normalLineInterface?.endTask(taskId) } 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 39621ea1f1..4c55bddd5a 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 @@ -95,7 +95,7 @@ class WeaknetRepository : ILineRepository { // 恢复站点信息 currentTask?.taskId?.let { // 获取正在进行中的具体信息 - val runnintTaskAndSites = TaskSiteDb.queryRunningTask(it) + val runnintTaskAndSites = TaskSiteDb.queryRunningTask(it)?.distinctBy { it.siteId } if(runnintTaskAndSites.isNullOrEmpty()||runnintTaskAndSites.size<2){ CallerLogger.d(TAG, "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}") OchChainLogManager.writeChainLogDb("加载任务", "异常情况:有任务:${runningTaskInfo} runningTask 表格没有对应的数据:${runnintTaskAndSites}") @@ -191,12 +191,14 @@ class WeaknetRepository : ILineRepository { if(lineId<=0){ return@flatMap Observable.just(false) } - if(taskId<=0||currentSiteId<=0||taskDate<=0){ + if(taskId<=0||currentSiteId<=0){ return@flatMap Observable.just(false) } // 日期是否正确 - if (!DateTimeUtil.isSameDay(System.currentTimeMillis(),taskDate)) { - return@flatMap Observable.just(false) + if (AppIdentityModeUtils.isScheduled(FunctionBuildConfig.appIdentityMode)) { + if (!DateTimeUtil.isSameDay(System.currentTimeMillis(),taskDate)) { + return@flatMap Observable.just(false) + } } // region 任务本地是否存在 @@ -277,7 +279,7 @@ class WeaknetRepository : ILineRepository { TaskDb.restoreTask(taskId) // 恢复正在执行任务表 - TaskSiteDb.restoreRunningTask(taskId,currentSiteId,leaving,lineInfo!!) + TaskSiteDb.restoreRunningTask(it.shiftsId,taskId,currentSiteId,leaving,lineInfo!!) return@flatMap loadCurrentTaskInfo() } @@ -335,17 +337,19 @@ class WeaknetRepository : ILineRepository { } override fun startTask( + shiftsId:Long, taskId: Long, lineId: Long, taskTime: Long, lineName: String ): Observable? { - return TaskDb.startTask(taskId, lineId, lineName) + return TaskDb.startTask(shiftsId,taskId, lineId, lineName) } override fun leaveStation( seq: Int, siteId: Long, + shiftsId:Long, taskId: Long, lineId: Long, taskStartTime: Long, @@ -364,6 +368,7 @@ class WeaknetRepository : ILineRepository { // 设置滑动出发任务 LineManager.getLineInfo { lineInfo -> EventDb.saveEventTaskLeaveSite( + shiftsId, taskId, lineId, it.siteId.toLong(), @@ -404,6 +409,7 @@ class WeaknetRepository : ILineRepository { // 设置到站任务 LineManager.getLineInfo { lineInfo -> EventDb.saveEventTaskArriveSite( + task.shiftsId!!, task.taskId!!, task.lineId!!, end.siteId.toLong(), @@ -449,13 +455,13 @@ class WeaknetRepository : ILineRepository { } - override fun endTask(taskId: Long): Observable? { + override fun endTask(shiftsId:Long,taskId: Long): Observable? { return Observable.just(taskId).flatMap { currentTask?.let {task-> if (task.taskId!=null&&task.lineId!=null) { TaskDb.endTask(task.taskId!!) LineManager.getLineInfo { lineInfo -> - EventDb.saveEventTaskEnd(task.taskId!!,task.lineId!!,task.taskStartTime,lineInfo.lineName,task.taskDate?:0L) + EventDb.saveEventTaskEnd(shiftsId,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/writeoff/impl/WriteOffCacheRepository.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/repository/writeoff/impl/WriteOffCacheRepository.kt index f88505f3b8..5956ebdb79 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 @@ -189,6 +189,7 @@ class WriteOffCacheRepository : IWriteOffRepository { addWrite.expiryTime = it.expiryTime addWrite.bookingTime = it.bookingTime addWrite.type = it.type + addWrite.shiftsId = it.shiftsId addWrite.taskId = LineModel.currentTask?.taskId addWrite.taskDate = LineModel.currentTask?.taskDate addWrite.lineId = lineId @@ -246,6 +247,7 @@ class WriteOffCacheRepository : IWriteOffRepository { //addWrite.bookingTime = it.bookingTime //addWrite.type = it.type addWrite.taskId = LineModel.currentTask?.taskId + addWrite.shiftsId = LineModel.currentTask?.shiftsId LineManager.getStationsWithLine { start, end, lineInfo -> addWrite.siteId = start.siteId.toLong() addWrite.lineId = lineInfo.lineId diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.kt index 39eaf1b19f..ba11098e3f 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/util/BusTrajectoryManager.kt @@ -12,7 +12,9 @@ import com.mogo.och.bridge.autopilot.trajectory.ITrajectoryListListener import com.mogo.och.bridge.autopilot.trajectory.TrajectoryManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.weaknet.constant.BusConst +import com.mogo.och.weaknet.model.LineModel import com.mogo.och.weaknet.model.LineModel.currentTask +import com.mogo.och.weaknet.model.LineModel.startStationIndex import com.mogo.och.weaknet.model.OrderModel.isGoingToNextStation import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers @@ -54,10 +56,11 @@ object BusTrajectoryManager : ITrajectoryListListener { } else { OchChainLogManager.writeChainLogTrajectory( "轨迹监控", - "开始或者结束下发轨迹 轨迹id:${mAutopilotControlParameters!!.autoPilotLine!!.lineId}" + "开始或者结束下发轨迹 轨迹id:${mAutopilotControlParameters!!.autoPilotLine!!.lineId}____${startStationIndex}" ) } - if (isLogin() && currentTask != null && !isGoingToNextStation) { + + if (isLogin() && currentTask != null && !isGoingToNextStation && startStationIndex == 0) { d(TAG, "syncTrajectoryInfo() start.") startTrajReqLoop() } else { diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt index bb43cd6c9d..4227ac0e66 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/TicketModel.kt @@ -103,6 +103,24 @@ object TicketModel : StateChangeListener { } } try { + var tempType = 0 + if (type is String) { + when (type) { + "shuttle" -> { + tempType = 11 + } + + "bus" -> { + tempType = 10 + } + + else -> { + tempType = type.toInt()?:0 + } + } + } else { + tempType = type?.toInt() ?: 0 + } val writeOffDetail = WriteOffDetialMsg(0,"", expiryTime?.toLong()?:0, bookingTime?.toLong()?:0, @@ -113,7 +131,7 @@ object TicketModel : StateChangeListener { phoneNum, ticketSize?.toInt()?:0, URLDecoder.decode(ticketName?:"","UTF-8"), - type?.toInt()?:0, + tempType, shiftsId?.toLong()?:0, pipe, startStationId?.toLong()?:0, diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingselect/RoutingSelectModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingselect/RoutingSelectModel.kt index 717ca0e7f0..838be6e954 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingselect/RoutingSelectModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/routing/routingselect/RoutingSelectModel.kt @@ -11,6 +11,7 @@ import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.bridge.autopilot.line.LineManager import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.LineInfo import com.mogo.och.unmanned.taxi.bean.GrayLineBean import com.mogo.och.unmanned.taxi.bean.QueryGrayContrailListRsp @@ -153,9 +154,25 @@ class RoutingSelectModel : ViewModel() { } DebugView.printInfoMsg("[启自驾] 准备启动自驾") - LineManager.setLineInfo(LineInfo(grayLineBean.lineId?:0L,grayLineBean.lineName?:"", orderId = "${data.taskId}")) + val startStation = grayLineBean.startSite?.toBusStationBean() + val endStation = grayLineBean.endSite?.toBusStationBean() + val temp = mutableListOf() + if(startStation!=null){ + temp.add(startStation) + } + if(endStation!=null){ + temp.add(endStation) + } + LineManager.setLineInfo( + LineInfo( + grayLineBean.lineId?:0L, + grayLineBean.lineName?:"", + orderId = "${data.taskId}", + siteInfos = temp + ) + ) LineManager.setContraiInfo(contrailBean.toContraiInfo()) - LineManager.setStartAndEndStation(grayLineBean.startSite?.toBusStationBean(),grayLineBean.endSite?.toBusStationBean()) + LineManager.setStartAndEndStation(startStation,endStation) CallerEagleBaseFunctionCall4OchManager.updateOrderStatus(true) viewCallback?.onStartGrayTaskAndQueryContrailSuccess(data) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt index 13934cd8cd..eb2bd03738 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt @@ -54,6 +54,7 @@ import com.mogo.och.bridge.utils.CoordinateCalculateRouteUtil.coordinateConverte import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.voice.VoiceNotice +import com.mogo.och.data.bean.BusStationBean import com.mogo.och.data.bean.LineInfo import com.mogo.och.data.taxi.QueryCarOrderByNoRespBean import com.mogo.och.unmanned.taxi.bean.PrepareTaskRespBean @@ -1060,7 +1061,23 @@ object TaxiTaskModel { mTaskTrajectoryList.addAll(it) mCurrentTaskTrajectory = it.first { currentTaskLineId == it.lineId } mCurrentTaskTrajectory?.let {traj-> - LineManager.setLineInfo(LineInfo(traj.lineId,traj.lineName, orderId = mCurrentTaskWithOrder?.order?.orderNo?:"")) + val startStaion = mCurrentTaskWithOrder?.startSite?.toCommonStation() + val endStaion = mCurrentTaskWithOrder?.endSite?.toCommonStation() + val temp = mutableListOf() + if(startStaion!=null){ + temp.add(startStaion) + } + if(endStaion!=null){ + temp.add(endStaion) + } + LineManager.setLineInfo( + LineInfo( + traj.lineId, + traj.lineName, + orderId = mCurrentTaskWithOrder?.order?.orderNo?:"", + siteInfos = temp + ) + ) traj.blackPoints?.clear() traj.passPoints?.clear() LineManager.setContraiInfo(traj.toCommonContraiInfo()) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/TaxiTrajectoryManager.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/TaxiTrajectoryManager.kt index f36ea177ab..2e9e75135a 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/TaxiTrajectoryManager.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/TaxiTrajectoryManager.kt @@ -176,10 +176,7 @@ object TaxiTrajectoryManager : ITrajectoryListListener { preloadContrail.contrailSaveTimeDPQP val toCommonContraiInfo = preloadContrail.toCommonContraiInfo() - val (wayLatLons, blackLatLons) = LineManager.getWayBlackLatLons( - toCommonContraiInfo.passPoints, - toCommonContraiInfo.blackPoints - ) + val (wayLatLons, blackLatLons) = toCommonContraiInfo.getWayBlackLatLons() mPreAutopilotControlParameters?.wayLatLons = wayLatLons mPreAutopilotControlParameters?.blackLatLons = blackLatLons } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/biz/DataCenterBizProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/biz/DataCenterBizProvider.kt index 427a56534d..a3db3c79ad 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/biz/DataCenterBizProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/biz/DataCenterBizProvider.kt @@ -49,10 +49,6 @@ class DataCenterBizProvider:IDataCenterBizProvider { CallerDataCenterBizListener.invokeLoginStatus(isLogin) } - override fun notifyOrderID(orderID: String) { - CallerDataCenterBizListener.invokeOrderID(orderID) - } - override fun onDestroy() { } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchConst.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchConst.kt index e35ce36b44..821f5abd26 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchConst.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchConst.kt @@ -39,5 +39,15 @@ class MogoLogCatchConst { * 下发关闭链路的类型 */ const val LOCAL_CONFIG_CLOSE_SINGLE_FW = 7 + + /** + * 打开高精地图每个瓦片数据文件下载、删除的日志 + */ + const val OPEN_HD_MAP_TILE_FILE_LOG = 8 + + /** + * 关闭高精地图每个瓦片数据文件下载、删除的日志 + */ + const val CLOSE_HD_MAP_TILE_FILE_LOG = 9 } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt index 82063f727a..7afb4d0eff 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcatch/MogoLogCatchManager.kt @@ -26,16 +26,19 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.data.deva.chain.ChainLogParam import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.map.MogoData.Companion.mogoMapData import com.zhidao.loglib.bean.RemoteLogPushContent import com.zhidao.loglib.call.LogInfoManagerFactory import com.zhidao.loglib.core.ILogListener import com.zhidao.loglib.core.LogInfoManager import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.CACHE_MAP_UPLOAD import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.CACHE_TRACE_UPLOAD +import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.CLOSE_HD_MAP_TILE_FILE_LOG import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.LOCAL_CONFIG_CLOSE_LOG import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.LOCAL_CONFIG_CLOSE_SINGLE_FW import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.LOCAL_CONFIG_OPEN_LOG import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.LOG_PUSH_TYPE +import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.OPEN_HD_MAP_TILE_FILE_LOG import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.START_CATCH_LOG import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.STOP_CATCH_LOG import com.zhjt.mogo_core_function_devatools.trace.TraceManager @@ -140,6 +143,22 @@ object MogoLogCatchManager : IMogoOnMessageListener, Handl } } } + OPEN_HD_MAP_TILE_FILE_LOG -> { + mogoMapData.get()?.let { map -> + if (!map.isTileFileLogOpen()) { + map.openTileFileLog(true) + map.listenTileFileLog() + } + } + } + CLOSE_HD_MAP_TILE_FILE_LOG -> { + mogoMapData.get()?.let { map -> + if (map.isTileFileLogOpen()) { + map.openTileFileLog(false) + map.stopListenTileFileLog() + } + } + } else -> { } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 17d52a5c62..cc66911749 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -338,6 +338,7 @@ import kotlin.collections.set import kotlin.math.abs import kotlin.system.exitProcess import com.mogo.eagle.core.function.hmi.ui.tools.ShowDevicesManagerStateDialog +import kotlinx.android.synthetic.main.view_debug_setting.view.tbTileFileLog /** @@ -1188,6 +1189,24 @@ internal class DebugSettingView @JvmOverloads constructor( CallerMapUIServiceManager.getMapUIController()?.setIsDrawPointCloud(isChecked) CallerSopSettingManager.invokePointCloudListener(isChecked) } + tbTileFileLog.setOnCheckedChangeListener { compoundButton, isChecked -> + if (!compoundButton.isPressed) { + return@setOnCheckedChangeListener + } + mogoMapData.get()?.let { map -> + if (isChecked) { + if (!map.isTileFileLogOpen()) { + map.openTileFileLog(true) + map.listenTileFileLog() + } + } else { + if (map.isTileFileLogOpen()) { + map.openTileFileLog(false) + map.stopListenTileFileLog() + } + } + } + } //设置点云大小 btnPointCloudSize.setOnClickListener { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index a39a16afc2..f1ecdf7c4f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -1904,6 +1904,22 @@ app:layout_constraintRight_toRightOf="@id/tbChangeAutoPilotStatus" app:layout_constraintTop_toBottomOf="@id/tbChangeAutoPilotStatus" /> + + +