Commit cfffa9c4 authored by duanruiming's avatar duanruiming

[update] 路口周期转向数据优化

parent b4bde89b
...@@ -12,16 +12,28 @@ import java.util.Objects; ...@@ -12,16 +12,28 @@ import java.util.Objects;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum TurnTypeParseEnum { public enum TurnTypeParseEnum {
LEFT("l", 1, "左转"), // 添加神思转向编码
STRAIGHT("s", 2, "直行"), LEFT("l", 1, 2,"左转"),
RIGHT("r", 3, "右转"), STRAIGHT("s", 2,1, "直行"),
AROUND("u", 4, "掉头"), RIGHT("r", 3, 4,"右转"),
PERSON("ped", 20, "行人"); AROUND("u", 4, 8,"掉头"),
PERSON("ped", 20, 20,"行人");
private final String type; private final String type;
private final Integer code; private final Integer code;
// 神思turnCode
private final Integer ssCode;
private final String msg; private final String msg;
public static Integer getCodeBySSCode(Integer ssCode) {
for (TurnTypeParseEnum value : TurnTypeParseEnum.values()) {
if (Objects.equals(value.getSsCode(), ssCode)) {
return value.code;
}
}
return null;
}
public static Integer getCodeByType(String type) { public static Integer getCodeByType(String type) {
for (TurnTypeParseEnum value : TurnTypeParseEnum.values()) { for (TurnTypeParseEnum value : TurnTypeParseEnum.values()) {
......
...@@ -6,6 +6,7 @@ import net.wanji.common.utils.tool.BeanListUtils; ...@@ -6,6 +6,7 @@ import net.wanji.common.utils.tool.BeanListUtils;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.po.*; import net.wanji.databus.po.*;
import net.wanji.datacenter.cache.CrossLaneInfoCache; import net.wanji.datacenter.cache.CrossLaneInfoCache;
import net.wanji.datacenter.common.TurnTypeParseEnum;
import net.wanji.datacenter.pojo.dto.CrossPeriodDataDTO; import net.wanji.datacenter.pojo.dto.CrossPeriodDataDTO;
import net.wanji.datacenter.pojo.dto.CrossPeriodDirDTO; import net.wanji.datacenter.pojo.dto.CrossPeriodDirDTO;
import net.wanji.datacenter.pojo.dto.CrossPeriodLaneDTO; import net.wanji.datacenter.pojo.dto.CrossPeriodLaneDTO;
...@@ -141,15 +142,13 @@ public class DataProcessServiceImpl implements DataProcessService { ...@@ -141,15 +142,13 @@ public class DataProcessServiceImpl implements DataProcessService {
public void dirSave(String originalData) throws Exception { public void dirSave(String originalData) throws Exception {
try { try {
CrossPeriodDirDTO crossPeriodDirDTO = JSONObject.parseObject(originalData, CrossPeriodDirDTO.class); CrossPeriodDirDTO crossPeriodDirDTO = JSONObject.parseObject(originalData, CrossPeriodDirDTO.class);
String timeStamp = crossPeriodDirDTO.getTimeStamp();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
List<CrossDirDataRealtimePO> eventList = crossPeriodDirDTO.getEventList(); List<CrossDirDataRealtimePO> eventList = crossPeriodDirDTO.getEventList();
if (!CollectionUtils.isEmpty(eventList)) { if (!CollectionUtils.isEmpty(eventList)) {
List<CrossDirDataRealtimePO> crossDirDataRealtimePOS = new ArrayList<>(eventList.size()); List<CrossDirDataRealtimePO> crossDirDataRealtimePOS = new ArrayList<>(eventList.size());
for (CrossDirDataRealtimePO crossDirDataRealtimePO : eventList) { for (CrossDirDataRealtimePO crossDirDataRealtimePO : eventList) {
String crossId = crossDirDataRealtimePO.getCrossId(); String crossId = crossDirDataRealtimePO.getCrossId();
Integer dirType = crossDirDataRealtimePO.getDirType() + 1; Integer dirType = crossDirDataRealtimePO.getDirType() + 1;
crossDirDataRealtimePO.setId(crossId.concat(String.valueOf(dirType))); crossDirDataRealtimePO.setId(String.join("_", crossId, String.valueOf(dirType)));
crossDirDataRealtimePO.setDirType(dirType); crossDirDataRealtimePO.setDirType(dirType);
crossDirDataRealtimePOS.add(crossDirDataRealtimePO); crossDirDataRealtimePOS.add(crossDirDataRealtimePO);
} }
...@@ -171,16 +170,28 @@ public class DataProcessServiceImpl implements DataProcessService { ...@@ -171,16 +170,28 @@ public class DataProcessServiceImpl implements DataProcessService {
public void turnSave(String originalData) throws Exception { public void turnSave(String originalData) throws Exception {
try { try {
CrossPeriodTurnDTO crossPeriodTurnDTO = JSONObject.parseObject(originalData, CrossPeriodTurnDTO.class); CrossPeriodTurnDTO crossPeriodTurnDTO = JSONObject.parseObject(originalData, CrossPeriodTurnDTO.class);
String timeStamp = crossPeriodTurnDTO.getTimeStamp();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
List<CrossTurnDataRealtimePO> eventList = crossPeriodTurnDTO.getEventList(); List<CrossTurnDataRealtimePO> eventList = crossPeriodTurnDTO.getEventList();
if (!CollectionUtils.isEmpty(eventList)) { if (!CollectionUtils.isEmpty(eventList)) {
List<CrossTurnDataRealtimePO> crossTurnDataRealtimePOS = eventList; List<CrossTurnDataRealtimePO> crossTurnDataRealtimePOS = eventList;
List<String> crossIds = crossTurnDataRealtimePOS.stream().map(CrossTurnDataRealtimePO::getCrossId).distinct().collect(Collectors.toList()); List<CrossTurnDataRealtimePO> results = new ArrayList<>(eventList.size());
for (CrossTurnDataRealtimePO crossTurnDataRealtimePO : crossTurnDataRealtimePOS) {
String crossId = crossTurnDataRealtimePO.getCrossId();
CrossTurnDataRealtimePO result = new CrossTurnDataRealtimePO();
BeanUtils.copyProperties(crossTurnDataRealtimePO, result);
Integer inDir = crossTurnDataRealtimePO.getInDir() + 1;
String turnType = crossTurnDataRealtimePO.getTurnType();
result.setInDir(inDir);
Integer ssCode = TurnTypeParseEnum.getCodeBySSCode(Integer.valueOf(turnType));
result.setTurnType(String.valueOf(ssCode));
String keyId = String.join("_", crossId, String.valueOf(inDir), turnType);
result.setId(keyId);
results.add(result);
}
List<String> crossIds = results.stream().map(CrossTurnDataRealtimePO::getCrossId).distinct().collect(Collectors.toList());
crossTurnDataRealTimeMapper.deleteBatch(crossIds); crossTurnDataRealTimeMapper.deleteBatch(crossIds);
crossTurnDataRealTimeMapper.insertBatch(crossTurnDataRealtimePOS); crossTurnDataRealTimeMapper.insertBatch(results);
List<CrossTurnDataHistPO> list = new ArrayList<>(crossTurnDataRealtimePOS.size()); List<CrossTurnDataHistPO> list = new ArrayList<>(results.size());
BeanListUtils.populateList(crossTurnDataRealtimePOS, list, CrossTurnDataHistPO.class); BeanListUtils.populateList(results, list, CrossTurnDataHistPO.class);
crossTurnDataHistMapper.insertBatch(list); crossTurnDataHistMapper.insertBatch(list);
} }
} catch (Exception e) { } catch (Exception e) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment