Commit 10ed91dd authored by fengyasheng's avatar fengyasheng

干线周报2.1,干线频发问题监测

parent 8cca9705
...@@ -4,6 +4,10 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -4,6 +4,10 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.wanji.common.utils.tool.DateUtil; import net.wanji.common.utils.tool.DateUtil;
import net.wanji.databus.dao.entity.GreenwaveCrossPO;
import net.wanji.databus.dao.mapper.BaseCrossInfoMapper;
import net.wanji.databus.dao.mapper.GreenwaveCrossMapper;
import net.wanji.databus.po.BaseCrossInfoPO;
import net.wanji.opt.common.EsDateIndexUtil; import net.wanji.opt.common.EsDateIndexUtil;
import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper; import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay; import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay;
...@@ -17,6 +21,7 @@ import net.wanji.opt.vo2.JudTrunkLineCrossProblemEntityVO; ...@@ -17,6 +21,7 @@ import net.wanji.opt.vo2.JudTrunkLineCrossProblemEntityVO;
import net.wanji.opt.vo2.report.JudTrunkLineCrossProblemEntityDTO; import net.wanji.opt.vo2.report.JudTrunkLineCrossProblemEntityDTO;
import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -38,6 +43,10 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb ...@@ -38,6 +43,10 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
@Resource @Resource
private AnalysisProblemCrossDayMapper analysisProblemCrossDayMapper; private AnalysisProblemCrossDayMapper analysisProblemCrossDayMapper;
@Autowired
private GreenwaveCrossMapper greenwaveCrossMapper;
@Autowired
private BaseCrossInfoMapper baseCrossInfoMapper;
/** /**
...@@ -229,149 +238,59 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb ...@@ -229,149 +238,59 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
Map<String, List<GreenwaveCrossResult>> crossIdMap = greenwaveCrossResults.stream().collect(Collectors.groupingBy(GreenwaveCrossResult::getCrossId)); Map<String, List<GreenwaveCrossResult>> crossIdMap = greenwaveCrossResults.stream().collect(Collectors.groupingBy(GreenwaveCrossResult::getCrossId));
int slowCount = greenwaveCrossResults.stream().filter(x -> 2 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum(); int slowCount = greenwaveCrossResults.stream().filter(x -> 2 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum();
int conCount = greenwaveCrossResults.stream().filter(x -> 3 == x.getStatus() || 4 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum(); int conCount = greenwaveCrossResults.stream().filter(x -> 3 == x.getStatus() || 4 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum();
for (List<GreenwaveCrossResult> crossResults : crossIdMap.values()) { List<GreenwaveCrossPO> greenwaveCrossPOS = greenwaveCrossMapper.selectByGreenwaveId(greenId);
for (GreenwaveCrossPO greenwaveCrossPO : greenwaveCrossPOS) {
BaseCrossInfoPO baseCrossInfoPO = baseCrossInfoMapper.selectById(greenwaveCrossPO.getCrossId());
JudTrunkLineCrossProblemEntityDTO judTrunkLineCrossProblemEntityDTO = new JudTrunkLineCrossProblemEntityDTO(); JudTrunkLineCrossProblemEntityDTO judTrunkLineCrossProblemEntityDTO = new JudTrunkLineCrossProblemEntityDTO();
judTrunkLineCrossProblemEntityDTO.setGreenId(crossResults.get(0).getGreenId()); judTrunkLineCrossProblemEntityDTO.setGreenId(greenwaveCrossPO.getGreenId());
judTrunkLineCrossProblemEntityDTO.setCrossId(crossResults.get(0).getCrossId()); judTrunkLineCrossProblemEntityDTO.setCrossId(greenwaveCrossPO.getCrossId());
judTrunkLineCrossProblemEntityDTO.setCrossName(baseCrossInfoPO.getName());
judTrunkLineCrossProblemEntityDTO.setSort(greenwaveCrossPO.getSort());
judTrunkLineCrossProblemEntityDTO.setInDir(greenwaveCrossPO.getInDir());
judTrunkLineCrossProblemEntityDTO.setOutDir(greenwaveCrossPO.getOutDir());
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
judTrunkLineCrossProblemEntityDTO.setStatusL(1);
List<GreenwaveCrossResult> crossResults = crossIdMap.get(greenwaveCrossPO.getCrossId());
if (ObjectUtil.isNotEmpty(crossResults)) {
judTrunkLineCrossProblemEntityDTO.setCrossName(crossResults.get(0).getName()); judTrunkLineCrossProblemEntityDTO.setCrossName(crossResults.get(0).getName());
if (ObjectUtil.isEmpty(status) || status == 2) { if (ObjectUtil.isEmpty(status) || status == 2) {
int slowCountCross = crossResults.stream().filter(x -> 2 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum(); int slowCountCross = crossResults.stream().filter(x -> 2 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum();
if (slowCount > 0 && slowCountCross * 100 / slowCount > 10) { if (slowCount > 0 && slowCountCross * 100 / slowCount > 10) {
judTrunkLineCrossProblemEntityDTO.setCount(slowCountCross); Map<Integer, Integer> dirTypeCountMap = crossResults.stream().filter(x -> 2 == x.getStatus()).collect(Collectors.groupingBy(
Map<Integer, Integer> dirTypeCountMap = crossResults.stream().collect(Collectors.groupingBy(
GreenwaveCrossResult::getDirType, GreenwaveCrossResult::getDirType,
Collectors.summingInt(GreenwaveCrossResult::getDirCount) Collectors.summingInt(GreenwaveCrossResult::getDirCount)
)); ));
if(ObjectUtil.isNotEmpty(dirTypeCountMap)){
AtomicInteger atomicIntegerDir = new AtomicInteger(1);
for (Integer dirType : dirTypeCountMap.keySet()) { for (Integer dirType : dirTypeCountMap.keySet()) {
if(atomicIntegerDir.get()>1){ if (dirType == crossResults.get(0).getInDir()) {
judTrunkLineCrossProblemEntityDTO.setOutDir(dirType);
if(dirTypeCountMap.get(dirType) == 0){
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}else {
judTrunkLineCrossProblemEntityDTO.setStatusR(2);
}
}else {
judTrunkLineCrossProblemEntityDTO.setInDir(dirType);
if(dirTypeCountMap.get(dirType) == 0){
judTrunkLineCrossProblemEntityDTO.setStatusL(1);
}else {
judTrunkLineCrossProblemEntityDTO.setStatusL(2); judTrunkLineCrossProblemEntityDTO.setStatusL(2);
} }
if (dirType == crossResults.get(0).getOutDir()) {
judTrunkLineCrossProblemEntityDTO.setStatusR(2);
} }
} }
} }
if(ObjectUtil.isNotEmpty(crossResults.get(0))){
if(ObjectUtil.isNotEmpty(judTrunkLineCrossProblemEntityDTO.getInDir())){
if(crossResults.get(0).getInDir() == judTrunkLineCrossProblemEntityDTO.getInDir()){
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getOutDir())){
judTrunkLineCrossProblemEntityDTO.setOutDir(crossResults.get(0).getOutDir());
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}
}
if(crossResults.get(0).getOutDir() == judTrunkLineCrossProblemEntityDTO.getInDir()){
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getOutDir())){
judTrunkLineCrossProblemEntityDTO.setOutDir(crossResults.get(0).getInDir());
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}
}
}
if(ObjectUtil.isNotEmpty(judTrunkLineCrossProblemEntityDTO.getOutDir())){
if(crossResults.get(0).getOutDir() == judTrunkLineCrossProblemEntityDTO.getOutDir()){
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getInDir())){
judTrunkLineCrossProblemEntityDTO.setInDir(crossResults.get(0).getInDir());
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}
}
if(crossResults.get(0).getInDir() == judTrunkLineCrossProblemEntityDTO.getOutDir()){
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getInDir())){
judTrunkLineCrossProblemEntityDTO.setInDir(crossResults.get(0).getOutDir());
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}
}
}
}
} else {
continue;
} }
} }
if (ObjectUtil.isEmpty(status) || status == 3 || status == 4) { if (ObjectUtil.isEmpty(status) || status == 3 || status == 4) {
int conCountCross = crossResults.stream().filter(x -> 3 == x.getStatus() || 4 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum(); int conCountCross = crossResults.stream().filter(x -> 3 == x.getStatus() || 4 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum();
if (conCount > 0 && conCountCross * 100 / conCount > 10) { if (conCount > 0 && conCountCross * 100 / conCount > 10) {
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getCount())){
judTrunkLineCrossProblemEntityDTO.setCount(conCountCross);
}
Map<Integer, Integer> dirTypeCountMap = crossResults.stream().collect(Collectors.groupingBy( Map<Integer, Integer> dirTypeCountMap = crossResults.stream().collect(Collectors.groupingBy(
GreenwaveCrossResult::getDirType, GreenwaveCrossResult::getDirType,
Collectors.summingInt(GreenwaveCrossResult::getDirCount) Collectors.summingInt(GreenwaveCrossResult::getDirCount)
)); ));
if(ObjectUtil.isNotEmpty(dirTypeCountMap)){
AtomicInteger atomicIntegerDir = new AtomicInteger(1);
for (Integer dirType : dirTypeCountMap.keySet()) { for (Integer dirType : dirTypeCountMap.keySet()) {
if(atomicIntegerDir.get()>1){ if (dirType == crossResults.get(0).getInDir()) {
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getOutDir())){
judTrunkLineCrossProblemEntityDTO.setOutDir(dirType);
}
if(dirTypeCountMap.get(dirType) == 0){
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}else {
judTrunkLineCrossProblemEntityDTO.setStatusR(3);
}
}else {
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getInDir())){
judTrunkLineCrossProblemEntityDTO.setInDir(dirType);
}
if(dirTypeCountMap.get(dirType) == 0){
judTrunkLineCrossProblemEntityDTO.setStatusL(1);
}else {
judTrunkLineCrossProblemEntityDTO.setStatusL(3); judTrunkLineCrossProblemEntityDTO.setStatusL(3);
} }
if (dirType == crossResults.get(0).getOutDir()) {
judTrunkLineCrossProblemEntityDTO.setStatusR(3);
} }
} }
} }
if(ObjectUtil.isNotEmpty(crossResults.get(0))){
if(ObjectUtil.isNotEmpty(judTrunkLineCrossProblemEntityDTO.getInDir())){
if(crossResults.get(0).getInDir() == judTrunkLineCrossProblemEntityDTO.getInDir()){
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getOutDir())){
judTrunkLineCrossProblemEntityDTO.setOutDir(crossResults.get(0).getOutDir());
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}
}
if(crossResults.get(0).getOutDir() == judTrunkLineCrossProblemEntityDTO.getInDir()){
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getOutDir())){
judTrunkLineCrossProblemEntityDTO.setOutDir(crossResults.get(0).getInDir());
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}
}
}
if(ObjectUtil.isNotEmpty(judTrunkLineCrossProblemEntityDTO.getOutDir())){
if(crossResults.get(0).getOutDir() == judTrunkLineCrossProblemEntityDTO.getOutDir()){
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getInDir())){
judTrunkLineCrossProblemEntityDTO.setInDir(crossResults.get(0).getInDir());
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}
}
if(crossResults.get(0).getInDir() == judTrunkLineCrossProblemEntityDTO.getOutDir()){
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getInDir())){
judTrunkLineCrossProblemEntityDTO.setInDir(crossResults.get(0).getOutDir());
judTrunkLineCrossProblemEntityDTO.setStatusR(1);
}
}
}
}
} else {
continue;
}
} }
crossProblemEntityDTOS.add(judTrunkLineCrossProblemEntityDTO); crossProblemEntityDTOS.add(judTrunkLineCrossProblemEntityDTO);
} }
} }
AtomicInteger atomicInteger = new AtomicInteger(1);
crossProblemEntityDTOS.stream().sorted(Comparator.comparingInt(JudTrunkLineCrossProblemEntityDTO::getCount)).forEach(x->x.setSort(atomicInteger.getAndIncrement()));
List<JudTrunkLineCrossProblemEntityVO> judTrunkLineCrossProblemEntityVOS = crossProblemEntityDTOS.stream().map(x -> { List<JudTrunkLineCrossProblemEntityVO> judTrunkLineCrossProblemEntityVOS = crossProblemEntityDTOS.stream().map(x -> {
JudTrunkLineCrossProblemEntityVO judTrunkLineCrossProblemEntityVO = new JudTrunkLineCrossProblemEntityVO(); JudTrunkLineCrossProblemEntityVO judTrunkLineCrossProblemEntityVO = new JudTrunkLineCrossProblemEntityVO();
BeanUtils.copyProperties(x, judTrunkLineCrossProblemEntityVO); BeanUtils.copyProperties(x, judTrunkLineCrossProblemEntityVO);
......
...@@ -316,7 +316,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM ...@@ -316,7 +316,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
greenWaveWeekDataVO.setGreenRoadType(RoadLevelEnum.getDesc(greenInfoList.get(0).getLevel())); greenWaveWeekDataVO.setGreenRoadType(RoadLevelEnum.getDesc(greenInfoList.get(0).getLevel()));
greenWaveWeekDataVOList.add(greenWaveWeekDataVO); greenWaveWeekDataVOList.add(greenWaveWeekDataVO);
} }
List<GreenWaveWeekDataVO> collect = greenWaveWeekDataVOList.stream().sorted(Comparator.comparingDouble(GreenWaveWeekDataVO::getCongestCount).reversed()).collect(Collectors.toList()); List<GreenWaveWeekDataVO> collect = greenWaveWeekDataVOList.stream().sorted(Comparator.comparingDouble(GreenWaveWeekDataVO::getCongestIndex).reversed()).collect(Collectors.toList());
collect.forEach(x->{ collect.forEach(x->{
x.setRank(collect.indexOf(x)+1); x.setRank(collect.indexOf(x)+1);
}); });
...@@ -430,7 +430,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM ...@@ -430,7 +430,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
}else if(travelTime == 0){ }else if(travelTime == 0){
samePeriodData.setPmTravelTimeSituation("相等"); samePeriodData.setPmTravelTimeSituation("相等");
}else { }else {
samePeriodData.setPmTravelTimeSituation("增加"+Math.abs(travelTime)+"s"); samePeriodData.setPmTravelTimeSituation("增加");
} }
if(waveWeekData.getSpeed()!=0){ if(waveWeekData.getSpeed()!=0){
greenReportSamePeriodData.setAvgSpeedRatio(Math.round((speed/waveWeekData.getSpeed()*10000))/100.0); greenReportSamePeriodData.setAvgSpeedRatio(Math.round((speed/waveWeekData.getSpeed()*10000))/100.0);
......
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