Commit f67f4c22 authored by zhoushiguang's avatar zhoushiguang

Merge remote-tracking branch 'origin/master'

parents 55f0893f 99cc37b2
......@@ -50,7 +50,12 @@ public class HisenseSchemeRingPhaseInfoTask {
for (GreenCrossDirDTO greenCrossDirDTO : greenCrossDirCache) {
Integer greenId = greenCrossDirDTO.getGreenId();
String greenCrossId = greenCrossDirDTO.getCrossId();
String greenDirStr = greenCrossDirDTO.getGreenDir();
String greenDirStr = null;
if (Objects.equals(3, greenId)) {
greenDirStr = "1,3,5,7";
} else {
greenDirStr = greenCrossDirDTO.getGreenDir();
}
// 神思下发绿波时不需要优化
if (isGreenOptSend(greenId)) {
continue;
......
......@@ -54,11 +54,11 @@
select * from t_config_peak_hours;
</select>
<select id="selectGreenWaveWeekDataByTime" resultType="net.wanji.opt.entity.report.GreenWaveWeekData">
SELECT green_id,road_direction,max(traffic_index) max_congest_index,avg(traffic_index) congest_index,sum(status>=3 and status &lt;=4)*60*5 congest_duration,avg(speed) speed,sum(trval_time) travel_time
SELECT green_id,road_direction,max(traffic_index) max_congest_index,avg(traffic_index) congest_index,sum(status>=3 and status &lt;=4)*60*5 congest_duration,avg(speed) speed,avg(trval_time) travel_time
from t_greenwave_hist where start_time BETWEEN #{startDate} AND #{endDate} AND TIME( start_time ) BETWEEN #{startTime} AND #{endTime} GROUP BY green_id,road_direction
</select>
<select id="selectGreenWaveWeekData" resultType="net.wanji.opt.entity.report.GreenWaveWeekData">
SELECT green_id,road_direction,max(traffic_index) max_congest_index,avg(traffic_index) congest_index,sum(status>=3 and status&lt;=4)*60*5 congest_duration,avg(speed) speed,sum(trval_time) travel_time
SELECT green_id,road_direction,max(traffic_index) max_congest_index,avg(traffic_index) congest_index,sum(status>=3 and status&lt;=4)*60*5 congest_duration,avg(speed) speed,avg(trval_time) travel_time
from t_greenwave_hist where start_time BETWEEN #{startDate} AND #{endDate} GROUP BY green_id,road_direction
</select>
......
......@@ -22,6 +22,6 @@ public class GreenReportProblemDetailVO {
private Double avgSpeed;
@ApiModelProperty(value = "行程时间,单位分钟", example = "10")
private Integer travelTime;
private double travelTime;
}
\ No newline at end of file
......@@ -25,5 +25,11 @@ public class CrossRidLaneDTO {
private Integer outDir;
@ApiModelProperty(value = "驶入方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北" )
private Integer inDir;
@ApiModelProperty(value = "车道类型:1路段车道;2进口车道;3出口车道;4左转弯待转区;6直行待行区" )
private Integer laneType;
@ApiModelProperty(value = "开始路口编号" )
private String startCrossId;
@ApiModelProperty(value = "结束路口编号" )
private String endCrossId;
}
......@@ -139,13 +139,18 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
if (StringUtils.endsWithIgnoreCase(crossId, lastWeekCrossId)) {
if (trafficIndex > lastWeekTrafficIndex) {
result.setTrafficIndexUpDown(1);
} else {
} else if (trafficIndex < lastWeekTrafficIndex){
result.setTrafficIndexUpDown(0);
} else {
result.setTrafficIndexUpDown(2);
}
if (queueLength > lastWeekQueueLength) {
result.setQueueLengthUpDown(1);
} else {
} else if (queueLength < lastWeekQueueLength) {
result.setQueueLengthUpDown(0);
} else {
result.setQueueLengthUpDown(2);
}
}
}
......@@ -187,18 +192,24 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
if (trafficIndex > curTrafficIndex) {
greenOptDTO.setTrafficIndexUpDown(1);
} else {
} else if (trafficIndex < curTrafficIndex){
greenOptDTO.setTrafficIndexUpDown(0);
} else {
greenOptDTO.setTrafficIndexUpDown(2);
}
if (speed > curSpeed.intValue()) {
greenOptDTO.setSpeedUpDown(1);
} else {
} else if (speed < curSpeed.intValue()) {
greenOptDTO.setSpeedUpDown(0);
} else {
greenOptDTO.setSpeedUpDown(2);
}
if (travelTime > curTravelTime) {
greenOptDTO.setTravelUpDown(1);
} else {
} else if (travelTime < curTravelTime) {
greenOptDTO.setTravelUpDown(0);
} else {
greenOptDTO.setTravelUpDown(2);
}
}
......
......@@ -263,12 +263,20 @@ public class AnalysisGreenCongestionPeriodServiceImpl implements AnalysisGreenCo
//按拥堵指数降序排序
// List<AnalysisGreenCongestionPeriodVO> periodVOS = voList.stream().sorted(Comparator.comparing(AnalysisGreenCongestionPeriodVO::getCongestIndex).reversed())
// .collect(Collectors.toList());
// List<GreenReportProblemOverallDataVO> overallDataVOS = greenList.stream().sorted(Comparator.comparing(x -> {
// double congestIndexAll = 0;
// for (GreenWaveDirProblemDataVO dataVO : x.getList()) {
// congestIndexAll += dataVO.getCongestIndex();
// }
// return - congestIndexAll/x.getList().size();
// })).collect(Collectors.toList());
//按拥堵次数降序排序
List<GreenReportProblemOverallDataVO> overallDataVOS = greenList.stream().sorted(Comparator.comparing(x -> {
double congestIndexAll = 0;
double congestCountAll = 0;
for (GreenWaveDirProblemDataVO dataVO : x.getList()) {
congestIndexAll += dataVO.getCongestIndex();
congestCountAll += dataVO.getCongestCount();
}
return - congestIndexAll/x.getList().size();
return - congestCountAll;
})).collect(Collectors.toList());
List<Integer> greenIds = new ArrayList<>();
for (GreenReportProblemOverallDataVO periodVO : overallDataVOS) {
......@@ -477,7 +485,7 @@ public class AnalysisGreenCongestionPeriodServiceImpl implements AnalysisGreenCo
greenReportProblemDetail.setProblemSpan(getTimeString(periodVO));
greenReportProblemDetail.setStatus(ConsgestionStatusEnum.getDesc(periodVO.getStatus()));
greenReportProblemDetail.setAvgSpeed(Math.round(periodVO.getSpeed() * 100) / 100.0);
greenReportProblemDetail.setTravelTime(periodVO.getTravelTime() / 60);
greenReportProblemDetail.setTravelTime(Math.round(periodVO.getTravelTime()*10 / 60.0)/10.0);
greenReportProblemDetail.setCongestIndex(Math.round(periodVO.getCongestIndex() * 100) / 100.0);
return greenReportProblemDetail;
}
......
......@@ -104,7 +104,6 @@ public class AnalysisGreenWaveOptimizeWeekServiceImpl extends ServiceImpl<Analys
@Override
public GreenWaveOptimizeAnalysisResultResponseDTO getTotalityData(Integer year, Integer week, String ids) {
Integer yearWeek = Integer.valueOf(year + "" + week);
Integer yearWeekLast = Integer.valueOf(year + "" + (week - 1));
List<Integer> greenIdList = new ArrayList<>();
if (ObjectUtils.isEmpty(ids)) {
List<GreenwaveInfoPO> greenwaveInfoPOList = greenwaveInfoMapper.selectAll();
......@@ -124,12 +123,12 @@ public class AnalysisGreenWaveOptimizeWeekServiceImpl extends ServiceImpl<Analys
if (ObjectUtils.isEmpty(greenWaveOptimizeAnalysisDataDTO)) {
optimizeAnalysisResultResponseDTO.setWeekOptimizeCount("0次");
optimizeAnalysisResultResponseDTO.setWeekOptimizeDuration("0小时");
optimizeAnalysisResultResponseDTO.setWeekCapacitySituation("无变化");
optimizeAnalysisResultResponseDTO.setWeekStopTimesSituation("无变化");
optimizeAnalysisResultResponseDTO.setWeekTravelTimeSituation("无变化");
optimizeAnalysisResultResponseDTO.setWeekDelayTimeSituation("无变化");
optimizeAnalysisResultResponseDTO.setWeekAvgSpeedSituation("无变化");
optimizeAnalysisResultResponseDTO.setWeekTotalitySituation("无变化");
optimizeAnalysisResultResponseDTO.setWeekCapacitySituation("持平");
optimizeAnalysisResultResponseDTO.setWeekStopTimesSituation("持平");
optimizeAnalysisResultResponseDTO.setWeekTravelTimeSituation("持平");
optimizeAnalysisResultResponseDTO.setWeekDelayTimeSituation("持平");
optimizeAnalysisResultResponseDTO.setWeekAvgSpeedSituation("持平");
optimizeAnalysisResultResponseDTO.setWeekTotalitySituation("持平");
} else {
optimizeAnalysisResultResponseDTO.setWeekOptimizeCount(String.valueOf(greenWaveOptimizeAnalysisDataDTO.getOptimizeCount()) + "次");
optimizeAnalysisResultResponseDTO.setWeekOptimizeDuration(String.valueOf(greenWaveOptimizeAnalysisDataDTO.getOptimizeDuration() / 60 / 60) + "小时");
......@@ -160,6 +159,8 @@ public class AnalysisGreenWaveOptimizeWeekServiceImpl extends ServiceImpl<Analys
weekCapacitySituation = (analysisDataDTO.getCapacity() - analysisDataDTO.getLastCapacity()) * 100 / analysisDataDTO.getLastCapacity();
if (weekCapacitySituation > 0) {
optimizeAnalysisResultResponseDTO.setWeekCapacitySituation("提升" + weekCapacitySituation + "%");
}else if (weekCapacitySituation == 0) {
optimizeAnalysisResultResponseDTO.setWeekCapacitySituation("持平");
} else {
optimizeAnalysisResultResponseDTO.setWeekCapacitySituation("降低" + Math.abs(weekCapacitySituation) + "%");
}
......@@ -171,6 +172,8 @@ public class AnalysisGreenWaveOptimizeWeekServiceImpl extends ServiceImpl<Analys
weekStopTimesSituation = Math.round((analysisDataDTO.getStopTimes() - analysisDataDTO.getLastStopTimes()) * 100 / analysisDataDTO.getLastStopTimes());
if (weekStopTimesSituation > 0) {
optimizeAnalysisResultResponseDTO.setWeekStopTimesSituation("增加" + weekStopTimesSituation + "%");
}else if (weekStopTimesSituation == 0) {
optimizeAnalysisResultResponseDTO.setWeekStopTimesSituation("持平");
} else {
optimizeAnalysisResultResponseDTO.setWeekStopTimesSituation("减少" + Math.abs(weekStopTimesSituation) + "%");
}
......@@ -180,6 +183,8 @@ public class AnalysisGreenWaveOptimizeWeekServiceImpl extends ServiceImpl<Analys
weekTravelTimeSituation = (analysisDataDTO.getTravelTime() - analysisDataDTO.getLastTravelTime()) * 100 / analysisDataDTO.getLastTravelTime();
if (weekTravelTimeSituation > 0) {
optimizeAnalysisResultResponseDTO.setWeekTravelTimeSituation("增加" + weekTravelTimeSituation + "%");
}else if (weekTravelTimeSituation == 0) {
optimizeAnalysisResultResponseDTO.setWeekTravelTimeSituation("持平");
} else {
optimizeAnalysisResultResponseDTO.setWeekTravelTimeSituation("减少" + Math.abs(weekTravelTimeSituation) + "%");
}
......@@ -189,6 +194,8 @@ public class AnalysisGreenWaveOptimizeWeekServiceImpl extends ServiceImpl<Analys
weekDelayTimeSituation = Math.round((analysisDataDTO.getDelayTime() - analysisDataDTO.getLastDelayTime()) * 100 / analysisDataDTO.getLastDelayTime());
if (weekDelayTimeSituation > 0) {
optimizeAnalysisResultResponseDTO.setWeekDelayTimeSituation("增加" + weekDelayTimeSituation + "%");
}else if (weekDelayTimeSituation == 0) {
optimizeAnalysisResultResponseDTO.setWeekDelayTimeSituation("持平");
} else {
optimizeAnalysisResultResponseDTO.setWeekDelayTimeSituation("减少" + Math.abs(weekDelayTimeSituation) + "%");
}
......@@ -198,30 +205,20 @@ public class AnalysisGreenWaveOptimizeWeekServiceImpl extends ServiceImpl<Analys
weekAvgSpeedSituation = Math.round((analysisDataDTO.getAvgSpeed() - analysisDataDTO.getLastAvgSpeed()) * 100 / analysisDataDTO.getLastAvgSpeed());
if (weekAvgSpeedSituation > 0) {
optimizeAnalysisResultResponseDTO.setWeekAvgSpeedSituation("提升" + weekAvgSpeedSituation + "%");
}else if (weekAvgSpeedSituation == 0) {
optimizeAnalysisResultResponseDTO.setWeekAvgSpeedSituation("持平");
} else {
optimizeAnalysisResultResponseDTO.setWeekAvgSpeedSituation("降低" + Math.abs(weekAvgSpeedSituation) + "%");
}
}
//本周总体情况
if (weekCapacitySituation >= 0 && weekTravelTimeSituation <= 0) {
if (weekCapacitySituation >= 0) {
if (weekCapacitySituation >= 5) {
optimizeAnalysisResultResponseDTO.setWeekTotalitySituation("明显提升");
} else {
optimizeAnalysisResultResponseDTO.setWeekTotalitySituation("略有提升");
}
} else if (weekCapacitySituation >= 0 && weekTravelTimeSituation > 0) {
if (weekCapacitySituation - weekTravelTimeSituation > 0) {
optimizeAnalysisResultResponseDTO.setWeekTotalitySituation("略有提升");
} else {
optimizeAnalysisResultResponseDTO.setWeekTotalitySituation("略有下降");
}
} else if (weekCapacitySituation < 0 && weekTravelTimeSituation <= 0) {
if (weekCapacitySituation - weekTravelTimeSituation > 0) {
optimizeAnalysisResultResponseDTO.setWeekTotalitySituation("略有提升");
} else {
optimizeAnalysisResultResponseDTO.setWeekTotalitySituation("略有下降");
}
} else if (weekCapacitySituation < 0 && weekTravelTimeSituation > 0) {
} else{
if (Math.abs(weekCapacitySituation) >= 5) {
optimizeAnalysisResultResponseDTO.setWeekTotalitySituation("明显下降");
} else {
......
......@@ -359,24 +359,24 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
greenReportSamePeriodData.setPeakFlow(greenWaveWeekData.getFlow());
greenReportSamePeriodData.setCongestIndex(Math.round(greenWaveWeekData.getCongestIndex()*100)/100.0);
greenReportSamePeriodData.setAvgSpeed(Math.round(greenWaveWeekData.getSpeed()*100)/100.0);
greenReportSamePeriodData.setTravelTime(Double.valueOf(greenWaveWeekData.getTravelTime()));
greenReportSamePeriodData.setTravelTime(Math.round(greenWaveWeekData.getTravelTime()*100/60.0)/100.0);
double speed = greenWaveWeekData.getSpeed() - waveWeekData.getSpeed();
double flow = greenWaveWeekData.getFlow() - waveWeekData.getFlow();
double travelTime = greenWaveWeekData.getTravelTime() - waveWeekData.getTravelTime();
double congestIndex = greenWaveWeekData.getCongestIndex() - waveWeekData.getCongestIndex();
if(flow<0){
samePeriodData.setAmPeakSituation("减");
samePeriodData.setAmPeakSituation("减");
}else if(flow == 0){
samePeriodData.setAmPeakSituation("相等");
}else {
samePeriodData.setAmPeakSituation("增加");
}
if(travelTime<0){
samePeriodData.setAmTravelTimeSituation("减少");
samePeriodData.setAmTravelTimeSituation("减少"+Math.abs(travelTime)+"s");
}else if(travelTime == 0){
samePeriodData.setAmTravelTimeSituation("相等");
}else {
samePeriodData.setAmTravelTimeSituation("增加");
samePeriodData.setAmTravelTimeSituation("增加"+Math.abs(travelTime)+"s");
}
if(waveWeekData.getSpeed()!=0){
greenReportSamePeriodData.setAvgSpeedRatio(Math.round((speed/waveWeekData.getSpeed()*10000))/100.0);
......@@ -413,24 +413,24 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
greenReportSamePeriodData.setPeakFlow(greenWaveWeekData.getFlow());
greenReportSamePeriodData.setCongestIndex(Math.round(greenWaveWeekData.getCongestIndex()*100)/100.0);
greenReportSamePeriodData.setAvgSpeed(Math.round(greenWaveWeekData.getSpeed()*100)/100.0);
greenReportSamePeriodData.setTravelTime(Double.valueOf(greenWaveWeekData.getTravelTime()));
greenReportSamePeriodData.setTravelTime(Math.round(greenWaveWeekData.getTravelTime()*100/60.0)/100.0);
double speed = greenWaveWeekData.getSpeed() - waveWeekData.getSpeed();
double flow = greenWaveWeekData.getFlow() - waveWeekData.getFlow();
double travelTime = greenWaveWeekData.getTravelTime() - waveWeekData.getTravelTime();
double congestIndex = greenWaveWeekData.getCongestIndex() - waveWeekData.getCongestIndex();
if(flow<0){
samePeriodData.setPmPeakSituation("减");
samePeriodData.setPmPeakSituation("减");
}else if(flow == 0){
samePeriodData.setPmPeakSituation("相等");
}else {
samePeriodData.setPmPeakSituation("增加");
}
if(travelTime<0){
samePeriodData.setPmTravelTimeSituation("减少");
samePeriodData.setPmTravelTimeSituation("减少"+Math.abs(travelTime)+"s");
}else if(travelTime == 0){
samePeriodData.setPmTravelTimeSituation("相等");
}else {
samePeriodData.setPmTravelTimeSituation("增加");
samePeriodData.setPmTravelTimeSituation("增加"+Math.abs(travelTime)+"s");
}
if(waveWeekData.getSpeed()!=0){
greenReportSamePeriodData.setAvgSpeedRatio(Math.round((speed/waveWeekData.getSpeed()*10000))/100.0);
......@@ -467,7 +467,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
greenReportSamePeriodData.setPeakFlow(greenWaveWeekData.getFlow());
greenReportSamePeriodData.setCongestIndex(Math.round(greenWaveWeekData.getCongestIndex()*100)/100.0);
greenReportSamePeriodData.setAvgSpeed(Math.round(greenWaveWeekData.getSpeed()*100)/100.0);
greenReportSamePeriodData.setTravelTime(Double.valueOf(greenWaveWeekData.getTravelTime()));
greenReportSamePeriodData.setTravelTime(Math.round(greenWaveWeekData.getTravelTime()*100/60.0)/100.0);
double speed = greenWaveWeekData.getSpeed() - waveWeekData.getSpeed();
double flow = greenWaveWeekData.getFlow() - waveWeekData.getFlow();
double travelTime = greenWaveWeekData.getTravelTime() - waveWeekData.getTravelTime();
......
......@@ -469,11 +469,11 @@ public class StrategyPriorityServiceImpl extends ServiceImpl<StrategyPriorityMap
String trunkName = infos.get(0).getWaveName();
// 按路口 ID 分组并合并日计划详情
Map<String, Set<String>> crossGroupedDetails = infos.stream()
// 按干线 ID 分组并合并日计划详情
Map<Integer, Set<String>> crossGroupedDetails = infos.stream()
.filter(info -> info.getDailyPlanDetails() != null)
.collect(Collectors.groupingBy(
StrategyPriorityDailyInfo::getCrossId,
StrategyPriorityDailyInfo::getGreenId,
Collectors.mapping(StrategyPriorityDailyInfo::getDailyPlanDetails, Collectors.toSet()))); // 去重
// 合并每个路口的日计划详情
......
......@@ -401,7 +401,7 @@
t2.daily_plan_details as dailyPlanDetails
FROM t_greenwave_info t4
LEFT JOIN t_greenwave_cross t1 on t1.green_id = t4.id
LEFT JOIN t_strategy_priority_daily_info t2 on t1.cross_id = t2.cross_id and t2.type=2
LEFT JOIN t_strategy_priority_daily_info t2 on t1.green_id = t2.green_id and t2.type=2
LEFT JOIN t_base_cross_info t3 on t1.cross_id = t3.id
</select>
<select id="selectGreenPriorityTable" parameterType="map" resultType="net.wanji.opt.entity.strategy.StrategyPriorityConfig">
......
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