|
@@ -128,7 +128,7 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
|
|
//过滤风速map
|
|
//过滤风速map
|
|
Map<Timestamp, Float> map = timeAndWsMap.entrySet().stream().filter(t -> t.getKey().getTime() == airAndTime.getKey().getTime()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
|
Map<Timestamp, Float> map = timeAndWsMap.entrySet().stream().filter(t -> t.getKey().getTime() == airAndTime.getKey().getTime()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
|
if (!map.isEmpty()) {
|
|
if (!map.isEmpty()) {
|
|
- BigDecimal wpdCalculate = CalculationUtil.getWpdCalculate(BigDecimal.valueOf(map.get(airAndTime.getKey())), BigDecimal.valueOf(airAndTime.getValue()));
|
|
|
|
|
|
+ BigDecimal wpdCalculate = CalculationUtil.getWpdCalculate(BigDecimal.valueOf(airAndTime.getValue()), BigDecimal.valueOf(map.get(airAndTime.getKey())));
|
|
wpdSumList.add(wpdCalculate);
|
|
wpdSumList.add(wpdCalculate);
|
|
wsSumList.add(BigDecimal.valueOf(map.get(airAndTime.getKey())));
|
|
wsSumList.add(BigDecimal.valueOf(map.get(airAndTime.getKey())));
|
|
}
|
|
}
|
|
@@ -552,15 +552,12 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
|
|
public Map<String, Object> getAirAndPaAndT(String equipmentId, String month) {
|
|
public Map<String, Object> getAirAndPaAndT(String equipmentId, String month) {
|
|
List<ProphaseWeatherData> weatherDataList = new ArrayList<>();
|
|
List<ProphaseWeatherData> weatherDataList = new ArrayList<>();
|
|
List<ProphaseAnemometryData> anemometryDataList = new ArrayList<>();
|
|
List<ProphaseAnemometryData> anemometryDataList = new ArrayList<>();
|
|
|
|
+ //获取最新数据起止时间
|
|
Map<String, Long> dataTimeStartAndEnd = prophaseWeatherDataService.getDataTimeStartAndEnd(equipmentId);
|
|
Map<String, Long> dataTimeStartAndEnd = prophaseWeatherDataService.getDataTimeStartAndEnd(equipmentId);
|
|
|
|
+ //获取测风塔基本信息
|
|
WindTowerInfo windTowerInfo = windTowerInfoService.getByEquipmentNo(equipmentId).get(0);
|
|
WindTowerInfo windTowerInfo = windTowerInfoService.getByEquipmentNo(equipmentId).get(0);
|
|
- String height;
|
|
|
|
- String[] strings = windTowerInfo.getHeights().split(",");
|
|
|
|
- height = CalculationUtil.getNumberFromString(strings[0]);
|
|
|
|
- String minHeight = CalculationUtil.getNumberFromString(strings[strings.length - 1]); //最底层
|
|
|
|
- if (windTowerInfo.getDisplayHeight() != null && !windTowerInfo.getDisplayHeight().equals("")) {
|
|
|
|
- height = windTowerInfo.getDisplayHeight();
|
|
|
|
- }
|
|
|
|
|
|
+ //获取层高
|
|
|
|
+ String[] heights = windTowerInfo.getHeights().split(",");
|
|
//获取风向 层高 最高层
|
|
//获取风向 层高 最高层
|
|
String wdHeights = windTowerInfo.getWdHeights();
|
|
String wdHeights = windTowerInfo.getWdHeights();
|
|
String wdHeightMax = "";
|
|
String wdHeightMax = "";
|
|
@@ -596,26 +593,32 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
|
|
BigDecimal pa = BigDecimal.ZERO;
|
|
BigDecimal pa = BigDecimal.ZERO;
|
|
|
|
|
|
// 风速集合
|
|
// 风速集合
|
|
- String finalHeight = height;
|
|
|
|
|
|
+ String finalHeight = CalculationUtil.getNumberFromString(heights[0]);
|
|
List<BigDecimal> wsForHeight = anemometryDataList.stream().filter(a -> a.getLayerHeight().equals(finalHeight) && a.getWsAve() != null)
|
|
List<BigDecimal> wsForHeight = anemometryDataList.stream().filter(a -> a.getLayerHeight().equals(finalHeight) && a.getWsAve() != null)
|
|
.map(h -> BigDecimal.valueOf(h.getWsAve()))
|
|
.map(h -> BigDecimal.valueOf(h.getWsAve()))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
- //最小风速集合
|
|
|
|
- List<BigDecimal> minWsForHeight = anemometryDataList.stream().filter(a -> a.getLayerHeight().equals(minHeight) && a.getWsAve() != null)
|
|
|
|
- .map(h -> BigDecimal.valueOf(h.getWsAve()))
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
// 风速标准差集合
|
|
// 风速标准差集合
|
|
List<BigDecimal> wsStaForHeight = anemometryDataList.stream().filter(a -> a.getLayerHeight().equals(finalHeight) && a.getWsSta() != null)
|
|
List<BigDecimal> wsStaForHeight = anemometryDataList.stream().filter(a -> a.getLayerHeight().equals(finalHeight) && a.getWsSta() != null)
|
|
.map(h -> BigDecimal.valueOf(h.getWsSta()))
|
|
.map(h -> BigDecimal.valueOf(h.getWsSta()))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
BigDecimal avgWs = CalculationUtil.getAvgWind(wsForHeight); // 风速平均值
|
|
BigDecimal avgWs = CalculationUtil.getAvgWind(wsForHeight); // 风速平均值
|
|
- BigDecimal avgMinWs = CalculationUtil.getAvgWind(minWsForHeight); // 最小风速平均值
|
|
|
|
BigDecimal avgWsSta = CalculationUtil.getAvgWind(wsStaForHeight);// 风速标准差平均值
|
|
BigDecimal avgWsSta = CalculationUtil.getAvgWind(wsStaForHeight);// 风速标准差平均值
|
|
BigDecimal turbulence = CalculationUtil.caTurbulenceIntensity(avgWsSta, avgWs); // 湍流
|
|
BigDecimal turbulence = CalculationUtil.caTurbulenceIntensity(avgWsSta, avgWs); // 湍流
|
|
BigDecimal windShear = BigDecimal.ZERO;
|
|
BigDecimal windShear = BigDecimal.ZERO;
|
|
- if (avgWs.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
|
- windShear = CalculationUtil.caWindShear(avgWs, avgMinWs, new BigDecimal(height), new BigDecimal(minHeight));// 风切变
|
|
|
|
|
|
+ BigDecimal totalShear = BigDecimal.ZERO;
|
|
|
|
+ //计算综合风切变
|
|
|
|
+ if (!anemometryDataList.isEmpty()) {
|
|
|
|
+ for (long i = DateUtil.beginOfDay(new Date(dataTimeStartAndEnd.get("endTime"))).getTime(); i < dataTimeStartAndEnd.get("endTime"); i = i + 600000) {
|
|
|
|
+ long finalI = i;
|
|
|
|
+ List<ProphaseAnemometryData> collect = anemometryDataList.stream().filter(a -> a.getTs().getTime() >= finalI && a.getTs().getTime() < finalI + 600000).collect(Collectors.toList());
|
|
|
|
+ BigDecimal windShear1 = CalculationUtil.getWindShear(collect, heights);
|
|
|
|
+ windShear = windShear.add(windShear1);
|
|
|
|
+ totalShear = totalShear.add(BigDecimal.ONE);
|
|
|
|
+ }
|
|
|
|
+ if (totalShear.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
+ windShear = windShear.divide(totalShear, 2, RoundingMode.HALF_UP);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (!weatherDataList.isEmpty()) {
|
|
if (!weatherDataList.isEmpty()) {
|
|
|
|
|
|
@@ -670,7 +673,7 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
|
|
dataMap.put("pa", pa);
|
|
dataMap.put("pa", pa);
|
|
dataMap.put("turbulence", turbulence);
|
|
dataMap.put("turbulence", turbulence);
|
|
dataMap.put("windShear", windShear);
|
|
dataMap.put("windShear", windShear);
|
|
- dataMap.put("height", height);
|
|
|
|
|
|
+ dataMap.put("height", finalHeight);
|
|
return dataMap;
|
|
return dataMap;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -828,14 +831,14 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
|
|
//有多条只添加一个其他都是一样的只需要替换id 多余的需要删除
|
|
//有多条只添加一个其他都是一样的只需要替换id 多余的需要删除
|
|
for (Map<String, Object> map : towerNo) {
|
|
for (Map<String, Object> map : towerNo) {
|
|
HashMap<Object, Object> hashMap1 = new HashMap<>();
|
|
HashMap<Object, Object> hashMap1 = new HashMap<>();
|
|
- hashMap1.put("type",map.get("type"));
|
|
|
|
|
|
+ hashMap1.put("type", map.get("type"));
|
|
if (map.containsKey("projectId")) {
|
|
if (map.containsKey("projectId")) {
|
|
- hashMap1.put("id",map.get("projectId"));
|
|
|
|
|
|
+ hashMap1.put("id", map.get("projectId"));
|
|
arrayList.add(hashMap1);
|
|
arrayList.add(hashMap1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//替换id值
|
|
//替换id值
|
|
- towerNo.get(0).put("projectId",arrayList);
|
|
|
|
|
|
+ towerNo.get(0).put("projectId", arrayList);
|
|
listMap.add(towerNo.get(0));
|
|
listMap.add(towerNo.get(0));
|
|
}
|
|
}
|
|
|
|
|