Commit 1d703e7a authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.天气数据接收定时任务,解决代码扫描问题,修改文件读取相关代码,解决资源未关流问题;
2.修改登录验证码生成工具类,解决代码扫描问题,修复随机数不安全问题;
3.删除除主程序启动类外其他启动类模块,解决代码扫描问题;
4.删除自定义httputlis类,解决代码扫描问题,替换部分代码远程调用方法;
5.重构光伏预测模块下载电站实际发电数据导入模板接口,解决代码扫描问题;
6.重构光伏预测模块导入电站实际发电数据接口,解决代码扫描问题;
7.删除公用excel导入导出工具类及poi相关pom依赖,解决代码扫描问题;
8.光伏功率预测模块,增加查询线路列表接口,解决页面接口报错问题;
9.增加测试用历史数据导入接口;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 77e79ae5
package pps.cloud.base.service;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 天气数据接收Cloud模块
*
* @author ZWT
* @date 2023/11/13 17:49
*/
@XService
@XText("天气数据接收Cloud模块")
public interface IBaseWeatherCloudService {
/**
* 天气数据接收Cloud模块--天气数据处理
*
* @param context 上下文
* @param oilFieldName 油田名称
* @return {@link XServiceResult }
*/
@XText("天气数据接收Cloud模块--天气数据处理")
XServiceResult weatherDataProcess(XContext context, String oilFieldName);
/**
* 天气数据接收Cloud模块--天气Api数据处理
*
* @param context 上下文
* @return {@link XServiceResult}
*/
@XText("天气数据接收Cloud模块--天气Api数据处理")
XServiceResult weatherApiDataProcess(XContext context);
}
package pps.cloud.base.service;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 第三方风力发电数据
*
* @author ZWT
* @date 2024/09/03 16:30
*/
@XService
@XText("第三方风力发电数据Cloud模块")
public interface IThirdWindPowerGenerationCloudService {
/**
* 第三方风力发电数据Cloud模块--第三方风力发电数据定时任务
*
* @param context 上下文
* @return {@link XServiceResult }
*/
@XText("第三方风力发电数据Cloud模块--第三方风力发电数据定时任务")
XServiceResult thirdWindPowerGenerationJob(XContext context);
}
package pps.cloud.base.service;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 风资源训练集数据Cloud模块
*
* @author ZWT
* @date 2024/08/30 14:03
*/
@XService
@XText("风资源训练集数据Cloud模块")
public interface IWindPredictionHistoryCloudService {
/**
* 风资源训练集数据Cloud模块--风资源训练集定时任务
*
* @param context 上下文
* @return {@link XServiceResult }
*/
@XText("风资源训练集数据Cloud模块--风资源训练集定时任务")
XServiceResult windPredictionHistoryJob(XContext context);
}
package pps.core.base.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import pps.cloud.base.service.IThirdWindPowerGenerationCloudService;
import pps.core.base.entity.ThirdWindPowerGenerationUpdateView;
import pps.core.base.entity.ThirdWindPowerGenerationView;
import pps.core.base.mapper.ThirdWindPowerGenerationUpdateViewMapper;
import pps.core.base.mapper.ThirdWindPowerGenerationViewMapper;
import pps.core.base.utils.ServiceUtil;
import pps.core.common.utils.BaseUtils;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XServiceResult;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 第三方风力发电数据
*
* @author ZWT
* @date 2024/09/03 16:34
*/
@XService
public class ThirdWindPowerGenerationCloudServiceImpl implements IThirdWindPowerGenerationCloudService {
/**
* 第三方风力发电数据定时任务
* todo 模拟数据生成
*
* @param context 上下文
* @return {@link XServiceResult }
*/
@Override
public XServiceResult thirdWindPowerGenerationJob(XContext context) {
DateTime endTime = DateUtil.date();
DateTime startTime = DateUtil.offsetMinute(endTime, -30);
ThirdWindPowerGenerationViewMapper viewMapper = context.getBean(ThirdWindPowerGenerationViewMapper.class);
List<ThirdWindPowerGenerationView> list = viewMapper.generateSimulatedData(ThirdWindPowerGenerationView.builder()
.startTime(startTime)
.endTime(endTime)
.build());
if (CollUtil.isNotEmpty(list)) {
List<ThirdWindPowerGenerationView> batchList = new ArrayList<>(list.size() * 2);
List<ThirdWindPowerGenerationUpdateView> batchUpdateList = new ArrayList<>(list.size());
//查当前环境
String systemSource = ServiceUtil.getOilFieldCode(context);
ThirdWindPowerGenerationView copy;
for (ThirdWindPowerGenerationView view : list) {
view.setSystemSource(systemSource);
view.setInputTime(endTime);
copy = this.newThirdWindPowerGenerationView(view);
batchList.add(copy);
batchList.add(view);
//每日最新数据
batchUpdateList.add(XCopyUtils.copyNewObject(view, ThirdWindPowerGenerationUpdateView.class));
}
//批量新增
if (batchList.size() > BaseUtils.BATCH_SIZE) {
List<List<ThirdWindPowerGenerationView>> subList = BaseUtils.getSubList(batchList);
subList.forEach(viewMapper::batchInsert);
} else {
viewMapper.batchInsert(batchList);
}
//生成每日最新数据
ThirdWindPowerGenerationUpdateViewMapper mapper = context.getBean(ThirdWindPowerGenerationUpdateViewMapper.class);
mapper.deleteBatch(list.stream()
.map(ThirdWindPowerGenerationView::getStationId)
.collect(Collectors.toList()),
DateUtil.beginOfDay(endTime), DateUtil.endOfDay(endTime));
//批量新增
if (batchUpdateList.size() > BaseUtils.BATCH_SIZE) {
List<List<ThirdWindPowerGenerationUpdateView>> subList = BaseUtils.getSubList(batchUpdateList);
subList.forEach(mapper::batchInsert);
} else {
mapper.batchInsert(batchUpdateList);
}
}
return XServiceResult.OK;
}
/*--------------------------------- private ---------------------------------*/
/**
* 第三代风力发电新观点
*
* @param view 看法
* @return {@link ThirdWindPowerGenerationView }
*/
private ThirdWindPowerGenerationView newThirdWindPowerGenerationView(ThirdWindPowerGenerationView view) {
return ThirdWindPowerGenerationView.builder()
.stationName(view.getStationName())
.stationId(view.getStationId())
.collectTime(DateUtil.offsetMinute(view.getCollectTime(), -15))
.actualWindSpeed(view.getActualWindSpeed())
.actualPower(view.getActualPower())
.actualGeneration(view.getActualGeneration())
.actualWindDirection(view.getActualWindDirection())
.inputTime(view.getInputTime())
.systemSource(view.getSystemSource())
.build();
}
}
\ No newline at end of file
package pps.core.base.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.base.service.IWindPredictionHistoryCloudService;
import pps.core.base.entity.ThirdWindPowerGenerationEnt;
import pps.core.base.entity.WindPredictionFutureEnt;
import pps.core.base.entity.WindPredictionHistoryView;
import pps.core.base.mapper.ThirdWindPowerGenerationMapper;
import pps.core.base.mapper.WindPredictionFutureMapper;
import pps.core.base.mapper.WindPredictionHistoryViewMapper;
import pps.core.base.utils.ServiceUtil;
import pps.core.common.utils.BaseUtils;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 风资源训练集数据Cloud模块
*
* @author ZWT
* @date 2024/08/30 14:07
*/
@XService
public class WindPredictionHistoryCloudServiceImpl implements IWindPredictionHistoryCloudService {
/**
* 风资源训练集定时任务
* wind_prediction_history的 actual_power存实际功率
* wind_prediction_future的 actual_power为预测功率
*
* @param context 上下文
* @return {@link XServiceResult }
*/
@Override
public XServiceResult windPredictionHistoryJob(XContext context) {
DateTime startTime = DateUtil.beginOfDay(DateUtil.yesterday());
DateTime endTime = DateUtil.endOfDay(startTime);
//取日期范围内已预测数据
WindPredictionFutureMapper mapper = context.getBean(WindPredictionFutureMapper.class);
List<WindPredictionFutureEnt> list = mapper.selectList(new QueryWrapper<WindPredictionFutureEnt>()
.select("station_id",
"data_time",
"wind_direction",
"wind_speed",
"air_temperature",
"humidity",
"pressure",
"actual_wind_speed",
"actual_power AS predicted_power")
.lambda()
.between(WindPredictionFutureEnt::getDataTime, startTime, endTime)
);
if (CollUtil.isNotEmpty(list)) {
//查实际发电数据
ThirdWindPowerGenerationMapper generationMapper = context.getBean(ThirdWindPowerGenerationMapper.class);
List<ThirdWindPowerGenerationEnt> generationList = generationMapper.selectList(new QueryWrapper<ThirdWindPowerGenerationEnt>()
.select("station_id", "collect_time", "MAX( actual_power ) AS actual_power",
"MAX( actual_generation ) AS actual_generation", "MAX( actual_wind_speed ) AS actual_wind_speed",
"MAX( actual_wind_direction ) AS actual_wind_direction")
.lambda()
.between(ThirdWindPowerGenerationEnt::getCollectTime, startTime, endTime)
.eq(ThirdWindPowerGenerationEnt::getSystemSource, ServiceUtil.getOilFieldCode(context))
.groupBy(ThirdWindPowerGenerationEnt::getStationId, ThirdWindPowerGenerationEnt::getCollectTime)
);
Map<String, Map<Date, ThirdWindPowerGenerationEnt>> collect;
if (CollUtil.isEmpty(generationList)) {
collect = Collections.emptyMap();
} else {
collect = generationList.stream()
.collect(Collectors.groupingBy(ThirdWindPowerGenerationEnt::getStationId, Collectors.toMap(ThirdWindPowerGenerationEnt::getCollectTime, Function.identity())));
}
//数据处理
List<WindPredictionHistoryView> historyList = this.dataProcess(list, collect);
//按时间范围删除数据
WindPredictionHistoryViewMapper viewMapper = context.getBean(WindPredictionHistoryViewMapper.class);
viewMapper.deleteByTimeRange(startTime, endTime);
if (historyList.size() > BaseUtils.BATCH_SIZE) {
List<List<WindPredictionHistoryView>> subList = BaseUtils.getSubList(historyList);
subList.forEach(viewMapper::batchInsert);
} else {
viewMapper.batchInsert(historyList);
}
}
return XServiceResult.OK;
}
/*------------------------- private -------------------------*/
/**
* 数据处理
* todo 模拟数据
*
* @param list 列表
* @param collect 收集
* @return {@link List }<{@link WindPredictionHistoryView }>
*/
private List<WindPredictionHistoryView> dataProcess(List<WindPredictionFutureEnt> list, Map<String, Map<Date, ThirdWindPowerGenerationEnt>> collect) {
List<WindPredictionHistoryView> historyList = new ArrayList<>(list.size());
Map<Date, ThirdWindPowerGenerationEnt> map;
ThirdWindPowerGenerationEnt ent;
for (WindPredictionFutureEnt future : list) {
WindPredictionHistoryView view = new WindPredictionHistoryView();
view.setStationId(future.getStationId());
view.setDataTime(future.getDataTime());
view.setWindDirection(future.getWindDirection());
view.setWindSpeed(future.getWindSpeed());
view.setAirTemperature(future.getAirTemperature());
view.setHumidity(future.getHumidity());
view.setPressure(future.getPressure());
view.setPredictedPower(future.getPredictedPower());
//匹配真实数据
boolean flag = true;
if (collect.containsKey(future.getStationId())) {
map = collect.get(future.getStationId());
if (map.containsKey(future.getDataTime())) {
flag = false;
ent = map.get(future.getDataTime());
view.setActualPower(ent.getActualPower());
view.setActualWindSpeed(ent.getActualWindSpeed());
view.setActualWindDirection(ent.getAccurateWindDirection());
}
}
if (flag) {
view.setActualPower(BigDecimal.ZERO);
view.setActualWindSpeed(BigDecimal.ZERO);
view.setActualWindDirection(BigDecimal.ZERO);
}
historyList.add(view);
}
return historyList;
}
}
\ No newline at end of file
package pps.core.base.service.data.base_data;
public class CalcBaseDataInput {
private String ou_id;// 组织机构
private String keyName;// 模型名称 model_xgb
private Integer line_id; // 线路名称
private String stape; // train_val训练/train_pre预测
private String startime; // 开始时间
private String endtime; // 结束时间
public CalcBaseDataInput() {
}
public CalcBaseDataInput(String ou_id, String keyName, Integer line_id, String stape, String startime, String endtime) {
this.ou_id = ou_id;
this.keyName = keyName;
this.line_id = line_id;
this.stape = stape;
this.startime = startime;
this.endtime = endtime;
}
public String getOu_id() {
return ou_id;
}
public void setOu_id(String ou_id) {
this.ou_id = ou_id;
}
public String getKeyName() {
return keyName;
}
public void setKeyName(String keyName) {
this.keyName = keyName;
}
public Integer getLine_id() {
return line_id;
}
public void setLine_id(Integer line_id) {
this.line_id = line_id;
}
public String getStape() {
return stape;
}
public void setStape(String stape) {
this.stape = stape;
}
public String getStartime() {
return startime;
}
public void setStartime(String startime) {
this.startime = startime;
}
public String getEndtime() {
return endtime;
}
public void setEndtime(String endtime) {
this.endtime = endtime;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
public class CreateBaseDataInput {
private Integer id;
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private Date dataDate;
@XText("风速")
private BigDecimal windSpeed;
@XText("风向")
private BigDecimal windDirection;
@XText("温度")
private BigDecimal temperature;
@XText("压强")
private BigDecimal pressure;
@XText("湿度")
private BigDecimal humidity;
@XText("组件平面辐照度")
private BigDecimal planeIrradiance;
@XText("全水平辐照度")
private BigDecimal horizontalIrradiance;
@XText("实际功率")
private BigDecimal power;
@XText("预测功率")
private BigDecimal predictedPower;
@XText("天气")
private BigDecimal weather;
public BigDecimal getWeather() {
return weather;
}
public void setWeather(BigDecimal weather) {
this.weather = weather;
}
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getOuId() {
return this.ouId;
}
public void setOuId(String value) {
this.ouId = value;
}
public Integer getLineId() {
return this.lineId;
}
public void setLineId(Integer value) {
this.lineId = value;
}
public Date getDataDate() {
return this.dataDate;
}
public void setDataDate(Date value) {
this.dataDate = value;
}
public BigDecimal getWindSpeed() {
return this.windSpeed;
}
public void setWindSpeed(BigDecimal value) {
this.windSpeed = value;
}
public BigDecimal getWindDirection() {
return this.windDirection;
}
public void setWindDirection(BigDecimal value) {
this.windDirection = value;
}
public BigDecimal getTemperature() {
return this.temperature;
}
public void setTemperature(BigDecimal value) {
this.temperature = value;
}
public BigDecimal getPressure() {
return this.pressure;
}
public void setPressure(BigDecimal value) {
this.pressure = value;
}
public BigDecimal getHumidity() {
return this.humidity;
}
public void setHumidity(BigDecimal value) {
this.humidity = value;
}
public BigDecimal getPlaneIrradiance() {
return this.planeIrradiance;
}
public void setPlaneIrradiance(BigDecimal value) {
this.planeIrradiance = value;
}
public BigDecimal getHorizontalIrradiance() {
return this.horizontalIrradiance;
}
public void setHorizontalIrradiance(BigDecimal value) {
this.horizontalIrradiance = value;
}
public BigDecimal getPower() {
return this.power;
}
public void setPower(BigDecimal value) {
this.power = value;
}
public BigDecimal getPredictedPower() {
return this.predictedPower;
}
public void setPredictedPower(BigDecimal value) {
this.predictedPower = value;
}
}
package pps.core.base.service.data.base_data;
public class DeleteBaseDataInput {
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
public class GetBaseDataInput {
private Integer id;
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private String dataDate;
private String keyName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public String getDataDate() {
return dataDate;
}
public void setDataDate(String dataDate) {
this.dataDate = dataDate;
}
public String getKeyName() {
return keyName;
}
public void setKeyName(String keyName) {
this.keyName = keyName;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
public class GetBaseDataOutput {
private Integer id;
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private Date dataDate;
@XText("风速")
private BigDecimal windSpeed;
@XText("风向")
private BigDecimal windDirection;
@XText("温度")
private BigDecimal temperature;
@XText("压强")
private BigDecimal pressure;
@XText("湿度")
private BigDecimal humidity;
@XText("组件平面辐照度")
private BigDecimal planeIrradiance;
@XText("全水平辐照度")
private BigDecimal horizontalIrradiance;
@XText("实际功率")
private BigDecimal power;
@XText("预测功率")
private BigDecimal predictedPower;
@XText("天气")
private BigDecimal weather;
public BigDecimal getWeather() {
return weather;
}
public void setWeather(BigDecimal weather) {
this.weather = weather;
}
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getOuId() {
return this.ouId;
}
public void setOuId(String value) {
this.ouId = value;
}
public Integer getLineId() {
return this.lineId;
}
public void setLineId(Integer value) {
this.lineId = value;
}
public Date getDataDate() {
return this.dataDate;
}
public void setDataDate(Date value) {
this.dataDate = value;
}
public BigDecimal getWindSpeed() {
return this.windSpeed;
}
public void setWindSpeed(BigDecimal value) {
this.windSpeed = value;
}
public BigDecimal getWindDirection() {
return this.windDirection;
}
public void setWindDirection(BigDecimal value) {
this.windDirection = value;
}
public BigDecimal getTemperature() {
return this.temperature;
}
public void setTemperature(BigDecimal value) {
this.temperature = value;
}
public BigDecimal getPressure() {
return this.pressure;
}
public void setPressure(BigDecimal value) {
this.pressure = value;
}
public BigDecimal getHumidity() {
return this.humidity;
}
public void setHumidity(BigDecimal value) {
this.humidity = value;
}
public BigDecimal getPlaneIrradiance() {
return this.planeIrradiance;
}
public void setPlaneIrradiance(BigDecimal value) {
this.planeIrradiance = value;
}
public BigDecimal getHorizontalIrradiance() {
return this.horizontalIrradiance;
}
public void setHorizontalIrradiance(BigDecimal value) {
this.horizontalIrradiance = value;
}
public BigDecimal getPower() {
return this.power;
}
public void setPower(BigDecimal value) {
this.power = value;
}
public BigDecimal getPredictedPower() {
return this.predictedPower;
}
public void setPredictedPower(BigDecimal value) {
this.predictedPower = value;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
public class GetTrainBaseModelValInput {
private Integer id;
private String keyNames;
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private String dataDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public String getDataDate() {
return dataDate;
}
public void setDataDate(String dataDate) {
this.dataDate = dataDate;
}
public String getKeyNames() {
return keyNames;
}
public void setKeyNames(String keyNames) {
this.keyNames = keyNames;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
import xstartup.base.data.XPageInput;
import java.util.Date;
public class QueryBaseDataInput extends XPageInput {
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private Date dataDate;
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public Date getDataDate() {
return dataDate;
}
public void setDataDate(Date dataDate) {
this.dataDate = dataDate;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
import xstartup.base.data.XPageInput;
import java.math.BigDecimal;
import java.util.Date;
public class QueryBaseDataOutput extends XPageInput {
private Integer id;
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private Date dataDate;
@XText("风速")
private BigDecimal windSpeed;
@XText("风向")
private BigDecimal windDirection;
@XText("温度")
private BigDecimal temperature;
@XText("压强")
private BigDecimal pressure;
@XText("湿度")
private BigDecimal humidity;
@XText("组件平面辐照度")
private BigDecimal planeIrradiance;
@XText("全水平辐照度")
private BigDecimal horizontalIrradiance;
@XText("实际功率")
private BigDecimal power;
@XText("预测功率")
private BigDecimal predictedPower;
@XText("天气")
private BigDecimal weather;
public BigDecimal getWeather() {
return weather;
}
public void setWeather(BigDecimal weather) {
this.weather = weather;
}
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getOuId() {
return this.ouId;
}
public void setOuId(String value) {
this.ouId = value;
}
public Integer getLineId() {
return this.lineId;
}
public void setLineId(Integer value) {
this.lineId = value;
}
public Date getDataDate() {
return this.dataDate;
}
public void setDataDate(Date value) {
this.dataDate = value;
}
public BigDecimal getWindSpeed() {
return this.windSpeed;
}
public void setWindSpeed(BigDecimal value) {
this.windSpeed = value;
}
public BigDecimal getWindDirection() {
return this.windDirection;
}
public void setWindDirection(BigDecimal value) {
this.windDirection = value;
}
public BigDecimal getTemperature() {
return this.temperature;
}
public void setTemperature(BigDecimal value) {
this.temperature = value;
}
public BigDecimal getPressure() {
return this.pressure;
}
public void setPressure(BigDecimal value) {
this.pressure = value;
}
public BigDecimal getHumidity() {
return this.humidity;
}
public void setHumidity(BigDecimal value) {
this.humidity = value;
}
public BigDecimal getPlaneIrradiance() {
return this.planeIrradiance;
}
public void setPlaneIrradiance(BigDecimal value) {
this.planeIrradiance = value;
}
public BigDecimal getHorizontalIrradiance() {
return this.horizontalIrradiance;
}
public void setHorizontalIrradiance(BigDecimal value) {
this.horizontalIrradiance = value;
}
public BigDecimal getPower() {
return this.power;
}
public void setPower(BigDecimal value) {
this.power = value;
}
public BigDecimal getPredictedPower() {
return this.predictedPower;
}
public void setPredictedPower(BigDecimal value) {
this.predictedPower = value;
}
}
package pps.core.base.service.data.base_data;
public class TrainBaseModelValDetailOutput {
private String key;
private String predictedPower;
private String power;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getPredictedPower() {
return predictedPower;
}
public void setPredictedPower(String predictedPower) {
this.predictedPower = predictedPower;
}
public String getPower() {
return power;
}
public void setPower(String power) {
this.power = power;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
import java.util.List;
public class TrainBaseModelValInput {
private Integer id;
private String keyName;
private List<String> keyNames;
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private String dataDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOuId() {
return ouId;
}
public void setOuId(String ouId) {
this.ouId = ouId;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public String getDataDate() {
return dataDate;
}
public void setDataDate(String dataDate) {
this.dataDate = dataDate;
}
public List<String> getKeyNames() {
return keyNames;
}
public void setKeyNames(List<String> keyNames) {
this.keyNames = keyNames;
}
public String getKeyName() {
return keyName;
}
public void setKeyName(String keyName) {
this.keyName = keyName;
}
}
package pps.core.base.service.data.base_data;
import com.baomidou.mybatisplus.annotation.TableField;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
public class TrainBaseModelValOutput {
@XText("实际数据")
private String ytrue;
@XText("预测数据")
private String ypred;
@TableField
private String mae;
@TableField
private String rmse;
@TableField
private String r2;
@XText("训练模式")
private String keyname;
@XText("线路")
private Integer lineId;
private String stape;
@XText("开始时间")
private String startime;
@XText("结束时间")
private String endtime;
private String taget;
private String timecol;
private String features;
private String modelpath;
private String paramKeys;
@XText("id")
private BigDecimal id;
@XText("创建时间")
private Date createTime;
private List<TrainBaseModelValDetailOutput> list;
public String getYtrue() {
return ytrue;
}
public void setYtrue(String ytrue) {
this.ytrue = ytrue;
}
public String getYpred() {
return ypred;
}
public void setYpred(String ypred) {
this.ypred = ypred;
}
public String getMae() {
return mae;
}
public void setMae(String mae) {
this.mae = mae;
}
public String getRmse() {
return rmse;
}
public void setRmse(String rmse) {
this.rmse = rmse;
}
public String getR2() {
return r2;
}
public void setR2(String r2) {
this.r2 = r2;
}
public String getKeyname() {
return keyname;
}
public void setKeyname(String keyname) {
this.keyname = keyname;
}
public Integer getLineId() {
return lineId;
}
public void setLineId(Integer lineId) {
this.lineId = lineId;
}
public String getStape() {
return stape;
}
public void setStape(String stape) {
this.stape = stape;
}
public String getStartime() {
return startime;
}
public void setStartime(String startime) {
this.startime = startime;
}
public String getEndtime() {
return endtime;
}
public void setEndtime(String endtime) {
this.endtime = endtime;
}
public String getTaget() {
return taget;
}
public void setTaget(String taget) {
this.taget = taget;
}
public String getTimecol() {
return timecol;
}
public void setTimecol(String timecol) {
this.timecol = timecol;
}
public String getFeatures() {
return features;
}
public void setFeatures(String features) {
this.features = features;
}
public String getModelpath() {
return modelpath;
}
public void setModelpath(String modelpath) {
this.modelpath = modelpath;
}
public String getParamKeys() {
return paramKeys;
}
public void setParamKeys(String paramKeys) {
this.paramKeys = paramKeys;
}
public BigDecimal getId() {
return id;
}
public void setId(BigDecimal id) {
this.id = id;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public List<TrainBaseModelValDetailOutput> getList() {
return list;
}
public void setList(List<TrainBaseModelValDetailOutput> list) {
this.list = list;
}
}
package pps.core.base.service.data.base_data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
public class UpdateBaseDataInput {
private Integer id;
@XText("组织id")
private String ouId;
@XText("线路id")
private Integer lineId;
@XText("日期")
private Date dataDate;
@XText("风速")
private BigDecimal windSpeed;
@XText("风向")
private BigDecimal windDirection;
@XText("温度")
private BigDecimal temperature;
@XText("压强")
private BigDecimal pressure;
@XText("湿度")
private BigDecimal humidity;
@XText("组件平面辐照度")
private BigDecimal planeIrradiance;
@XText("全水平辐照度")
private BigDecimal horizontalIrradiance;
@XText("实际功率")
private BigDecimal power;
@XText("预测功率")
private BigDecimal predictedPower;
@XText("天气")
private BigDecimal weather;
public BigDecimal getWeather() {
return weather;
}
public void setWeather(BigDecimal weather) {
this.weather = weather;
}
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getOuId() {
return this.ouId;
}
public void setOuId(String value) {
this.ouId = value;
}
public Integer getLineId() {
return this.lineId;
}
public void setLineId(Integer value) {
this.lineId = value;
}
public Date getDataDate() {
return this.dataDate;
}
public void setDataDate(Date value) {
this.dataDate = value;
}
public BigDecimal getWindSpeed() {
return this.windSpeed;
}
public void setWindSpeed(BigDecimal value) {
this.windSpeed = value;
}
public BigDecimal getWindDirection() {
return this.windDirection;
}
public void setWindDirection(BigDecimal value) {
this.windDirection = value;
}
public BigDecimal getTemperature() {
return this.temperature;
}
public void setTemperature(BigDecimal value) {
this.temperature = value;
}
public BigDecimal getPressure() {
return this.pressure;
}
public void setPressure(BigDecimal value) {
this.pressure = value;
}
public BigDecimal getHumidity() {
return this.humidity;
}
public void setHumidity(BigDecimal value) {
this.humidity = value;
}
public BigDecimal getPlaneIrradiance() {
return this.planeIrradiance;
}
public void setPlaneIrradiance(BigDecimal value) {
this.planeIrradiance = value;
}
public BigDecimal getHorizontalIrradiance() {
return this.horizontalIrradiance;
}
public void setHorizontalIrradiance(BigDecimal value) {
this.horizontalIrradiance = value;
}
public BigDecimal getPower() {
return this.power;
}
public void setPower(BigDecimal value) {
this.power = value;
}
public BigDecimal getPredictedPower() {
return this.predictedPower;
}
public void setPredictedPower(BigDecimal value) {
this.predictedPower = value;
}
}
package pps.core.task.job;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.IThirdWindPowerGenerationCloudService;
import pps.core.common.cache.TaskLockCache;
import pps.core.task.constant.TaskConstant;
import pps.core.task.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
import xstartup.service.job.XJob;
import xstartup.service.job.annotation.XCronTrigger;
/**
* 第三方风力发电数据定时任务
* todo 测试用
*
* @author ZWT
* @date 2024/09/03 16:22
*/
@XText("第三方风力发电数据定时任务")
@XService
public class ThirdWindPowerGenerationJob implements XJob {
/**
* 每半小时执行
*
* @param xContext x上下文
* @return {@link XServiceResult }
*/
@XCronTrigger(value = TaskConstant.HALF_HOUR_31)
@Override
public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ ThirdWindPowerGenerationJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "ThirdWindPowerGenerationJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key);
if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key);
try {
IThirdWindPowerGenerationCloudService service = xContext.getBean(IThirdWindPowerGenerationCloudService.class);
XServiceResult result = service.thirdWindPowerGenerationJob(xContext);
result.throwIfFail();
} catch (Exception e) {
xContext.getLogger().error("------ ThirdWindPowerGenerationJob Exception: ", e);
} finally {
xContext.getLogger().info("------ ThirdWindPowerGenerationJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key);
}
}
return XServiceResult.OK;
}
}
\ No newline at end of file
package pps.core.task.job;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.IBaseWeatherCloudService;
import pps.core.common.cache.TaskLockCache;
import pps.core.task.constant.TaskConstant;
import pps.core.task.utils.ServiceUtil;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 天气API数据邮件接收定时任务
*
* @author ZWT
* @date 2024/04/22 17:24
*/
@XText("天气API数据邮件接收定时任务")
public class WeatherApiReceiveJob {
/**
* 早/晚九点十五分执行
*
* @param xContext x上下文
* @return {@link XServiceResult}
*/
public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ WeatherApiReceiveJob start:{}", System.currentTimeMillis());
String key = TaskConstant.TASK_LOCK_KEY + "WeatherApiReceiveJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key);
if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key);
try {
IBaseWeatherCloudService service = xContext.getBean(IBaseWeatherCloudService.class);
XServiceResult result = service.weatherApiDataProcess(xContext);
result.throwIfFail();
} catch (Exception e) {
xContext.getLogger().error("------ WeatherApiReceiveJob Exception: ", e);
} finally {
xContext.getLogger().info("------ WeatherApiReceiveJob end:{}", System.currentTimeMillis());
TaskLockCache.delete(xContext, key);
}
}
return XServiceResult.OK;
}
}
\ No newline at end of file
package pps.core.task.job;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.IBaseWeatherCloudService;
import pps.core.common.cache.TaskLockCache;
import pps.core.task.constant.TaskConstant;
import pps.core.task.utils.ServiceUtil;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
/**
* 天气数据邮件接收定时任务
*
* @author ZWT
* @date 2023/11/13 17:15
*/
@XText("天气数据邮件接收定时任务")
public class WeatherReceiveJob {
/**
* 半小时隔5分钟执行一次
*
* @param xContext x上下文
* @param oilFieldCode 油田代码
* @return {@link XServiceResult }
*/
public XServiceResult execute(XContext xContext, String oilFieldCode) {
xContext.getLogger().info("------ WeatherReceiveJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "WeatherReceiveJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key);
if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key);
try {
IBaseWeatherCloudService service = xContext.getBean(IBaseWeatherCloudService.class);
XServiceResult result = service.weatherDataProcess(xContext, oilFieldCode);
result.throwIfFail();
} catch (Exception e) {
xContext.getLogger().error("------ WeatherReceiveJob Exception: ", e);
} finally {
xContext.getLogger().info("------ WeatherReceiveJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key);
}
}
return XServiceResult.OK;
}
}
\ No newline at end of file
package pps.core.task.job;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.IWindPredictionHistoryCloudService;
import pps.core.common.cache.TaskLockCache;
import pps.core.task.constant.TaskConstant;
import pps.core.task.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
import xstartup.service.job.XJob;
import xstartup.service.job.annotation.XCronTrigger;
/**
* 风资源训练集数据定时任务
*
* @author ZWT
* @date 2024/08/30 13:50
*/
@XText("风资源训练集数据定时任务")
@XService
public class WindPredictionHistoryJob implements XJob {
/**
* 每天00:12执行
*
* @param xContext x上下文
* @return {@link XServiceResult }
*/
@XCronTrigger(value = TaskConstant.EVERY_DAY_12)
@Override
public XServiceResult execute(XContext xContext) {
xContext.getLogger().info("------ WindPredictionHistoryJob start:{}", DateUtil.date());
String key = TaskConstant.TASK_LOCK_KEY + "WindPredictionHistoryJob";
TaskLockCache exist = TaskLockCache.exist(xContext, key);
if (ObjectUtil.isNull(exist)) {
ServiceUtil.setCache(xContext, key);
try {
IWindPredictionHistoryCloudService service = xContext.getBean(IWindPredictionHistoryCloudService.class);
XServiceResult result = service.windPredictionHistoryJob(xContext);
result.throwIfFail();
} catch (Exception e) {
xContext.getLogger().error("------ WindPredictionHistoryJob Exception: ", e);
} finally {
xContext.getLogger().info("------ WindPredictionHistoryJob end:{}", DateUtil.date());
TaskLockCache.delete(xContext, key);
}
}
return XServiceResult.OK;
}
}
......@@ -46,8 +46,6 @@ public class DeployPpsAllApplication {
startup.enable(XJobFeature.class).config(new XJobServiceConf(SpaceOptimizeUltraJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(SpaceOptimizeShortJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(PlantPredictedPowerLongTermDataJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(WindPredictionHistoryJob.class));
startup.enable(XJobFeature.class).config(new XJobServiceConf(ThirdWindPowerGenerationJob.class));
startup.run(args);
}
}
......@@ -17,8 +17,6 @@ x.job.service=pps.core.task.job.SpaceOptimizeLongJob,\
pps.core.task.job.SpaceCalibrationJob,\
pps.core.task.job.SpaceOptimizeShortJob,\
pps.core.task.job.SpaceOptimizeUltraJob,\
pps.core.task.job.WindPredictionHistoryJob,\
pps.core.task.job.ThirdWindPowerGenerationJob,\
pps.core.task.job.PlantPredictedPowerLongTermDataJob
# redis
x.cache.type=@x.cache.type@
......
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