|
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.cpp.system.service.ISysConfigService;
|
|
import com.cpp.system.service.ISysConfigService;
|
|
|
|
+import com.cpp.web.domain.BaseCppEntity;
|
|
import com.cpp.web.domain.cloud.ForecastPowerShortTermCloud;
|
|
import com.cpp.web.domain.cloud.ForecastPowerShortTermCloud;
|
|
import com.cpp.web.domain.station.*;
|
|
import com.cpp.web.domain.station.*;
|
|
import com.cpp.web.mapper.station.PowerStationStatusDataMapper;
|
|
import com.cpp.web.mapper.station.PowerStationStatusDataMapper;
|
|
@@ -93,7 +94,7 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
|
|
|
|
|
|
public Map<String, List> getCompositeData(String stationCode, Long startTime, Long endTime) {
|
|
public Map<String, List> getCompositeData(String stationCode, Long startTime, Long endTime) {
|
|
ElectricField electricField = electricFieldService.findByStationCode(stationCode);
|
|
ElectricField electricField = electricFieldService.findByStationCode(stationCode);
|
|
- String station = "";
|
|
|
|
|
|
+ String stationType = electricField.getElectricFieldTypeEnum();
|
|
|
|
|
|
// 封装列表头信息
|
|
// 封装列表头信息
|
|
List headList = new ArrayList();
|
|
List headList = new ArrayList();
|
|
@@ -105,40 +106,78 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
|
|
timeHeadMap.put("field", "time");
|
|
timeHeadMap.put("field", "time");
|
|
timeHeadMap.put("label", "时间");
|
|
timeHeadMap.put("label", "时间");
|
|
headList.add(timeHeadMap);
|
|
headList.add(timeHeadMap);
|
|
|
|
+ Map<String,String> hjHeadMap = new HashMap<>();
|
|
|
|
+ hjHeadMap.put("field", "hj");
|
|
|
|
+
|
|
|
|
+ Map<Long, WeatherStationStatusData> qxzMap = new HashMap<>();
|
|
|
|
+ Map<Long, WindTowerStatusData> cftMap = new HashMap<>();
|
|
|
|
+ if ("E1".equals(stationType)){
|
|
|
|
+ // 光伏
|
|
|
|
+ hjHeadMap.put("label", "气象站总辐射(W/㎡)");
|
|
|
|
+ // 查询气象站数据
|
|
|
|
+ QueryWrapper<WeatherStationStatusData> wrapper = new QueryWrapper<>();
|
|
|
|
+ wrapper.eq("station_code", stationCode);
|
|
|
|
+ wrapper.between("time", new Date(startTime), new Date(endTime));
|
|
|
|
+ List<WeatherStationStatusData> list = weatherStationStatusDataService.list(wrapper);
|
|
|
|
+ for (WeatherStationStatusData weatherStationStatusData : list) {
|
|
|
|
+ qxzMap.put(weatherStationStatusData.getTime().getTime(), weatherStationStatusData);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ hjHeadMap.put("label", "测风塔轮毂风速(m/s)");
|
|
|
|
+ // 查询测风塔数据
|
|
|
|
+ QueryWrapper<WindTowerStatusData> wrapper = new QueryWrapper<>();
|
|
|
|
+ wrapper.eq("station_code", stationCode);
|
|
|
|
+ wrapper.between("time", new Date(startTime), new Date(endTime));
|
|
|
|
+ List<WindTowerStatusData> list = windTowerStatusDataService.list(wrapper);
|
|
|
|
+ for (WindTowerStatusData windTowerStatusData : list) {
|
|
|
|
+ cftMap.put(windTowerStatusData.getTime().getTime(), windTowerStatusData);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ headList.add(hjHeadMap);
|
|
Map<String,String> sjglHeadMap = new HashMap<>();
|
|
Map<String,String> sjglHeadMap = new HashMap<>();
|
|
sjglHeadMap.put("field", "sjgl");
|
|
sjglHeadMap.put("field", "sjgl");
|
|
- sjglHeadMap.put("label", "实际功率");
|
|
|
|
|
|
+ sjglHeadMap.put("label", "实际功率(MW)");
|
|
headList.add(sjglHeadMap);
|
|
headList.add(sjglHeadMap);
|
|
Map<String,String> kyglHeadMap = new HashMap<>();
|
|
Map<String,String> kyglHeadMap = new HashMap<>();
|
|
kyglHeadMap.put("field", "kygl");
|
|
kyglHeadMap.put("field", "kygl");
|
|
- kyglHeadMap.put("label", "可用功率");
|
|
|
|
|
|
+ kyglHeadMap.put("label", "可用功率(MW)");
|
|
headList.add(kyglHeadMap);
|
|
headList.add(kyglHeadMap);
|
|
Map<String,String> llglHeadMap = new HashMap<>();
|
|
Map<String,String> llglHeadMap = new HashMap<>();
|
|
llglHeadMap.put("field", "llgl");
|
|
llglHeadMap.put("field", "llgl");
|
|
- llglHeadMap.put("label", "理论功率");
|
|
|
|
|
|
+ llglHeadMap.put("label", "理论功率(MW)");
|
|
headList.add(llglHeadMap);
|
|
headList.add(llglHeadMap);
|
|
|
|
+ Map<String,String> cdqysHeadMap = new HashMap<>();
|
|
|
|
+ cdqysHeadMap.put("field", "cdqys");
|
|
|
|
+ cdqysHeadMap.put("label", "超短期(MW)");
|
|
|
|
+ headList.add(cdqysHeadMap);
|
|
Map<String,String> dqysHeadMap = new HashMap<>();
|
|
Map<String,String> dqysHeadMap = new HashMap<>();
|
|
dqysHeadMap.put("field", "dqys");
|
|
dqysHeadMap.put("field", "dqys");
|
|
- dqysHeadMap.put("label", "短期原始曲线");
|
|
|
|
|
|
+ dqysHeadMap.put("label", "短期原始(MW)");
|
|
headList.add(dqysHeadMap);
|
|
headList.add(dqysHeadMap);
|
|
Map<String,String> dqzxHeadMap = new HashMap<>();
|
|
Map<String,String> dqzxHeadMap = new HashMap<>();
|
|
dqzxHeadMap.put("field", "dqzx");
|
|
dqzxHeadMap.put("field", "dqzx");
|
|
- dqzxHeadMap.put("label", "短期中心曲线");
|
|
|
|
|
|
+ dqzxHeadMap.put("label", "短期中心调控(MW)");
|
|
headList.add(dqzxHeadMap);
|
|
headList.add(dqzxHeadMap);
|
|
Map<String,String> dqsbHeadMap = new HashMap<>();
|
|
Map<String,String> dqsbHeadMap = new HashMap<>();
|
|
dqsbHeadMap.put("field", "dqsb");
|
|
dqsbHeadMap.put("field", "dqsb");
|
|
- dqsbHeadMap.put("label", "短期上报曲线");
|
|
|
|
|
|
+ dqsbHeadMap.put("label", "短期上报(MW)");
|
|
headList.add(dqsbHeadMap);
|
|
headList.add(dqsbHeadMap);
|
|
|
|
+ Map<String,String> czHeadMap = new HashMap<>();
|
|
|
|
+ czHeadMap.put("field", "cz");
|
|
|
|
+ czHeadMap.put("label", "下发与上报差值");
|
|
|
|
+ headList.add(czHeadMap);
|
|
|
|
|
|
Map<String,List> tempCdqMap = new HashMap<>();
|
|
Map<String,List> tempCdqMap = new HashMap<>();
|
|
Map<String,List> tableCdqMap = new HashMap<>();
|
|
Map<String,List> tableCdqMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
List<String> timeList = new ArrayList<>();
|
|
List<String> timeList = new ArrayList<>();
|
|
|
|
+ List<String> hjList = new ArrayList();
|
|
List<String> sjList = new ArrayList();
|
|
List<String> sjList = new ArrayList();
|
|
List<String> kyList = new ArrayList();
|
|
List<String> kyList = new ArrayList();
|
|
List<String> llList = new ArrayList();
|
|
List<String> llList = new ArrayList();
|
|
|
|
+ List<String> cdqysList = new ArrayList();
|
|
List<String> dqysList = new ArrayList();
|
|
List<String> dqysList = new ArrayList();
|
|
List<String> dqzxList = new ArrayList();
|
|
List<String> dqzxList = new ArrayList();
|
|
List<String> dqsbList = new ArrayList();
|
|
List<String> dqsbList = new ArrayList();
|
|
@@ -160,6 +199,17 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
|
|
for (ForecastPowerShortTermStation forecastPowerShortTermStation : forecastPowerShortTermStationList) {
|
|
for (ForecastPowerShortTermStation forecastPowerShortTermStation : forecastPowerShortTermStationList) {
|
|
dqysMap.put(forecastPowerShortTermStation.getTime().getTime(), forecastPowerShortTermStation);
|
|
dqysMap.put(forecastPowerShortTermStation.getTime().getTime(), forecastPowerShortTermStation);
|
|
}
|
|
}
|
|
|
|
+ // 获取超短期原始曲线
|
|
|
|
+ Map<Long, ForecastPowerUltraShortTermStation> cdqysMap = new HashMap<>();
|
|
|
|
+ String cdqHowLongAgo = configService.selectConfigByKey("cdqHowLongAgo");
|
|
|
|
+ QueryWrapper cdqysWrapper = new QueryWrapper<>();
|
|
|
|
+ cdqysWrapper.eq("forecast_how_long_ago",Integer.parseInt(dqHowLongAgo));
|
|
|
|
+ cdqysWrapper.eq("station_code",stationCode);
|
|
|
|
+ cdqysWrapper.between("time", new Date(startTime), new Date(endTime));
|
|
|
|
+ List<ForecastPowerUltraShortTermStation> forecastPowerUltraShortTermStationList =forecastPowerUltraShortTermStationService.list(dqysWrapper);
|
|
|
|
+ for (ForecastPowerUltraShortTermStation forecastPowerUltraShortTermStation : forecastPowerUltraShortTermStationList) {
|
|
|
|
+ cdqysMap.put(forecastPowerUltraShortTermStation.getTime().getTime(), forecastPowerUltraShortTermStation);
|
|
|
|
+ }
|
|
// 获取短期上报曲线
|
|
// 获取短期上报曲线
|
|
Map<Long, ForecastPowerShortTermRegulation> dqsbMap = new HashMap<>();
|
|
Map<Long, ForecastPowerShortTermRegulation> dqsbMap = new HashMap<>();
|
|
QueryWrapper dqsbWrapper = new QueryWrapper<>();
|
|
QueryWrapper dqsbWrapper = new QueryWrapper<>();
|
|
@@ -190,6 +240,35 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
|
|
Map<String,Object> map1 = new HashMap<>();
|
|
Map<String,Object> map1 = new HashMap<>();
|
|
map1.put("czmc", electricField.getName());
|
|
map1.put("czmc", electricField.getName());
|
|
map1.put("time", DateUtil.format(new Date(tempDateTime), "yyyy-MM-dd HH:mm"));
|
|
map1.put("time", DateUtil.format(new Date(tempDateTime), "yyyy-MM-dd HH:mm"));
|
|
|
|
+ // 气象站或者测风塔数据
|
|
|
|
+ if ("E1".equals(stationType)){
|
|
|
|
+ if (qxzMap.get(tempDateTime) != null) {
|
|
|
|
+ WeatherStationStatusData weatherStationStatusData = qxzMap.get(tempDateTime);
|
|
|
|
+ if (weatherStationStatusData.getGlobalR().compareTo(new BigDecimal("-99"))==0) {
|
|
|
|
+ map1.put("hj",null);
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ map1.put("hj",weatherStationStatusData.getGlobalR().toString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ map1.put("hj",null);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ if (cftMap.get(tempDateTime) != null) {
|
|
|
|
+ WindTowerStatusData windTowerStatusData = cftMap.get(tempDateTime);
|
|
|
|
+ if (windTowerStatusData.getWsHubHeight().compareTo(new BigDecimal("-99"))==0) {
|
|
|
|
+ map1.put("hj",null);
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ map1.put("hj",windTowerStatusData.getWsHubHeight().toString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ map1.put("hj",null);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
// 封装实际功率list
|
|
// 封装实际功率list
|
|
if (sjMap.get(tempDateTime) != null) {
|
|
if (sjMap.get(tempDateTime) != null) {
|
|
@@ -220,10 +299,29 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
|
|
map1.put("llgl",powerStationStatusData.getTheoryValue().toString());
|
|
map1.put("llgl",powerStationStatusData.getTheoryValue().toString());
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
|
|
+ map1.put("sjgl",null);
|
|
|
|
+ map1.put("kygl",null);
|
|
|
|
+ map1.put("llgl",null);
|
|
sjList.add(null);
|
|
sjList.add(null);
|
|
kyList.add(null);
|
|
kyList.add(null);
|
|
llList.add(null);
|
|
llList.add(null);
|
|
}
|
|
}
|
|
|
|
+ // 封装超短期原始曲线list
|
|
|
|
+ if (cdqysMap.get(tempDateTime) !=null){
|
|
|
|
+ ForecastPowerUltraShortTermStation forecastPowerUltraShortTermStation = cdqysMap.get(tempDateTime);
|
|
|
|
+ if (forecastPowerUltraShortTermStation.getFpValue().compareTo(new BigDecimal("-99"))==0) {
|
|
|
|
+ cdqysList.add(null);
|
|
|
|
+ map1.put("cdqys",null);
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ cdqysList.add(forecastPowerUltraShortTermStation.getFpValue().toString());
|
|
|
|
+ map1.put("cdqys",forecastPowerUltraShortTermStation.getFpValue().toString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ cdqysList.add(null);
|
|
|
|
+ }
|
|
|
|
+
|
|
// 封装短期原始曲线list
|
|
// 封装短期原始曲线list
|
|
if (dqysMap.get(tempDateTime) !=null){
|
|
if (dqysMap.get(tempDateTime) !=null){
|
|
ForecastPowerShortTermStation forecastPowerShortTermStation = dqysMap.get(tempDateTime);
|
|
ForecastPowerShortTermStation forecastPowerShortTermStation = dqysMap.get(tempDateTime);
|
|
@@ -245,16 +343,29 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
|
|
if (forecastPowerShortTermRegulation.getFpValue().compareTo(new BigDecimal("-99"))==0) {
|
|
if (forecastPowerShortTermRegulation.getFpValue().compareTo(new BigDecimal("-99"))==0) {
|
|
dqsbList.add(null);
|
|
dqsbList.add(null);
|
|
map1.put("dqsb",null);
|
|
map1.put("dqsb",null);
|
|
|
|
+ map1.put("cz",null);
|
|
}
|
|
}
|
|
else{
|
|
else{
|
|
dqsbList.add(forecastPowerShortTermRegulation.getFpValue().toString());
|
|
dqsbList.add(forecastPowerShortTermRegulation.getFpValue().toString());
|
|
map1.put("dqsb",forecastPowerShortTermRegulation.getFpValue().toString());
|
|
map1.put("dqsb",forecastPowerShortTermRegulation.getFpValue().toString());
|
|
|
|
+ // 站端上报了短期,再判断短期下发的值是否为空
|
|
|
|
+ if (dqzxMap.get(tempDateTime) !=null){
|
|
|
|
+ // 需要计算差值,下发减上报差值
|
|
|
|
+ ForecastPowerShortTermSend forecastPowerShortTermSend = dqzxMap.get(tempDateTime);
|
|
|
|
+ map1.put("cz",forecastPowerShortTermSend.getFpValue().subtract(forecastPowerShortTermRegulation.getFpValue()).toString());
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ // 中心没有调控下发,则差值字段正常就是空
|
|
|
|
+ map1.put("cz",null);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
dqsbList.add(null);
|
|
dqsbList.add(null);
|
|
|
|
+ // 站端没有上报短期,差值字段为空
|
|
|
|
+ map1.put("cz","—");
|
|
}
|
|
}
|
|
- // 封装短期中心曲线list
|
|
|
|
|
|
+ // 封装短期中心调控下发曲线list
|
|
if (dqzxMap.get(tempDateTime) !=null){
|
|
if (dqzxMap.get(tempDateTime) !=null){
|
|
ForecastPowerShortTermSend forecastPowerShortTermSend = dqzxMap.get(tempDateTime);
|
|
ForecastPowerShortTermSend forecastPowerShortTermSend = dqzxMap.get(tempDateTime);
|
|
if (forecastPowerShortTermSend.getFpValue().compareTo(new BigDecimal("-99"))==0) {
|
|
if (forecastPowerShortTermSend.getFpValue().compareTo(new BigDecimal("-99"))==0) {
|