Commit 10ed91dd authored by fengyasheng's avatar fengyasheng

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

parent 8cca9705
......@@ -4,6 +4,10 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay;
......@@ -17,6 +21,7 @@ import net.wanji.opt.vo2.JudTrunkLineCrossProblemEntityVO;
import net.wanji.opt.vo2.report.JudTrunkLineCrossProblemEntityDTO;
import org.locationtech.jts.geom.Geometry;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
......@@ -38,6 +43,10 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
@Resource
private AnalysisProblemCrossDayMapper analysisProblemCrossDayMapper;
@Autowired
private GreenwaveCrossMapper greenwaveCrossMapper;
@Autowired
private BaseCrossInfoMapper baseCrossInfoMapper;
/**
......@@ -229,149 +238,59 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
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 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.setGreenId(crossResults.get(0).getGreenId());
judTrunkLineCrossProblemEntityDTO.setCrossId(crossResults.get(0).getCrossId());
judTrunkLineCrossProblemEntityDTO.setCrossName(crossResults.get(0).getName());
if (ObjectUtil.isEmpty(status) || status == 2) {
int slowCountCross = crossResults.stream().filter(x -> 2 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum();
if (slowCount > 0 && slowCountCross * 100 / slowCount > 10) {
judTrunkLineCrossProblemEntityDTO.setCount(slowCountCross);
Map<Integer, Integer> dirTypeCountMap = crossResults.stream().collect(Collectors.groupingBy(
GreenwaveCrossResult::getDirType,
Collectors.summingInt(GreenwaveCrossResult::getDirCount)
));
if(ObjectUtil.isNotEmpty(dirTypeCountMap)){
AtomicInteger atomicIntegerDir = new AtomicInteger(1);
judTrunkLineCrossProblemEntityDTO.setGreenId(greenwaveCrossPO.getGreenId());
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());
if (ObjectUtil.isEmpty(status) || status == 2) {
int slowCountCross = crossResults.stream().filter(x -> 2 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum();
if (slowCount > 0 && slowCountCross * 100 / slowCount > 10) {
Map<Integer, Integer> dirTypeCountMap = crossResults.stream().filter(x -> 2 == x.getStatus()).collect(Collectors.groupingBy(
GreenwaveCrossResult::getDirType,
Collectors.summingInt(GreenwaveCrossResult::getDirCount)
));
for (Integer dirType : dirTypeCountMap.keySet()) {
if(atomicIntegerDir.get()>1){
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);
}
if (dirType == crossResults.get(0).getInDir()) {
judTrunkLineCrossProblemEntityDTO.setStatusL(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 (dirType == crossResults.get(0).getOutDir()) {
judTrunkLineCrossProblemEntityDTO.setStatusR(2);
}
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) {
int conCountCross = crossResults.stream().filter(x -> 3 == x.getStatus() || 4 == x.getStatus()).mapToInt(GreenwaveCrossResult::getDirCount).sum();
if (conCount > 0 && conCountCross * 100 / conCount > 10) {
if(ObjectUtil.isEmpty(judTrunkLineCrossProblemEntityDTO.getCount())){
judTrunkLineCrossProblemEntityDTO.setCount(conCountCross);
}
Map<Integer, Integer> dirTypeCountMap = crossResults.stream().collect(Collectors.groupingBy(
GreenwaveCrossResult::getDirType,
Collectors.summingInt(GreenwaveCrossResult::getDirCount)
));
if(ObjectUtil.isNotEmpty(dirTypeCountMap)){
AtomicInteger atomicIntegerDir = new AtomicInteger(1);
for (Integer dirType : dirTypeCountMap.keySet()) {
if(atomicIntegerDir.get()>1){
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);
}
}
for (Integer dirType : dirTypeCountMap.keySet()) {
if (dirType == crossResults.get(0).getInDir()) {
judTrunkLineCrossProblemEntityDTO.setStatusL(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);
}
}
if (dirType == crossResults.get(0).getOutDir()) {
judTrunkLineCrossProblemEntityDTO.setStatusR(3);
}
}
} else {
continue;
}
}
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 -> {
JudTrunkLineCrossProblemEntityVO judTrunkLineCrossProblemEntityVO = new JudTrunkLineCrossProblemEntityVO();
BeanUtils.copyProperties(x, judTrunkLineCrossProblemEntityVO);
......
......@@ -316,7 +316,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
greenWaveWeekDataVO.setGreenRoadType(RoadLevelEnum.getDesc(greenInfoList.get(0).getLevel()));
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->{
x.setRank(collect.indexOf(x)+1);
});
......@@ -430,7 +430,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
}else if(travelTime == 0){
samePeriodData.setPmTravelTimeSituation("相等");
}else {
samePeriodData.setPmTravelTimeSituation("增加"+Math.abs(travelTime)+"s");
samePeriodData.setPmTravelTimeSituation("增加");
}
if(waveWeekData.getSpeed()!=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