|
@@ -1,16 +1,19 @@
|
|
package com.cpp.web.controller.largeScreen;
|
|
package com.cpp.web.controller.largeScreen;
|
|
|
|
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.cpp.common.core.domain.R;
|
|
import com.cpp.common.core.domain.R;
|
|
import com.cpp.system.service.ISysConfigService;
|
|
import com.cpp.system.service.ISysConfigService;
|
|
import com.cpp.web.domain.station.*;
|
|
import com.cpp.web.domain.station.*;
|
|
import com.cpp.web.domain.station.enums.ElectricFieldTypeEnum;
|
|
import com.cpp.web.domain.station.enums.ElectricFieldTypeEnum;
|
|
import com.cpp.web.dto.largeScreen.ElectricFieldDataTotalDto;
|
|
import com.cpp.web.dto.largeScreen.ElectricFieldDataTotalDto;
|
|
|
|
+import com.cpp.web.dto.largeScreen.ForecastGeneratingDataDto;
|
|
import com.cpp.web.dto.largeScreen.ProductionDataTotalDto;
|
|
import com.cpp.web.dto.largeScreen.ProductionDataTotalDto;
|
|
import com.cpp.web.service.station.*;
|
|
import com.cpp.web.service.station.*;
|
|
import com.cpp.web.utils.DateTimeUtil;
|
|
import com.cpp.web.utils.DateTimeUtil;
|
|
import com.cpp.web.utils.LatestDataUtil;
|
|
import com.cpp.web.utils.LatestDataUtil;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
+import org.apache.commons.lang.time.DateUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
@@ -112,7 +115,8 @@ public class LargeScreenController {
|
|
|
|
|
|
ProductionDataTotalDto productionDataTotalDto = calGenerating();
|
|
ProductionDataTotalDto productionDataTotalDto = calGenerating();
|
|
bizDataMap.put("productionDataTotalDto",productionDataTotalDto);
|
|
bizDataMap.put("productionDataTotalDto",productionDataTotalDto);
|
|
-
|
|
|
|
|
|
+ // 获取预测发电量
|
|
|
|
+ calForecastGenerating();
|
|
|
|
|
|
// 定义首页实际功率、可用、理论总和
|
|
// 定义首页实际功率、可用、理论总和
|
|
BigDecimal realSum = BigDecimal.ZERO;
|
|
BigDecimal realSum = BigDecimal.ZERO;
|
|
@@ -324,15 +328,19 @@ public class LargeScreenController {
|
|
// 统计实际功率总和
|
|
// 统计实际功率总和
|
|
if (powerStationStatusData.getRealValue()!=null){
|
|
if (powerStationStatusData.getRealValue()!=null){
|
|
realPowerSum = realPowerSum.add(powerStationStatusData.getRealValue());
|
|
realPowerSum = realPowerSum.add(powerStationStatusData.getRealValue());
|
|
- // 发电量 = 实际 * 0.08
|
|
|
|
- realGeneratingSum = realGeneratingSum.add(powerStationStatusData.getRealValue().multiply(new BigDecimal("0.08")).setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
|
+ // 发电量(万kWh) = 实际 * 0.08 * 0.1
|
|
|
|
+ realGeneratingSum = realGeneratingSum.add(powerStationStatusData.getRealValue().multiply(new BigDecimal("0.08")).multiply(new BigDecimal("0.1")).setScale(2, RoundingMode.HALF_UP));
|
|
}
|
|
}
|
|
// 统计理论功率总和
|
|
// 统计理论功率总和
|
|
if (powerStationStatusData.getTheoryValue()!=null){
|
|
if (powerStationStatusData.getTheoryValue()!=null){
|
|
theoryPowerSum = theoryPowerSum.add(powerStationStatusData.getTheoryValue());
|
|
theoryPowerSum = theoryPowerSum.add(powerStationStatusData.getTheoryValue());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 获取当日所有短期预测功率
|
|
|
|
|
|
+ // 获取中心侧预测的当日所有短期预测功率,前提判断上个月哪个预测准确率更准确用哪个模型
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
Date dayEndTimeFor15 = DateTimeUtil.getMomentTimeFor15Minute(System.currentTimeMillis());
|
|
Date dayEndTimeFor15 = DateTimeUtil.getMomentTimeFor15Minute(System.currentTimeMillis());
|
|
QueryWrapper<ForecastPowerShortTermRegulation> forecastPowerShortTermRegulationQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<ForecastPowerShortTermRegulation> forecastPowerShortTermRegulationQueryWrapper = new QueryWrapper<>();
|
|
forecastPowerShortTermRegulationQueryWrapper.between("time", dayStartTime, dayEndTimeFor15);
|
|
forecastPowerShortTermRegulationQueryWrapper.between("time", dayStartTime, dayEndTimeFor15);
|
|
@@ -341,8 +349,8 @@ public class LargeScreenController {
|
|
BigDecimal forecastGeneratingSum = BigDecimal.ZERO;
|
|
BigDecimal forecastGeneratingSum = BigDecimal.ZERO;
|
|
for (ForecastPowerShortTermRegulation forecastPowerShortTermRegulation : forecastPowerShortTermRegulationList) {
|
|
for (ForecastPowerShortTermRegulation forecastPowerShortTermRegulation : forecastPowerShortTermRegulationList) {
|
|
if (forecastPowerShortTermRegulation.getFpValue()!=null){
|
|
if (forecastPowerShortTermRegulation.getFpValue()!=null){
|
|
- // 发电量 = 预测值 * 0.25
|
|
|
|
- forecastGeneratingSum = forecastGeneratingSum.add(forecastPowerShortTermRegulation.getFpValue().multiply(new BigDecimal("0.25")).setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
|
+ // 发电量(万kWh) = 预测值 * 0.25 * 0.1
|
|
|
|
+ forecastGeneratingSum = forecastGeneratingSum.add(forecastPowerShortTermRegulation.getFpValue().multiply(new BigDecimal("0.25")).multiply(new BigDecimal("0.1")).setScale(2, RoundingMode.HALF_UP));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ProductionDataTotalDto productionDataTotalDto = new ProductionDataTotalDto();
|
|
ProductionDataTotalDto productionDataTotalDto = new ProductionDataTotalDto();
|
|
@@ -352,4 +360,30 @@ public class LargeScreenController {
|
|
productionDataTotalDto.setTheoryPowerSum(theoryPowerSum);
|
|
productionDataTotalDto.setTheoryPowerSum(theoryPowerSum);
|
|
return productionDataTotalDto;
|
|
return productionDataTotalDto;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 统计首页未来15天预测总发电量
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private ForecastGeneratingDataDto calForecastGenerating(){
|
|
|
|
+ // 获取未来15天的上报预测值
|
|
|
|
+ Date startTime = DateTimeUtil.getDayStartTime(DateUtils.addDays(new Date(), 1).getTime());
|
|
|
|
+ Date endTime = DateTimeUtil.getDayLastTime(DateUtils.addDays(new Date(), 15).getTime());
|
|
|
|
+ QueryWrapper dqsbWrapper = new QueryWrapper<>();
|
|
|
|
+ dqsbWrapper.eq("forecast_how_long_ago",1);
|
|
|
|
+ dqsbWrapper.between("time", startTime, endTime);
|
|
|
|
+ List<ForecastPowerShortTermRegulation> forecastPowerShortTermRegulationList = forecastPowerShortTermRegulationService.list(dqsbWrapper);
|
|
|
|
+ // 按场时间分组
|
|
|
|
+ Map<String, List<ForecastPowerShortTermRegulation>> shortTermDataGroup = forecastPowerShortTermRegulationList.stream()
|
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
|
+ s -> {
|
|
|
|
+ Date localDateTime = s.getTime();
|
|
|
|
+ return DateUtil.format(localDateTime, "yyyy-MM-dd");
|
|
|
|
+ }
|
|
|
|
+ ));
|
|
|
|
+ System.out.println(shortTermDataGroup);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
}
|
|
}
|