Commit fecb00e9 authored by duanruiming's avatar duanruiming

[add] 绿波干线优化时间;列表优化

parent bf8a679a
......@@ -430,21 +430,23 @@ public class StrategyControlServiceImpl implements StrategyControlService {
queryWrapper.ge(StrategyCrossResultEntity::getIssueTime, midNight);
queryWrapper.eq(StrategyCrossResultEntity::getResponseCode, 200);
List<StrategyCrossResultEntity> resultEntityList = strategyCrossResultMapper.selectList(queryWrapper);
int optCount = 0;
int optTime = 0;
if (!CollectionUtils.isEmpty(resultEntityList)) {
// 1:绿灯空放 2:失衡 3:溢出
int optCount = 0;
int optTime = 0;
Map<Integer, List<StrategyCrossResultEntity>> typeMap = resultEntityList.stream().collect(Collectors.groupingBy(StrategyCrossResultEntity::getCurrentAlgo));
for (Map.Entry<Integer, List<StrategyCrossResultEntity>> entry : typeMap.entrySet()) {
Integer type = entry.getKey();
List<StrategyCrossResultEntity> value = entry.getValue();
optCount = value.size();
optCount += value.size();
for (StrategyCrossResultEntity entity : value) {
if (Objects.equals(1, type)) {
optTime += Math.abs(entity.getExtendTime());
}
if (Objects.equals(2, type)) {
optTime += entity.getDuration();
if (Objects.nonNull(entity.getDuration())) {
optTime += entity.getDuration();
}
}
if (Objects.equals(3, type)) {
Integer rtnType = entity.getRtnType();
......@@ -457,10 +459,27 @@ public class StrategyControlServiceImpl implements StrategyControlService {
}
}
}
strategyOptTimesVO.setCount(optCount);
strategyOptTimesVO.setTimes(optTime);
}
// 绿波优化次数
int greenOptCount = 0;
int greenOptTime = 0;
LambdaQueryWrapper<StrategyGreenOptHistEntity> greenQuery = new LambdaQueryWrapper<>();
greenQuery.ge(StrategyGreenOptHistEntity::getControlTime, midNight);
greenQuery.ge(StrategyGreenOptHistEntity::getResponseCode, 200);
List<StrategyGreenOptHistEntity> entities = strategyGreenOptHistMapper.selectList(greenQuery);
if (!CollectionUtils.isEmpty(entities)) {
for (StrategyGreenOptHistEntity entity : entities) {
String controlTime = entity.getControlTime();
Integer controlMethod = entity.getControlMethod();
if (!Objects.equals(-1, controlMethod)) {
Date parse = DateUtil.parse(controlTime, "yyyy-MM-dd HH:mm:ss");
greenOptTime += entity.getControlDuration();
greenOptCount += 1;
}
}
}
strategyOptTimesVO.setCount(optCount + greenOptCount / 2);
strategyOptTimesVO.setTimes(optTime + greenOptTime / 2);
return JsonViewObject.newInstance().success(strategyOptTimesVO);
}
......@@ -549,8 +568,8 @@ public class StrategyControlServiceImpl implements StrategyControlService {
queryWrapper.ge(StrategyGreenOptHistEntity::getControlTime, date);
queryWrapper.orderByAsc(StrategyGreenOptHistEntity::getControlTime);
List<StrategyGreenOptHistEntity> entities = strategyGreenOptHistMapper.selectList(queryWrapper);
String optMethod = "效率提升";
if (!CollectionUtils.isEmpty(entities)) {
String optMethod = "效率提升";
Map<Integer, Optional<StrategyGreenOptHistEntity>> groupMap = entities.stream().collect(Collectors.groupingBy(StrategyGreenOptHistEntity::getGreenId, Collectors.maxBy(Comparator.comparing(StrategyGreenOptHistEntity::getControlTime))));
for (Map.Entry<Integer, Optional<StrategyGreenOptHistEntity>> entry : groupMap.entrySet()) {
Integer greenId = entry.getKey();
......@@ -594,7 +613,23 @@ public class StrategyControlServiceImpl implements StrategyControlService {
results.add(ext);
}
}
} else {
Map<Integer, GreenwaveInfoPO> greenWaveMap = GreenWaveInfoCache.greenWaveMap;
for (Map.Entry<Integer, GreenwaveInfoPO> entry : greenWaveMap.entrySet()) {
Integer greenId = entry.getKey();
GreenwaveInfoPO value = entry.getValue();
StrategyControlDataExt ext = new StrategyControlDataExt();
ext.setBizId(String.valueOf(greenId));
ext.setCrossName(value.getName());
ext.setWkt(value.getWkt());
ext.setOptMethod(optMethod);
ext.setStrategyName("动态绿波");
ext.setOptStatus("未优化");
ext.setStatus(0);
results.add(ext);
}
}
Collections.sort(results, Comparator.comparingInt(StrategyControlDataExt::getStatus).reversed());
results.stream().distinct().collect(Collectors.toList());
return results;
......
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