|
@@ -57,7 +57,7 @@ public class WindDataCalculationServiceImpl implements WindDataCalculationServic
|
|
|
@Override
|
|
|
public ArrayList<WindTowerCalculationData> calcu(ArrayList<WindTowerCalculationData> dataList, Date startDate, Date endDate, String equipmentNo
|
|
|
, List<ProphaseAnemometryData> prophaseAnemometryDataList, List<ProphaseWeatherData> prophaseWeatherDataList, Map<String, EquipmentAttribute> equipmentAttributeMap
|
|
|
- , List<WindTowerCalculationData> windTowerCalculationDataList, WindTowerInfo windTowerInfo) {
|
|
|
+ , List<WindTowerCalculationData> windTowerCalculationDataList, WindTowerInfo windTowerInfo) throws Exception {
|
|
|
|
|
|
//获取对应测风塔数据
|
|
|
List<ProphaseAnemometryData> anemometryDataList = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startDate.getTime()
|
|
@@ -253,22 +253,28 @@ public class WindDataCalculationServiceImpl implements WindDataCalculationServic
|
|
|
prophaseAnemometryDataList = prophaseAnemometryDataList.stream().filter(p -> null != p.getWsSta() && p.getWsSta() >= 0).collect(Collectors.toList());
|
|
|
Map<String, List<ProphaseAnemometryData>> collect = prophaseAnemometryDataList.stream().collect(Collectors.groupingBy(x -> DateTimeUtil.getFormatDateStrForMonth(x.getTs().getTime())));
|
|
|
collect.forEach((month, value) -> {
|
|
|
+
|
|
|
if (!value.isEmpty()) {
|
|
|
Map<String, List<ProphaseAnemometryData>> heightMap = value.stream()
|
|
|
.collect(Collectors.groupingBy(x -> x.getLayerHeight()));
|
|
|
heightMap.forEach((height, hvalue) -> {
|
|
|
- if (!hvalue.isEmpty()) {
|
|
|
- EquipmentAttribute equipmentAttribute = equipmentAttributeMap.get(height + "staMonth");
|
|
|
- BigDecimal sumSta = CalculationUtil.getBigDecimal(hvalue.stream().mapToDouble(ProphaseAnemometryData::getWsSta).sum());
|
|
|
- BigDecimal valueAvgSta = sumSta.divide(new BigDecimal(collect.size()), 2, RoundingMode.HALF_UP);
|
|
|
- windTowerCalculationDataList.add(new WindTowerCalculationData(DateUtil.parse(month + "-01 00:00:00"), equipmentId, equipmentAttribute.getId(), valueAvgSta));
|
|
|
- } else {
|
|
|
- log.warn("设备:{} 层高:{} 计算月平均风速标差 的数据为空", equipmentId, height);
|
|
|
+ try {
|
|
|
+ if (!hvalue.isEmpty()) {
|
|
|
+ EquipmentAttribute equipmentAttribute = equipmentAttributeMap.get(height + "staMonth");
|
|
|
+ BigDecimal sumSta = CalculationUtil.getBigDecimal(hvalue.stream().mapToDouble(ProphaseAnemometryData::getWsSta).sum());
|
|
|
+ BigDecimal valueAvgSta = sumSta.divide(new BigDecimal(collect.size()), 2, RoundingMode.HALF_UP);
|
|
|
+ windTowerCalculationDataList.add(new WindTowerCalculationData(DateUtil.parse(month + "-01 00:00:00"), equipmentId, equipmentAttribute.getId(), valueAvgSta));
|
|
|
+ } else {
|
|
|
+ log.warn("设备:{} 层高:{} 计算月平均风速标差 的数据为空", equipmentId, height);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("设备:{} 层高:{} 计算月平均风速标差 错误:{}", equipmentId, height, e);
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
log.warn("设备:{} 月份:{} 计算月平均风速标差 的数据为空", equipmentId, month);
|
|
|
}
|
|
|
+
|
|
|
});
|
|
|
|
|
|
return windTowerCalculationDataList;
|
|
@@ -612,8 +618,7 @@ public class WindDataCalculationServiceImpl implements WindDataCalculationServic
|
|
|
/**
|
|
|
* 计算上一个小时 每10分钟的风切变指数
|
|
|
*/
|
|
|
- public ArrayList<WindTowerCalculationData> calculateWindPowerShear(String
|
|
|
- equipmentId
|
|
|
+ public ArrayList<WindTowerCalculationData> calculateWindPowerShear(String equipmentId
|
|
|
, List<ProphaseAnemometryData> prophaseAnemometryDataList
|
|
|
, Map<String, EquipmentAttribute> equipmentAttributeMap, WindTowerInfo windTowerInfo) {
|
|
|
log.info("开始计算小时风切变指数");
|
|
@@ -661,18 +666,22 @@ public class WindDataCalculationServiceImpl implements WindDataCalculationServic
|
|
|
String maxHeight = CalculationUtil.getNumberFromString(Arrays.asList(windTowerInfo.getHeights().split(",")).get(0));
|
|
|
|
|
|
proAnemomentryDataDayMap.forEach((day, value) -> {
|
|
|
- BigDecimal batterySum = value.stream().filter(p -> p.getLayerHeight().equals(maxHeight)).map(p -> CalculationUtil.getBattery(BigDecimal.valueOf(p.getWsAve()))).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ try {
|
|
|
+ BigDecimal batterySum = value.stream().filter(p -> p.getLayerHeight().equals(maxHeight)).map(p -> CalculationUtil.getBattery(BigDecimal.valueOf(p.getWsAve()))).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
- //日发电量
|
|
|
- if (batterySum.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- batterySum = batterySum.divide(BigDecimal.valueOf(6 * 1000), 2, RoundingMode.HALF_UP);
|
|
|
+ //日发电量
|
|
|
+ if (batterySum.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
+ batterySum = batterySum.divide(BigDecimal.valueOf(6 * 1000), 2, RoundingMode.HALF_UP);
|
|
|
|
|
|
- WindTowerCalculationData windTowerCalculationData = new WindTowerCalculationData();
|
|
|
- windTowerCalculationData.setValue(batterySum);
|
|
|
- windTowerCalculationData.setEbId(batteryDay.getId());
|
|
|
- windTowerCalculationData.setTime(DateUtil.beginOfDay(DateUtil.parse(day)));
|
|
|
- windTowerCalculationData.setEquipmentId(windTowerInfo.getEquipmentNo());
|
|
|
- batteryList.add(windTowerCalculationData);
|
|
|
+ WindTowerCalculationData windTowerCalculationData = new WindTowerCalculationData();
|
|
|
+ windTowerCalculationData.setValue(batterySum);
|
|
|
+ windTowerCalculationData.setEbId(batteryDay.getId());
|
|
|
+ windTowerCalculationData.setTime(DateUtil.beginOfDay(DateUtil.parse(day)));
|
|
|
+ windTowerCalculationData.setEquipmentId(windTowerInfo.getEquipmentNo());
|
|
|
+ batteryList.add(windTowerCalculationData);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("计算日发电量与满发小时数 错误:{}", e);
|
|
|
}
|
|
|
});
|
|
|
return batteryList;
|