Commit 684eef49 authored by duanruiming's avatar duanruiming

[update] 实时监控异常优化

parent 44545b62
...@@ -81,7 +81,10 @@ public class CrossTurnDataRealtimeDTO { ...@@ -81,7 +81,10 @@ public class CrossTurnDataRealtimeDTO {
currentVehheadTime = 2.8; currentVehheadTime = 2.8;
} }
// 排队车辆 // 排队车辆
Double queuedVehicles = entity.getQueueLength() / currentVehheadDist; Double queuedVehicles = null;
if (Objects.nonNull(entity.getQueueLength())) {
queuedVehicles = entity.getQueueLength() / currentVehheadDist;
}
// 通行时长 // 通行时长
Double calPassTime = queuedVehicles * currentVehheadTime; Double calPassTime = queuedVehicles * currentVehheadTime;
return calPassTime; return calPassTime;
......
...@@ -2,8 +2,11 @@ package net.wanji.opt.po.trend; ...@@ -2,8 +2,11 @@ package net.wanji.opt.po.trend;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import net.wanji.opt.dto.CrossDirInfoDTO;
import net.wanji.opt.dto.CrossTurnInfoDTO;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @author hfx * @author hfx
...@@ -87,4 +90,10 @@ public class CrossDataRealtimePO { ...@@ -87,4 +90,10 @@ public class CrossDataRealtimePO {
/** 修改时间 */ /** 修改时间 */
@ApiModelProperty(value = "修改时间",notes = "") @ApiModelProperty(value = "修改时间",notes = "")
private Date gmtModified ; private Date gmtModified ;
@ApiModelProperty(name = "路口方向列表",notes = "")
List<CrossDirInfoDTO> dirList;
@ApiModelProperty(name = "路口转向列表",notes = "")
List<CrossTurnInfoDTO> turnList;
} }
package net.wanji.opt.service; package net.wanji.opt.service;
import net.wanji.opt.dto.CrossDataRealtimeDTO; import net.wanji.opt.po.trend.CrossDataRealtimePO;
import java.util.List; import java.util.List;
...@@ -16,7 +16,7 @@ public interface CrossOptimizeService { ...@@ -16,7 +16,7 @@ public interface CrossOptimizeService {
* 路口实时优化 * 路口实时优化
* @return * @return
*/ */
String realtimeOptimize(List<CrossDataRealtimeDTO> abnormalCrossList); String realtimeOptimize(List<CrossDataRealtimePO> abnormalCrossList);
/** /**
* 路口方案优化 * 路口方案优化
......
...@@ -6,7 +6,6 @@ import net.wanji.common.enums.CrossStatusEnum; ...@@ -6,7 +6,6 @@ import net.wanji.common.enums.CrossStatusEnum;
import net.wanji.common.enums.TurnConvertEnum; import net.wanji.common.enums.TurnConvertEnum;
import net.wanji.common.enums.WeekEnum; import net.wanji.common.enums.WeekEnum;
import net.wanji.common.framework.Constants; import net.wanji.common.framework.Constants;
import net.wanji.common.utils.tool.BeanListUtils;
import net.wanji.common.utils.tool.DateUtil; import net.wanji.common.utils.tool.DateUtil;
import net.wanji.common.utils.tool.StringUtils; import net.wanji.common.utils.tool.StringUtils;
import net.wanji.databus.dao.entity.RidInfoEntity; import net.wanji.databus.dao.entity.RidInfoEntity;
...@@ -23,6 +22,7 @@ import net.wanji.opt.dto.*; ...@@ -23,6 +22,7 @@ import net.wanji.opt.dto.*;
import net.wanji.opt.po.base.CrossPhasePO; import net.wanji.opt.po.base.CrossPhasePO;
import net.wanji.opt.po.base.CrossSchemeOptLogPO; import net.wanji.opt.po.base.CrossSchemeOptLogPO;
import net.wanji.opt.po.base.CrossSchemePO; import net.wanji.opt.po.base.CrossSchemePO;
import net.wanji.opt.po.trend.CrossDataRealtimePO;
import net.wanji.opt.service.CrossOptimizeService; import net.wanji.opt.service.CrossOptimizeService;
import net.wanji.opt.service.CrossSchedulesService; import net.wanji.opt.service.CrossSchedulesService;
import net.wanji.opt.service.CrossSchemeService; import net.wanji.opt.service.CrossSchemeService;
...@@ -66,7 +66,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -66,7 +66,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
@Override @Override
@Transactional @Transactional
public String realtimeOptimize(List<CrossDataRealtimeDTO> abnormalCrossList) { public String realtimeOptimize(List<CrossDataRealtimePO> abnormalCrossList) {
try { try {
// 相位配时信息,key:路口编号_方向类型_转向类型,value 相位配时信息 // 相位配时信息,key:路口编号_方向类型_转向类型,value 相位配时信息
...@@ -79,7 +79,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -79,7 +79,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
// 恢复优化路口原始方案:上一批次优化后,路口正常需要恢复原始方案 // 恢复优化路口原始方案:上一批次优化后,路口正常需要恢复原始方案
restoreOptCrossOriSchema(abnormalCrossList, phaseMap); restoreOptCrossOriSchema(abnormalCrossList, phaseMap);
Map<Integer, List<CrossDataRealtimeDTO>> crossDataMap = abnormalCrossList.stream().collect(Collectors.groupingBy(CrossDataRealtimeDTO::getStatus)); Map<Integer, List<CrossDataRealtimePO>> crossDataMap = abnormalCrossList.stream().collect(Collectors.groupingBy(CrossDataRealtimePO::getStatus));
abnormalCrossList = crossDataMap.get(CrossStatusEnum.SPILLOVER.getCode()); // 溢出 abnormalCrossList = crossDataMap.get(CrossStatusEnum.SPILLOVER.getCode()); // 溢出
if (abnormalCrossList != null && !abnormalCrossList.isEmpty()) { if (abnormalCrossList != null && !abnormalCrossList.isEmpty()) {
spilloverOpt(abnormalCrossList, turnDataRealtime, phaseMap); spilloverOpt(abnormalCrossList, turnDataRealtime, phaseMap);
...@@ -106,13 +106,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -106,13 +106,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param turnDataRealtimeMap * @param turnDataRealtimeMap
* @param phaseMap * @param phaseMap
*/ */
private void spilloverOpt(List<CrossDataRealtimeDTO> abnormalCrossList, Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtimeMap, private void spilloverOpt(List<CrossDataRealtimePO> abnormalCrossList, Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtimeMap,
Map<String, CrossPhaseDTO> phaseMap) throws Exception { Map<String, CrossPhaseDTO> phaseMap) throws Exception {
Map<String, List<CrossDataRealtimeDTO>> congestCrossMap = abnormalCrossList.stream().collect(Collectors.groupingBy(CrossDataRealtimeDTO::getCrossId)); Map<String, List<CrossDataRealtimePO>> congestCrossMap = abnormalCrossList.stream().collect(Collectors.groupingBy(CrossDataRealtimePO::getCrossId));
String crossId; String crossId;
for (CrossDataRealtimeDTO cross : abnormalCrossList) { for (CrossDataRealtimePO cross : abnormalCrossList) {
crossId = cross.getCrossId(); crossId = cross.getCrossId();
// 判断信号机是否在线 todo 是否某些故障也不需要优化 // 判断信号机是否在线 todo 是否某些故障也不需要优化
...@@ -178,13 +178,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -178,13 +178,13 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param turnDataRealtimeMap * @param turnDataRealtimeMap
* @param phaseMap * @param phaseMap
*/ */
private void congestionOpt(List<CrossDataRealtimeDTO> abnormalCrossList, Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtimeMap, private void congestionOpt(List<CrossDataRealtimePO> abnormalCrossList, Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtimeMap,
Map<String, CrossPhaseDTO> phaseMap) throws Exception { Map<String, CrossPhaseDTO> phaseMap) throws Exception {
Map<String, List<CrossDataRealtimeDTO>> congestCrossMap = abnormalCrossList.stream().collect(Collectors.groupingBy(CrossDataRealtimeDTO::getCrossId)); Map<String, List<CrossDataRealtimePO>> congestCrossMap = abnormalCrossList.stream().collect(Collectors.groupingBy(CrossDataRealtimePO::getCrossId));
String crossId; String crossId;
for (CrossDataRealtimeDTO cross : abnormalCrossList) { for (CrossDataRealtimePO cross : abnormalCrossList) {
crossId = cross.getCrossId(); crossId = cross.getCrossId();
// 判断信号机是否在线 todo 是否某些故障也不需要优化 // 判断信号机是否在线 todo 是否某些故障也不需要优化
...@@ -246,7 +246,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -246,7 +246,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param cross * @param cross
* @return * @return
*/ */
private static List<String> getOptCrossDirTurnList(CrossDataRealtimeDTO cross) { private static List<String> getOptCrossDirTurnList(CrossDataRealtimePO cross) {
List<String> crossIdDirTurnList = new ArrayList<>(); List<String> crossIdDirTurnList = new ArrayList<>();
List<CrossDirInfoDTO> dirList = cross.getDirList(); List<CrossDirInfoDTO> dirList = cross.getDirList();
List<CrossTurnInfoDTO> turnList = cross.getTurnList(); List<CrossTurnInfoDTO> turnList = cross.getTurnList();
...@@ -274,8 +274,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -274,8 +274,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param abnormalCrossList * @param abnormalCrossList
* @param phaseMap * @param phaseMap
*/ */
private static void setTurnList(List<CrossDataRealtimeDTO> abnormalCrossList, Map<String, CrossPhaseDTO> phaseMap) { private static void setTurnList(List<CrossDataRealtimePO> abnormalCrossList, Map<String, CrossPhaseDTO> phaseMap) {
for (CrossDataRealtimeDTO crossDataRealtimeDTO : abnormalCrossList) { for (CrossDataRealtimePO crossDataRealtimeDTO : abnormalCrossList) {
List<CrossTurnInfoDTO> turnList = new ArrayList<>(); List<CrossTurnInfoDTO> turnList = new ArrayList<>();
List<CrossDirInfoDTO> dirList = new ArrayList<>(); List<CrossDirInfoDTO> dirList = new ArrayList<>();
for (Map.Entry<String, CrossPhaseDTO> entry : phaseMap.entrySet()) { for (Map.Entry<String, CrossPhaseDTO> entry : phaseMap.entrySet()) {
...@@ -296,6 +296,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -296,6 +296,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
crossTurnInfoDTO.setTurnType(turn); crossTurnInfoDTO.setTurnType(turn);
crossTurnInfoDTO.setInDir(Integer.valueOf(dir)); crossTurnInfoDTO.setInDir(Integer.valueOf(dir));
crossTurnInfoDTO.setCrossId(crossId);
turnList.add(crossTurnInfoDTO); turnList.add(crossTurnInfoDTO);
} }
} }
...@@ -309,8 +310,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -309,8 +310,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* *
* @param abnormalCrossList * @param abnormalCrossList
*/ */
private void restoreOptCrossOriSchema(List<CrossDataRealtimeDTO> abnormalCrossList, Map<String, CrossPhaseDTO> phaseMap) throws Exception { private void restoreOptCrossOriSchema(List<CrossDataRealtimePO> abnormalCrossList, Map<String, CrossPhaseDTO> phaseMap) throws Exception {
List<String> abnormalCrossIdList = abnormalCrossList.stream().map(CrossDataRealtimeDTO::getCrossId).collect(Collectors.toList()); List<String> abnormalCrossIdList = abnormalCrossList.stream().map(CrossDataRealtimePO::getCrossId).collect(Collectors.toList());
for (String optCrossId : CROSS_OPT) { for (String optCrossId : CROSS_OPT) {
if (!abnormalCrossIdList.contains(optCrossId)) { if (!abnormalCrossIdList.contains(optCrossId)) {
// 下发原始方案 // 下发原始方案
...@@ -331,11 +332,11 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -331,11 +332,11 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param turnDataRealtimeMap 路口转向实时数据 * @param turnDataRealtimeMap 路口转向实时数据
* @param phaseMap 路口相位配时数据 * @param phaseMap 路口相位配时数据
*/ */
private void unbalanceOpt(List<CrossDataRealtimeDTO> abnormalCrossList, Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtimeMap, private void unbalanceOpt(List<CrossDataRealtimePO> abnormalCrossList, Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtimeMap,
Map<String, CrossPhaseDTO> phaseMap) throws Exception { Map<String, CrossPhaseDTO> phaseMap) throws Exception {
String crossId; String crossId;
for (CrossDataRealtimeDTO cross : abnormalCrossList) { for (CrossDataRealtimePO cross : abnormalCrossList) {
crossId = cross.getCrossId(); crossId = cross.getCrossId();
// 判断信号机是否在线 todo 是否某些故障也不需要优化 // 判断信号机是否在线 todo 是否某些故障也不需要优化
...@@ -427,11 +428,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -427,11 +428,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
crossSchemeOptLogPO.setOriGreenTime(crossPhaseDTO.getGreenTime()); crossSchemeOptLogPO.setOriGreenTime(crossPhaseDTO.getGreenTime());
} }
} }
insertList.add(crossSchemeOptLogPO); insertList.add(crossSchemeOptLogPO);
} }
// crossSchemeOptLogMapper.insertBatch(insertList); crossSchemeOptLogMapper.insertBatch(insertList);
} }
/** /**
...@@ -455,28 +454,51 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -455,28 +454,51 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
SchemeSendVO schemeSendVO = new SchemeSendVO(); SchemeSendVO schemeSendVO = new SchemeSendVO();
List<SchemeSendVO.Pattern> patternList = new ArrayList<>(); List<SchemeSendVO.Pattern> patternList = new ArrayList<>();
BeanListUtils.populateList(crossSchemePOS, patternList, SchemeSendVO.Pattern.class); crossSchemePOS.forEach(crossSchemePO -> {
schemeSendVO.setPatternList(patternList); SchemeSendVO.Pattern pattern = new SchemeSendVO.Pattern();
schemeSendVO.setCrossCode(crossId); pattern.setPatternName("实时监测优化方案".concat(crossSchemePO.getSchemeNo()));
pattern.setPatternNo(String.valueOf(crossSchemePO.getId()));
List<SchemeSendVO.Pattern.Ring> rings = new ArrayList<>(); pattern.setCycle(String.valueOf(crossSchemePO.getCycle()));
ringNoPhasePOMap.entrySet().forEach(entry -> { pattern.setOffset(String.valueOf(crossSchemePO.getOffset()));
SchemeSendVO.Pattern.Ring ring = new SchemeSendVO.Pattern.Ring(); pattern.setCoordPhase(String.valueOf(crossSchemePO.getCoordPhase()));
List<SchemeSendVO.Pattern.Ring.Phase> phaseList = new ArrayList<>();
List<CrossPhasePO> value = entry.getValue(); List<SchemeSendVO.Pattern.Ring> rings = new ArrayList<>();
BeanListUtils.populateList(value, phaseList, SchemeSendVO.Pattern.Ring.Phase.class); ringNoPhasePOMap.entrySet().forEach(entry -> {
ring.setRingNo(String.valueOf(entry.getKey())); SchemeSendVO.Pattern.Ring ring = new SchemeSendVO.Pattern.Ring();
// 在原始方案基础绿灯时间+可优化时间 List<SchemeSendVO.Pattern.Ring.Phase> phaseList = new ArrayList<>();
if (!CollectionUtils.isEmpty(phaseTimeOptResultMap)) { List<CrossPhasePO> value = entry.getValue();
phaseList.forEach(phaseInfo -> { value.forEach(crossPhasePO -> {
Integer optTime = phaseTimeOptResultMap.get(phaseInfo.getPhaseNo()); SchemeSendVO.Pattern.Ring.Phase phase = new SchemeSendVO.Pattern.Ring.Phase();
String greenTime = phaseInfo.getGreenTime(); phase.setPhaseNo(crossPhasePO.getPhaseNo());
phaseInfo.setGreenTime(greenTime + optTime); phase.setPhaseName(crossPhasePO.getName());
}); phase.setSort(String.valueOf(crossPhasePO.getSort()));
} phase.setControlMode(String.valueOf(crossPhasePO.getControlMode()));
ring.setPhaseList(phaseList); phase.setMinGreenTime(String.valueOf(crossPhasePO.getMinGreenTime()));
rings.add(ring); phase.setMaxGreenTime(String.valueOf(crossPhasePO.getMaxGreenTime()));
}); phase.setPhaseTime(String.valueOf(crossPhasePO.getPhaseTime()));
phase.setGreenTime(String.valueOf(crossPhasePO.getGreenTime()));
phase.setGreenFlashTime(String.valueOf(crossPhasePO.getGreenFlashTime()));
phase.setPedFlashTime(String.valueOf(crossPhasePO.getPedFlashTime()));
phase.setYellowTime(String.valueOf(crossPhasePO.getYellowTime()));
phase.setRedTime(String.valueOf(crossPhasePO.getRedTime()));
phaseList.add(phase);
// 在原始方案基础绿灯时间+可优化时间
if (!phaseTimeOptResultMap.isEmpty()) {
phaseList.forEach(phaseInfo -> {
Integer optTime = phaseTimeOptResultMap.get(phaseInfo.getPhaseNo());
String greenTime = phaseInfo.getGreenTime();
phaseInfo.setGreenTime(greenTime + optTime);
});
}
});
ring.setRingNo(String.valueOf(entry.getKey()));
ring.setPhaseList(phaseList);
rings.add(ring);
});
pattern.setRings(rings);
patternList.add(pattern);
}
);
schemeSendVO.setCrossCode(crossId); schemeSendVO.setCrossCode(crossId);
schemeSendVO.setPatternList(patternList); schemeSendVO.setPatternList(patternList);
...@@ -652,11 +674,19 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -652,11 +674,19 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
crossId = section.getCrossId(); crossId = section.getCrossId();
CrossSchemeDTO scheme = schemeMap.get(section.getSchemeId()); // 方案信息 CrossSchemeDTO scheme = schemeMap.get(section.getSchemeId()); // 方案信息
if (Objects.isNull(scheme.getPhaseInfos())) {
log.error("{}-路口, {}-方案,方案中相位信息不能为空", crossId, scheme.getId());
throw new Exception("方案中相位信息不能为空");
}
for (CrossPhaseDTO phase : scheme.getPhaseInfos()) { // 相位信息列表 for (CrossPhaseDTO phase : scheme.getPhaseInfos()) { // 相位信息列表
for (CrossLightsDTO lights : phase.getLightsInfos()) { // 灯组信息列表 for (CrossLightsDTO lights : phase.getLightsInfos()) { // 灯组信息列表
dir = lights.getDir(); dir = lights.getDir();
if (Objects.isNull(lights.getLaneInfos())) {
log.error("{}-路口, {}-方案,{}-灯组,灯组中车道信息不能为空", crossId, scheme.getId(), lights.getId());
throw new Exception("灯组中车道信息不能为空");
}
for (LaneInfoDTO lane : lights.getLaneInfos()) { for (LaneInfoDTO lane : lights.getLaneInfos()) {
// 车道转向转换为转向类型,并去重 // 车道转向转换为转向类型,并去重
turnArr = TurnConvertEnum.getCodeByKey(lane.getTurn()).split(Constants.SystemParam.SEPARATOR_UNDER_LINE); turnArr = TurnConvertEnum.getCodeByKey(lane.getTurn()).split(Constants.SystemParam.SEPARATOR_UNDER_LINE);
...@@ -725,25 +755,20 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -725,25 +755,20 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* *
* @return * @return
*/ */
public Map<String, List<CrossTurnDataRealtimeDTO>> listTurnDataRealtime(List<CrossDataRealtimeDTO> abnormalCrossList) { public Map<String, List<CrossTurnDataRealtimeDTO>> listTurnDataRealtime(List<CrossDataRealtimePO> abnormalCrossList) {
Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtimeDTOList = new HashMap<>(); Map<String, List<CrossTurnDataRealtimeDTO>> turnDataRealtimeDTOList = new HashMap<>();
Map<String, List<CrossDataRealtimeDTO>> abnormalCrossGroupMap = abnormalCrossList.stream().collect(Collectors.groupingBy(CrossDataRealtimeDTO::getCrossId)); abnormalCrossList.forEach(entry -> {
abnormalCrossGroupMap.entrySet().forEach(entry -> {
String crossId = entry.getKey();
List<CrossDataRealtimeDTO> realTimeData = entry.getValue();
List<CrossTurnDataRealtimeDTO> crossTurnDataRealtimeDTOS = new ArrayList<>(); List<CrossTurnDataRealtimeDTO> crossTurnDataRealtimeDTOS = new ArrayList<>();
realTimeData.forEach(realData -> { String crossId = entry.getCrossId();
List<CrossTurnInfoDTO> turnList = entry.getTurnList();
List<CrossTurnInfoDTO> turnList = realData.getTurnList(); turnList.forEach(crossTurnInfoDTO -> {
turnList.forEach(crossTurnInfoDTO -> { CrossTurnDataRealtimeDTO crossTurnDataRealtimeDTO = new CrossTurnDataRealtimeDTO();
CrossTurnDataRealtimeDTO crossTurnDataRealtimeDTO = new CrossTurnDataRealtimeDTO(); BeanUtils.copyProperties(entry, crossTurnDataRealtimeDTO);
BeanUtils.copyProperties(realData, crossTurnDataRealtimeDTO); crossTurnDataRealtimeDTO.setTurnType(crossTurnInfoDTO.getTurnType());
crossTurnDataRealtimeDTO.setTurnType(crossTurnInfoDTO.getTurnType()); crossTurnDataRealtimeDTO.setInDir(crossTurnInfoDTO.getInDir());
crossTurnDataRealtimeDTO.setInDir(crossTurnInfoDTO.getInDir()); crossTurnDataRealtimeDTO.setOutDir(crossTurnInfoDTO.getOutDir());
crossTurnDataRealtimeDTO.setOutDir(crossTurnInfoDTO.getOutDir()); crossTurnDataRealtimeDTOS.add(crossTurnDataRealtimeDTO);
crossTurnDataRealtimeDTOS.add(crossTurnDataRealtimeDTO);
});
}); });
turnDataRealtimeDTOList.put(crossId, crossTurnDataRealtimeDTOS); turnDataRealtimeDTOList.put(crossId, crossTurnDataRealtimeDTOS);
}); });
......
...@@ -4,7 +4,6 @@ import lombok.extern.slf4j.Slf4j; ...@@ -4,7 +4,6 @@ import lombok.extern.slf4j.Slf4j;
import net.wanji.common.enums.CrossStatusEnum; import net.wanji.common.enums.CrossStatusEnum;
import net.wanji.common.framework.Constants; import net.wanji.common.framework.Constants;
import net.wanji.opt.dao.mapper.trend.CrossDataRealtimeMapper; import net.wanji.opt.dao.mapper.trend.CrossDataRealtimeMapper;
import net.wanji.opt.dto.CrossDataRealtimeDTO;
import net.wanji.opt.po.trend.CrossDataRealtimePO; import net.wanji.opt.po.trend.CrossDataRealtimePO;
import net.wanji.opt.service.CrossOptimizeService; import net.wanji.opt.service.CrossOptimizeService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -46,7 +45,7 @@ public class CrossMonitorTask { ...@@ -46,7 +45,7 @@ public class CrossMonitorTask {
// } // }
// 获取所有信控路口异常数据(失衡/拥堵/溢出/死锁) // 获取所有信控路口异常数据(失衡/拥堵/溢出/死锁)
List<CrossDataRealtimeDTO> abnormalCrossList = listAbnormalCross(crossDataRealtimePOList); List<CrossDataRealtimePO> abnormalCrossList = listAbnormalCross(crossDataRealtimePOList);
log.info("加载异常路口:{}条", abnormalCrossList.size()); log.info("加载异常路口:{}条", abnormalCrossList.size());
// if(abnormalCrossList.isEmpty()) { // if(abnormalCrossList.isEmpty()) {
// return ; // return ;
...@@ -62,15 +61,15 @@ public class CrossMonitorTask { ...@@ -62,15 +61,15 @@ public class CrossMonitorTask {
* *
* @return * @return
*/ */
public List<CrossDataRealtimeDTO> listAbnormalCross(List<CrossDataRealtimePO> crossDataRealtimePOList) { public List<CrossDataRealtimePO> listAbnormalCross(List<CrossDataRealtimePO> crossDataRealtimePOList) {
List<CrossDataRealtimeDTO> dtoList = new ArrayList<>(); List<CrossDataRealtimePO> dtoList = new ArrayList<>();
CrossDataRealtimeDTO dto = null; CrossDataRealtimePO dto = null;
int status = 0; int status = 0;
for (CrossDataRealtimePO po : crossDataRealtimePOList) { for (CrossDataRealtimePO po : crossDataRealtimePOList) {
// 获取失衡、拥堵、溢出路口数据 // 获取失衡、拥堵、溢出路口数据
if (Constants.SystemParam.NO.equals(po.getIsSpillover()) || Constants.SystemParam.NO.equals(po.getIsCongestion()) || Constants.SystemParam.NO.equals(po.getIsUnbalance())) { if (Constants.SystemParam.NO.equals(po.getIsSpillover()) && Constants.SystemParam.NO.equals(po.getIsCongestion()) && Constants.SystemParam.NO.equals(po.getIsUnbalance())) {
continue; continue;
} }
...@@ -81,7 +80,7 @@ public class CrossMonitorTask { ...@@ -81,7 +80,7 @@ public class CrossMonitorTask {
} else if (Constants.SystemParam.YES.equals(po.getIsUnbalance())) { // 失衡 } else if (Constants.SystemParam.YES.equals(po.getIsUnbalance())) { // 失衡
status = CrossStatusEnum.UNBALANCE.getCode(); status = CrossStatusEnum.UNBALANCE.getCode();
} }
dto = new CrossDataRealtimeDTO(); dto = new CrossDataRealtimePO();
BeanUtils.copyProperties(po, dto); BeanUtils.copyProperties(po, dto);
dto.setCrossId(po.getCrossId()); dto.setCrossId(po.getCrossId());
dto.setStatus(status); dto.setStatus(status);
......
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