Commit e5184a14 authored by hanbing's avatar hanbing

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

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