|
@@ -1,11 +1,13 @@
|
|
|
package com.gyee.power.fitting.dispersionanalysis;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateField;
|
|
|
import cn.hutool.core.date.DateRange;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.stream.CollectorUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
-import com.gyee.power.fitting.common.config.GyeeConfig;
|
|
|
import com.gyee.power.fitting.common.feign.RemoteServiceBuilder;
|
|
|
import com.gyee.power.fitting.model.PhotovoltaicAnalysis;
|
|
|
import com.gyee.power.fitting.model.ProBasicEquipment;
|
|
@@ -16,7 +18,7 @@ import com.gyee.power.fitting.service.IPhotovoltaicAnalysisService;
|
|
|
import com.gyee.power.fitting.service.ProBasicEquipmentPointService;
|
|
|
import com.gyee.power.fitting.service.ProBasicEquipmentService;
|
|
|
import com.gyee.power.fitting.service.ProEconEquipmentmodelService;
|
|
|
-import com.gyee.power.fitting.service.impl.NewIvPvCurveFittingService;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
@@ -46,14 +48,10 @@ public class PhotovoltaicAnalysisTask {
|
|
|
@Resource
|
|
|
private InverterPowerAnalysis2 inverterPowerAnalysis;
|
|
|
@Resource
|
|
|
- private NewIvPvCurveFittingService curveFittingService;
|
|
|
- @Resource
|
|
|
private PhotovoltaicEfficiencyAnalysis2 photovoltaicEfficiencyAnalysis;
|
|
|
- @Resource
|
|
|
- private GyeeConfig gyeeConfig;
|
|
|
|
|
|
//秒 分 时 日 月 周
|
|
|
- @Scheduled(cron = "0 22 1 * * ?")
|
|
|
+ @Scheduled(cron = "0 06 15 * * ?")
|
|
|
public void doTask() {
|
|
|
//获取逆变器
|
|
|
QueryWrapper<ProBasicEquipment> eWrapper = new QueryWrapper<>();
|
|
@@ -137,27 +135,34 @@ public class PhotovoltaicAnalysisTask {
|
|
|
double dxfds = inverterAnalysis.calcEquivalentOperatingHours(rfdl, zjrl);
|
|
|
analysis.setEquivalentGeneratingTime(dxfds);
|
|
|
//有功功率
|
|
|
- String s = ygglPointMap.get(equipmentId);
|
|
|
List<TsDoubleData> ygglInfoList = remoteService.adaptergf().getHistorySnap(ygglPointMap.get(equipmentId), dateTime.getTime(), endTime.getTime(), 60);
|
|
|
//平均功率
|
|
|
double pjGl = ygglInfoList.stream().filter(i -> i.getDoubleValue() > 1).mapToDouble(TsDoubleData::getDoubleValue).average().orElse(0);
|
|
|
+ /*月有功功率
|
|
|
+ long y_time = DateUtil.beginOfMonth(dateTime.toJdkDate()).getTime();
|
|
|
+ List<TsDoubleData> y_ygglInfoList = remoteService.adaptergf().getHistorySnap(ygglPointMap.get(equipmentId), y_time, endTime.getTime(), 5*60);
|
|
|
+ double y_pjGl = y_ygglInfoList.stream().filter(i -> i.getDoubleValue() > 1).mapToDouble(TsDoubleData::getDoubleValue).average().orElse(0);*/
|
|
|
analysis.setAveragePower(pjGl);
|
|
|
|
|
|
//光照强度
|
|
|
- String s1 = gzqdPointMap.get(equipmentId);
|
|
|
List<TsDoubleData> gzqdInfoList = remoteService.adaptergf().getHistorySnap(gzqdPointMap.get(equipmentId), dateTime.getTime(), endTime.getTime(), 60);
|
|
|
double pjGzqd = gzqdInfoList.stream().filter(i -> i.getDoubleValue() > 1).mapToDouble(TsDoubleData::getDoubleValue).average().orElse(0);
|
|
|
+ //月光照强度
|
|
|
+ //List<TsDoubleData> y_gzqdInfoList = remoteService.adaptergf().getHistorySnap(gzqdPointMap.get(equipmentId), y_time, endTime.getTime(), 5*60);
|
|
|
|
|
|
//平均理论功率
|
|
|
- analysis.setAverageTheoryPower(pjGzqd);
|
|
|
+ analysis.setAverageLightIntensity(pjGzqd);
|
|
|
//光伏转换效率
|
|
|
- double zhxl = photovoltaicEfficiencyAnalysis.calculatePhotovoltaicEfficiency(pjGl, pjGzqd, zjrl);
|
|
|
+ double zhxl = photovoltaicEfficiencyAnalysis.calculatePhotovoltaicEfficiency(pjGl, pjGzqd, zjrl, modelId);
|
|
|
analysis.setConversionEfficiency(zhxl);
|
|
|
String zhxlZt = photovoltaicEfficiencyAnalysis.determinePhotovoltaicLevel(zhxl);
|
|
|
analysis.setConversionEfficiencyStatus(zhxlZt);
|
|
|
//离散率
|
|
|
double lsl = inverterPowerAnalysis.calcPowerDeviation(gzqdInfoList, ygglInfoList, pjGl, dateTime.getTime(), endTime.getTime());
|
|
|
+ //月离散率
|
|
|
+ //double y_lsl = inverterPowerAnalysis.calcPowerDeviation(y_gzqdInfoList, y_ygglInfoList, y_pjGl, y_time, endTime.getTime());
|
|
|
analysis.setScatter(lsl);
|
|
|
+ //analysis.setMonthlyScatter(y_lsl);
|
|
|
String lslZt = inverterPowerAnalysis.analyzeInverterStatus(lsl, pjGl);
|
|
|
analysis.setScatterStatus(lslZt);
|
|
|
|
|
@@ -180,7 +185,7 @@ public class PhotovoltaicAnalysisTask {
|
|
|
photovoltaicAnalysisService.saveBatch(photovoltaicAnalyses);
|
|
|
// CsvWriter writer = CsvUtil.getWriter(gyeeConfig.getGfDataPath() + "testWrite.csv", CharsetUtil.CHARSET_UTF_8);
|
|
|
// writer.write(photovoltaicAnalyses);
|
|
|
- System.out.println("计算完成!");
|
|
|
+ System.out.println("计算完成!" + DateUtil.formatDate(dateTime));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -195,6 +200,7 @@ public class PhotovoltaicAnalysisTask {
|
|
|
}
|
|
|
|
|
|
private double calcDowntimeByFailure(List<TsDoubleData> sbztInfoList) {
|
|
|
+ if (CollUtil.isEmpty(sbztInfoList)) return 0;
|
|
|
sbztInfoList = sbztInfoList.stream().sorted(Comparator.comparing(TsDoubleData::getTs).reversed()).collect(Collectors.toList());
|
|
|
|
|
|
long duration = 0;//故障或检修时间
|
|
@@ -215,7 +221,7 @@ public class PhotovoltaicAnalysisTask {
|
|
|
//paList.setDataDate(DateUtil.parse("2023-10-14"));
|
|
|
DateTime startTime;
|
|
|
DateTime endTime = DateUtil.beginOfDay(DateUtil.yesterday());
|
|
|
- if (paList == null || paList.getDataDate()==null) {
|
|
|
+ if (paList == null || paList.getDataDate() == null) {
|
|
|
startTime = endTime;
|
|
|
} else {
|
|
|
startTime = DateUtil.offsetDay(paList.getDataDate(), 1);
|