Commit e5184a14 authored by hanbing's avatar hanbing

[update] 绿波时距图速度取平均

parent 6720c45d
......@@ -32,8 +32,12 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.regex.Matcher;
......@@ -582,9 +586,10 @@ public class TrendServiceImpl implements TrendService {
private List<GreenwaveDetailVO.GreenwaveCross> buildGreenwaveCrossList(Integer greenwaveId, String greenwaveName) {
String[] split = greenwaveName.split(" "); // 旅游路 东向西 转山西路至霞景路路段:正向绿波 工作日 19:00-20:00
String s = split[4];
String s = split[4]; // 19:00-20:00
String[] split1 = s.split("-");
String startTime = split1[0];
String endTime = split1[1];
String planName = split[3];
List<GreenwaveDetailVO.GreenwaveCross> res = new ArrayList<>();
......@@ -640,8 +645,10 @@ public class TrendServiceImpl implements TrendService {
}
greenwaveCross.setDistanceToNextCross(distanceToNextCross);
// 平均速度
Double speed = calcSpeed(greenwaveCrossPO, crossId);
greenwaveCross.setSpeed(speed);
Double speed = calcSpeed(greenwaveCrossPO, crossId, startTime, endTime);
if (i != size - 1) {
greenwaveCross.setSpeed(speed);
}
// 相位差
greenwaveCross.setOffset(greenwaveCrossPO.getOffset());
......@@ -742,11 +749,24 @@ public class TrendServiceImpl implements TrendService {
return i - 1;
}
private Double calcSpeed(GreenwaveCrossPO greenwaveCrossPO, String currentCrossId) {
private Double calcSpeed(GreenwaveCrossPO greenwaveCrossPO, String currentCrossId,
String startTime, String endTime) {
Integer inDir = greenwaveCrossPO.getInDir();
CrossDirDataRealtimePO crossDirDataRealtimePO =
crossDirDataRealtimeMapper.selectByCrossIdAndDirType(currentCrossId, inDir);
return crossDirDataRealtimePO.getSpeed();
LocalDate today = LocalDate.now();
LocalDate yesterday = today.minusDays(1);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = yesterday.format(formatter);
List<CrossDirDataHistPO> crossDirDataHistPOList = crossDirDataHistMapper.selectByCrossDirAndTimeSection(
currentCrossId, inDir, formattedDate, formattedDate, startTime, endTime);
double v = crossDirDataHistPOList.stream()
.mapToDouble(CrossDirDataHistPO::getSpeed)
.average().orElse(0.0);
BigDecimal formattedAverage = new BigDecimal(v).setScale(2, RoundingMode.HALF_UP);
return formattedAverage.doubleValue();
}
@Override
......
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