|
@@ -723,28 +723,26 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
|
|
|
*/
|
|
|
public List<Map<String, Object>> getWindShear(Long startTime, Long endTime, String eqId, String height, String heightMin) {
|
|
|
List<ProphaseAnemometryData> anemometryData = prophaseAnemometryDataService.selectWdAveAndWdAveAndWsSta(eqId, new Timestamp(startTime), new Timestamp(endTime));
|
|
|
-// String[] heights = windTowerInfoService.getByEquipmentNo(eqId).get(0).getHeights().split(",");
|
|
|
-// ArrayList<String> heightAll = new ArrayList<>(Arrays.asList(heights));
|
|
|
-// //获取最小层高
|
|
|
-// List<Integer> collect = heightAll.stream().map(h -> {
|
|
|
-// return Integer.parseInt(CalculationUtil.getNumberFromString(h));
|
|
|
-// }).sorted().collect(Collectors.toList());
|
|
|
-// String finalHeight = height;
|
|
|
-// if (height.contains("A")) {
|
|
|
-// finalHeight = height.substring(0, height.length() - 1);
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
BigDecimal zero = new BigDecimal(0);
|
|
|
List<Map<String, Object>> list = new ArrayList<>();
|
|
|
+ //获取低层高风速所有数据
|
|
|
+ List<ProphaseAnemometryData> mixWindOrgList = anemometryData.stream().filter(a -> a.getLayerHeight().equals(heightMin)).collect(Collectors.toList());
|
|
|
for (WindDirectionEnum value : WindDirectionEnum.values()) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
List<ProphaseAnemometryData> heightAndWindDirectionEnum = CalculationUtil.getForHeightAndWindDirectionEnum(anemometryData, value);
|
|
|
+ //筛选出高层高风数据
|
|
|
+ List<ProphaseAnemometryData> maxWindList = heightAndWindDirectionEnum.stream().filter(val -> val.getLayerHeight().equals(height)).collect(Collectors.toList());
|
|
|
+ ArrayList<ProphaseAnemometryData> minWindList = new ArrayList<>();
|
|
|
+ //遍历获取同一时间点 低层高的数据
|
|
|
+ for (ProphaseAnemometryData wind : maxWindList) {
|
|
|
+ ProphaseAnemometryData prophaseAnemometryData = mixWindOrgList.stream().filter(m -> m.getTs().getTime() == wind.getTs().getTime()).collect(Collectors.toList()).get(0);
|
|
|
+ minWindList.add(prophaseAnemometryData);
|
|
|
|
|
|
+ }
|
|
|
//获取平均风速
|
|
|
- BigDecimal avgWindSpeed = CalculationUtil.getAvgWind(CalculationUtil.getWsForHeight(heightAndWindDirectionEnum, height));
|
|
|
+ BigDecimal avgWindSpeed = CalculationUtil.getAvgWind(CalculationUtil.getWsForHeight(maxWindList, height));
|
|
|
|
|
|
- BigDecimal avgWindSpeed10 = CalculationUtil.getAvgWind(CalculationUtil.getWsForHeight(heightAndWindDirectionEnum, heightMin));
|
|
|
+ BigDecimal avgWindSpeed10 = CalculationUtil.getAvgWind(CalculationUtil.getWsForHeight(minWindList, heightMin));
|
|
|
BigDecimal bigDecimal = new BigDecimal(-99);
|
|
|
if (avgWindSpeed10.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
bigDecimal = CalculationUtil.caWindShear(avgWindSpeed, avgWindSpeed10, new BigDecimal(height), new BigDecimal(heightMin));
|