|
@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.cpp.common.core.domain.R;
|
|
|
import com.cpp.system.service.ISysConfigService;
|
|
|
import com.cpp.web.domain.station.*;
|
|
|
+import com.cpp.web.domain.station.enums.ElectricFieldTypeEnum;
|
|
|
import com.cpp.web.service.station.*;
|
|
|
import com.cpp.web.utils.DateTimeUtil;
|
|
|
+import com.cpp.web.utils.LatestDataUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
@@ -42,33 +44,25 @@ public class LargeScreenController {
|
|
|
|
|
|
@GetMapping("/getBizData")
|
|
|
public R getBizData() {
|
|
|
- Date dayStartTime = DateTimeUtil.getDayStartTime(System.currentTimeMillis());
|
|
|
- Date dayEndTime = DateTimeUtil.getDayLastTime(System.currentTimeMillis());
|
|
|
-
|
|
|
- Map bizDataMap = new HashMap();
|
|
|
+ // 获取所有场站
|
|
|
+ List<ElectricField> electricFieldList = electricFieldService.list();
|
|
|
// 定义首页实际功率、可用、理论总和
|
|
|
BigDecimal realSum = BigDecimal.ZERO;
|
|
|
BigDecimal ableSum = BigDecimal.ZERO;
|
|
|
BigDecimal theorySum = BigDecimal.ZERO;
|
|
|
BigDecimal cdqSum = BigDecimal.ZERO;
|
|
|
BigDecimal dqSum = BigDecimal.ZERO;
|
|
|
- // 首页实际、可用、理论曲线图数组
|
|
|
- List<Object> realList = new ArrayList<>();
|
|
|
- List<Object> ableList = new ArrayList<>();
|
|
|
- List<Object> theoryList = new ArrayList<>();
|
|
|
- List<Object> cdqList = new ArrayList<>();
|
|
|
- List<Object> dqList = new ArrayList<>();
|
|
|
+ BigDecimal fzdSum = BigDecimal.ZERO;
|
|
|
+ BigDecimal wsSum = BigDecimal.ZERO;
|
|
|
+ int fzdSumCount = 0;
|
|
|
+ int wsSumCount = 0;
|
|
|
// 限电场站数定义
|
|
|
int xdCount = 0;
|
|
|
- // 查询实际功率、可用、理论
|
|
|
- Date currentTime5 = DateTimeUtil.getMomentTimeFor5Minute(System.currentTimeMillis());
|
|
|
- List<PowerStationStatusData> powerStationStatusDataList = powerStationStatusDataService.findByTimeBetween(dayStartTime,dayEndTime);
|
|
|
- // 按场时间分组
|
|
|
- Map<Long, List<PowerStationStatusData>> powerStationStatusDataGroup = powerStationStatusDataList.stream().collect(Collectors.groupingBy(s->s.getTime().getTime()));
|
|
|
- // 统计当前时刻实际功率的总和
|
|
|
- if (powerStationStatusDataGroup.get(currentTime5.getTime())!=null){
|
|
|
- List<PowerStationStatusData> currentPowerStationDataList = powerStationStatusDataGroup.get(currentTime5.getTime());
|
|
|
- for (PowerStationStatusData powerStationStatusData:currentPowerStationDataList){
|
|
|
+ // 获取每个场站的实时功率、可用、理论、超短期、短期
|
|
|
+ for (ElectricField electricField:electricFieldList){
|
|
|
+ // 实时功率、可用、理论、限电
|
|
|
+ PowerStationStatusData powerStationStatusData = LatestDataUtil.getData(electricField.getStationCode(), PowerStationStatusData.class);
|
|
|
+ if (powerStationStatusData!=null){
|
|
|
realSum = realSum.add(powerStationStatusData.getRealValue());
|
|
|
ableSum = ableSum.add(powerStationStatusData.getAbleValue());
|
|
|
theorySum = theorySum.add(powerStationStatusData.getTheoryValue());
|
|
@@ -76,9 +70,68 @@ public class LargeScreenController {
|
|
|
xdCount++;
|
|
|
}
|
|
|
}
|
|
|
+ // 超短期
|
|
|
+ ForecastPowerUltraShortTermStation forecastPowerUltraShortTermStation = LatestDataUtil.getData(electricField.getStationCode(), ForecastPowerUltraShortTermStation.class);
|
|
|
+ if (forecastPowerUltraShortTermStation!=null){
|
|
|
+ cdqSum = cdqSum.add(forecastPowerUltraShortTermStation.getFpValue());
|
|
|
+ }
|
|
|
+ // 短期
|
|
|
+ ForecastPowerShortTermStation forecastPowerShortTermStation = LatestDataUtil.getData(electricField.getStationCode(), ForecastPowerShortTermStation.class);
|
|
|
+ if (forecastPowerShortTermStation!=null){
|
|
|
+ dqSum = dqSum.add(forecastPowerShortTermStation.getFpValue());
|
|
|
+ }
|
|
|
+ // 获取气象站或者测风塔
|
|
|
+ if (ElectricFieldTypeEnum.E1.name().equals(electricField.getElectricFieldTypeEnum())){
|
|
|
+ WeatherStationStatusData weatherStationStatusData = LatestDataUtil.getData(electricField.getStationCode(), WeatherStationStatusData.class);
|
|
|
+ if (weatherStationStatusData!=null){
|
|
|
+ fzdSum = fzdSum.add(weatherStationStatusData.getGlobalR());
|
|
|
+ fzdSumCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ WindTowerStatusData windTowerStatusData = LatestDataUtil.getData(electricField.getStationCode(), WindTowerStatusData.class);
|
|
|
+ if (windTowerStatusData!=null){
|
|
|
+ wsSum = wsSum.add(windTowerStatusData.getWsHubHeight());
|
|
|
+ wsSumCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ Map bizDataMap = new HashMap();
|
|
|
+ // 定义总和map
|
|
|
+ Map sumMap = new HashMap();
|
|
|
+ sumMap.put("realSum",realSum);
|
|
|
+ sumMap.put("ableSum",ableSum);
|
|
|
+ sumMap.put("theorySum",theorySum);
|
|
|
+ bizDataMap.put("sumMap",sumMap);
|
|
|
+ Map envDataMap = new HashMap();
|
|
|
+ BigDecimal wsAvg = BigDecimal.ZERO;
|
|
|
+ if (wsSum.compareTo(BigDecimal.ZERO)==1){
|
|
|
+ wsAvg = wsAvg.divide(new BigDecimal(wsSumCount),2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+ envDataMap.put("wsAvg",wsAvg);
|
|
|
+ BigDecimal fzdAvg = BigDecimal.ZERO;
|
|
|
+ if (fzdSum.compareTo(BigDecimal.ZERO)==1){
|
|
|
+ fzdAvg = fzdAvg.divide(new BigDecimal(fzdSumCount),2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+ envDataMap.put("fzdAvg",fzdAvg);
|
|
|
+ bizDataMap.put("envDataMap",envDataMap);
|
|
|
|
|
|
|
|
|
+ Date dayStartTime = DateTimeUtil.getDayStartTime(System.currentTimeMillis());
|
|
|
+ Date dayEndTime = DateTimeUtil.getDayLastTime(System.currentTimeMillis());
|
|
|
+ // 首页实际、可用、理论曲线图数组
|
|
|
+ List<Object> realList = new ArrayList<>();
|
|
|
+ List<Object> ableList = new ArrayList<>();
|
|
|
+ List<Object> theoryList = new ArrayList<>();
|
|
|
+ List<Object> cdqList = new ArrayList<>();
|
|
|
+ List<Object> dqList = new ArrayList<>();
|
|
|
+
|
|
|
+ // 查询实际功率、可用、理论
|
|
|
+ Date currentTime5 = DateTimeUtil.getMomentTimeFor5Minute(System.currentTimeMillis());
|
|
|
+ List<PowerStationStatusData> powerStationStatusDataList = powerStationStatusDataService.findByTimeBetween(dayStartTime,dayEndTime);
|
|
|
+ // 按场时间分组
|
|
|
+ Map<Long, List<PowerStationStatusData>> powerStationStatusDataGroup = powerStationStatusDataList.stream().collect(Collectors.groupingBy(s->s.getTime().getTime()));
|
|
|
+
|
|
|
// 获取超短期
|
|
|
String cdqHowLongAgo = configService.selectConfigByKey("cdqHowLongAgo");
|
|
|
QueryWrapper cdqysWrapper = new QueryWrapper<>();
|
|
@@ -87,14 +140,6 @@ public class LargeScreenController {
|
|
|
List<ForecastPowerUltraShortTermStation> forecastPowerUltraShortTermStationList = forecastPowerUltraShortTermStationService.list(cdqysWrapper);
|
|
|
// 按场时间分组
|
|
|
Map<Long, List<ForecastPowerUltraShortTermStation>> utraShortTermStationDataGroup = forecastPowerUltraShortTermStationList.stream().collect(Collectors.groupingBy(s->s.getTime().getTime()));
|
|
|
- Date currentTime15 = DateTimeUtil.getMomentTimeFor15Minute(System.currentTimeMillis());
|
|
|
- // 统计当前时刻超短期的总和
|
|
|
- if (utraShortTermStationDataGroup.get(currentTime15.getTime())!=null){
|
|
|
- List<ForecastPowerUltraShortTermStation> ultraShortTermDataList = utraShortTermStationDataGroup.get(currentTime15.getTime());
|
|
|
- for (ForecastPowerUltraShortTermStation forecastPowerUltraShortTermStation:ultraShortTermDataList){
|
|
|
- cdqSum = cdqSum.add(forecastPowerUltraShortTermStation.getFpValue());
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
// 获取短期上报
|
|
|
String dqHowLongAgo = configService.selectConfigByKey("dqHowLongAgo");
|
|
@@ -104,13 +149,6 @@ public class LargeScreenController {
|
|
|
List<ForecastPowerShortTermRegulation> forecastPowerShortTermRegulationList = forecastPowerShortTermRegulationService.list(dqsbWrapper);
|
|
|
// 按场时间分组
|
|
|
Map<Long, List<ForecastPowerShortTermRegulation>> shortTermDataGroup = forecastPowerShortTermRegulationList.stream().collect(Collectors.groupingBy(s->s.getTime().getTime()));
|
|
|
- // 统计当前时刻短期的总和
|
|
|
- if (shortTermDataGroup.get(currentTime15.getTime())!=null){
|
|
|
- List<ForecastPowerShortTermRegulation> shortTermDataList = shortTermDataGroup.get(currentTime15.getTime());
|
|
|
- for (ForecastPowerShortTermRegulation forecastPowerShortTermRegulation:shortTermDataList){
|
|
|
- dqSum = dqSum.add(forecastPowerShortTermRegulation.getFpValue());
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
Long momentTime = 15 * 60 * 1000L;
|
|
|
for (Long tempTime = dayStartTime.getTime(); tempTime <= dayEndTime.getTime(); tempTime = tempTime + momentTime) {
|
|
@@ -167,13 +205,6 @@ public class LargeScreenController {
|
|
|
dqList.add(null);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- // 定义总和map
|
|
|
- Map sumMap = new HashMap();
|
|
|
- sumMap.put("realSum",realSum);
|
|
|
- sumMap.put("ableSum",ableSum);
|
|
|
- sumMap.put("theorySum",theorySum);
|
|
|
// 定义曲线map
|
|
|
Map curveMap = new HashMap();
|
|
|
curveMap.put("realList",realList);
|
|
@@ -183,8 +214,8 @@ public class LargeScreenController {
|
|
|
curveMap.put("cdqList",cdqList);
|
|
|
sumMap.put("dqSum",dqSum);
|
|
|
curveMap.put("dqList",dqList);
|
|
|
- // 获取所有场站
|
|
|
- List<ElectricField> electricFieldList = electricFieldService.list();
|
|
|
+ bizDataMap.put("curveMap",curveMap);
|
|
|
+
|
|
|
// 定义限电图map
|
|
|
Map xdMap = new HashMap();
|
|
|
// 总场站数
|
|
@@ -204,34 +235,9 @@ public class LargeScreenController {
|
|
|
totalCapacity = totalCapacity.add(electricField.getCapacity());
|
|
|
}
|
|
|
xdMap.put("totalCapacity",totalCapacity);
|
|
|
+ bizDataMap.put("xdMap",xdMap);
|
|
|
|
|
|
- // 首页风速、辐照度平均值统计
|
|
|
- Map envDataMap = new HashMap();
|
|
|
- BigDecimal wsAvg = BigDecimal.ZERO;
|
|
|
- // 获取当前时刻的所有风塔数据
|
|
|
- List<WindTowerStatusData> windTowerStatusDataList = windTowerStatusDataService.findByBetweenTimeAndStationCode(currentTime5, currentTime5, null);
|
|
|
- for (WindTowerStatusData windTowerStatusData:windTowerStatusDataList){
|
|
|
- wsAvg = wsAvg.add(windTowerStatusData.getWsHubHeight());
|
|
|
- }
|
|
|
- if (wsAvg.compareTo(BigDecimal.ZERO)==1){
|
|
|
- wsAvg = wsAvg.divide(new BigDecimal(windTowerStatusDataList.size()),2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }
|
|
|
- envDataMap.put("wsAvg",wsAvg);
|
|
|
- BigDecimal fzdAvg = BigDecimal.ZERO;
|
|
|
- // 获取当前时刻的所有气象站数据
|
|
|
- List<WeatherStationStatusData> weatherStationStatusDataList = weatherStationStatusDataService.findByBetweenTimeAndStationCode(currentTime5, currentTime5, null);
|
|
|
- for (WeatherStationStatusData weatherStationStatusData:weatherStationStatusDataList){
|
|
|
- fzdAvg = fzdAvg.add(weatherStationStatusData.getGlobalR());
|
|
|
- }
|
|
|
- if (fzdAvg.compareTo(BigDecimal.ZERO)==1){
|
|
|
- fzdAvg = fzdAvg.divide(new BigDecimal(weatherStationStatusDataList.size()),2, BigDecimal.ROUND_HALF_UP);
|
|
|
- }
|
|
|
- envDataMap.put("fzdAvg",fzdAvg);
|
|
|
|
|
|
- bizDataMap.put("sumMap",sumMap);
|
|
|
- bizDataMap.put("curveMap",curveMap);
|
|
|
- bizDataMap.put("xdMap",xdMap);
|
|
|
- bizDataMap.put("envDataMap",envDataMap);
|
|
|
return R.ok(bizDataMap);
|
|
|
}
|
|
|
}
|