解决了出行动态中道路事件重复存储的问题

This commit is contained in:
董宏宇
2020-12-09 11:14:40 +08:00
parent 6fee5deaca
commit 8f02c3dfb3
15 changed files with 94 additions and 27 deletions

View File

@@ -0,0 +1,9 @@
package com.mogo.module.common.constants;
/**
* 数据库常量
*/
public class RoomConstants {
public static final String DB_NAME_V2X = "MoGoScenario.db";
public static final String TB_NAME_SCENARIO = "tb_travel_scenario";
}

View File

@@ -1,6 +1,6 @@
package com.mogo.module.common.entity;
import com.mogo.map.location.MogoLocation;
import com.mogo.module.common.constants.RoomConstants;
import com.mogo.utils.sqlite.annotation.DbDatabase;
import com.mogo.utils.sqlite.annotation.DbField;
import com.mogo.utils.sqlite.annotation.DbTable;
@@ -10,8 +10,8 @@ import com.mogo.utils.sqlite.annotation.DbTable;
*
* @author donghongyu
*/
@DbDatabase(dbName = "MoGoScenario.db")
@DbTable(tableName = "tb_history_scenario")
@DbDatabase(dbName = RoomConstants.DB_NAME_V2X)
@DbTable(tableName = RoomConstants.TB_NAME_SCENARIO)
public class V2XHistoryScenarioData {
/**
@@ -32,6 +32,13 @@ public class V2XHistoryScenarioData {
@DbField(fieldName = "eventJsonData")
public String eventJsonData;
/**
* 事件json HashCode
* 只取json中的几个代表性字段,表示唯一性,因为图片地址会经常被改变
*/
@DbField(fieldName = "eventJsonDataHashCode")
public Integer eventJsonDataHashCode;
/**
* 事件是否被处理过了true-处理过了。false-未处理过
*/
@@ -70,8 +77,16 @@ public class V2XHistoryScenarioData {
isDispose = dispose;
}
public Integer getEventJsonDataHashCode() {
return eventJsonDataHashCode;
}
public void setEventJsonDataHashCode(Integer eventJsonDataHashCode) {
this.eventJsonDataHashCode = eventJsonDataHashCode;
}
@Override
public V2XHistoryScenarioData clone() throws CloneNotSupportedException {
public V2XHistoryScenarioData clone() {
try {
return (V2XHistoryScenarioData) super.clone();
} catch (CloneNotSupportedException e) {

View File

@@ -8,6 +8,8 @@ package com.mogo.module.v2x;
* version: 1.0
*/
public class V2XConst {
public static final String T_SCENARIO_HISTORY = "t_search_poi";
/**
* V2X面板名称
*/

View File

@@ -108,6 +108,7 @@ public class V2XIllegalParkVH extends V2XBaseViewHolder<V2XEventShowEntity> {
V2XHistoryScenarioData v2XHistoryScenarioData =new V2XHistoryScenarioData();
v2XHistoryScenarioData.setScenarioType(V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING);
v2XHistoryScenarioData.setEventJsonData(GsonUtil.jsonFromObject(mExploreWay));
v2XHistoryScenarioData.setEventJsonDataHashCode(mExploreWay.hashCode());
V2XSQLiteUtils.updateScenarioHistoryDataIsDispose(v2XHistoryScenarioData);
itemView.postDelayed(() -> V2XIllegalParkScenario.getInstance().close(), 1000);
}

View File

@@ -98,6 +98,7 @@ public class V2XScenarioHistoryIllegalParkVH extends V2XBaseViewHolder<V2XHistor
v2XHistoryScenarioData.setScenarioType(mOldScenarioData.getScenarioType());
v2XHistoryScenarioData.setTriggerTime(mOldScenarioData.getTriggerTime());
v2XHistoryScenarioData.setEventJsonData(mOldScenarioData.getEventJsonData());
v2XHistoryScenarioData.setEventJsonDataHashCode(mOldScenarioData.getEventJsonDataHashCode());
v2XHistoryScenarioData.setDispose(true);
V2XSQLiteUtils.updateScenarioHistoryData(mOldScenarioData, v2XHistoryScenarioData);
mOldScenarioData.setDispose(true);

View File

@@ -170,6 +170,7 @@ public class V2XScenarioHistoryOtherSeekHelpVH extends V2XBaseViewHolder<V2XHist
v2XHistoryScenarioData.setScenarioType(mOldScenarioData.getScenarioType());
v2XHistoryScenarioData.setTriggerTime(mOldScenarioData.getTriggerTime());
v2XHistoryScenarioData.setEventJsonData(mOldScenarioData.getEventJsonData());
v2XHistoryScenarioData.setEventJsonDataHashCode(mOldScenarioData.getEventJsonDataHashCode());
v2XHistoryScenarioData.setDispose(true);
V2XSQLiteUtils.updateScenarioHistoryData(mOldScenarioData, v2XHistoryScenarioData);
mOldScenarioData.setDispose(true);

View File

@@ -104,6 +104,7 @@ public class V2XScenarioHistoryRoadEventVH extends V2XBaseViewHolder<V2XHistoryS
v2XHistoryScenarioData.setScenarioType(mOldScenarioData.getScenarioType());
v2XHistoryScenarioData.setTriggerTime(mOldScenarioData.getTriggerTime());
v2XHistoryScenarioData.setEventJsonData(mOldScenarioData.getEventJsonData());
v2XHistoryScenarioData.setEventJsonDataHashCode(mOldScenarioData.getEventJsonDataHashCode());
v2XHistoryScenarioData.setDispose(true);
V2XSQLiteUtils.updateScenarioHistoryData(mOldScenarioData, v2XHistoryScenarioData);

View File

@@ -178,7 +178,7 @@ public class V2XLocationListener implements IMogoLocationListener, CarStatusList
//如果poiType是道路拥堵则调用接口查询拥堵状态
String poiType = v2XRoadEventEntity.getPoiType();
if(poiType != null && poiType.equals(FOURS_BLOCK_UP)){
if (poiType != null && poiType.equals(FOURS_BLOCK_UP)) {
V2XServiceManager.getIMogoTrafficUploadProvider().verifyCurrentTrafficStatus();
}
}
@@ -320,11 +320,11 @@ public class V2XLocationListener implements IMogoLocationListener, CarStatusList
/**
* 存储本地数据
*
* @param markerExploreWay 要存储的场景
* @param v2XRoadEventEntity 要存储的场景
*/
public void saveLocalStory(int scenarioType, Object markerExploreWay) {
public void saveLocalStory(int scenarioType, MarkerExploreWay v2XRoadEventEntity) {
try {
V2XSQLiteUtils.saveLocalStory(scenarioType,markerExploreWay);
V2XSQLiteUtils.saveLocalStory(scenarioType, v2XRoadEventEntity, v2XRoadEventEntity.hashCode());
} catch (Exception e) {
e.printStackTrace();
}

View File

@@ -97,18 +97,4 @@ public abstract class AbsV2XScenario<T> implements IV2XScenario {
}
return mV2XMessageEntity.equals(v2XMessageEntity);
}
/**
* 存储本地数据
*
* @param markerExploreWay 要存储的场景
*/
public void saveLocalStory(int scenarioType, Object markerExploreWay) {
try {
V2XSQLiteUtils.saveLocalStory(scenarioType,markerExploreWay);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -5,6 +5,7 @@ import androidx.annotation.Nullable;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPoiTypeEnum;
import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.V2XStatusManager;
@@ -12,6 +13,7 @@ import com.mogo.module.v2x.alarm.V2XAlarmServer;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.ADASUtils;
import com.mogo.module.v2x.utils.TrackUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import java.util.ArrayList;
import java.util.List;
@@ -113,4 +115,16 @@ public class V2XIllegalParkScenario extends AbsV2XScenario<List<MarkerExploreWay
public void clearPOI() {
}
/**
* 存储本地数据
*
* @param messageEntity 要存储的场景
*/
private void saveLocalStory(int scenarioType, MarkerExploreWay messageEntity) {
try {
V2XSQLiteUtils.saveLocalStory(scenarioType, messageEntity, messageEntity.hashCode());
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -14,6 +14,7 @@ import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.entity.net.V2XSpecialCarRes.V2XMarkerEntity;
import com.mogo.module.v2x.scenario.impl.AbsV2XScenario;
import com.mogo.module.v2x.utils.ADASUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.service.entrance.IMogoEntranceButtonController;
import com.mogo.service.windowview.IMogoTopViewStatusListener;
@@ -176,4 +177,17 @@ public class V2XSeekHelpScenario extends AbsV2XScenario<List<V2XMarkerEntity>> i
setV2XMessageEntity(null);
clearPOI();
}
/**
* 存储本地数据
*
* @param messageEntity 要存储的场景
*/
private void saveLocalStory(int scenarioType, V2XPushMessageEntity messageEntity) {
try {
V2XSQLiteUtils.saveLocalStory(scenarioType, messageEntity, messageEntity.hashCode());
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -190,6 +190,12 @@ public class V2XTestConsoleWindow extends ConstraintLayout {
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
// 存储本地,出行动态作展示
saveLocalStory(V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING,
v2XMessageEntity.getContent().getNoveltyInfo());
});
mBtnTriggerPushEvent.setOnClickListener(v -> {
@@ -334,4 +340,16 @@ public class V2XTestConsoleWindow extends ConstraintLayout {
});
}
/**
* 存储本地数据
*
* @param v2XRoadEventEntity 要存储的场景
*/
public void saveLocalStory(int scenarioType, MarkerExploreWay v2XRoadEventEntity) {
try {
V2XSQLiteUtils.saveLocalStory(scenarioType, v2XRoadEventEntity, v2XRoadEventEntity.hashCode());
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -135,6 +135,7 @@ public class V2XSQLiteUtils {
newScenarioData.setDispose(true);
newScenarioData.setTriggerTime(TimeUtils.getNowMills());
newScenarioData.setEventJsonData(oldScenarioData.getEventJsonData());
newScenarioData.setEventJsonDataHashCode(oldScenarioData.getEventJsonDataHashCode());
newScenarioData.setScenarioType(oldScenarioData.getScenarioType());
int result = getScenarioHistoryDao().update(oldScenarioData, newScenarioData);
@@ -150,15 +151,19 @@ public class V2XSQLiteUtils {
*
* @param markerExploreWay 要存储的场景
*/
public static void saveLocalStory(int scenarioType, Object markerExploreWay) {
public static void saveLocalStory(int scenarioType, Object markerExploreWay, int hashCode) {
try {
Logger.d(V2XConst.MODULE_NAME, "saveLocalStory" + markerExploreWay);
// 进行数据库存储
V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData();
v2XHistoryScenarioData.setScenarioType(scenarioType);
v2XHistoryScenarioData.setEventJsonData(GsonUtil.jsonFromObject(markerExploreWay));
v2XHistoryScenarioData.setEventJsonDataHashCode(hashCode);
List<V2XHistoryScenarioData> historyScenarioData = getTargetScenarioHistoryData(v2XHistoryScenarioData);
v2XHistoryScenarioData.setEventJsonData(GsonUtil.jsonFromObject(markerExploreWay));
v2XHistoryScenarioData.setTriggerTime(TimeUtils.getNowMills());
v2XHistoryScenarioData.setDispose(false);

View File

@@ -18,6 +18,6 @@
},
"lat": 39.968678,
"lon": 116.405467,
"userHead": "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/5.png",
"userHead": "tUserHeadImg/5.png",
"msgImgUrl": "https://upload.jianshu.io/users/upload_avatars/7663825/7c28763e-002b-4e89-8dea-5b8da210ef2c.jpg"
}

View File

@@ -20,8 +20,8 @@
"items":[
{
"illegalCount":0,
"thumbnail":"http://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/sso-server-image/1592473692394.jpeg",
"url":"http://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/sso-server-image/1592473692394.jpeg"
"thumbnail":"http://yycp-beijing.myqcloud.com/sso-server-image/1592473692394.jpeg",
"url":"http://yycp-static-1255510688.coom/sso-server-image/1592473692394.jpeg"
}
],
"location":{