|
@@ -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);
|