Quellcode durchsuchen

数据重算增加备注 bug处理

hxf vor 1 Jahr
Ursprung
Commit
451061752e

+ 24 - 26
neim-biz/src/main/java/com/jiayue/biz/job/AirDensityJob.java

@@ -59,7 +59,7 @@ public class AirDensityJob {
 
     @Scheduled(cron = "0 0 15 * * ?")
     public void AirDensityCalculation() {
-        List<WindTowerInfo> windTowerInfoList = windTowerInfoService.lambdaQuery().list();
+        List<WindTowerInfo> windTowerInfoList = windTowerInfoService.lambdaQuery().eq(WindTowerInfo::getEquipmentNo,"5302").list();
         // 统计概述信息
         List<StatisticsSituation> statisticsSituations = statisticsSituationService.list();
         // 设备属性信息
@@ -73,76 +73,74 @@ public class AirDensityJob {
         }
         //前一天23点59分
         Date endDate = DateTimeUtil.getDayLastTime(DateUtil.yesterday().getTime());
-        //传入时间的月初
-        Date startMonthDate = DateTimeUtil.beginOfMonth(startDate);
         //传入时间的月末
         Date endMonthDate = DateTimeUtil.endOfMonth(endDate);
         for (WindTowerInfo windTowerInfo : windTowerInfoList) {
-            Date sevenDate = startDate;
-            Date startTime = startMonthDate;
             WindTowerCalculationData lastData = windTowerCalculationDataService.getLastDataCalculation(windTowerInfo.getEquipmentNo());
             List<Entity> lastRealData = prophaseWeatherDataService.getLastData(windTowerInfo.getEquipmentNo());
             if (lastData != null && lastRealData != null) {
                 Timestamp timestamp = (Timestamp) lastRealData.get(0).get("last (ts)");
+                //获取统计数据最后数据的时间
                 long lastTime = DateUtil.endOfDay(lastData.getTime()).getTime();
+                //获取邮件数据最后数据的时间
                 long realTime = DateUtil.endOfDay(new Date(timestamp.getTime())).getTime();
+                //如果两个时间相等则不需要计算
                 if (lastTime == realTime) {
                     continue;
                 }
+                //如果邮件的数据比统计数据的时候大8天 则取统计数据的时间作为开始时间
                 if (realTime - lastTime >= 60 * 60 * 24 * 1000 * 8) {
-                    sevenDate = new Date(lastTime);
+                    startDate = new Date(lastTime);
                 }
 
             }
-            if (sevenDate.getTime() < startMonthDate.getTime()) {
-                startTime = sevenDate;
-            }
-
+            //传入时间的月初
+            Date startMonthDate = DateTimeUtil.beginOfMonth(startDate);
 
             //风数据查询
-            List<ProphaseAnemometryData> prophaseAnemometryDataList = prophaseAnemometryDataService.selectAll(windTowerInfo.getEquipmentNo(), new Timestamp(startTime.getTime()), new Timestamp(endDate.getTime()));
+            List<ProphaseAnemometryData> prophaseAnemometryDataList = prophaseAnemometryDataService.selectAll(windTowerInfo.getEquipmentNo(), new Timestamp(startMonthDate.getTime()), new Timestamp(endMonthDate.getTime()));
             //环境数据查询
-            List<ProphaseWeatherData> prophaseWeatherDataList = prophaseWeatherDataService.selectPublicData(windTowerInfo.getEquipmentNo(), new Timestamp(startTime.getTime()), new Timestamp(endDate.getTime()));
+            List<ProphaseWeatherData> prophaseWeatherDataList = prophaseWeatherDataService.selectPublicData(windTowerInfo.getEquipmentNo(), new Timestamp(startMonthDate.getTime()), new Timestamp(endMonthDate.getTime()));
             //统计数据
-            List<WindTowerCalculationData> windTowerCalculationDataList = windTowerCalculationDataService.getByBetweenTimeAndEquipmentId(startTime, endDate, windTowerInfo.getEquipmentNo());
+            List<WindTowerCalculationData> windTowerCalculationDataList = windTowerCalculationDataService.getByBetweenTimeAndEquipmentId(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo());
             //小时平均风速风功率密度
-            ArrayList<WindTowerCalculationData> wsAndWpdList = windTowerCalculationDataService.calculateWindPowerDensity(sevenDate.getTime(), endDate.getTime(), windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
+            ArrayList<WindTowerCalculationData> wsAndWpdList = windTowerCalculationDataService.calculateWindPowerDensity(startDate.getTime(), endDate.getTime(), windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
             ArrayList<WindTowerCalculationData> dataList = new ArrayList<>(wsAndWpdList);
             //每小时风切变指数
-            ArrayList<WindTowerCalculationData> windShearList = windTowerCalculationDataService.calculateWindPowerShear(sevenDate, endDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, windTowerCalculationDataList);
+            ArrayList<WindTowerCalculationData> windShearList = windTowerCalculationDataService.calculateWindPowerShear(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, windTowerCalculationDataList);
             dataList.addAll(windShearList);
             //日平均温度
-            ArrayList<WindTowerCalculationData> tList = windTowerCalculationDataService.tDay(sevenDate, endDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList);
+            ArrayList<WindTowerCalculationData> tList = windTowerCalculationDataService.tDay(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList);
             dataList.addAll(tList);
             //日平均气压
-            ArrayList<WindTowerCalculationData> paList = windTowerCalculationDataService.paDay(sevenDate, endDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList);
+            ArrayList<WindTowerCalculationData> paList = windTowerCalculationDataService.paDay(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList);
             dataList.addAll(paList);
             //发电量与满发小时数
-            ArrayList<WindTowerCalculationData> calculateBattery = windTowerCalculationDataService.calculateBattery(sevenDate.getTime(), endDate.getTime(), windTowerInfo, prophaseAnemometryDataList, equipmentAttributeList, windTowerCalculationDataList);
+            ArrayList<WindTowerCalculationData> calculateBattery = windTowerCalculationDataService.calculateBattery(startDate.getTime(), endDate.getTime(), windTowerInfo, prophaseAnemometryDataList, equipmentAttributeList, windTowerCalculationDataList);
             dataList.addAll(calculateBattery);
             //日平均空气密度
-            ArrayList<WindTowerCalculationData> airList = windTowerCalculationDataService.airDensityDay(sevenDate, endDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
+            ArrayList<WindTowerCalculationData> airList = windTowerCalculationDataService.airDensityDay(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseWeatherDataList, equipmentAttributeList, windTowerCalculationDataList);
             dataList.addAll(airList);
             //日平均风速标差
-            ArrayList<WindTowerCalculationData> staDay = windTowerCalculationDataService.calculateStaDay(sevenDate, endDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
+            ArrayList<WindTowerCalculationData> staDay = windTowerCalculationDataService.calculateStaDay(startDate, endDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
             dataList.addAll(staDay);
             //日平均风速
-            ArrayList<WindTowerCalculationData> wsDayList = windTowerCalculationDataService.wsDay(sevenDate, endDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
+            ArrayList<WindTowerCalculationData> wsDayList = windTowerCalculationDataService.wsDay(startDate, endDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
             dataList.addAll(wsDayList);
             //日平均湍流
-            ArrayList<WindTowerCalculationData> turList = windTowerCalculationDataService.turbulenceDay(sevenDate, endDate, windTowerInfo.getEquipmentNo(), equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
+            ArrayList<WindTowerCalculationData> turList = windTowerCalculationDataService.turbulenceDay(startDate, endDate, windTowerInfo.getEquipmentNo(), equipmentAttributeList, windTowerInfoList, windTowerCalculationDataList);
             dataList.addAll(turList);
             //日平均风切变
-            ArrayList<WindTowerCalculationData> windShearDay = windTowerCalculationDataService.shearDay(sevenDate, endDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
+            ArrayList<WindTowerCalculationData> windShearDay = windTowerCalculationDataService.shearDay(startDate, endDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
             dataList.addAll(windShearDay);
             //日平均风功率密度
-            ArrayList<WindTowerCalculationData> wpdDayList = windTowerCalculationDataService.wpdDay(sevenDate, endDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
+            ArrayList<WindTowerCalculationData> wpdDayList = windTowerCalculationDataService.wpdDay(startDate, endDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);
             dataList.addAll(wpdDayList);
 
 
             //如果结束时间和数据统计的时间相差大于30天就分割月份进行计算
-            if (endDate.getTime() - sevenDate.getTime() > 86400000L * 30) {
-                List<Long> dateTime = DateTimeUtil.getIntervalTimeByMonth(DateTimeUtil.beginOfMonth(sevenDate), DateTimeUtil.beginOfMonth(endDate));
+            if (endDate.getTime() - startDate.getTime() > 86400000L * 30) {
+                List<Long> dateTime = DateTimeUtil.getIntervalTimeByMonth(DateTimeUtil.beginOfMonth(startDate), DateTimeUtil.beginOfMonth(endDate));
                 for (Long l : dateTime) {
                     //月平均风速
                     ArrayList<WindTowerCalculationData> wsMonth = windTowerCalculationDataService.wsMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList);

+ 1 - 3
neim-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerCalculationDataServiceImpl.java

@@ -1948,8 +1948,6 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
      */
     public ArrayList<WindTowerCalculationData> calculateWindPowerShear(Date startTime, Date endTime, String equipmentId, List<ProphaseAnemometryData> prophaseAnemometryDataList, List<WindTowerCalculationData> windTowerCalculationDataList) {
         log.info("开始计算小时风切变指数");
-        long startHour = startTime.getTime();
-        long endHour = endTime.getTime();
         List<WindTowerInfo> windTowerInfoList = windTowerInfoService.lambdaQuery().eq(WindTowerInfo::getEquipmentNo, equipmentId).list();
         String[] heights = windTowerInfoList.get(0).getHeights().split(",");
         ArrayList<WindTowerCalculationData> listAll = new ArrayList<>();
@@ -1959,7 +1957,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
         //删除综合风切变
         removeByStartTimeBetweenAndEquipmentIdAndEbId(startTime, endTime, equipmentId, equipmentAttribute.getId());
         try {
-            for (long start1 = startHour; start1 <= endHour; start1 = start1 + 3600000) {
+            for (long start1 = startTime.getTime(); start1 <= endTime.getTime(); start1 = start1 + 3600000) {
                 //开始时间--->start1  结束时间---->start2
                 long start2 = start1 + 3600000L;
 

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

@@ -375,8 +375,10 @@ public class CalculationUtil {
                 List<BigDecimal> minHeightForWsList = prophaseAnemometryData.stream().filter(p -> p.getLayerHeight().equals(minHeight)).map(p -> {
                     return getBigDecimal(p.getWsAve());
                 }).collect(Collectors.toList());
+                //计算平均风速
                 BigDecimal wsAveMin = getAvgWind(minHeightForWsList);
                 double z = new BigDecimal(getNumberFromString(maxHeight)).divide(new BigDecimal(getNumberFromString(minHeight)),8,RoundingMode.HALF_UP).doubleValue();
+                //计算log 层高
                 double z1 = Math.log10(z);
                 if(wsAveMin.compareTo(BigDecimal.ZERO) > 0){
                     BigDecimal shear = Convert.toBigDecimal(Math.log10(Convert.toDouble(wsAveForMax.divide(wsAveMin,8,RoundingMode.HALF_UP))))
@@ -388,7 +390,7 @@ public class CalculationUtil {
             }
         }
 
-        if (total.compareTo(BigDecimal.ZERO) > 0) {
+        if (total.compareTo(BigDecimal.ZERO) != 0) {
             sumWShear = sumWShear.divide(total, 2, RoundingMode.HALF_UP);
         }
         return sumWShear;