hxf 1 год назад
Родитель
Сommit
3ae3fc0af1

+ 42 - 32
wrdep-biz/src/main/java/com/jiayue/biz/job/AirDensityJob.java

@@ -22,6 +22,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -54,87 +55,96 @@ public class AirDensityJob {
     private final com.jiayue.biz.api.apiHDY apiHDY;
 
 
-    @Scheduled(cron = "0 0 15 * * ?")
+    @Scheduled(cron = "0 30 9 * * ?")
     public void AirDensityCalculation() {
-        List<WindTowerInfo> windTowerInfoList = windTowerInfoService.getAllWindTower();
+        List<WindTowerInfo> windTowerInfoList = windTowerInfoService.list();
         // 统计概述信息
         List<StatisticsSituation> statisticsSituations = statisticsSituationService.list();
         // 设备属性信息
         List<EquipmentAttribute> equipmentAttributeList = equipmentAttributeService.list();
+        SimpleDateFormat sdf = new SimpleDateFormat("d");
         //前7天
         Date startDate = DateTimeUtil.getDayStartTime(new Date().getTime() - 60 * 60 * 24 * 1000 * 8);
+        //如果为月初的前7天 取 月初时间 并且排除掉月初
+        if (Integer.parseInt(sdf.format(new Date())) <= 7 && !sdf.format(new Date()).equals("1")) {
+            startDate = DateUtil.beginOfMonth(new Date());
+        }
         //前一天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){
+            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){
+                //如果两个时间相等则不需要计算
+                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;
-            }
+            } else {
+                List<Entity> firstRealData = prophaseWeatherDataService.getFirstData(windTowerInfo.getEquipmentNo());
+                if(firstRealData.size() > 0){
+                    startDate = (Timestamp) firstRealData.get(0).get("first (ts)");
+                }
 
+            }
+            //传入时间的月初
+            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);
@@ -152,7 +162,7 @@ public class AirDensityJob {
                     ArrayList<WindTowerCalculationData> wsMaxMonth = windTowerCalculationDataService.wsMaxMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
                     dataList.addAll(wsMaxMonth);
                     //月平均风切变
-                    ArrayList<WindTowerCalculationData> shearMonth = windTowerCalculationDataService.shearMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList,prophaseAnemometryDataList);
+                    ArrayList<WindTowerCalculationData> shearMonth = windTowerCalculationDataService.shearMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
                     dataList.addAll(shearMonth);
                     //月平均风速标差
                     ArrayList<WindTowerCalculationData> staMonth = windTowerCalculationDataService.staMonth(DateTimeUtil.beginOfMonth(new Date(l)), DateTimeUtil.endOfMonth(new Date(l)), windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
@@ -193,7 +203,7 @@ public class AirDensityJob {
                 ArrayList<WindTowerCalculationData> wsMaxMonth = windTowerCalculationDataService.wsMaxMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
                 dataList.addAll(wsMaxMonth);
                 //月平均风切变
-                ArrayList<WindTowerCalculationData> shearMonth = windTowerCalculationDataService.shearMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList,prophaseAnemometryDataList);
+                ArrayList<WindTowerCalculationData> shearMonth = windTowerCalculationDataService.shearMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), windTowerCalculationDataList, equipmentAttributeList, windTowerInfoList, prophaseAnemometryDataList);
                 dataList.addAll(shearMonth);
                 //月平均风速标差
                 ArrayList<WindTowerCalculationData> staMonth = windTowerCalculationDataService.staMonth(startMonthDate, endMonthDate, windTowerInfo.getEquipmentNo(), prophaseAnemometryDataList, equipmentAttributeList, windTowerInfoList);
@@ -214,7 +224,7 @@ public class AirDensityJob {
 
     //存储杨总数据 TODO 缺少TD Engine 逻辑
     public void saveJsonY() {
-        String s = apiHDY.jsonY(DateUtil.format(new Date(),"yyyyMMdd"));
+        String s = apiHDY.jsonY(DateUtil.format(new Date(), "yyyyMMdd"));
         List<StationInfo> stationInfos = stationInfoService.selectStationInfo();
         for (StationInfo stationInfo : stationInfos) {
             JSONObject jsonObject = JSONUtil.parseObj(s);

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

@@ -114,7 +114,7 @@ public class DataRecalculationImpl implements DataRecalculationService {
                                 path = "D:\\in\\";
                                 FileUtil.move(file2.getPath(), path);
                                 this.systemCommandRWD();
-                            } else if (file2.getName().contains(".csv")) {
+                            } else if (file2.getName().contains(".csv") || file2.getName().contains(".CSV")) {
                                 analysisData.acousticRadar(file2, equipmentNo);
                             } else if (file2.getName().contains(".dat")) {
                                 path = "D:\\in\\";

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

@@ -411,7 +411,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
             }
 
         }
-        redisCache.setCacheObject("getStartTimeAndEndTime",list,12, TimeUnit.HOURS);
+        redisCache.setCacheObject("getStartTimeAndEndTime",list,1, TimeUnit.HOURS);
         return list;
     }
 

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

@@ -692,7 +692,6 @@ public class WindTowerDataParentTableServiceImpl extends ServiceImpl<WindTowerDa
         heightSet.addAll(Arrays.asList(heights.split(",")));
         heightSet.addAll(Arrays.asList(wdHeights.split(",")));
         //组装数据
-        System.out.println("cn.hutool.core.date.DateUtil.date() = " + cn.hutool.core.date.DateUtil.date());
         for (ProphaseWeatherData anemometryPublicData : prophaseAnemometryPublicDataList) {
             HashMap<String, Object> dataMap = new HashMap<>();
             List<ProphaseAnemometryData> prophaseAnemometryData = prophaseAnemometryPublicData.stream().filter(p -> p.getTs().getTime() == anemometryPublicData.getTs().getTime()).collect(Collectors.toList());
@@ -737,7 +736,6 @@ public class WindTowerDataParentTableServiceImpl extends ServiceImpl<WindTowerDa
             Map<String, Object> collect = dataMap.entrySet().stream().filter(h -> h.getValue() != null).collect(Collectors.toMap(Map.Entry::getKey, h -> h.getValue()));
             mapList.add(collect);
         }
-        System.out.println("cn.hutool.core.date.DateUtil.date() = " + cn.hutool.core.date.DateUtil.date());
         return mapList;
     }
 

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

@@ -179,7 +179,7 @@ public class WindTowerInfoServiceImpl extends ServiceImpl<WindTowerInfoMapper, W
             }
         }
         mapList.addAll(statusMapList);
-        redisCache.setCacheObject("listEquipmentIdAndDataTime", mapList, 12, TimeUnit.HOURS);
+        redisCache.setCacheObject("listEquipmentIdAndDataTime", mapList, 1, TimeUnit.HOURS);
         return mapList;
     }