Commit f9e6b0db authored by duanruiming's avatar duanruiming

Merge remote-tracking branch 'origin/master'

parents 344ebc82 1bb43043
......@@ -39,7 +39,7 @@ public class RunningEvaluateController {
@ApiOperation(value = "路口列表", notes = "路口列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossList",
@PostMapping(value = "/`crossList",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = RunningEvaluateCrossListVO.class),
......
......@@ -1014,8 +1014,8 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
coordDirCodeList.add(dirCode2);
}
mainlineCrossEvaluateVO.setCoordValue(calcCoordValue(coordDirCodeList, crossId, crossDirDataHistPOList));
mainlineCrossEvaluateVO.setNonCoordValue(
calcNonCoordValue(coordDirCodeList, crossId, crossDirDataHistPOList, baseCrossDirInfoPOList));
fillNonCoordValue(mainlineCrossEvaluateVO, coordDirCodeList, crossId, crossDirDataHistPOList,
baseCrossDirInfoPOList);
mainlineCrossEvaluateVO.setDirElementList(buildDirElementList(
crossId, metricName, baseCrossDirInfoPOList, crossDirDataHistPOList, crossEmptyPhaseList));
mainlineCrossEvaluateVO.setCrossEvaluateList(buildCrossEvaluateList(
......@@ -1025,6 +1025,53 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
return res;
}
private void fillNonCoordValue(MainlineCrossEvaluateVO mainlineCrossEvaluateVO, List<Integer> coordDirCodeList,
String crossId, List<CrossDirDataHistPOExt> crossDirDataHistPOList,
List<BaseCrossDirInfoPO> baseCrossDirInfoPOList) {
// 筛选非协调方向
List<BaseCrossDirInfoPO> collect = baseCrossDirInfoPOList.stream()
.filter(item -> crossId.equals(item.getCrossId()))
.collect(Collectors.toList());
List<Integer> nonCoordDirCodeList = collect.stream()
.map(BaseCrossDirInfoPO::getDirType)
.collect(Collectors.toList());
nonCoordDirCodeList.removeAll(coordDirCodeList);
// 查询时段内路口非协调方向数据
List<CrossDirDataHistPOExt> filteredList = crossDirDataHistPOList.stream()
.filter(item -> crossId.equals(item.getCrossId()))
.filter(item -> 1 == item.getInOutType())
.filter(item -> nonCoordDirCodeList.contains(item.getDirType()))
.collect(Collectors.toList());
// 计算非协调方向指标(排队长度)
double nonCoordValueDouble = (filteredList.stream()
.mapToDouble(CrossDirDataHistPOExt::getQueueLength)
.max()
.orElse(0.0));
int nonCoordValue = (int) Math.round(nonCoordValueDouble);
mainlineCrossEvaluateVO.setNonCoordValue(nonCoordValue);
// 计算非协调停车次数
double stopTimes = (filteredList.stream()
.mapToDouble(CrossDirDataHistPOExt::getStopTimes)
.max()
.orElse(0.0));
BigDecimal bd = new BigDecimal(stopTimes);
bd = bd.setScale(2, RoundingMode.HALF_UP);
double formattedDouble = bd.doubleValue();
mainlineCrossEvaluateVO.setStopTimes(formattedDouble);
// 计算非协调二次停车率
double twoStopRate = (filteredList.stream()
.mapToDouble(CrossDirDataHistPOExt::getTwoStopRate)
.max()
.orElse(0.0));
int intRate = (int) (twoStopRate * 100);
mainlineCrossEvaluateVO.setTwoStopRate(intRate);
}
private List<String> buildCrossEvaluateList(
String crossId, List<BaseCrossDirInfoPO> baseCrossDirInfoPOList,
List<CrossDirDataHistPOExt> crossDirDataHistPOList) {
......@@ -1166,36 +1213,6 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
return dirValue;
}
private Integer calcNonCoordValue(
List<Integer> coordDirCodeList, String crossId, List<CrossDirDataHistPOExt> crossDirDataHistPOList,
List<BaseCrossDirInfoPO> baseCrossDirInfoPOList) {
// 筛选非协调方向
List<BaseCrossDirInfoPO> collect = baseCrossDirInfoPOList.stream()
.filter(item -> crossId.equals(item.getCrossId()))
.collect(Collectors.toList());
List<Integer> nonCoordDirCodeList = collect.stream()
.map(BaseCrossDirInfoPO::getDirType)
.collect(Collectors.toList());
nonCoordDirCodeList.removeAll(coordDirCodeList);
// 查询时段内路口非协调方向数据
List<CrossDirDataHistPOExt> filteredList = crossDirDataHistPOList.stream()
.filter(item -> crossId.equals(item.getCrossId()))
.filter(item -> 1 == item.getInOutType())
.filter(item -> nonCoordDirCodeList.contains(item.getDirType()))
.collect(Collectors.toList());
// 计算非协调方向指标(排队长度)
double nonCoordValueDouble = (filteredList.stream()
.mapToDouble(CrossDirDataHistPOExt::getQueueLength)
.max()
.orElse(0.0));
int nonCoordValue = (int) Math.round(nonCoordValueDouble);
return nonCoordValue;
}
private Integer calcCoordValue(
List<Integer> coordDirCodeList, String crossId, List<CrossDirDataHistPOExt> crossDirDataHistPOList) {
......
......@@ -24,6 +24,12 @@ public class MainlineCrossEvaluateVO {
@ApiModelProperty(value = "非协调方向指标(排队长度)")
private Integer nonCoordValue;
@ApiModelProperty(value = "非协调停车次数(次)")
private Double stopTimes;
@ApiModelProperty(value = "非协调二次停车率(%)")
public Integer twoStopRate;
@ApiModelProperty(value = "方向指标列表")
private List<DirElement> dirElementList;
......
......@@ -11,11 +11,11 @@ public class CrossIdAndStartEndDateBO {
@ApiModelProperty(value = "路口ID")
private String crossId;
@ApiModelProperty(value = "开始日期 yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "开始日期 yyyy-MM-dd HH:mm:ss 或者 yyyy-MM-dd")
@JsonDeserialize(using = CustomDateDeserializer.class)
private Date startDate;
@ApiModelProperty(value = "结束日期 yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "结束日期 yyyy-MM-dd HH:mm:ss 或者 yyyy-MM-dd")
@JsonDeserialize(using = CustomDateDeserializer.class)
private Date endDate;
}
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