|
@@ -1710,18 +1710,14 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
|
|
|
* @param equipmentId 设备id
|
|
|
* @return
|
|
|
*/
|
|
|
- public ArrayList<WindTowerCalculationData> shearDay(Date startTime, Date endTime, String equipmentId, List<WindTowerCalculationData> windTowerCalculationDataList, List<EquipmentAttribute> equipmentAttributeList, List<WindTowerInfo> windTowerInfoList) {
|
|
|
+ public ArrayList<WindTowerCalculationData> shearDay(Date startTime, Date endTime, String equipmentId, List<WindTowerCalculationData> windTowerCalculationDataList, List<EquipmentAttribute> equipmentAttributeList, List<WindTowerInfo> windTowerInfoList,List<ProphaseAnemometryData> prophaseAnemometryDataList) {
|
|
|
long startHour = startTime.getTime();
|
|
|
long endHour = endTime.getTime();
|
|
|
long dayTime = 86400000L;
|
|
|
- //日平均所需要的集合
|
|
|
- List<WindTowerCalculationData> windTowerCalculationDataList1 = windTowerCalculationDataList.stream().filter(w -> w.getEquipmentId().equals(equipmentId) && w.getTime().after(startTime) && w.getTime().before(endTime)).collect(Collectors.toList());
|
|
|
+ String[] heights = windTowerInfoList.get(0).getHeights().split(",");
|
|
|
+
|
|
|
ArrayList<WindTowerCalculationData> list = new ArrayList<>();
|
|
|
try {
|
|
|
- //遍历层高
|
|
|
-
|
|
|
- //获取所有小时综合风切变
|
|
|
- List<EquipmentAttribute> shearList = equipmentAttributeList.stream().filter(equipmentAttribute -> equipmentAttribute.getFieldName().equals(windShearFiledName)).collect(Collectors.toList());
|
|
|
//获取日综合风切变
|
|
|
List<EquipmentAttribute> shearDayList = equipmentAttributeList.stream().filter(equipmentAttribute -> equipmentAttribute.getFieldName().equals(windShearDayFiledName)).collect(Collectors.toList());
|
|
|
//删除统计时间段所有数据
|
|
@@ -1732,17 +1728,12 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
|
|
|
|
|
|
//获取所有小时风切变数据
|
|
|
long start = start1;
|
|
|
- List<WindTowerCalculationData> shearCalDataList = windTowerCalculationDataList1.stream().filter(w -> w.getTime().after(new Date(start)) &&
|
|
|
- w.getTime().before(new Date(start2)) && w.getEquipmentId().equals(equipmentId) && w.getEbId().equals(shearList.get(0).getId())).collect(Collectors.toList());
|
|
|
- //小时风切变总值
|
|
|
- BigDecimal shearSum = BigDecimal.ZERO;
|
|
|
- for (WindTowerCalculationData shear : shearCalDataList) {
|
|
|
- shearSum = shearSum.add(shear.getValue());
|
|
|
- }
|
|
|
- if (!shearCalDataList.isEmpty()) {
|
|
|
+ List<ProphaseAnemometryData> collect = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= start && p.getTs().getTime() < start2).collect(Collectors.toList());
|
|
|
+ BigDecimal windShear = CalculationUtil.getWindShear(collect, heights);
|
|
|
+ if (collect.size() > 0) {
|
|
|
WindTowerCalculationData windTowerCalculationData = new WindTowerCalculationData();
|
|
|
windTowerCalculationData.setEquipmentId(equipmentId);
|
|
|
- windTowerCalculationData.setValue(shearSum.divide(new BigDecimal(shearCalDataList.size()), 2, RoundingMode.HALF_UP));
|
|
|
+ windTowerCalculationData.setValue(windShear);
|
|
|
windTowerCalculationData.setEbId(shearDayList.get(0).getId());
|
|
|
windTowerCalculationData.setTime(new Date(start1));
|
|
|
windTowerCalculationDataList.add(windTowerCalculationData);
|
|
@@ -1770,33 +1761,27 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
|
|
|
* @param equipmentId 设备id
|
|
|
* @return
|
|
|
*/
|
|
|
- public ArrayList<WindTowerCalculationData> shearMonth(Date startTime, Date endTime, String equipmentId, List<WindTowerCalculationData> windTowerCalculationDataList, List<EquipmentAttribute> equipmentAttributeList, List<WindTowerInfo> windTowerInfoList) {
|
|
|
+ public ArrayList<WindTowerCalculationData> shearMonth(Date startTime, Date endTime, String equipmentId, List<WindTowerCalculationData> windTowerCalculationDataList, List<EquipmentAttribute> equipmentAttributeList, List<WindTowerInfo> windTowerInfoList,List<ProphaseAnemometryData> prophaseAnemometryDataList) {
|
|
|
//时间-1防止0点数据查不到
|
|
|
Date startHour = new Date(startTime.getTime() - 1);
|
|
|
//获取时间段所有统计数据
|
|
|
- List<WindTowerCalculationData> windTowerCalculationDataList1 = windTowerCalculationDataList.stream().filter(w -> w.getEquipmentId().equals(equipmentId) && w.getTime().after(startHour) && w.getTime().before(endTime)).collect(Collectors.toList());
|
|
|
ArrayList<WindTowerCalculationData> list = new ArrayList<>();
|
|
|
try {
|
|
|
//获取月平均综合风切变字段
|
|
|
String ebIdMonth = equipmentAttributeList.stream().filter(w -> w.getFieldName().equals("windShearMonth")).collect(Collectors.toList()).get(0).getId();
|
|
|
- String ebIdDay = equipmentAttributeList.stream().filter(w -> w.getFieldName().equals("windShearDay")).collect(Collectors.toList()).get(0).getId();
|
|
|
//删除时间段所有数据
|
|
|
removeByStartTimeBetweenAndEquipmentIdAndEbId(startHour, endTime, equipmentId, ebIdMonth);
|
|
|
- //获取所有日平均风切变
|
|
|
- List<WindTowerCalculationData> windTowerCalculationDatas = windTowerCalculationDataList1.stream().filter(w -> w.getEbId().equals(ebIdDay) && w.getTime().after(startHour) && w.getTime().before(endTime) && w.getEquipmentId().equals(equipmentId))
|
|
|
- .collect(Collectors.toList());
|
|
|
- BigDecimal sum = new BigDecimal(0);
|
|
|
|
|
|
- for (WindTowerCalculationData w : windTowerCalculationDatas) {
|
|
|
- sum = sum.add(w.getValue());
|
|
|
- }
|
|
|
+ String heights = windTowerInfoList.get(0).getHeights();
|
|
|
+ List<ProphaseAnemometryData> collect = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startTime.getTime() && p.getTs().getTime() < endTime.getTime()).collect(Collectors.toList());
|
|
|
+ BigDecimal windShear = CalculationUtil.getWindShear(collect, heights.split(","));
|
|
|
|
|
|
- if (!windTowerCalculationDatas.isEmpty()) {
|
|
|
+ if (collect.size() > 0) {
|
|
|
WindTowerCalculationData windTowerCalculationData = new WindTowerCalculationData();
|
|
|
windTowerCalculationData.setEbId(ebIdMonth);
|
|
|
windTowerCalculationData.setTime(startTime);
|
|
|
windTowerCalculationData.setEquipmentId(equipmentId);
|
|
|
- windTowerCalculationData.setValue(sum.divide(new BigDecimal(windTowerCalculationDatas.size()), 2, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ windTowerCalculationData.setValue(windShear);
|
|
|
list.add(windTowerCalculationData);
|
|
|
} else {
|
|
|
log.info("设备编号{},{}月平均风切变指数计算失败,缺少数据^ ^", equipmentId, startTime.getMonth() + 1);
|
|
@@ -1973,23 +1958,17 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
|
|
|
for (long start1 = startHour; start1 <= endHour; start1 = start1 + 3600000) {
|
|
|
//开始时间--->start1 结束时间---->start2
|
|
|
long start2 = start1 + 3600000L;
|
|
|
- BigDecimal oneHourWindShear = BigDecimal.ZERO;
|
|
|
BigDecimal total = BigDecimal.ZERO;
|
|
|
|
|
|
long finalStart = start1;
|
|
|
List<ProphaseAnemometryData> collect = prophaseAnemometryData.stream().filter(p -> p.getTs().getTime() >= finalStart && p.getTs().getTime() < start2).collect(Collectors.toList());
|
|
|
//计算综合风切变
|
|
|
BigDecimal windShear = CalculationUtil.getWindShear(collect, heights);
|
|
|
- if (windShear.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- oneHourWindShear = oneHourWindShear.add(windShear);
|
|
|
- total = total.add(BigDecimal.ONE);
|
|
|
- }
|
|
|
-
|
|
|
- if (total.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ if (collect.size() > 0) {
|
|
|
WindTowerCalculationData windTowerCalculationData = new WindTowerCalculationData();
|
|
|
windTowerCalculationData.setEquipmentId(equipmentId);
|
|
|
windTowerCalculationData.setTime(new Date(start1));
|
|
|
- windTowerCalculationData.setValue(oneHourWindShear.divide(total, 2, RoundingMode.HALF_UP));
|
|
|
+ windTowerCalculationData.setValue(windShear);
|
|
|
windTowerCalculationData.setEbId(equipmentAttribute.getId());
|
|
|
windTowerCalculationDataList.add(windTowerCalculationData);
|
|
|
listAll.add(windTowerCalculationData);
|