Commit 3838cf4d authored by duanruiming's avatar duanruiming

Merge remote-tracking branch 'origin/master'

parents dd756b7b 2ac30c82
......@@ -140,22 +140,38 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
List<CrossDataHistPO> crossPOList = crossDataHistMapper.selectByCrossIdAndStartEnd(
crossId, startTimeStamp, endTimeStamp);
for (String timeStr : timeList) {
Date startDatetime = calcDate(timeStr, startTime);
// 解析 timeStr 为 Calendar 对象
String[] timeParts = timeStr.split(":");
int hour = Integer.parseInt(timeParts[0]);
int minute = Integer.parseInt(timeParts[1]);
Calendar startTimeCal = Calendar.getInstance();
startTimeCal.set(Calendar.HOUR_OF_DAY, hour);
startTimeCal.set(Calendar.MINUTE, minute);
startTimeCal.set(Calendar.SECOND, 0);
startTimeCal.set(Calendar.MILLISECOND, 0);
// 计算结束时间
Calendar endTimeCal = (Calendar) startTimeCal.clone();
endTimeCal.add(Calendar.MINUTE, minutes);
// 过滤 crossPOList 中的记录
List<CrossDataHistPO> filteredList = crossPOList.stream()
.filter(crossPO -> {
// 将 batchTime 转换为小时和分钟
Calendar batchTimeCal = Calendar.getInstance();
batchTimeCal.setTimeInMillis(crossPO.getBatchTime() * 1000L); // 将时间戳转换为毫秒
String batchTimeStr = hourMinuteFormat.format(batchTimeCal.getTime());
// 比较 batchTime 是否在 timeStr 和 endTimeStr 之间
String endTimeStr = hourMinuteFormat.format(endTimeCal.getTime());
return (batchTimeStr.compareTo(timeStr) >= 0 && batchTimeStr.compareTo(endTimeStr) <= 0);
})
.collect(Collectors.toList());
MainlineEvaluateBottomCurveVO vo = new MainlineEvaluateBottomCurveVO();
vo.setMetricTime(timeStr);
// 计算 endDatetime
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDatetime);
calendar.add(Calendar.MINUTE, minutes);
Date endDatetime = calendar.getTime();
// 转换为 10 位时间戳
int startTimeStampPart = (int) (startDatetime.getTime() / 1000);
int endTimeStampPart = (int) (endDatetime.getTime() / 1000);
// 使用流式编程进行筛选
List<CrossDataHistPO> filteredList = crossPOList.stream()
.filter(po -> po.getBatchTime() >= startTimeStampPart && po.getBatchTime() <= endTimeStampPart)
.collect(Collectors.toList());
if (Objects.equals(metricCode, StrategyAndMetricsEnum.Metrics.NO_STOP_RATE.getCode())) {
double v = filteredList.stream()
.mapToDouble(CrossDataHistPO::getNoStopRate)
......@@ -229,8 +245,6 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
crossId, startTimeStamp, endTimeStamp);
for (String timeStr : timeList) {
Date startDatetime = calcDate(timeStr, startTime);
for (String dirStr : scopeList) {
int index = dirStr.indexOf("进口");
String dirName = dirStr.substring(0, index);
......@@ -240,20 +254,35 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
vo.setMetricTime(timeStr);
vo.setScopeName(dirStr);
// 计算 endDatetime
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDatetime);
calendar.add(Calendar.MINUTE, minutes);
Date endDatetime = calendar.getTime();
// 转换为 10 位时间戳
int startTimeStampPart = (int) (startDatetime.getTime() / 1000);
int endTimeStampPart = (int) (endDatetime.getTime() / 1000);
// 使用流式编程进行筛选
// 解析 timeStr 为 Calendar 对象
String[] timeParts = timeStr.split(":");
int hour = Integer.parseInt(timeParts[0]);
int minute = Integer.parseInt(timeParts[1]);
Calendar startTimeCal = Calendar.getInstance();
startTimeCal.set(Calendar.HOUR_OF_DAY, hour);
startTimeCal.set(Calendar.MINUTE, minute);
startTimeCal.set(Calendar.SECOND, 0);
startTimeCal.set(Calendar.MILLISECOND, 0);
// 计算结束时间
Calendar endTimeCal = (Calendar) startTimeCal.clone();
endTimeCal.add(Calendar.MINUTE, minutes);
// 过滤 poList 中的记录
List<CrossDirDataHistPO> filteredList = dirPOList.stream()
.filter(po -> po.getDirType().equals(dirCode))
.filter(po -> po.getInOutType().equals(1))
.filter(po -> po.getBatchTime() >= startTimeStampPart
&& po.getBatchTime() <= endTimeStampPart)
.filter(po -> {
// 将 batchTime 转换为小时和分钟
Calendar batchTimeCal = Calendar.getInstance();
batchTimeCal.setTimeInMillis(po.getBatchTime() * 1000L); // 将时间戳转换为毫秒
String batchTimeStr = hourMinuteFormat.format(batchTimeCal.getTime());
// 比较 batchTime 是否在 timeStr 和 endTimeStr 之间
String endTimeStr = hourMinuteFormat.format(endTimeCal.getTime());
return (batchTimeStr.compareTo(timeStr) >= 0 && batchTimeStr.compareTo(endTimeStr) <= 0);
})
.collect(Collectors.toList());
if (Objects.equals(metricCode, StrategyAndMetricsEnum.Metrics.NO_STOP_RATE.getCode())) {
double v = filteredList.stream()
......@@ -322,8 +351,6 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
crossId, endTimeStamp, startTimeStamp);
for (String timeStr : timeList) {
Date startDatetime = calcDate(timeStr, startTime);
for (String turnStr : scopeList) {
int index = turnStr.indexOf("进口");
String dirName = turnStr.substring(0, index);
......@@ -335,20 +362,35 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
vo.setMetricTime(timeStr);
vo.setScopeName(turnStr);
// 计算 endDatetime
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDatetime);
calendar.add(Calendar.MINUTE, minutes);
Date endDatetime = calendar.getTime();
// 转换为 10 位时间戳
int startTimeStampPart = (int) (startDatetime.getTime() / 1000);
int endTimeStampPart = (int) (endDatetime.getTime() / 1000);
// 使用流式编程进行筛选
// 解析 timeStr 为 Calendar 对象
String[] timeParts = timeStr.split(":");
int hour = Integer.parseInt(timeParts[0]);
int minute = Integer.parseInt(timeParts[1]);
Calendar startTimeCal = Calendar.getInstance();
startTimeCal.set(Calendar.HOUR_OF_DAY, hour);
startTimeCal.set(Calendar.MINUTE, minute);
startTimeCal.set(Calendar.SECOND, 0);
startTimeCal.set(Calendar.MILLISECOND, 0);
// 计算结束时间
Calendar endTimeCal = (Calendar) startTimeCal.clone();
endTimeCal.add(Calendar.MINUTE, minutes);
// 过滤 poList 中的记录
List<CrossTurnDataHistPO> filteredList = dirPOList.stream()
.filter(po -> po.getInDir().equals(dirCode))
.filter(po -> po.getTurnType().equals(turnCode))
.filter(po -> po.getBatchTime() >= startTimeStampPart
&& po.getBatchTime() <= endTimeStampPart)
.filter(po -> {
// 将 batchTime 转换为小时和分钟
Calendar batchTimeCal = Calendar.getInstance();
batchTimeCal.setTimeInMillis(po.getBatchTime() * 1000L); // 将时间戳转换为毫秒
String batchTimeStr = hourMinuteFormat.format(batchTimeCal.getTime());
// 比较 batchTime 是否在 timeStr 和 endTimeStr 之间
String endTimeStr = hourMinuteFormat.format(endTimeCal.getTime());
return (batchTimeStr.compareTo(timeStr) >= 0 && batchTimeStr.compareTo(endTimeStr) <= 0);
})
.collect(Collectors.toList());
if (Objects.equals(metricCode, StrategyAndMetricsEnum.Metrics.NO_STOP_RATE.getCode())) {
double v = filteredList.stream()
......@@ -417,8 +459,6 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
crossId, endTimeStamp, startTimeStamp);
for (String timeStr : timeList) {
Date startDatetime = calcDate(timeStr, startTime);
for (String laneStr : scopeList) {
int indexOfJinKou = laneStr.indexOf("进口");
int indexOfCheDao = laneStr.indexOf("车道");
......@@ -434,20 +474,35 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
vo.setMetricTime(timeStr);
vo.setScopeName(laneStr);
// 计算 endDatetime
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDatetime);
calendar.add(Calendar.MINUTE, minutes);
Date endDatetime = calendar.getTime();
// 转换为 10 位时间戳
int startTimeStampPart = (int) (startDatetime.getTime() / 1000);
int endTimeStampPart = (int) (endDatetime.getTime() / 1000);
// 筛选方向、车道序号
// 解析 timeStr 为 Calendar 对象
String[] timeParts = timeStr.split(":");
int hour = Integer.parseInt(timeParts[0]);
int minute = Integer.parseInt(timeParts[1]);
Calendar startTimeCal = Calendar.getInstance();
startTimeCal.set(Calendar.HOUR_OF_DAY, hour);
startTimeCal.set(Calendar.MINUTE, minute);
startTimeCal.set(Calendar.SECOND, 0);
startTimeCal.set(Calendar.MILLISECOND, 0);
// 计算结束时间
Calendar endTimeCal = (Calendar) startTimeCal.clone();
endTimeCal.add(Calendar.MINUTE, minutes);
// 过滤 poList 中的记录
List<CrossLaneDataHistPOExt> filteredList = lanePOList.stream()
.filter(po -> po.getDir().equals(dirCode))
.filter(po -> po.getSort().equals(laneSort))
.filter(po -> po.getBatchTime() >= startTimeStampPart
&& po.getBatchTime() <= endTimeStampPart)
.filter(po -> {
// 将 batchTime 转换为小时和分钟
Calendar batchTimeCal = Calendar.getInstance();
batchTimeCal.setTimeInMillis(po.getBatchTime() * 1000L); // 将时间戳转换为毫秒
String batchTimeStr = hourMinuteFormat.format(batchTimeCal.getTime());
// 比较 batchTime 是否在 timeStr 和 endTimeStr 之间
String endTimeStr = hourMinuteFormat.format(endTimeCal.getTime());
return (batchTimeStr.compareTo(timeStr) >= 0 && batchTimeStr.compareTo(endTimeStr) <= 0);
})
.collect(Collectors.toList());
if (Objects.equals(metricCode, StrategyAndMetricsEnum.Metrics.NO_STOP_RATE.getCode())) {
......@@ -920,10 +975,11 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
crossId, nonCoordDirCodeList, boStartDayStr, boEndDayStr, startHourMinute, endHourMinute);
// 计算非协调方向指标(排队长度)
int nonCoordValue = (int) (crossDirDataHistPOList.stream()
double nonCoordValueDouble = (crossDirDataHistPOList.stream()
.mapToDouble(CrossDirDataHistPO::getQueueLength)
.average()
.max()
.orElse(0.0));
int nonCoordValue = (int) Math.round(nonCoordValueDouble);
return nonCoordValue;
}
......@@ -938,10 +994,11 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
crossId, coordDirCodeList, boStartDayStr, boEndDayStr, startHourMinute, endHourMinute);
// 计算协调方向指标(不停车通过率)
int coordValue = (int) (crossDirDataHistPOList.stream()
double coordValueDouble = (crossDirDataHistPOList.stream()
.mapToDouble(CrossDirDataHistPO::getNoStopRate)
.average()
.orElse(0.0) * 100);
int coordValue = (int) Math.round(coordValueDouble);
return coordValue;
}
......@@ -1501,13 +1558,8 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
}
private String reverseDirName(String input, String character) {
int index = input.indexOf(character);
if (index != -1) {
String part1 = input.substring(index + character.length()); // Part after "向"
String part2 = input.substring(0, index + character.length()); // Part before and including "向"
return part1 + part2;
}
return input;
String[] split = input.split(character);
return split[1] + character + split[0];
}
private List<String> calcEvaluateData(
......@@ -1886,16 +1938,26 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
}
private List<String> buildTimeList(Date startTime, Date endTime, Integer minutes) {
// 用于存储时间区间的列表
List<String> timeList = new ArrayList<>();
Calendar cal = Calendar.getInstance();
cal.setTime(startTime);
long timeDifference = endTime.getTime() - startTime.getTime();
boolean exceeds24Hours = timeDifference > (24 * 60 * 60 * 1000);
Set<String> timeSet = new HashSet<>();
while (cal.getTime().before(endTime) || cal.getTime().equals(endTime)) {
String formattedTime = hourMinuteFormat.format(cal.getTime());
if (exceeds24Hours) {
if (timeSet.contains(formattedTime)) {
// 如果 startTime 和 endTime 时间差大于24小时,则 timeList 只保留第一条重复元素之前的元素
break;
}
timeSet.add(formattedTime);
}
timeList.add(formattedTime);
// 增加指定分钟数
cal.add(Calendar.MINUTE, minutes);
}
return timeList;
......
......@@ -361,8 +361,6 @@ public class TrendServiceImpl implements TrendService {
public List<GreenwaveRunMonitorVO> greenwaveRunMonitor(GreenwaveIdBO greenwaveIdBO) {
List<GreenwaveRunMonitorVO> res = new ArrayList<>();
Date nowTime = new Date();
// todo 测试用,固定当前时间
nowTime = DateUtil.parse("2023-06-09 15:00:00","yyyy-MM-dd HH:mm:ss");
List<GreenwaveHistPOExt> extList = greenwaveHistMapper.selectRunMonitor(nowTime);
for (GreenwaveHistPOExt greenwaveHistPOExt : extList) {
GreenwaveRunMonitorVO greenWaveRunMonitorVO = new GreenwaveRunMonitorVO();
......@@ -741,17 +739,28 @@ public class TrendServiceImpl implements TrendService {
@Override
public List<GreenwaveCrossMetricsVO> greenwaveCrossMetrics(GreenwaveIdAndTimeStampBO greenwaveIdAndTimeStampBO) {
List<GreenwaveCrossMetricsVO> res = new ArrayList<>();
Long timeStamp = greenwaveIdAndTimeStampBO.getTimeStamp();
Integer greenwaveId = greenwaveIdAndTimeStampBO.getGreenwaveId();
Long timeStamp = greenwaveIdAndTimeStampBO.getTimeStamp();
// todo 测试用,时间戳设定为 1676082600
timeStamp = 1676082600L;
GreenwaveInfoPO greenwaveInfoPO = greenwaveInfoMapper.selectById(greenwaveId);
String greenwaveName = greenwaveInfoPO.getName(); // 旅游路 东向西 转山西路至霞景路路段:正向绿波
String[] split = greenwaveName.split(" ");
String[] split1 = split[1].split("向"); // 东向西
String dirName1 = split1[0];
String dirName2 = split1[1];
List<GreenwaveCrossPO> greenwaveCrossList = greenwaveCrossMapper.selectByGreenwaveId(greenwaveId);
int crossListSize = greenwaveCrossList.size();
int lastCrossIndex = crossListSize - 1;
for (int i = 0; i < crossListSize; i++) {
GreenwaveCrossPO greenwaveCrossPO = greenwaveCrossList.get(i);
// 根据路口ID去重,并按路口顺序号排序
Map<String, GreenwaveCrossPO> uniqueMap = greenwaveCrossList.stream()
.collect(Collectors.toMap(
GreenwaveCrossPO::getCrossId, // 使用crossId作为键
Function.identity(), // 使用对象本身作为值
(existing, replacement) -> existing)); // 如果有重复的key, 保留第一个
// 从uniqueMap中获取去重后的记录列表
List<GreenwaveCrossPO> uniqueList = new ArrayList<>(uniqueMap.values());
for (GreenwaveCrossPO greenwaveCrossPO : uniqueList) {
GreenwaveCrossMetricsVO greenwaveCrossMetricsVO = new GreenwaveCrossMetricsVO();
String crossId = greenwaveCrossPO.getCrossId();
greenwaveCrossMetricsVO.setCrossId(crossId);
......@@ -759,57 +768,93 @@ public class TrendServiceImpl implements TrendService {
if (baseCrossInfoPO != null) {
greenwaveCrossMetricsVO.setCrossName(baseCrossInfoPO.getName());
}
String currentCrossId = crossId;
long currentSeconds = timeStamp;
long preSeconds = currentSeconds - 60 * 5;
// 获取当前方案
Integer sectionId = greenwaveCrossPO.getSectionId();
CrossSectionPO crossSectionPO = baseCrossSectionMapper.selectById(sectionId);
Integer schemeId = crossSectionPO.getSchemeId();
// 获取协调相位对应的车道集合
BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectById(schemeId);
Integer coordPhaseID = baseCrossSchemePO.getCoordPhase();
List<CrossPhaseLightsPO> crossPhaseLightsPOList = crossPhaseLightsMapper.selectByPhaseId(coordPhaseID);
List<Integer> lightIds = crossPhaseLightsPOList.stream()
.map(CrossPhaseLightsPO::getLightsId)
.collect(Collectors.toList());
List<CrossLaneLightsPO> crossLaneLightsPOList = baseCrossLaneLightsMapper.selectByLightIds(lightIds);
List<String> laneIds = crossLaneLightsPOList.stream()
.map(CrossLaneLightsPO::getLaneId)
.collect(Collectors.toList());
List<CrossBaseLaneInfoPO> lanePOList = crossBaseLaneInfoMapper.selectBatchIds(laneIds);
// 构造方向+转向列表
List<List<Integer>> dirTurnList = new ArrayList<>();
for (CrossBaseLaneInfoPO lanePO : lanePOList) {
Integer dir = lanePO.getDir();
Integer turn = lanePO.getTurn();
List<Integer> dirTurn = new ArrayList<>();
dirTurn.add(dir);
dirTurn.add(turn);
dirTurnList.add(dirTurn);
}
// 计算指标
List<CrossTurnDataHistPO> listForNoPark = new ArrayList<>();
for (List<Integer> dirTurn : dirTurnList) {
Integer dir = dirTurn.get(0);
Integer turnInt = dirTurn.get(1);
String turn = TurnConvertEnum.getCodeByKey(turnInt);
CrossTurnDataHistPO noPark =
crossTurnDataHistMapper.selectNoPark(currentCrossId, dir, turn, currentSeconds, preSeconds);
if (noPark != null) {
listForNoPark.add(noPark);
}
List<Integer> coordDirList = new ArrayList<Integer>();
int direction = greenwaveInfoPO.getDir();
if (direction == 0) { // 正向
Integer dirCode = BaseEnum.SignalDirectionEnum.getCodeByName(dirName1);
dirCode = convertDirCode(dirName1, crossId, dirCode);
coordDirList.add(dirCode);
} else if (direction == 2) { // 反向
Integer dirCode = BaseEnum.SignalDirectionEnum.getCodeByName(dirName2);
dirCode = convertDirCode(dirName2, crossId, dirCode);
coordDirList.add(dirCode);
} else { // 双向
Integer dirCode1 = BaseEnum.SignalDirectionEnum.getCodeByName(dirName1);
dirCode1 = convertDirCode(dirName1, crossId, dirCode1);
coordDirList.add(dirCode1);
Integer dirCode2 = BaseEnum.SignalDirectionEnum.getCodeByName(dirName2);
dirCode2 = convertDirCode(dirName1, crossId, dirCode2);
coordDirList.add(dirCode2);
}
List<CrossTurnDataHistPO> allPO =
crossTurnDataHistMapper.selectByCrossId(currentCrossId, currentSeconds, preSeconds);
List<CrossTurnDataHistPO> listForPhaseQueue = getPhaseQueueList(listForNoPark, allPO);
setMetrics(greenwaveCrossMetricsVO, greenwaveCrossPO, listForNoPark, listForPhaseQueue);
int currentSeconds = (int) (timeStamp / 1000);
int preSeconds = (int) (currentSeconds - 60 * 5);
List<CrossDirDataHistPO> crossDirDataHistPOList =
crossDirDataHistMapper.selectByCrossIdAndStartEnd(crossId, preSeconds, currentSeconds);
greenwaveCrossMetricsVO.setNoparkPassRate(calcNoparkPassRate(crossDirDataHistPOList, coordDirList));
greenwaveCrossMetricsVO.setUncoordinatePhaseQueue(
calcUncoordinatePhaseQueue(crossDirDataHistPOList, coordDirList));
Double nextCrossLen = greenwaveCrossPO.getNextCrossLen();
greenwaveCrossMetricsVO.setTrvalTime(calcTravelTime(crossDirDataHistPOList, coordDirList, nextCrossLen));
res.add(greenwaveCrossMetricsVO);
}
return res;
}
private Integer calcTravelTime(List<CrossDirDataHistPO> crossDirDataHistPOList, List<Integer> coordDirList,
Double nextCrossLen) {
double average = crossDirDataHistPOList.stream()
.filter(po -> po.getInOutType() == 1 && coordDirList.contains(po.getDirType()))
.mapToDouble(CrossDirDataHistPO::getSpeed)
.average()
.orElse(0.0);
if (average != 0.0) {
return (int) (nextCrossLen / average);
} else {
return 0;
}
}
private Integer calcUncoordinatePhaseQueue(
List<CrossDirDataHistPO> crossDirDataHistPOList, List<Integer> coordDirList) {
double average = crossDirDataHistPOList.stream()
.filter(po -> po.getInOutType() == 1 && !coordDirList.contains(po.getDirType()))
.mapToDouble(CrossDirDataHistPO::getQueueLength)
.average()
.orElse(0.0);
return (int) average;
}
private Integer calcNoparkPassRate(List<CrossDirDataHistPO> crossDirDataHistPOList, List<Integer> coordDirList) {
double average = crossDirDataHistPOList.stream()
.filter(po -> po.getInOutType() == 1 && coordDirList.contains(po.getDirType()))
.mapToDouble(CrossDirDataHistPO::getNoStopRate)
.average()
.orElse(0.0);
return (int) (average * 100);
}
private Integer convertDirCode(String dirStr, String crossId, Integer dirCode) {
if (Objects.equals(crossId, "13NF80B5QN0")) {
// 霞景路方向转换
if (Objects.equals(dirStr, "东")) {
dirCode = 2; // 东北
} else if (Objects.equals(dirStr, "西")) {
dirCode = 6; // 西南
}
} else if (Objects.equals(crossId, "13NGH0B5RC0")) {
// 洪山路方向转换
if (Objects.equals(dirStr, "西")) {
dirCode = 6; // 西南
}
}
return dirCode;
}
private List<CrossTurnDataHistPO> getPhaseQueueList(
List<CrossTurnDataHistPO> listForNoPark, List<CrossTurnDataHistPO> allPO) {
// 去除协调相位,用于计算非协调相位二次排队
......@@ -1010,7 +1055,22 @@ public class TrendServiceImpl implements TrendService {
private List<GreenWaveCrossMonitorVO> buildRes(List<GreenwaveCrossPO> greenwaveCrossPOList) {
List<GreenWaveCrossMonitorVO> res = new ArrayList<>();
for (GreenwaveCrossPO greenwaveCrossPO : greenwaveCrossPOList) {
// 根据路口ID去重,并按路口顺序号排序
Map<String, GreenwaveCrossPO> uniqueMap = greenwaveCrossPOList.stream()
.collect(Collectors.toMap(
GreenwaveCrossPO::getCrossId, // 使用crossId作为键
Function.identity(), // 使用对象本身作为值
(existing, replacement) -> existing)); // 如果有重复的key, 保留第一个
// 从uniqueMap中获取去重后的记录列表
List<GreenwaveCrossPO> uniqueList = new ArrayList<>(uniqueMap.values());
// 根据sort属性对uniqueList进行排序
uniqueList.sort(Comparator.comparingInt(GreenwaveCrossPO::getSort));
for (GreenwaveCrossPO greenwaveCrossPO : uniqueList) {
GreenWaveCrossMonitorVO greenWaveCrossMonitorVO = new GreenWaveCrossMonitorVO();
String crossId = greenwaveCrossPO.getCrossId();
......@@ -1041,8 +1101,6 @@ public class TrendServiceImpl implements TrendService {
List<AbnormalCrossDetailVO.DirDataElement> dirData = new ArrayList<>();
// 获取当前时间之前40分钟的10位时间戳
long currentSeconds = DateUtil.currentSeconds();
// todo 测试,当前时间固定为 1676082536
currentSeconds = 1676082536;
long preSeconds = currentSeconds - 40 * 60;
List<CrossDirDataHistPO> crossDirDataHistPOList =
crossDirDataHistMapper.selectByCrossIdAndTimestamp(crossId, preSeconds);
......
......@@ -78,10 +78,7 @@
on t1.cross_id = t2.id
<where>
<if test="status != null">
and (t1.status = #{status}
<if test="status == 1"> and t1.is_unbalance = 1 </if>
<if test="status == 2"> and t1.is_congestion = 1 </if>
<if test="status == 3"> and t1.is_spillover = 1 </if>)
and t1.status = #{status}
</if>
<if test="name != null and name != ''">
and t2.name like concat('%',#{name},'%')
......
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