Commit 772f52b7 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.修改天气数据抽取定时任务,解决部分历史数据丢失问题;
2.修改第三方风机电站真实数据定时任务,修改代码逻辑,解决时间未按照15分钟间隔推送问题;
3.修改第三方风机电站模拟数据定时任务,解决时间日期格式错误导致数据重复问题;
4.新建第三方风力发电数据(每日最新数据)表,同时生成对应代码,修改第三方风机电站模拟数据定时任务,增加每日最新数据更新逻辑;
5.修改风资源监控页面场站发电量统计接口,增加模拟数据查询逻辑,修改代码完成冒烟测试;
6.修改风资源监控页面历史风速接口,增加模拟数据查询逻辑,修改代码完成冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 992d5ec1
......@@ -55,4 +55,18 @@ public class ThirdWindPowerGenerationUpdateEnt implements Serializable {
@XText("来源系统")
@TableField
private String systemSource;
/*---------------------------------- exist = false ----------------------------------*/
@XText("最大风速(m/s)")
@TableField(exist = false)
private BigDecimal maxWindSpeed;
@XText("最小风速(m/s)")
@TableField(exist = false)
private BigDecimal minWindSpeed;
@XText("平均风速(m/s)")
@TableField(exist = false)
private BigDecimal avgWindSpeed;
}
\ No newline at end of file
......@@ -10,15 +10,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.system.service.data.sys_organization.GetAllOuListByOuIdInput;
import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewOutput;
import pps.core.base.entity.BaseWindTurbineEnt;
import pps.core.base.entity.BaseWindTurbineView;
import pps.core.base.entity.ThirdWindPowerGenerationUpdateView;
import pps.core.base.entity.WindPredictionFutureEnt;
import pps.core.base.entity.*;
import pps.core.base.enums.WindDirection;
import pps.core.base.mapper.BaseWindTurbineMapper;
import pps.core.base.mapper.BaseWindTurbineViewMapper;
import pps.core.base.mapper.ThirdWindPowerGenerationUpdateViewMapper;
import pps.core.base.mapper.WindPredictionFutureMapper;
import pps.core.base.mapper.*;
import pps.core.base.service.data.base_wind_turbine.*;
import pps.core.base.service.data.weather_bureau_data.GetWeatherBureauDataOutput;
import pps.core.base.service.data.wind_prediction_future.GetWindPredictionFutureInput;
......@@ -248,46 +242,80 @@ public class WindPredictionFutureService {
@XApiPost
@XText("历史风速")
public XSingleResult<GetWindPowerStatisticsOutput> historicalWindSpeed(XContext context, GetBaseWindTurbineViewInput input) {
GetWindPowerStatisticsOutput outputs = new GetWindPowerStatisticsOutput();
GetWindPowerStatisticsOutput output = new GetWindPowerStatisticsOutput();
List<GetHistoricalWindSpeedOutput> speedList;
//查电站列表
List<BaseWindTurbineEnt> turbineList = this.getWindTurbineList(context, input.getOuId());
if (CollUtil.isEmpty(turbineList)) {
return XSingleResult.success(outputs);
return XSingleResult.success(output);
}
List<String> collect = turbineList.stream()
.map(BaseWindTurbineEnt::getStationName)
.collect(Collectors.toList());
ThirdWindPowerGenerationUpdateMapper mapper = context.getBean(ThirdWindPowerGenerationUpdateMapper.class);
//确定时间范围
DateTime beginTime, endTime;
DateTime now = DateUtil.date();
Map<Integer, BigDecimal> map;
int timeType = input.getTimeType();
if (timeType == 0) {
beginTime = DateUtil.beginOfMonth(now);
endTime = DateUtil.endOfMonth(now);
map = mapper.selectList(new QueryWrapper<ThirdWindPowerGenerationUpdateEnt>()
.select("DAY( collect_time ) AS actual_wind_direction", "IFNULL( AVG( actual_wind_speed ), 0 ) AS actual_wind_speed")
.groupBy("DAY( collect_time )")
.lambda()
.between(ThirdWindPowerGenerationUpdateEnt::getCollectTime, beginTime, endTime)
.in(ThirdWindPowerGenerationUpdateEnt::getStationName, collect)
).stream()
.collect(Collectors.toMap(ThirdWindPowerGenerationUpdateEnt::getActualWindDirection, ThirdWindPowerGenerationUpdateEnt::getActualWindSpeed));
//月度
speedList = new ArrayList<>(now.dayOfMonth());
for (int i = 1; i <= now.dayOfMonth(); i++) {
speedList.add(
GetHistoricalWindSpeedOutput.builder()
.dateFlag(i)
.windSpeed(BigDecimal.ZERO)
.windSpeed(map.getOrDefault(i, BigDecimal.ZERO))
.build()
);
}
} else {
beginTime = DateUtil.beginOfYear(now);
endTime = DateUtil.endOfYear(now);
map = mapper.selectList(new QueryWrapper<ThirdWindPowerGenerationUpdateEnt>()
.select("MONTH( collect_time ) AS actual_wind_direction", "IFNULL( AVG( actual_wind_speed ), 0 ) AS actual_wind_speed")
.groupBy("MONTH( collect_time )")
.lambda()
.between(ThirdWindPowerGenerationUpdateEnt::getCollectTime, beginTime, endTime)
.in(ThirdWindPowerGenerationUpdateEnt::getStationName, collect)
).stream()
.collect(Collectors.toMap(ThirdWindPowerGenerationUpdateEnt::getActualWindDirection, ThirdWindPowerGenerationUpdateEnt::getActualWindSpeed));
//年度
speedList = new ArrayList<>(now.monthBaseOne());
for (int i = 1; i <= now.monthBaseOne(); i++) {
speedList.add(
GetHistoricalWindSpeedOutput.builder()
.dateFlag(i)
.windSpeed(BigDecimal.ZERO)
.windSpeed(map.getOrDefault(i, BigDecimal.ZERO))
.build()
);
}
}
outputs.setSpeedList(speedList);
return XSingleResult.success(outputs);
ThirdWindPowerGenerationUpdateEnt windSpeed = mapper.selectOne(new QueryWrapper<ThirdWindPowerGenerationUpdateEnt>()
.select("IFNULL( MAX( actual_wind_speed ), 0 ) AS max_wind_speed",
"IFNULL( MIN( actual_wind_speed ), 0 ) AS min_wind_speed",
"IFNULL( AVG( actual_wind_speed ), 0 ) AS avg_wind_speed")
.lambda()
.between(ThirdWindPowerGenerationUpdateEnt::getCollectTime, beginTime, endTime)
.in(ThirdWindPowerGenerationUpdateEnt::getStationName, collect)
);
//平均风速
output.setMaxWindSpeed(windSpeed.getMaxWindSpeed());
output.setMinWindSpeed(windSpeed.getMinWindSpeed());
output.setAvgWindSpeed(windSpeed.getAvgWindSpeed());
//风速列表
output.setSpeedList(speedList);
return XSingleResult.success(output);
}
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment