Commit a9a1ddb7 authored by duanruiming's avatar duanruiming

[update] 微观大数据平台-异常优化

parent 29916b6e
......@@ -5,8 +5,8 @@ package net.wanji.opt.common.exception;
* @date 2023/03/03 13:47
*/
public class OptServiceException extends RuntimeException {
public OptServiceException() {
super();
public OptServiceException(Exception e) {
super(e);
}
public OptServiceException(String message) {
......
......@@ -25,6 +25,7 @@ import net.wanji.opt.cache.BaseCrossInfoCache;
import net.wanji.opt.common.ExcelExportUtils;
import net.wanji.opt.common.KafkaConsumerUtil;
import net.wanji.opt.common.RedisUtils;
import net.wanji.opt.common.exception.OptServiceException;
import net.wanji.opt.config.DirectionMappingsConfig;
import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper;
import net.wanji.opt.dao.mapper.HoloEventMapper;
......@@ -849,7 +850,7 @@ public class TrendServiceImpl implements TrendService {
greenwaveCross.setCrossId(crossId);
BaseCrossInfoPO baseCrossInfoPO = baseCrossInfoMapper.selectById(crossId);
if (baseCrossInfoPO == null) {
throw new RuntimeException("无此路口基础信息");
throw new OptServiceException("无此路口基础信息");
}
greenwaveCross.setCrossName(baseCrossInfoPO.getName());
greenwaveCross.setIsKeyRoute(greenwaveCrossPO.getIsKeyRoute());
......@@ -876,7 +877,7 @@ public class TrendServiceImpl implements TrendService {
CrossSectionPO crossSectionPO = baseCrossSectionMapper.
selectbyStartTimeCrossIdPlanId(startTime, crossId, planId);
if (crossSectionPO == null) {
throw new RuntimeException("无当前时段方案信息");
throw new OptServiceException("无当前时段方案信息");
}
Integer currentSchemeId = crossSectionPO.getSchemeId();
BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectById(currentSchemeId);
......@@ -1119,7 +1120,7 @@ public class TrendServiceImpl implements TrendService {
}
} catch (Exception e) {
log.error("获取绿波旅行时间异常:", e);
throw new RuntimeException(e);
throw new OptServiceException(e);
}
return 0;
}
......@@ -1231,7 +1232,7 @@ public class TrendServiceImpl implements TrendService {
List<MainlineSchemeAnalysisVO.GreenwaveData> greenwaveData = mainlineSchemeAnalysisVO.getGreenwaveData();
MainlineSchemeAnalysisVO.GreenwaveData matchingData = findMatchingData(greenwaveData);
if (ObjectUtil.isEmpty(matchingData)) {
throw new RuntimeException("无当天绿波历史数据");
throw new OptServiceException("无当天绿波历史数据");
}
String lineSchemeName = matchingData.getName();
GreenwaveDetailBO greenwaveDetailBO = new GreenwaveDetailBO();
......@@ -1766,7 +1767,7 @@ public class TrendServiceImpl implements TrendService {
return hotspotCrossVOS.stream().sorted(Comparator.comparing(HotspotCrossVO::getTimeStamp)).collect(Collectors.toList());
} catch (Exception e) {
log.error("重点路口监测异常:", e);
throw new Exception(e);
throw new OptServiceException(e);
}
}
......@@ -1814,7 +1815,7 @@ public class TrendServiceImpl implements TrendService {
}
} catch (Exception e) {
log.error("路口转向排队长度异常", e);
throw new Exception(e);
throw new OptServiceException(e);
}
return results.stream().sorted(Comparator.comparing(HotspotCrossTurnVO::getTimeStamp)).collect(Collectors.toList());
}
......@@ -1860,7 +1861,7 @@ public class TrendServiceImpl implements TrendService {
}
} catch (Exception e) {
log.error("路口车道数据异常:", e);
throw new Exception(e);
throw new OptServiceException(e);
}
return results.stream().sorted(Comparator.comparing(HotspotCrossLaneVO::getTimeStamp)).collect(Collectors.toList());
}
......@@ -1898,7 +1899,7 @@ public class TrendServiceImpl implements TrendService {
}
} catch (Exception e) {
log.error("全天流量监测异常:", e);
throw new Exception(e);
throw new OptServiceException(e);
}
return hotspotCrossVOS;
}
......@@ -1950,7 +1951,7 @@ public class TrendServiceImpl implements TrendService {
}
} catch (Exception e) {
log.error("交通状态时间比例异常:", e);
throw new RuntimeException(e);
throw new OptServiceException(e);
}
return crossStatusTimeRateVO;
}
......@@ -1967,7 +1968,7 @@ public class TrendServiceImpl implements TrendService {
return buildCycleData(crossId, poExtList);
} catch (Exception e) {
log.error("车道数据查询异常:", e);
throw new RuntimeException(e);
throw new OptServiceException(e);
}
}
......@@ -1993,22 +1994,15 @@ public class TrendServiceImpl implements TrendService {
return sorts;
} catch (Exception e) {
log.error("车道快照数据查询异常:", e);
throw new Exception(e);
throw new OptServiceException(e);
}
}
@Override
public List<OverflowEvent> overFlowEvent(LaneSnapshotIndexVO laneSnapshotIndexVO) throws Exception {
try {
String crossId = laneSnapshotIndexVO.getCrossId();
int start = (int) (laneSnapshotIndexVO.getStart().getTime() / 1000);
int end = (int) (laneSnapshotIndexVO.getEnd().getTime() / 1000);
int pageNum = laneSnapshotIndexVO.getPageNum();
boolean overFlow = laneSnapshotIndexVO.isOverFlow();
List<OverflowEvent> resultList = new ArrayList<>();
// 查询秒级数据
List<CrossLaneSnapshotDataDTO> dtoList =
laneSnapshotDataQueryService.queryByCrossIdAndTimeSpan(crossId, start, end, pageNum, null, overFlow);
List<CrossLaneSnapshotDataDTO> dtoList = getCrossLaneSnapshotDataDTOS(laneSnapshotIndexVO);
if (!CollectionUtils.isEmpty(dtoList)) {
Map<String, List<CrossLaneSnapshotDataDTO>> timeMap = dtoList.stream().collect(Collectors.groupingBy(CrossLaneSnapshotDataDTO::getTimeStamp));
for (Map.Entry<String, List<CrossLaneSnapshotDataDTO>> timeEntry : timeMap.entrySet()) {
......@@ -2016,27 +2010,8 @@ public class TrendServiceImpl implements TrendService {
List<CrossLaneSnapshotDataDTO> timeList = timeEntry.getValue();
if (CollectionUtil.isNotEmpty(timeList)) {
Map<Integer, List<CrossLaneSnapshotDataDTO>> dirMap = timeList.stream().collect(Collectors.groupingBy(CrossLaneSnapshotDataDTO::getDir));
for (Map.Entry<Integer, List<CrossLaneSnapshotDataDTO>> dirEntry : dirMap.entrySet()) {
Integer dir = dirEntry.getKey();
List<CrossLaneSnapshotDataDTO> dirList = dirEntry.getValue();
OverflowEvent resultPojo = new OverflowEvent();
int overflowNums = 0;
double vehicleLengthRatio = 0.0;
double meanV = 0.0;
for (CrossLaneSnapshotDataDTO dto : dirList) {
overflowNums += dto.getOverflowNums();
vehicleLengthRatio += dto.getVehicleLengthRatio();
meanV += dto.getMeanV();
}
resultPojo.setDir(dir);
resultPojo.setStartTime(new Date(Long.parseLong(time) * 1000));
resultPojo.setEndTime(new Date(Long.parseLong(time) * 1000));
resultPojo.setDirName(BaseEnum.SignalDirectionEnum.getNameByCode(dir));
resultPojo.setOverflowId(String.valueOf(dir));
resultPojo.setOverflowNums(overflowNums);
resultPojo.setSpeed(Math.round(meanV / dirList.size() * 100) / 100);
resultPojo.setVehicleLengthRatio(Math.round(vehicleLengthRatio / dirList.size() * 100) / 100);
OverflowEvent resultPojo = getOverflowEvent(time, dirEntry);
resultList.add(resultPojo);
}
}
......@@ -2045,8 +2020,43 @@ public class TrendServiceImpl implements TrendService {
return resultList;
} catch (Exception e) {
log.error("车道快照数据查询异常:", e);
throw new Exception(e);
}
throw new OptServiceException(e);
}
}
private static OverflowEvent getOverflowEvent(String time, Map.Entry<Integer, List<CrossLaneSnapshotDataDTO>> dirEntry) {
Integer dir = dirEntry.getKey();
List<CrossLaneSnapshotDataDTO> dirList = dirEntry.getValue();
OverflowEvent resultPojo = new OverflowEvent();
int overflowNums = 0;
double vehicleLengthRatio = 0.0;
double meanV = 0.0;
for (CrossLaneSnapshotDataDTO dto : dirList) {
overflowNums += dto.getOverflowNums();
vehicleLengthRatio += dto.getVehicleLengthRatio();
meanV += dto.getMeanV();
}
resultPojo.setDir(dir);
resultPojo.setStartTime(new Date(Long.parseLong(time) * 1000));
resultPojo.setEndTime(new Date(Long.parseLong(time) * 1000));
resultPojo.setDirName(BaseEnum.SignalDirectionEnum.getNameByCode(dir));
resultPojo.setOverflowId(String.valueOf(dir));
resultPojo.setOverflowNums(overflowNums);
resultPojo.setSpeed(Math.round(meanV / dirList.size() * 100) / 100);
resultPojo.setVehicleLengthRatio(Math.round(vehicleLengthRatio / dirList.size() * 100));
return resultPojo;
}
private List<CrossLaneSnapshotDataDTO> getCrossLaneSnapshotDataDTOS(LaneSnapshotIndexVO laneSnapshotIndexVO) throws Exception {
String crossId = laneSnapshotIndexVO.getCrossId();
int start = (int) (laneSnapshotIndexVO.getStart().getTime() / 1000);
int end = (int) (laneSnapshotIndexVO.getEnd().getTime() / 1000);
int pageNum = laneSnapshotIndexVO.getPageNum();
boolean overFlow = laneSnapshotIndexVO.isOverFlow();
// 查询秒级数据
List<CrossLaneSnapshotDataDTO> dtoList =
laneSnapshotDataQueryService.queryByCrossIdAndTimeSpan(crossId, start, end, pageNum, null, overFlow);
return dtoList;
}
@Override
......@@ -2067,7 +2077,7 @@ public class TrendServiceImpl implements TrendService {
return ridTurnIndicatorsMapper.selectList(queryWrapper);
} catch (Exception e) {
log.error("全是周期车道数据方向转向查询异常:", e);
throw new Exception(e);
throw new OptServiceException(e);
}
}
......@@ -2105,7 +2115,7 @@ public class TrendServiceImpl implements TrendService {
return results;
} catch (Exception e) {
log.error("全息事件查询异常:", e);
throw new Exception(e);
throw new OptServiceException(e);
}
}
......@@ -2133,7 +2143,7 @@ public class TrendServiceImpl implements TrendService {
return laneIdAliasNameVOS;
} catch (Exception e) {
log.error("车道基本信息查询失败:", e);
throw new Exception(e);
throw new OptServiceException(e);
}
}
......@@ -2256,7 +2266,7 @@ public class TrendServiceImpl implements TrendService {
ExcelExportUtils.exportExcel(response, startStr, endStr, result, crossName.concat("转向周期数据"), TurnDataIndexExcelVO.class);
} catch (Exception e) {
log.error("导出转向数据异常:", e);
throw new RuntimeException(e);
throw new OptServiceException(e);
}
}
......@@ -2284,7 +2294,7 @@ public class TrendServiceImpl implements TrendService {
ExcelExportUtils.exportExcel(response, startStr, endStr, dataList, crossName.concat("车道快照数据"), TableQueryVO.RealTimeDataElement.class);
} catch (Exception e) {
log.error("快照数据导出失败:", e);
throw new RuntimeException(e);
throw new OptServiceException(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