فهرست منبع

1修复若干bug

wangt 1 سال پیش
والد
کامیت
e593451c99
18فایلهای تغییر یافته به همراه158 افزوده شده و 122 حذف شده
  1. 10 10
      GumbelmaximumorderstatisticProbabilityPlotOutput.txt
  2. 9 9
      TwoParameterWeibullProbabilityPlotOutput.txt
  3. 44 44
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/DataRecalculationImpl.java
  4. 0 1
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/HomePageServiceImpl.java
  5. 2 2
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/PdfServiceImpl.java
  6. 1 1
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/ProphaseAnemometryDataServiceImpl.java
  7. 4 6
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/RealTimeDisplayServiceImpl.java
  8. 1 1
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindDirectionStatisticsDataServiceImpl.java
  9. 30 24
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerCalculationDataServiceImpl.java
  10. 2 4
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerInfoServiceImpl.java
  11. 1 1
      wrdep-biz/src/main/java/com/jiayue/biz/util/CalculationUtil.java
  12. 1 1
      wrdep-biz/src/main/resources/application.yml
  13. 15 10
      wrdep-ui/src/views/dataAnalysis/index.vue
  14. 4 1
      wrdep-ui/src/views/dataQuery/windTowerStatusData/index.vue
  15. 3 3
      wrdep-ui/src/views/largeScreenPage/Subpage/emailResourcesInfo.vue
  16. 1 1
      wrdep-ui/src/views/largeScreenPage/Subpage/realPvResourcesInfo.vue
  17. 1 1
      wrdep-ui/src/views/largeScreenPage/Subpage/realResourcesInfo.vue
  18. 29 2
      wrdep-ui/src/views/windResources/windShear/index.vue

+ 10 - 10
GumbelmaximumorderstatisticProbabilityPlotOutput.txt

@@ -1,25 +1,25 @@
 Gumbel (maximum order statistic) Probability Plot
 
-Tuesday, 20 September 2022, 18.30
+Sunday, 17 September 2023, 11.23
 
 Unweighted constrained simplex regression
 
-Gradient:  1.0           s.e. 0.1473
-Intercept: 9.1355E-8     s.e. 3.5125
+Gradient:  1.0           s.e. 2.9561
+Intercept: 6.8045E-9     s.e. 4.2372
 
-Correlation Coefficient, r: 0.8051
-Critical Value for r:       0.6694
+Correlation Coefficient, r: 0.9714
+Critical Value for r:       NaN
 Significance level used:    5.0%
-Sum of squares:             11.1542
+Sum of squares:             0.0034
 
 Best Estimates of the Parameters
-mu:     22.397      'pseudo-linear' s.e. 0.424
-sigma:  2.5638      'pseudo-linear' s.e. 0.3777
+mu:     1.3063      'pseudo-linear' s.e. 0.6681
+sigma:  0.2481      'pseudo-linear' s.e. 0.7335
 
 The 'pseudo-linear' s.e.s are a lower limit to the s.e. and may significantly underestimate the s.e.
 See documentation, http://www.ee.ucl.ac.uk/~mflanaga/java/ProbabilityPlot.html, for details
 
 'Pseudo-linear' Parameter-Parameter Correlation Coefficients
         mu          sigma       
-mu      1.0         -0.4533     
-sigma   -0.4533     1.0         
+mu      1.0         -0.5032     
+sigma   -0.5032     1.0         

+ 9 - 9
TwoParameterWeibullProbabilityPlotOutput.txt

@@ -1,25 +1,25 @@
 Two Parameter Weibull Probability Plot
 
-Tuesday, 21 February 2023, 10.10
+Sunday, 17 September 2023, 11.06
 
 Unweighted constrained simplex regression
 
-Gradient:  1.0479        s.e. 0.0105
-Intercept: -0.4092       s.e. 0.0832
+Gradient:  0.9984        s.e. 0.0139
+Intercept: 0.0096        s.e. 0.0754
 
-Correlation Coefficient, r: 0.9699
+Correlation Coefficient, r: 0.9841
 Critical Value for r:       0.0501
 Significance level used:    5.0%
-Sum of squares:             310.8105
+Sum of squares:             83.4102
 
 Best Estimates of the Parameters
-sigma:  8.3156      'pseudo-linear' s.e. 0.0328
-gamma:  2.7443      'pseudo-linear' s.e. 0.0312
+sigma:  5.5996      'pseudo-linear' s.e. 0.0334
+gamma:  2.4105      'pseudo-linear' s.e. 0.0389
 
 The 'pseudo-linear' s.e.s are a lower limit to the s.e. and may significantly underestimate the s.e.
 See documentation, http://www.ee.ucl.ac.uk/~mflanaga/java/ProbabilityPlot.html, for details
 
 'Pseudo-linear' Parameter-Parameter Correlation Coefficients
         sigma       gamma       
-sigma   1.0         0.2401      
-gamma   0.2401      1.0         
+sigma   1.0         0.3407      
+gamma   0.3407      1.0         

