diff --git a/.idea/misc.xml b/.idea/misc.xml index 21e99e2dc0..cd77a1f062 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 90a79fcceb..e070196a50 100644 --- a/gradle.properties +++ b/gradle.properties @@ -65,7 +65,7 @@ MOGO_BASE_SERVICES_SDK_VERSION = 1.2.1.22 # 探路 MOGO_MODULE_TANLU_VERSION=1.3.1.24 # 车聊聊 -CARCHATTING_VERSION=1.4.8 +CARCHATTING_VERSION=1.4.9 # 车聊聊接口 CARCHATTINGPROVIDER_VERSION=1.3.4 # 视频引导 diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XHistoryScenarioData.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XHistoryScenarioData.java index 87093e57b9..53f5250437 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XHistoryScenarioData.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XHistoryScenarioData.java @@ -1,5 +1,6 @@ package com.mogo.module.common.entity; +import com.mogo.map.location.MogoLocation; import com.mogo.utils.sqlite.annotation.DbDatabase; import com.mogo.utils.sqlite.annotation.DbField; import com.mogo.utils.sqlite.annotation.DbTable; @@ -68,4 +69,14 @@ public class V2XHistoryScenarioData { public void setDispose(Boolean dispose) { isDispose = dispose; } + + @Override + public V2XHistoryScenarioData clone() throws CloneNotSupportedException { + try { + return (V2XHistoryScenarioData) super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return this; + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java index 4ae6aa6541..bb79de34e4 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java @@ -59,7 +59,7 @@ public class V2XConst { */ public static final String V2X_ROAD_SHOW = "v2x_road_show"; public static final String V2X_ROAD_EVET = "v2x_road_event"; - public static final String V2X_ROAD_EVET_HISTORY_BUTTON = "V2X_button"; + public static final String V2X_ROAD_EVET_HISTORY_BUTTON = "V2X_button_click"; /** * V2X 道路事件操作类型 */ diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java index ce10423148..9aac886249 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java @@ -31,6 +31,7 @@ import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.share.IMogoShareManager; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; +import com.mogo.service.tanlu.IMogoTanluProvider; import com.mogo.service.windowview.IMogoTopViewManager; import com.mogo.service.windowview.IMogoWindowManager; import com.zhidao.carchattingprovider.CallChattingProviderConstant; @@ -54,7 +55,6 @@ public class V2XServiceManager { private static IMogoLocationClient mMogoLocationClient; private static IMogoGeoSearch mIMogoGeoSearch; private static IMogoSearchManager mIMogoSearchManager; - private static IMogoTopViewManager mMogoTopViewManager; private static IMogoStatusManager mMogoStatusManager; private static IMogoWindowManager mIMogoWindowManager; @@ -66,6 +66,7 @@ public class V2XServiceManager { private static IMogoRefreshStrategyController mIMogoRefreshStrategyController; private static IMogoMarkerService mIMogoMarkerService; private static IMogoShareManager mIMogoShareManager; + private static IMogoTanluProvider mIMogoTanluProvider; private static IMogoActionManager mMogoActionManager; private static ICarsChattingProvider mCarsChattingProvider; @@ -105,6 +106,7 @@ public class V2XServiceManager { mIMogoSearchManager = mMogoServiceApis.getSearchManagerApi(); mIMogoMarkerService = mMogoServiceApis.getMarkerService(); mIMogoShareManager = mMogoServiceApis.getShareManager(); + mIMogoTanluProvider = mMogoServiceApis.getTanluApi(); mMarkerManager = mMapService.getMarkerManager(context); mNavi = mMapService.getNavi(context); @@ -250,4 +252,11 @@ public class V2XServiceManager { public static IMogoShareManager getMogoShareManager() { return mIMogoShareManager; } + + public static IMogoTanluProvider getTanluManager() { + return mIMogoTanluProvider; + } + + + } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java index 22ee1d2379..806981ef15 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XIllegalParkVH.java @@ -7,17 +7,21 @@ import android.widget.TextView; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.V2XEventShowEntity; +import com.mogo.module.common.entity.V2XHistoryScenarioData; +import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.scenario.scene.park.V2XIllegalParkScenario; import com.mogo.module.v2x.utils.RoadConditionUtils; +import com.mogo.module.v2x.utils.V2XSQLiteUtils; import com.mogo.module.v2x.view.HeartLikeView; import com.mogo.module.v2x.view.HeartUnLikeView; import com.mogo.module.v2x.voice.V2XVoiceCallbackListener; import com.mogo.module.v2x.voice.V2XVoiceConstants; import com.mogo.module.v2x.voice.V2XVoiceManager; import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.utils.GsonUtil; import static com.mogo.module.v2x.V2XConst.MODULE_NAME; @@ -101,6 +105,10 @@ public class V2XIllegalParkVH extends V2XBaseViewHolder { */ @Override public void delayedCloseWindow() { + V2XHistoryScenarioData v2XHistoryScenarioData =new V2XHistoryScenarioData(); + v2XHistoryScenarioData.setScenarioType(V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING); + v2XHistoryScenarioData.setEventJsonData(GsonUtil.jsonFromObject(mExploreWay)); + V2XSQLiteUtils.updateScenarioHistoryDataIsDispose(v2XHistoryScenarioData); itemView.postDelayed(() -> V2XIllegalParkScenario.getInstance().close(), 1000); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java index 1f42c55f26..e729e747b3 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryOtherSeekHelpVH.java @@ -73,12 +73,6 @@ public class V2XScenarioHistoryOtherSeekHelpVH extends V2XBaseViewHolder implements SurroundingEventView, +public class V2XSurroundingFragment extends MvpFragment implements SurroundingEventView, View.OnClickListener, SurroundingItemClickListener { private static final String TAG = "SurroundingFragment"; private RecyclerView mRecyclerView; @@ -193,9 +196,6 @@ public class SurroundingEventFragment extends MvpFragment exploreWayList) { + Logger.e(TAG, "showBonndsRoadtion exploreWayList.size() = " + exploreWayList.size()); + Rect rect = new Rect( + (int) getContext().getResources().getDimension(R.dimen.tanlu_module_map_left), + (int) getContext().getResources().getDimension(R.dimen.tanlu_module_map_top), + (int) getContext().getResources().getDimension(R.dimen.tanlu_module_map_right), + (int) getContext().getResources().getDimension(R.dimen.tanlu_module_map_bottom)); + + moveNotFresh(); + //第一个参数:调用者,第二个参数:当前自车的位置,第三个参数:需要显示在范围内的点(不包含自车的位置) + //第四个参数:显示范围的UI边界,第五个参数:是否锁定自车位置(看业务需要) + V2XServiceManager.getMapUIController().showBounds(ServiceConst.CARD_TYPE_ROAD_CONDITION, null, getMogoList(exploreWayList), rect, false); + } + + private void moveNotFresh() { + V2XServiceManager.getMoGoStatusManager().setUserInteractionStatus(TAG, true, false); + } + + /** + * 构造经纬度列表 + * + * @return + */ + private List getMogoList(List markerExploreWayList) { + List list = new ArrayList<>(); + if (markerExploreWayList != null && markerExploreWayList.size() > 0) { + if (markerExploreWayList.size() < 6) { + for (int i = 0; i < markerExploreWayList.size(); i++) { + MarkerLocation location = markerExploreWayList.get(i).getLocation(); + if (location != null) { + MogoLatLng mogoLatLng = new MogoLatLng(location.getLat(), location.getLon()); + list.add(mogoLatLng); + } else { + Logger.e(TAG, "getMogoList() < 6 location == null"); + } + } + } else { + for (int i = 0; i < 6; i++) { + MarkerLocation location = markerExploreWayList.get(i).getLocation(); + if (location != null) { + MogoLatLng mogoLatLng = new MogoLatLng(location.getLat(), location.getLon()); + list.add(mogoLatLng); + } else { + Logger.e(TAG, "getMogoList() location == null"); + } + } + } + } else { + Logger.e(TAG, "getMogoList() markerExploreWay == null"); + } + return list; + } + + @Override public void onDestroy() { super.onDestroy(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java index 888fd9088c..029ffe5284 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java @@ -5,7 +5,10 @@ import android.content.Intent; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import com.mogo.module.common.entity.V2XMessageEntity; +import com.mogo.module.common.entity.V2XRoadEventEntity; +import com.mogo.module.service.carinfo.CarStateInfo; import com.mogo.module.v2x.V2XConst; +import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.scenario.IV2XScenarioManager; import com.mogo.module.v2x.scenario.scene.animation.V2XAnimationScenario; import com.mogo.module.v2x.scenario.scene.fatigue.V2XFatigueDrivingScenario; @@ -66,7 +69,6 @@ public class V2XScenarioManager implements IV2XScenarioManager { LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent); mV2XScenario = mV2XScenarioSet.get(v2XMessageEntity.getType()); - // 如果没有拿到之前的,根据类型分发 if (mV2XScenario == null) { switch (v2XMessageEntity.getType()) { diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java index 754dc46370..ec404c9b60 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadEventScenario.java @@ -5,6 +5,7 @@ import android.view.ViewGroup; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XRoadEventEntity; +import com.mogo.module.service.ServiceConst; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.V2XServiceManager; @@ -57,6 +58,10 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp V2XRoadEventEntity v2XRoadEventEntity = v2XMessageEntity.getContent(); if (v2XRoadEventEntity != null) { + //上报路况 + V2XServiceManager.getMoGoStatusManager().setUploadingStatus(ServiceConst.CARD_TYPE_ROAD_CONDITION, true); + V2XServiceManager.getTanluManager().uploadRoadCondition(v2XRoadEventEntity.getPoiType()); + if (v2XMessageEntity.isShowState()) { if (!isSameScenario(v2XMessageEntity)) { // 更新要提醒的数据 diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XSQLiteUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XSQLiteUtils.java index 1ace54ff86..1be148ea12 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XSQLiteUtils.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XSQLiteUtils.java @@ -76,6 +76,13 @@ public class V2XSQLiteUtils { return getScenarioHistoryDao().query(new V2XHistoryScenarioData(), "triggerTime", true); } + /** + * 查询当天的指定的V2X数据 + */ + public static List getTargetScenarioHistoryData(V2XHistoryScenarioData scenarioData) { + return getScenarioHistoryDao().query(scenarioData, "triggerTime", true); + } + /** * 查询当天的未评价V2X数据 */ @@ -99,7 +106,26 @@ public class V2XSQLiteUtils { } /** - * 存储本地数据 + * 修改指定的数据为已经操作的数据 + */ + public static void updateScenarioHistoryDataIsDispose(V2XHistoryScenarioData oldScenarioData) { + try { + V2XHistoryScenarioData newScenarioData = new V2XHistoryScenarioData(); + newScenarioData.setDispose(true); + newScenarioData.setTriggerTime(TimeUtils.getNowMills()); + newScenarioData.setEventJsonData(oldScenarioData.getEventJsonData()); + newScenarioData.setScenarioType(oldScenarioData.getScenarioType()); + + int result = getScenarioHistoryDao().update(oldScenarioData, newScenarioData); + Logger.d(V2XConst.MODULE_NAME, "修改数据成功:" + result); + V2XEventPanelFragment.Companion.getInstance().changeEventCount(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 存储本地数据,每个数据只能存在一次,所以存储之前先查询数据库如果已经存在则修改触碰时间 * * @param markerExploreWay 要存储的场景 */ @@ -108,10 +134,20 @@ public class V2XSQLiteUtils { // 进行数据库存储 V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData(); v2XHistoryScenarioData.setScenarioType(scenarioType); - v2XHistoryScenarioData.setTriggerTime(TimeUtils.getNowMills()); v2XHistoryScenarioData.setEventJsonData(GsonUtil.jsonFromObject(markerExploreWay)); + + List historyScenarioData = getTargetScenarioHistoryData(v2XHistoryScenarioData); + + v2XHistoryScenarioData.setTriggerTime(TimeUtils.getNowMills()); v2XHistoryScenarioData.setDispose(false); - V2XSQLiteUtils.getScenarioHistoryDao().insert(v2XHistoryScenarioData); + + if (historyScenarioData != null && historyScenarioData.size() > 0) { + // 更新数据 + V2XSQLiteUtils.getScenarioHistoryDao().update(historyScenarioData.get(0), v2XHistoryScenarioData); + } else { + // 存储新数据 + V2XSQLiteUtils.getScenarioHistoryDao().insert(v2XHistoryScenarioData); + } V2XEventPanelFragment.Companion.getInstance().changeEventCount(); } catch (Exception e) { e.printStackTrace(); diff --git a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_surrounding_item.xml b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_surrounding_item.xml new file mode 100644 index 0000000000..b92c805da1 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_surrounding_item.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history_other_help.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history_other_help.xml index 16f6583eaa..742913252d 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history_other_help.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_scennario_history_other_help.xml @@ -40,9 +40,11 @@ android:text="待援助" android:textColor="#ffffff" android:textSize="@dimen/dp_28" + android:visibility="gone" app:layout_constraintBottom_toBottomOf="@+id/tagEventType" app:layout_constraintStart_toEndOf="@+id/tagEventType" - app:layout_constraintTop_toTopOf="@+id/tagEventType" /> + app:layout_constraintTop_toTopOf="@+id/tagEventType" + tools:visibility="visible" /> + android:background="@drawable/bg_v2x_event_surrounding_item"> 80px 6px + 550px + 200px + 200px + 100px + diff --git a/modules/mogo-module-v2x/src/main/res/values/dimens.xml b/modules/mogo-module-v2x/src/main/res/values/dimens.xml index bd225eb0a4..12bbc42e11 100644 --- a/modules/mogo-module-v2x/src/main/res/values/dimens.xml +++ b/modules/mogo-module-v2x/src/main/res/values/dimens.xml @@ -26,5 +26,9 @@ 40px 6px 16px + 550px + 200px + 200px + 100px