|
@@ -4,7 +4,11 @@ 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.text.csv.CsvUtil;
|
|
|
+import cn.hutool.core.text.csv.CsvWriter;
|
|
|
+import cn.hutool.core.util.CharsetUtil;
|
|
|
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;
|
|
@@ -46,6 +50,8 @@ public class PhotovoltaicAnalysisTask {
|
|
|
private IvPvCurveFittingService curveFittingService;
|
|
|
@Resource
|
|
|
private PhotovoltaicEfficiencyAnalysis2 photovoltaicEfficiencyAnalysis;
|
|
|
+ @Resource
|
|
|
+ private GyeeConfig gyeeConfig;
|
|
|
|
|
|
//秒 分 时 日 月 周
|
|
|
@Scheduled(cron = "0 0 1 * * ?")
|
|
@@ -67,7 +73,10 @@ public class PhotovoltaicAnalysisTask {
|
|
|
QueryWrapper<ProBasicEquipmentPoint> rfdlWrapper = new QueryWrapper<>();
|
|
|
rfdlWrapper.eq("uniform_code", "RFDL").like("windturbine_id", "_IN_");
|
|
|
List<ProBasicEquipmentPoint> rfdlList = proBasicEquipmentPointService.list(rfdlWrapper);
|
|
|
- String rfdlPoints = rfdlList.stream().map(ProBasicEquipmentPoint::getNemCode).collect(Collectors.joining(","));
|
|
|
+ //场站、机型、日发电量测点
|
|
|
+ Map<String, Map<String, String>> rfdlPointsMap = rfdlList.stream().collect(Collectors.groupingBy(ProBasicEquipmentPoint::getWindpowerstationId,
|
|
|
+ Collectors.groupingBy(ProBasicEquipmentPoint::getModelId, Collectors.mapping(ProBasicEquipmentPoint::getNemCode, Collectors.joining(",")))));
|
|
|
+ //String rfdlPoints = rfdlList.stream().map(ProBasicEquipmentPoint::getNemCode).collect(Collectors.joining(","));
|
|
|
//逆变器id,日发电量测点
|
|
|
Map<String, String> rfdlPointMap = rfdlList.stream().collect(Collectors.toMap(ProBasicEquipmentPoint::getWindturbineId, ProBasicEquipmentPoint::getNemCode));
|
|
|
|
|
@@ -84,10 +93,9 @@ public class PhotovoltaicAnalysisTask {
|
|
|
PhotovoltaicAnalysis paList = photovoltaicAnalysisService.getOne(paWrapper);
|
|
|
DateRange dateRange = getDateRange(paList.getDataDate());
|
|
|
if (dateRange == null) return;
|
|
|
+
|
|
|
for (DateTime dateTime : dateRange) {
|
|
|
DateTime endTime = dateTime.offsetNew(DateField.DAY_OF_YEAR, 1);
|
|
|
- //测点、日发电量
|
|
|
- Map<String, TsDoubleData> rfdlMap = remoteService.adaptergf().getHistorySection(rfdlPoints, endTime.getTime());
|
|
|
|
|
|
List<PhotovoltaicAnalysis> photovoltaicAnalyses = new ArrayList<>();
|
|
|
equipmentMapMap.forEach((stationId, vv) -> {
|
|
@@ -99,6 +107,9 @@ public class PhotovoltaicAnalysisTask {
|
|
|
Map<String, List<PhotovoltaicInfo>> llglInfos = curveFittingService.calculatAnalysis1(bzdList, datas2File1);
|
|
|
|
|
|
vv.forEach((modelId, equipments) -> {
|
|
|
+ //测点、日发电量
|
|
|
+ Map<String, TsDoubleData> rfdlMap = remoteService.adaptergf().getHistorySection(rfdlPointsMap.get(stationId).get(modelId), endTime.getTime());
|
|
|
+
|
|
|
List<PhotovoltaicAnalysis> analysises = new ArrayList<>();
|
|
|
//等效发电时之和
|
|
|
AtomicReference<Double> hoursSum = new AtomicReference<>((double) 0);
|
|
@@ -165,6 +176,9 @@ public class PhotovoltaicAnalysisTask {
|
|
|
});
|
|
|
});
|
|
|
photovoltaicAnalysisService.saveBatch(photovoltaicAnalyses);
|
|
|
+ CsvWriter writer = CsvUtil.getWriter(gyeeConfig.getGfDataPath() + "testWrite.csv", CharsetUtil.CHARSET_UTF_8);
|
|
|
+ writer.write(photovoltaicAnalyses);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -179,10 +193,8 @@ public class PhotovoltaicAnalysisTask {
|
|
|
int doubleValue = (int) tsPointData.getDoubleValue();
|
|
|
if (doubleValue == 2 || doubleValue == 3) {
|
|
|
duration += faultTime - tsPointData.getTs();
|
|
|
- faultTime = tsPointData.getTs();
|
|
|
- } else {
|
|
|
- faultTime = tsPointData.getTs();
|
|
|
}
|
|
|
+ faultTime = tsPointData.getTs();
|
|
|
}
|
|
|
return duration / (1000.0 * 60 * 60);
|
|
|
}
|