+ 44 - 44
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/DataRecalculationImpl.java

@@ -619,38 +619,38 @@ public class DataRecalculationImpl implements DataRecalculationService {
             log.info("开始重新计算统计数据");
             ArrayList<WindTowerCalculationData> allDataList = new ArrayList<>();
 //            //小时风功率密度和平均风速
-//            ArrayList<WindTowerCalculationData> dataList = windTowerCalculationDataService.calculateWindPowerDensity(startTime.getTime(), endTime.getTime(), equipmentNo, prophaseAnemometryDataList, prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
-//            allDataList.addAll(dataList);
+            ArrayList<WindTowerCalculationData> dataList = windTowerCalculationDataService.calculateWindPowerDensity(startTime.getTime(), endTime.getTime(), equipmentNo, prophaseAnemometryDataList, prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
+            allDataList.addAll(dataList);
 //            //小时风切变
-//            ArrayList<WindTowerCalculationData> calculationData = windTowerCalculationDataService.calculateWindPowerShear(startTime, endTime, equipmentNo, prophaseAnemometryDataList, windTowerCalculationDataList);
-//            allDataList.addAll(calculationData);
+            ArrayList<WindTowerCalculationData> calculationData = windTowerCalculationDataService.calculateWindPowerShear(startTime, endTime, equipmentNo, prophaseAnemometryDataList, windTowerCalculationDataList);
+            allDataList.addAll(calculationData);
 //            //日平均温度
-//            ArrayList<WindTowerCalculationData> tDay = windTowerCalculationDataService.tDay(startTime, endTime, equipmentNo, prophaseWeatherDataList, equipmentAttributeList);
-//            allDataList.addAll(tDay);
+            ArrayList<WindTowerCalculationData> tDay = windTowerCalculationDataService.tDay(startTime, endTime, equipmentNo, prophaseWeatherDataList, equipmentAttributeList);
+            allDataList.addAll(tDay);
 //            //日平均气压
-//            ArrayList<WindTowerCalculationData> paDay = windTowerCalculationDataService.paDay(startTime, endTime, equipmentNo, prophaseWeatherDataList, equipmentAttributeList);
-//            allDataList.addAll(paDay);
+            ArrayList<WindTowerCalculationData> paDay = windTowerCalculationDataService.paDay(startTime, endTime, equipmentNo, prophaseWeatherDataList, equipmentAttributeList);
+            allDataList.addAll(paDay);
 //            //发电量与满发小时数
-//            ArrayList<WindTowerCalculationData> calculateBattery = windTowerCalculationDataService.calculateBattery(startTime.getTime(), endTime.getTime(), windTowerInfoList.get(0), prophaseAnemometryDataList, equipmentAttributeList, windTowerCalculationDataList);
-//            allDataList.addAll(calculateBattery);
+            ArrayList<WindTowerCalculationData> calculateBattery = windTowerCalculationDataService.calculateBattery(startTime.getTime(), endTime.getTime(), windTowerInfoList.get(0), prophaseAnemometryDataList, equipmentAttributeList, windTowerCalculationDataList);
+            allDataList.addAll(calculateBattery);
 //            //日平均风速
-//            ArrayList<WindTowerCalculationData> wsDay = windTowerCalculationDataService.wsDay(startTime, endTime, equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
-//            allDataList.addAll(wsDay);
+            ArrayList<WindTowerCalculationData> wsDay = windTowerCalculationDataService.wsDay(startTime, endTime, equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
+            allDataList.addAll(wsDay);
 //            //日平均风速标差
-//            ArrayList<WindTowerCalculationData> calculationData1 = windTowerCalculationDataService.calculateStaDay(startTime, endTime, equipmentNo, prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
-//            allDataList.addAll(calculationData1);
+            ArrayList<WindTowerCalculationData> calculationData1 = windTowerCalculationDataService.calculateStaDay(startTime, endTime, equipmentNo, prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
+            allDataList.addAll(calculationData1);
 //            //日平均湍流
-//            ArrayList<WindTowerCalculationData> turbulenceDay = windTowerCalculationDataService.turbulenceDay(startTime, endTime, equipmentNo, equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
-//            allDataList.addAll(turbulenceDay);
+            ArrayList<WindTowerCalculationData> turbulenceDay = windTowerCalculationDataService.turbulenceDay(startTime, endTime, equipmentNo, equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
+            allDataList.addAll(turbulenceDay);
 //            //日平均空气密度
-//            ArrayList<WindTowerCalculationData> airDensityDay = windTowerCalculationDataService.airDensityDay(startTime, endTime, equipmentNo, prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
-//            allDataList.addAll(airDensityDay);
+            ArrayList<WindTowerCalculationData> airDensityDay = windTowerCalculationDataService.airDensityDay(startTime, endTime, equipmentNo, prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
+            allDataList.addAll(airDensityDay);
 //            //日平均风功率密度
-//            ArrayList<WindTowerCalculationData> wpdDay = windTowerCalculationDataService.wpdDay(startTime, endTime, equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
-//            allDataList.addAll(wpdDay);
+            ArrayList<WindTowerCalculationData> wpdDay = windTowerCalculationDataService.wpdDay(startTime, endTime, equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
+            allDataList.addAll(wpdDay);
 //            //日平均风切变
-//            ArrayList<WindTowerCalculationData> shearDay = windTowerCalculationDataService.shearDay(startTime, endTime, equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
-//            allDataList.addAll(shearDay);
+            ArrayList<WindTowerCalculationData> shearDay = windTowerCalculationDataService.shearDay(startTime, endTime, equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
+            allDataList.addAll(shearDay);
             //15m/s湍流
             ArrayList<WindTowerCalculationData> turForWsByFifteenDayList = windTowerCalculationDataService.turForWsByFifteenDay(startTime, endTime, equipmentNo, prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
             allDataList.addAll(turForWsByFifteenDayList);
@@ -658,37 +658,37 @@ public class DataRecalculationImpl implements DataRecalculationService {
             List<Long> dateTime = DateTimeUtil.getIntervalTimeByMonth(DateTimeUtil.beginOfMonth(startTime), DateTimeUtil.beginOfMonth(endTime));
             for (Long l : dateTime) {
 //                //月平均风速
-//                ArrayList<WindTowerCalculationData> wsMonth = windTowerCalculationDataService.wsMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
-//                allDataList.addAll(wsMonth);
+                ArrayList<WindTowerCalculationData> wsMonth = windTowerCalculationDataService.wsMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
+                allDataList.addAll(wsMonth);
 //                //月平均风功率密度
-//                ArrayList<WindTowerCalculationData> wpdMonth = windTowerCalculationDataService.wpdMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
-//                allDataList.addAll(wpdMonth);
-//                //月平均湍流
-//                ArrayList<WindTowerCalculationData> turbulenceMonth = windTowerCalculationDataService.turbulenceMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
-//                allDataList.addAll(turbulenceMonth);
+                ArrayList<WindTowerCalculationData> wpdMonth = windTowerCalculationDataService.wpdMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
+                allDataList.addAll(wpdMonth);
+                //月平均湍流
+                ArrayList<WindTowerCalculationData> turbulenceMonth = windTowerCalculationDataService.turbulenceMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
+                allDataList.addAll(turbulenceMonth);
 //                //月平均空气密度
-//                ArrayList<WindTowerCalculationData> airDensityMonth = windTowerCalculationDataService.airDensityMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList);
-//                allDataList.addAll(airDensityMonth);
+                ArrayList<WindTowerCalculationData> airDensityMonth = windTowerCalculationDataService.airDensityMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList);
+                allDataList.addAll(airDensityMonth);
 //                //月最大风速
-//                ArrayList<WindTowerCalculationData> wsMaxMonth = windTowerCalculationDataService.wsMaxMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
-//                allDataList.addAll(wsMaxMonth);
+                ArrayList<WindTowerCalculationData> wsMaxMonth = windTowerCalculationDataService.wsMaxMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
+                allDataList.addAll(wsMaxMonth);
 //                //月平均风切变
-//                ArrayList<WindTowerCalculationData> shearMonth = windTowerCalculationDataService.shearMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
-//                allDataList.addAll(shearMonth);
+                ArrayList<WindTowerCalculationData> shearMonth = windTowerCalculationDataService.shearMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
+                allDataList.addAll(shearMonth);
 //                //月平均风速标差
-//                ArrayList<WindTowerCalculationData> staMonth = windTowerCalculationDataService.staMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
-//                allDataList.addAll(staMonth);
+                ArrayList<WindTowerCalculationData> staMonth = windTowerCalculationDataService.staMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
+                allDataList.addAll(staMonth);
                 //月玫瑰图
                 windDirectionStatisticsDataService.roseMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, prophaseAnemometryDataList, prophaseWeatherDataList, equipmentAttributeList);
 //                //月平均环境数据
-//                ArrayList<WindTowerCalculationData> environmentData = windTowerCalculationDataService.environmentData(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, prophaseWeatherDataList, equipmentAttributeList);
-//                allDataList.addAll(environmentData);
+                ArrayList<WindTowerCalculationData> environmentData = windTowerCalculationDataService.environmentData(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), equipmentNo, prophaseWeatherDataList, equipmentAttributeList);
+                allDataList.addAll(environmentData);
 //                //空气密度月逐时
-//                ArrayList<WindTowerCalculationData> airDensityMonth1 = windTowerCalculationDataService.airDensityMonth(equipmentNo, DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), prophaseWeatherDataList);
-//                allDataList.addAll(airDensityMonth1);
+                ArrayList<WindTowerCalculationData> airDensityMonth1 = windTowerCalculationDataService.airDensityMonth(equipmentNo, DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), prophaseWeatherDataList);
+                allDataList.addAll(airDensityMonth1);
 //                //湍流月逐时
-//                ArrayList<WindTowerCalculationData> turbulenceHourForMonth = windTowerCalculationDataService.turbulenceHourForMonth(equipmentNo, DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
-//                allDataList.addAll(turbulenceHourForMonth);
+                ArrayList<WindTowerCalculationData> turbulenceHourForMonth = windTowerCalculationDataService.turbulenceHourForMonth(equipmentNo, DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
+                allDataList.addAll(turbulenceHourForMonth);
             }
             // 统计概述
             statisticsSituationService.statisticsSituation(windTowerInfoList.get(0), statisticsSituations, equipmentAttributeList);
@@ -696,7 +696,7 @@ public class DataRecalculationImpl implements DataRecalculationService {
             log.info("计算统计数据执行完毕");
             return AjaxResult.success("数据已经重新统计");
         } catch (Exception e) {
-            log.info("数据统计计算时异常");
+            log.info("数据统计计算时异常:{}",e);
             return AjaxResult.error("数据统计计算时异常");
         }
     }

+ 0 - 1
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/HomePageServiceImpl.java

@@ -857,7 +857,6 @@ public class HomePageServiceImpl extends ServiceImpl<WindTowerDataParentTableMap
                 equipmentDto.setType(windTowerInfos.get(0).getType());
                 equipmentDtoList.add(equipmentDto);
             }
-            equipmentDtoList.add(equipmentDto);
             selectLabForVal.setEquipmentDto(equipmentDtoList);
             selectLabForVal.setWeatherStationInfo(new ArrayList<>());
             selectList.add(selectLabForVal);

+ 2 - 2
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/PdfServiceImpl.java

@@ -1019,7 +1019,7 @@ public class PdfServiceImpl extends ServiceImpl<WindTowerDataParentTableMapper,
                 continue;
             }
             List<BigDecimal> minHeightForWsList = prophaseAnemometryData.stream().filter(p -> p.getLayerHeight().equals(mixHeight)).map(p -> {
-                return CalculationUtil.getBigDecimal(p.getWsAve());
+                return CalculationUtil.getBigDecimal(null == p.getWsAve()?0: p.getWsAve());
             }).collect(Collectors.toList());
             BigDecimal wsAveForMin = CalculationUtil.getAvgWind(minHeightForWsList);
             //筛选高层高
@@ -1029,7 +1029,7 @@ public class PdfServiceImpl extends ServiceImpl<WindTowerDataParentTableMapper,
                     continue;
                 }
                 List<BigDecimal> maxHeightForWsList = prophaseAnemometryData.stream().filter(p -> p.getLayerHeight().equals(maxHeight)).map(p -> {
-                    return CalculationUtil.getBigDecimal(p.getWsAve());
+                    return CalculationUtil.getBigDecimal(null == p.getWsAve()?0: p.getWsAve());
                 }).collect(Collectors.toList());
                 BigDecimal wsAveMax = CalculationUtil.getAvgWind(maxHeightForWsList);
                 double z = new BigDecimal(CalculationUtil.getNumberFromString(maxHeight)).divide(new BigDecimal(CalculationUtil.getNumberFromString(mixHeight)), 8, RoundingMode.HALF_UP).doubleValue();

+ 1 - 1
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/ProphaseAnemometryDataServiceImpl.java

@@ -91,7 +91,7 @@ public class ProphaseAnemometryDataServiceImpl extends ServiceImpl<ProphaseAnemo
     //过滤
     public List<ProphaseAnemometryData> filterData(List<ProphaseAnemometryData> prophaseAnemometryData) {
 
-        return prophaseAnemometryData.stream().filter(p -> p.getWsAve() != null && p.getWsAve() < 50).collect(Collectors.toList());
+        return prophaseAnemometryData.stream().filter(p -> null!= p.getWsAve() && p.getWsAve() < 50).collect(Collectors.toList());
     }
 
 }

+ 4 - 6
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/RealTimeDisplayServiceImpl.java

@@ -80,7 +80,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
             BigDecimal speedLevel;
             for (ProphaseAnemometryData p : dataList) {
 
-                BigDecimal ave = p.getWsAve() != null ? BigDecimal.valueOf(p.getWsAve()) : BigDecimal.ZERO;
+                BigDecimal ave = null == p.getWsAve() ? BigDecimal.valueOf(p.getWsAve()) : BigDecimal.ZERO;
                 BigDecimal sta = p.getWsSta() != null ? BigDecimal.valueOf(p.getWsSta()) : BigDecimal.ZERO;
                 if (ave.compareTo(BigDecimal.ZERO) != 0 && sta.compareTo(BigDecimal.ZERO) != 0) {
                     //湍流
@@ -228,7 +228,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
             for (ProphaseAnemometryData p : dataList) {
                 HashMap<Object, Object> wsMap = new HashMap<>();
                 String sDate = sdf.format(p.getTs());
-                String wsStr = p.getWsAve() == null ? "0" : p.getWsAve().toString();
+                String wsStr = null == p.getWsAve() ? "0" : p.getWsAve().toString();
                 // 时间-风速 / 时间-风向
                 wsMap.put("time", sDate);
                 wsMap.put("ws", wsStr);
@@ -390,9 +390,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
      * @return 时间点集合
      */
     public List<Map<String, Object>> getStartTimeAndEndTime() {
-        if (redisCache.getCacheObject("getStartTimeAndEndTime") != null) {
-            return redisCache.getCacheObject("getStartTimeAndEndTime");
-        }
+
         List<Map<String, Object>> list = new ArrayList<>();
         List<WindTowerInfo> windTowerInfoList = windTowerInfoService.list();
         for (WindTowerInfo windTowerInfo : windTowerInfoList) {
@@ -411,7 +409,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
             }
 
         }
-        redisCache.setCacheObject("getStartTimeAndEndTime",list,1, TimeUnit.HOURS);
+        //redisCache.setCacheObject("getStartTimeAndEndTime",list,1, TimeUnit.HOURS);
         return list;
     }
 

+ 1 - 1
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindDirectionStatisticsDataServiceImpl.java

@@ -91,7 +91,7 @@ public class WindDirectionStatisticsDataServiceImpl extends ServiceImpl<WindDire
     public void roseMonth(Date startTime, Date endTime, String equipmentId, List<ProphaseAnemometryData> prophaseAnemometryDataList, List<ProphaseWeatherData> prophaseWeatherDataList, List<EquipmentAttribute> equipmentAttributeList) {
         //风数据
         List<ProphaseAnemometryData> anemometryDataList = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startTime.getTime() && p.getTs().getTime() <= endTime.getTime() &&
-                p.getWsAve() != -99 && p.getWsAve() != null).collect(Collectors.toList());
+                null != p.getWsAve()  && p.getWsAve() != -99).collect(Collectors.toList());
         //环境数据
         List<ProphaseWeatherData> weatherDataList = prophaseWeatherDataList.stream().filter(p -> p.getTs().getTime() >= startTime.getTime() && p.getTs().getTime() <= endTime.getTime()).collect(Collectors.toList());
 

+ 30 - 24
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerCalculationDataServiceImpl.java

@@ -84,7 +84,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
      */
     public ArrayList<WindTowerCalculationData> calculateWindPowerDensity(Long startTime, Long endTime, String eqNo, List<ProphaseAnemometryData> prophaseAnemometryDataList, List<ProphaseWeatherData> prophaseWeatherDataList, List<EquipmentAttribute> equipmentAttributeList, List<WindTowerCalculationData> windTowerCalculationDataList) {
         //获取对应测风塔数据
-        List<ProphaseAnemometryData> anemometryDataList = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startTime && p.getTs().getTime() <= endTime && p.getWsAve() != null && p.getWsAve() != -99).collect(Collectors.toList());
+        List<ProphaseAnemometryData> anemometryDataList = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startTime && p.getTs().getTime() <= endTime && null == p.getWsAve() && p.getWsAve() != -99).collect(Collectors.toList());
         List<ProphaseWeatherData> weatherDataList = prophaseWeatherDataList.stream().filter(p -> p.getTs().getTime() >= startTime && p.getTs().getTime() <= endTime && p.getAirDensity() != null && p.getAirDensity() >= 0).collect(Collectors.toList());
         long hour = 3600000L;
         List<WindTowerInfo> windTowerInfos = windTowerInfoService.lambdaQuery().eq(WindTowerInfo::getEquipmentNo, eqNo).list();
@@ -109,7 +109,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
                     List<ProphaseWeatherData> weatherData = weatherDataList.stream().filter(w -> w.getTs().getTime() >= finalTime && w.getTs().getTime() <= finalTime + hour - 1000).collect(Collectors.toList());
                     //根据层高获取所有风速数据
                     List<BigDecimal> bigDecimals = anemometryData.stream().map((ProphaseAnemometryData p) -> {
-                        if (p.getWsAve() != null) {
+                        if (null == p.getWsAve()) {
                             return BigDecimal.valueOf(p.getWsAve());
                         }
                         return BigDecimal.ZERO;
@@ -363,7 +363,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
             for (WindTowerCalculationData windTowerCalculationData : windTowerCalculationDataList) {
                 list.add(windTowerCalculationData.getValue().doubleValue());
             }
-            if (list.size() > 5) {
+            if (list.size() > 2) {
 
                 //把查询的最大风速集合放入公式
                 ProbabilityPlot probabilityPlot = new ProbabilityPlot(list);
@@ -1471,7 +1471,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
                 for (long start1 = startHour; start1 < endHour; start1 = start1 + dayTime) {
                     long finalStart = start1;
                     List<ProphaseAnemometryData> anemometryDataList = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= finalStart && p.getTs().getTime() < finalStart + dayTime &&
-                            p.getLayerHeight().equals(h) && p.getWsAve() > 14.5 && p.getWsAve() <= 15.5).collect(Collectors.toList());
+                            p.getLayerHeight().equals(h) && (p.getWsAve()==null?0:p.getWsAve()) > 14.5 && p.getWsAve() <= 15.5).collect(Collectors.toList());
 
                     if (anemometryDataList.size() > 0) {
                         BigDecimal wsAve = anemometryDataList.stream().map(p -> {
@@ -1580,24 +1580,26 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
             for (String h : heights) {
                 //获取对应层高的属性
                 List<EquipmentAttribute> equipmentAttributes = equipmentAttributeList.stream().filter(w -> w.getFieldName().equals(h + "staDay")).collect(Collectors.toList());
-                //删除数据
-                removeByStartTimeBetweenAndEquipmentIdAndEbId(startTime, endTime, equipmentId, equipmentAttributes.get(0).getId());
-                //每天循环
-                for (long time = startHour; time < endHour; time = time + Hour) {
-                    long startDate = time;
-                    //过滤一天的数据
-                    List<ProphaseAnemometryData> collect = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startDate && p.getTs().getTime() < startDate + Hour && p.getLayerHeight().equals(h)).collect(Collectors.toList());
-                    BigDecimal staSum = CalculationUtil.getBigDecimal(collect.stream().filter(c -> c.getWsSta() != null && c.getWsSta() != 0).mapToDouble(ProphaseAnemometryData::getWsSta).sum());
-                    if (collect.size() > 0) {
-                        WindTowerCalculationData windTowerCalculationData = new WindTowerCalculationData();
-                        windTowerCalculationData.setEquipmentId(equipmentId);
-                        windTowerCalculationData.setTime(new Date(startDate));
-                        windTowerCalculationData.setValue(staSum.divide(CalculationUtil.getBigDecimal(collect.size()), 2, RoundingMode.HALF_UP));
-                        windTowerCalculationData.setEbId(equipmentAttributes.get(0).getId());
-                        windTowerCalculationDataList.add(windTowerCalculationData);
-                        dataList.add(windTowerCalculationData);
-                    }
-                }
+               if(null != equipmentAttributes && equipmentAttributes.size()>0) {
+                   //删除数据
+                   removeByStartTimeBetweenAndEquipmentIdAndEbId(startTime, endTime, equipmentId, equipmentAttributes.get(0).getId());
+                   //每天循环
+                   for (long time = startHour; time < endHour; time = time + Hour) {
+                       long startDate = time;
+                       //过滤一天的数据
+                       List<ProphaseAnemometryData> collect = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startDate && p.getTs().getTime() < startDate + Hour && p.getLayerHeight().equals(h)).collect(Collectors.toList());
+                       BigDecimal staSum = CalculationUtil.getBigDecimal(collect.stream().filter(c -> c.getWsSta() != null && c.getWsSta() != 0).mapToDouble(ProphaseAnemometryData::getWsSta).sum());
+                       if (collect.size() > 0) {
+                           WindTowerCalculationData windTowerCalculationData = new WindTowerCalculationData();
+                           windTowerCalculationData.setEquipmentId(equipmentId);
+                           windTowerCalculationData.setTime(new Date(startDate));
+                           windTowerCalculationData.setValue(staSum.divide(CalculationUtil.getBigDecimal(collect.size()), 2, RoundingMode.HALF_UP));
+                           windTowerCalculationData.setEbId(equipmentAttributes.get(0).getId());
+                           windTowerCalculationDataList.add(windTowerCalculationData);
+                           dataList.add(windTowerCalculationData);
+                       }
+                   }
+               }
             }
         } catch (Exception e) {
             log.error("设备编号{}日平均风速标差计算失败^ ^", equipmentId);
@@ -1632,6 +1634,10 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
                 List<EquipmentAttribute> turList = equipmentAttributeList.stream().filter(equipmentAttribute -> equipmentAttribute.getFieldName().equals(h + turbulenceDay)).collect(Collectors.toList());
                 List<EquipmentAttribute> staList = equipmentAttributeList.stream().filter(equipmentAttribute -> equipmentAttribute.getFieldName().equals(h + staDay)).collect(Collectors.toList());
                 List<EquipmentAttribute> wsList = equipmentAttributeList.stream().filter(equipmentAttribute -> equipmentAttribute.getFieldName().equals(h + "awsDay")).collect(Collectors.toList());
+                if(null == turList || null == staList|| null == wsList||  turList.size()==0 ||staList.size()==0 ||wsList.size()==0 ){
+                    log.info("计算评价湍流数据异常:staList:{},wsList:{},:turList:{}",staList,wsList,turList);
+                    continue;
+                }
 
                 removeByStartTimeBetweenAndEquipmentIdAndEbId(startTime, endTime, equipmentId, turList.get(0).getId());
                 for (long start1 = startHour; start1 < endHour; start1 = start1 + dayTime) {
@@ -1787,7 +1793,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
             removeByStartTimeBetweenAndEquipmentIdAndEbId(startHour, endTime, equipmentId, ebIdMonth);
 
             String heights = windTowerInfoList.get(0).getHeights();
-            List<ProphaseAnemometryData> collect = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startTime.getTime() && p.getTs().getTime() < endTime.getTime() && p.getWsAve() != null && p.getWsAve() > 0).collect(Collectors.toList());
+            List<ProphaseAnemometryData> collect = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startTime.getTime() && p.getTs().getTime() < endTime.getTime() && null == p.getWsAve() && p.getWsAve() > 0).collect(Collectors.toList());
             BigDecimal windShear = CalculationUtil.getWindShear(collect, heights.split(","));
 
             if (collect.size() > 0) {
@@ -2296,7 +2302,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
         //计算标差
         for (String height : heights) {
             List<EquipmentAttribute> equipmentAttributeList1 = equipmentAttributeList.stream().filter(e -> e.getFieldName().equals(height + "staMonth")).collect(Collectors.toList());
-            if (!collect.isEmpty()) {
+            if (!collect.isEmpty() && null != equipmentAttributeList1 && equipmentAttributeList1.size()>0) {
                 BigDecimal sumSta = CalculationUtil.getBigDecimal(collect.stream().filter(c -> c.getWsSta() != null && c.getLayerHeight().equals(height)).mapToDouble(ProphaseAnemometryData::getWsSta).sum());
                 WindTowerCalculationData windTowerCalculationData = new WindTowerCalculationData();
                 windTowerCalculationData.setEbId(equipmentAttributeList1.get(0).getId());

+ 2 - 4
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerInfoServiceImpl.java

@@ -124,9 +124,7 @@ public class WindTowerInfoServiceImpl extends ServiceImpl<WindTowerInfoMapper, W
     }
 
     public List<Map<String, String>> listEquipmentIdAndDataTime() {
-        if (redisCache.getCacheObject("listEquipmentIdAndDataTime") != null) {
-            return redisCache.getCacheObject("listEquipmentIdAndDataTime");
-        }
+
         //TODO韩雪峰  新建的塔没有统计概述的时候无法显示  需要考虑到这种情况
         List<WindTowerInfo> windTowerInfoList = this.list();
         List<StatisticsSituation> statisticsSituationList = statisticsSituationService.list();
@@ -179,7 +177,7 @@ public class WindTowerInfoServiceImpl extends ServiceImpl<WindTowerInfoMapper, W
             }
         }
         mapList.addAll(statusMapList);
-        redisCache.setCacheObject("listEquipmentIdAndDataTime", mapList, 1, TimeUnit.HOURS);
+        //redisCache.setCacheObject("listEquipmentIdAndDataTime", mapList, 1, TimeUnit.HOURS);
         return mapList;
     }
 

+ 1 - 1
wrdep-biz/src/main/java/com/jiayue/biz/util/CalculationUtil.java

@@ -330,7 +330,7 @@ public class CalculationUtil {
 
         BigDecimal value = BigDecimal.ZERO;
         //e的-(U/K)次方的K次方
-        if (A != 0.0 && K != 0.0) {
+        if (A != 0.0 && K != 0.0 && d != -99) {
             // U/A
             BigDecimal UAK1 = BigDecimal.valueOf(d).divide(BigDecimal.valueOf(A), 4, RoundingMode.HALF_UP);
             double UAK2 = UAK1.doubleValue();

+ 1 - 1
wrdep-biz/src/main/resources/application.yml

@@ -45,7 +45,7 @@ management:
     web:
       exposure:
         #        include: ["health", "info", "logfile", "mappings"]
-        include: [ "logfile" ]
+        include: [ "health","logfile" ]
   endpoint:
     health:
       show-details: always

+ 15 - 10
wrdep-ui/src/views/dataAnalysis/index.vue

@@ -114,7 +114,7 @@
                     </el-table-column>
                   </el-table>
                 </div>
-                <div style="width: 20%">
+                <div style="width: 40%">
                   <el-row>
                     <el-col class="tableCol">{{ windTowerInfo.name }}</el-col>
                     <el-col class="tableCol">{{ windTowerInfo.equipmentNo }}</el-col>
@@ -367,15 +367,20 @@ export default {
       }
     },
     async getPdf() {
-      this.downLoading = true
-      await htmlToPdf.downloadPDF(document.querySelector('#dataAnalysisPdf'), this.windTowerInfo.name + '测风设备数据分析报告')
-      this.downPdfTimer = setInterval(() => {
-        if (Cookies.get('pdfKey')) {
-          this.downLoading = false
-          clearInterval(this.downPdfTimer)
-          Cookies.remove("pdfKey");
-        }
-      }, 500)
+      if(this.windTowerInfo.name  !== undefined && this.windTowerInfo.name  !== null){
+        this.downLoading = true
+        await htmlToPdf.downloadPDF(document.querySelector('#dataAnalysisPdf'), this.windTowerInfo.name + '测风设备数据分析报告')
+        this.downPdfTimer = setInterval(() => {
+          if (Cookies.get('pdfKey')) {
+            this.downLoading = false
+            clearInterval(this.downPdfTimer)
+            Cookies.remove("pdfKey");
+          }
+        }, 500)
+      }else {
+        this.$message.warning('请先生成报告模板')
+      }
+
     },
     /*切换测风塔时改变层高option*/
     changeHeight(data) {

+ 4 - 1
wrdep-ui/src/views/dataQuery/windTowerStatusData/index.vue

@@ -90,7 +90,7 @@
     <el-dialog
       title="选择展示"
       :visible.sync="dialogVisible"
-      width="35%">
+      width="50%" class="wDialog">
       <el-transfer :titles="['隐藏字段','显示字段']" v-model="value" :data="data"/>
       <div class="dialogFooter">
         <el-button @click="dialogVisible = false">取 消</el-button>
@@ -630,4 +630,7 @@ export default {
   margin-top: .5%;
   left: 1%
 }
+.wDialog /deep/ .el-transfer-panel {
+  width: 300px;
+}
 </style>

+ 3 - 3
wrdep-ui/src/views/largeScreenPage/Subpage/emailResourcesInfo.vue

@@ -71,7 +71,7 @@
                 </div>
                 <div class="contentBox">
                   <span class="numberBox">{{ projectInfo.hour }}<span style="font-size: 14px">h</span></span>
-                  <span class="textBox">等效利用小数</span>
+                  <span class="textBox">等效利用小数</span>
                 </div>
                 <div class="contentBox">
                   <span class="numberBox">{{ projectInfo.power }}</span>
@@ -234,9 +234,9 @@ export default {
       height: '140',
       wdHeight: '',
       projectId: '1',
-      projectOption: [{id: '1', projectName: '依兰四期'}],//项目列表
+      projectOption: [],//项目列表
       cftNo: '006171',
-      towerOption: [{value: '006171', label: '依兰四期006171'}],//塔列表
+      towerOption: [],//塔列表
       projectInfo: {
         time: '2021-07-18 — 2022-12-27',
         latitude: '43.34',

+ 1 - 1
wrdep-ui/src/views/largeScreenPage/Subpage/realPvResourcesInfo.vue

@@ -69,7 +69,7 @@
                 </div>
                 <div class="contentBox">
                   <span class="numberBox">{{ stationInfo.hour }}<span style="font-size: 14px">h</span></span>
-                  <span class="textBox">等效利用小数</span>
+                  <span class="textBox">等效利用小数</span>
                 </div>
                 <div class="contentBox">
                   <span class="numberBox">{{ stationInfo.power }}</span>

+ 1 - 1
wrdep-ui/src/views/largeScreenPage/Subpage/realResourcesInfo.vue

@@ -69,7 +69,7 @@
                 </div>
                 <div class="contentBox">
                   <span class="numberBox">{{ stationInfo.hour }}<span style="font-size: 14px">h</span></span>
-                  <span class="textBox">等效利用小数</span>
+                  <span class="textBox">等效利用小数</span>
                 </div>
                 <div class="contentBox">
                   <span class="numberBox">{{ stationInfo.power }}</span>

+ 29 - 2
wrdep-ui/src/views/windResources/windShear/index.vue

@@ -102,7 +102,8 @@ export default {
       startDateAndEndDate: [],
       tableData: [],
       height: 50,
-      heightMin: 10,
+      heights: '',
+      heightMin: 50,
       options: [],
       optionsMin: [],
       allOptions: [],
@@ -319,6 +320,7 @@ export default {
     /*切换测风塔时改变层高option*/
     changeHeight(data) {
       if (data.heights != null) {
+        this.heights = data.heights
         var option = []
         let str = data.wdHeights.split(',')
         this.height = str[0]
@@ -330,12 +332,37 @@ export default {
           }
         }
         this.options = option
-        this.optionsMin = option
+        this.changeH(str[0])
+      //  this.optionsMin = option
       } else {
         this.height = "50"
+        this.heightMin = "50"
         this.options = this.allOptions
+        this.optionsMin = this.allOptions
       }
     },
+    /*切换高层高获取底层高*/
+    changeH(value){
+      var optionMin = []
+      let str = this.heights.split(',')
+      if(value !== str[str.length-1]){
+        for (let i = 0; i < str.length; i++) {
+          let filter = this.allOptions.find(w => w.value == str[i])
+          //风切变层高没有10
+          if (filter != undefined) {
+            optionMin.push(filter)
+          }
+        }
+        this.heightMin = str[str.length-1]
+        // 比最高层小的所有层
+        this.optionsMin = optionMin.filter(w=>w.value.indexOf("A")===-1).filter(w=>w.value<parseInt(value))
+      }else {
+        this.$message.warning('风切变不可以选择最小层高')
+        this.heightMin = ''
+        this.optionsMin = []
+      }
+
+    },
     /*pageSize改变*/
     handleSizeChange(val) {
       this.page.pageSize = val