Commit f52becf8 authored by tianchao's avatar tianchao

1光伏预测调整-15,10,3,1和4小时

parent 4b1c323f
...@@ -40,7 +40,11 @@ ...@@ -40,7 +40,11 @@
<artifactId>pps-cloud-space</artifactId> <artifactId>pps-cloud-space</artifactId>
<version>1.0.0-pps</version> <version>1.0.0-pps</version>
</dependency> </dependency>
<dependency>
<groupId>gf</groupId>
<artifactId>pps-cloud-prediction</artifactId>
<version>1.0.0-pps</version>
</dependency>
<dependency> <dependency>
<groupId>io.jsonwebtoken</groupId> <groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId> <artifactId>jjwt</artifactId>
......
...@@ -5,6 +5,9 @@ import cn.hutool.core.text.CharSequenceUtil; ...@@ -5,6 +5,9 @@ import cn.hutool.core.text.CharSequenceUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import pps.cloud.prediction.service.PlantTrainPowerTaskCloudService;
import pps.cloud.prediction.service.data.plant_train_power_task.GetPlantTrainPowerTaskCloudInput;
import pps.cloud.prediction.service.data.plant_train_power_task.GetPlantTrainPowerTaskCloudOutput;
import pps.cloud.system.service.SystemAreaService; import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.data.GetSysAreaInput; import pps.cloud.system.service.data.GetSysAreaInput;
import pps.cloud.system.service.data.GetSysAreaOutput; import pps.cloud.system.service.data.GetSysAreaOutput;
...@@ -28,6 +31,7 @@ import xstartup.annotation.XService; ...@@ -28,6 +31,7 @@ import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils; import xstartup.base.util.XCopyUtils;
import xstartup.base.util.XJsonUtils;
import xstartup.base.util.XStringUtils; import xstartup.base.util.XStringUtils;
import xstartup.data.XListResult; import xstartup.data.XListResult;
import xstartup.data.XPageResult; import xstartup.data.XPageResult;
...@@ -40,9 +44,8 @@ import xstartup.feature.api.annotation.XApiPost; ...@@ -40,9 +44,8 @@ import xstartup.feature.api.annotation.XApiPost;
import xstartup.feature.mybatis.helper.XMapperHelper; import xstartup.feature.mybatis.helper.XMapperHelper;
import xstartup.helper.XTransactionHelper; import xstartup.helper.XTransactionHelper;
import java.util.List; import java.math.BigDecimal;
import java.util.Objects; import java.util.*;
import java.util.Optional;
/** /**
...@@ -175,6 +178,30 @@ public class BasePhotovoltaicPlantService { ...@@ -175,6 +178,30 @@ public class BasePhotovoltaicPlantService {
.build())) .build()))
.map(GetSysAreaOutput::getName) .map(GetSysAreaOutput::getName)
.orElse(null)); .orElse(null));
//20240321 从电站辐照度模拟表中获取精准率
if(XStringUtils.isNotEmpty(input.getType())){
PlantTrainPowerTaskCloudService cloudService = context.getBean(PlantTrainPowerTaskCloudService.class);
GetPlantTrainPowerTaskCloudInput cloudInput = new GetPlantTrainPowerTaskCloudInput();
cloudInput.setPlantId(input.getId());
switch (input.getType()){
case "1" :
cloudInput.setModelCycle(240);
break;
case "2":
cloudInput.setModelCycle(72);
break;
case "3":
cloudInput.setModelCycle(4);
break;
}
XSingleResult<GetPlantTrainPowerTaskCloudOutput> result = cloudService.getPlantTrainPowerTaskData(context , cloudInput);
if(result.isSuccess() && result.getResult() != null && XStringUtils.isNotEmpty(result.getResult().getMetricsScore())){
Map<String , Object> map = XJsonUtils.toMap(result.getResult().getMetricsScore());
if(map.containsKey("MAPE") && XStringUtils.isNotEmpty(map.get("MAPE").toString())){
output.setMape(new BigDecimal(map.get("MAPE").toString()).setScale(2 , BigDecimal.ROUND_UP).toPlainString() +"%");
}
}
}
return XSingleResult.success(output); return XSingleResult.success(output);
} }
......
...@@ -8,4 +8,7 @@ public class GetBasePhotovoltaicPlantInput { ...@@ -8,4 +8,7 @@ public class GetBasePhotovoltaicPlantInput {
@XText("ID") @XText("ID")
private String id; private String id;
@XText("(15天,10天)传1(3天,1天)传2(4小时)传3,不传无返回")
private String type;
} }
\ No newline at end of file
...@@ -61,4 +61,7 @@ public class GetBasePhotovoltaicPlantOutput { ...@@ -61,4 +61,7 @@ public class GetBasePhotovoltaicPlantOutput {
@XText("地区名称") @XText("地区名称")
private String areaName; private String areaName;
@XText("准确率")
private String mape;
} }
package pps.cloud.prediction.service;
import pps.cloud.prediction.service.data.plant_train_power_task.GetPlantTrainPowerTaskCloudInput;
import pps.cloud.prediction.service.data.plant_train_power_task.GetPlantTrainPowerTaskCloudOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XSingleResult;
@XService
@XText("电站辐照度模拟")
public interface PlantTrainPowerTaskCloudService {
@XText("电站辐照度模拟")
XSingleResult<GetPlantTrainPowerTaskCloudOutput> getPlantTrainPowerTaskData(XContext context , GetPlantTrainPowerTaskCloudInput input);
}
\ No newline at end of file
package pps.cloud.prediction.service.data.plant_train_power_task;
import lombok.Data;
import xstartup.annotation.XText;
/**
* 电站辐照度模拟
*
* @author tianchao
* @date 2024/03/21
*/
@Data
public class GetPlantTrainPowerTaskCloudInput {
@XText("电站id")
private String plantId;
@XText("周期4/72/240 小时")
private Integer modelCycle;
}
package pps.cloud.prediction.service.data.plant_train_power_task;
import lombok.Data;
import xstartup.annotation.XText;
/**
* 电站辐照度模拟
*
* @author tianchao
* @date 2024/03/21
*/
@Data
public class GetPlantTrainPowerTaskCloudOutput {
@XText("电站id")
private String plantId;
@XText("周期4/72/240 小时")
private Integer modelCycle;
@XText("得分")
private String metricsScore;
}
package pps.core.prediction.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName("plant_predicted_power_mid_term")
public class PlantPredictedPowerMidTermEnt implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@XText("线路id")
@TableField
private String plantId;
@XText("日期")
@TableField
private String dataDate;
@XText("实际功率")
@TableField
private BigDecimal power;
@XText("预测功率")
@TableField
private BigDecimal predictPower;
@XText("创建时间")
@TableField
private Date createTime;
}
package pps.core.prediction.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName("plant_predicted_power_short_term")
public class PlantPredictedPowerShortTermEnt implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@XText("线路id")
@TableField
private String plantId;
@XText("日期")
@TableField
private String dataDate;
@XText("实际功率")
@TableField
private BigDecimal power;
@XText("预测功率")
@TableField
private BigDecimal predictPower;
@XText("创建时间")
@TableField
private Date createTime;
}
package pps.core.prediction.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName("plant_predicted_power_ultra_term")
public class PlantPredictedPowerUltraTermEnt implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@XText("线路id")
@TableField
private String plantId;
@XText("日期")
@TableField
private String dataDate;
@XText("实际功率")
@TableField
private BigDecimal power;
@XText("预测功率")
@TableField
private BigDecimal predictPower;
@XText("创建时间")
@TableField
private Date createTime;
}
package pps.core.prediction.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName("plant_train_power_task")
public class PlantTrainPowerTaskEnt implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@XText("电站id")
@TableField
private String plantId;
@XText("模型类别:A:多线路模型,O:单线路模型")
@TableField
private String modelKey;
@XText("周期4/72/240 小时")
@TableField
private String modelCycle;
@XText("运行状态1:成功,2:失败")
@TableField
private String runState;
@XText("运行步骤 T:训练,V:验证,P:预测")
@TableField
private String runStep;
@XText("得分")
@TableField
private String metricsScore;
@XText("创建时间")
@TableField
private Date createTime;
}
package pps.core.prediction.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.prediction.entity.PlantPredictedPowerMidTermEnt;
@Repository(value="pps.core.prediction.mapper.PlantPredictedPowerMidTermMapper")
public interface PlantPredictedPowerMidTermMapper extends BaseMapper<PlantPredictedPowerMidTermEnt> {
}
package pps.core.prediction.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.prediction.entity.PlantPredictedPowerShortTermEnt;
@Repository(value="pps.core.prediction.mapper.PlantPredictedPowerShortTermMapper")
public interface PlantPredictedPowerShortTermMapper extends BaseMapper<PlantPredictedPowerShortTermEnt> {
}
package pps.core.prediction.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.prediction.entity.PlantPredictedPowerUltraTermEnt;
@Repository(value="pps.core.prediction.mapper.PlantPredictedPowerUltratTermMapper")
public interface PlantPredictedPowerUltraTermMapper extends BaseMapper<PlantPredictedPowerUltraTermEnt> {
}
package pps.core.prediction.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import pps.core.prediction.entity.PlantTrainPowerTaskEnt;
@Repository(value="pps.core.prediction.mapper.PlantTrainPowerTaskMapper")
public interface PlantTrainPowerTaskMapper extends BaseMapper<PlantTrainPowerTaskEnt> {
}
package pps.core.prediction.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.core.prediction.entity.PlantPredictedPowerMidTermEnt;
import pps.core.prediction.mapper.PlantPredictedPowerMidTermMapper;
import pps.core.prediction.service.data.plant_predicted_power_mid_term.GetPlantPredictedPowerMidTermInput;
import pps.core.prediction.service.data.plant_predicted_power_mid_term.GetPlantPredictedPowerMidTermOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.base.util.XDateUtils;
import xstartup.base.util.XStringUtils;
import xstartup.data.XListResult;
import xstartup.feature.api.annotation.XApiGet;
import java.util.Date;
import java.util.List;
@XService
@XText("电站预测功率中期240小时数据")
public class PlantPredictedPowerMidTermService {
@XApiGet
@XText("根据电站预测15天的预测数据")
public XListResult<GetPlantPredictedPowerMidTermOutput> getFifteenPlantPredictedPowerMidTermList(XContext context, GetPlantPredictedPowerMidTermInput input){
PlantPredictedPowerMidTermMapper mapper = context.getBean(PlantPredictedPowerMidTermMapper.class);
QueryWrapper<PlantPredictedPowerMidTermEnt> queryWrapper = setQueryWrapper(input.getPlantId() , input.getStartTime() , 15);
List<PlantPredictedPowerMidTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list , GetPlantPredictedPowerMidTermOutput.class);
return XListResult.success(outputs);
}
@XApiGet
@XText("根据电站预测10天的预测数据")
public XListResult<GetPlantPredictedPowerMidTermOutput> getTenPlantPredictedPowerMidTermList(XContext context, GetPlantPredictedPowerMidTermInput input){
PlantPredictedPowerMidTermMapper mapper = context.getBean(PlantPredictedPowerMidTermMapper.class);
QueryWrapper<PlantPredictedPowerMidTermEnt> queryWrapper = setQueryWrapper(input.getPlantId() , input.getStartTime() , 10);
List<PlantPredictedPowerMidTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list , GetPlantPredictedPowerMidTermOutput.class);
return XListResult.success(outputs);
}
private QueryWrapper<PlantPredictedPowerMidTermEnt> setQueryWrapper(String plantId , String startTime , Integer days){
Date date = new Date();
QueryWrapper<PlantPredictedPowerMidTermEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(PlantPredictedPowerMidTermEnt::getPlantId ,plantId);
if(XStringUtils.isEmpty(startTime)){
queryWrapper.lambda().ge(PlantPredictedPowerMidTermEnt::getDataDate , date);
queryWrapper.lambda().le(PlantPredictedPowerMidTermEnt::getDataDate , XDateUtils.addDays(date , days));
} else{
queryWrapper.lambda().ge(PlantPredictedPowerMidTermEnt::getDataDate , startTime);
queryWrapper.lambda().le(PlantPredictedPowerMidTermEnt::getDataDate , XDateUtils.addDays(XDateUtils.parse(startTime) , days));
}
queryWrapper.lambda().orderByAsc(PlantPredictedPowerMidTermEnt::getDataDate);
return queryWrapper;
}
}
package pps.core.prediction.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.core.prediction.entity.PlantPredictedPowerShortTermEnt;
import pps.core.prediction.mapper.PlantPredictedPowerShortTermMapper;
import pps.core.prediction.service.data.plant_predicted_power_short_term.GetPlantPredictedPowerShortTermInput;
import pps.core.prediction.service.data.plant_predicted_power_short_term.GetPlantPredictedPowerShortTermOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.base.util.XDateUtils;
import xstartup.base.util.XStringUtils;
import xstartup.data.XListResult;
import xstartup.feature.api.annotation.XApiGet;
import java.util.Date;
import java.util.List;
@XService
@XText("电站预测功率短期72小时数据")
public class PlantPredictedPowerShortTermService {
@XApiGet
@XText("根据电站预测3天的预测数据")
public XListResult<GetPlantPredictedPowerShortTermOutput> getThreePlantPredictedPowerShortTermList(XContext context, GetPlantPredictedPowerShortTermInput input){
PlantPredictedPowerShortTermMapper mapper = context.getBean(PlantPredictedPowerShortTermMapper.class);
QueryWrapper<PlantPredictedPowerShortTermEnt> queryWrapper = setQueryWrapper(input.getPlantId() , input.getStartTime() , 3);
List<PlantPredictedPowerShortTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerShortTermOutput> outputs = XCopyUtils.copyNewList(list , GetPlantPredictedPowerShortTermOutput.class);
return XListResult.success(outputs);
}
@XApiGet
@XText("根据电站预测1天的预测数据")
public XListResult<GetPlantPredictedPowerShortTermOutput> getOnePlantPredictedPowerShortTermList(XContext context, GetPlantPredictedPowerShortTermInput input){
PlantPredictedPowerShortTermMapper mapper = context.getBean(PlantPredictedPowerShortTermMapper.class);
QueryWrapper<PlantPredictedPowerShortTermEnt> queryWrapper = setQueryWrapper(input.getPlantId() , input.getStartTime() , 1);
List<PlantPredictedPowerShortTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerShortTermOutput> outputs = XCopyUtils.copyNewList(list , GetPlantPredictedPowerShortTermOutput.class);
return XListResult.success(outputs);
}
private QueryWrapper<PlantPredictedPowerShortTermEnt> setQueryWrapper(String plantId , String startTime , Integer days){
Date date = new Date();
QueryWrapper<PlantPredictedPowerShortTermEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(PlantPredictedPowerShortTermEnt::getPlantId ,plantId);
if(XStringUtils.isEmpty(startTime)){
queryWrapper.lambda().ge(PlantPredictedPowerShortTermEnt::getDataDate , date);
queryWrapper.lambda().le(PlantPredictedPowerShortTermEnt::getDataDate , XDateUtils.addDays(date , days));
} else{
queryWrapper.lambda().ge(PlantPredictedPowerShortTermEnt::getDataDate , startTime);
queryWrapper.lambda().le(PlantPredictedPowerShortTermEnt::getDataDate , XDateUtils.addDays(XDateUtils.parse(startTime) , days));
}
queryWrapper.lambda().orderByAsc(PlantPredictedPowerShortTermEnt::getDataDate);
return queryWrapper;
}
}
package pps.core.prediction.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.core.common.utils.DateUtil;
import pps.core.prediction.entity.PlantPredictedPowerUltraTermEnt;
import pps.core.prediction.mapper.PlantPredictedPowerUltraTermMapper;
import pps.core.prediction.service.data.plant_predicted_power_ultra_term.GetPlantPredictedPowerUltraTermInput;
import pps.core.prediction.service.data.plant_predicted_power_ultra_term.GetPlantPredictedPowerUltraTermOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.base.util.XDateUtils;
import xstartup.base.util.XStringUtils;
import xstartup.data.XListResult;
import xstartup.feature.api.annotation.XApiGet;
import java.util.Date;
import java.util.List;
@XService
@XText("电站预测功率4小时数据")
public class PlantPredictedPowerUltraTermService {
@XApiGet
@XText("根据电站预测功率4小时数据")
public XListResult<GetPlantPredictedPowerUltraTermOutput> getPlantPredictedPowerUltraTermList(XContext context, GetPlantPredictedPowerUltraTermInput input){
//4小时数据,往前推1天,往后推4小时
PlantPredictedPowerUltraTermMapper mapper = context.getBean(PlantPredictedPowerUltraTermMapper.class);
String startTime = "";
String endTime = "";
if(XStringUtils.isEmpty(input.getStartTime())){
startTime =XDateUtils.getDateString(XDateUtils.addDays(new Date() , -1));
endTime =XDateUtils.getDateString(XDateUtils.addHours(new Date() , 4));
} else{
Date dateString = XDateUtils.parse(XDateUtils.getDateString(new Date()) + " " + input.getStartTime() + ":00");
startTime =XDateUtils.getDateString(XDateUtils.addDays(dateString , -1));
endTime =XDateUtils.getDateString(XDateUtils.addHours(dateString , 4));
}
QueryWrapper<PlantPredictedPowerUltraTermEnt> queryWrapper = setQueryWrapper(input.getPlantId() , startTime , endTime);
List<PlantPredictedPowerUltraTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerUltraTermOutput> outputs = XCopyUtils.copyNewList(list , GetPlantPredictedPowerUltraTermOutput.class);
return XListResult.success(outputs);
}
private QueryWrapper<PlantPredictedPowerUltraTermEnt> setQueryWrapper(String plantId , String startTime , String endTime){
QueryWrapper<PlantPredictedPowerUltraTermEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(PlantPredictedPowerUltraTermEnt::getPlantId ,plantId);
queryWrapper.lambda().ge(PlantPredictedPowerUltraTermEnt::getDataDate , startTime);
queryWrapper.lambda().le(PlantPredictedPowerUltraTermEnt::getDataDate , endTime);
queryWrapper.lambda().orderByAsc(PlantPredictedPowerUltraTermEnt::getDataDate);
return queryWrapper;
}
}
package pps.core.prediction.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.prediction.service.PlantTrainPowerTaskCloudService;
import pps.cloud.prediction.service.data.plant_train_power_task.GetPlantTrainPowerTaskCloudInput;
import pps.cloud.prediction.service.data.plant_train_power_task.GetPlantTrainPowerTaskCloudOutput;
import pps.core.prediction.entity.PlantPredictedPowerMidTermEnt;
import pps.core.prediction.entity.PlantTrainPowerTaskEnt;
import pps.core.prediction.mapper.PlantPredictedPowerMidTermMapper;
import pps.core.prediction.mapper.PlantTrainPowerTaskMapper;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XSingleResult;
import java.util.Objects;
@XService
public class PlantTrainPowerTaskService implements PlantTrainPowerTaskCloudService {
@Override
public XSingleResult<GetPlantTrainPowerTaskCloudOutput> getPlantTrainPowerTaskData(XContext context, GetPlantTrainPowerTaskCloudInput input) {
PlantTrainPowerTaskMapper mapper = context.getBean(PlantTrainPowerTaskMapper.class);
LambdaQueryWrapper<PlantTrainPowerTaskEnt> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PlantTrainPowerTaskEnt::getPlantId , input.getPlantId())
.eq(PlantTrainPowerTaskEnt::getModelCycle , input.getModelCycle())
.eq(PlantTrainPowerTaskEnt::getRunState , 1)
.eq(PlantTrainPowerTaskEnt::getRunStep , "model_train")
.orderByDesc(PlantTrainPowerTaskEnt::getCreateTime)
.last("limit 1");
PlantTrainPowerTaskEnt ent = mapper.selectOne(queryWrapper);
if(ent == null){
queryWrapper.clear();
queryWrapper.eq(PlantTrainPowerTaskEnt::getModelKey , "all_plant_data")
.eq(PlantTrainPowerTaskEnt::getModelCycle , input.getModelCycle())
.eq(PlantTrainPowerTaskEnt::getRunState , 1)
.eq(PlantTrainPowerTaskEnt::getRunStep , "model_train")
.orderByDesc(PlantTrainPowerTaskEnt::getCreateTime)
.last("limit 1");
ent = mapper.selectOne(queryWrapper);
}
GetPlantTrainPowerTaskCloudOutput output = XCopyUtils.copyNewObject(ent , GetPlantTrainPowerTaskCloudOutput.class);
return XSingleResult.success(output);
}
}
package pps.core.prediction.service.data.plant_predicted_power_mid_term;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class GetPlantPredictedPowerMidTermInput implements Serializable {
@XText("线路id")
private String plantId;
@XText("开始时间")
private String startTime;
}
package pps.core.prediction.service.data.plant_predicted_power_mid_term;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class GetPlantPredictedPowerMidTermOutput implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@XText("线路id")
private String plantId;
@XText("日期")
private String dataDate;
@XText("实际功率")
private BigDecimal power;
@XText("预测功率")
private BigDecimal predictPower;
@XText("创建时间")
private Date createTime;
}
package pps.core.prediction.service.data.plant_predicted_power_short_term;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
@Data
public class GetPlantPredictedPowerShortTermInput implements Serializable {
@XText("线路id")
private String plantId;
@XText("开始时间")
private String startTime;
}
package pps.core.prediction.service.data.plant_predicted_power_short_term;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class GetPlantPredictedPowerShortTermOutput implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@XText("线路id")
private String plantId;
@XText("日期")
private String dataDate;
@XText("实际功率")
private BigDecimal power;
@XText("预测功率")
private BigDecimal predictPower;
@XText("创建时间")
private Date createTime;
}
package pps.core.prediction.service.data.plant_predicted_power_ultra_term;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
@Data
public class GetPlantPredictedPowerUltraTermInput implements Serializable {
@XText("线路id")
private String plantId;
@XText("开始时间")
private String startTime;
}
package pps.core.prediction.service.data.plant_predicted_power_ultra_term;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class GetPlantPredictedPowerUltraTermOutput implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@XText("线路id")
private String plantId;
@XText("日期")
private String dataDate;
@XText("实际功率")
private BigDecimal power;
@XText("预测功率")
private BigDecimal predictPower;
@XText("创建时间")
private Date createTime;
}
...@@ -75,4 +75,6 @@ weather.mail.username=@weather.mail.username@ ...@@ -75,4 +75,6 @@ weather.mail.username=@weather.mail.username@
weather.mail.password=@weather.mail.password@ weather.mail.password=@weather.mail.password@
weather.mail.protocol=@weather.mail.protocol@ weather.mail.protocol=@weather.mail.protocol@
#\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86) #\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86)
third-party.chang-qing.url=@third-party.chang-qing.url@ third-party.chang-qing.url=@third-party.chang-qing.url@
\ No newline at end of file
feature.swagger.enable=@feature.swagger.enable@
\ No newline at end of file
...@@ -34,15 +34,8 @@ public class DeployPpsSystemApplication { ...@@ -34,15 +34,8 @@ public class DeployPpsSystemApplication {
startup.enable(XRpcFeature.class); startup.enable(XRpcFeature.class);
startup.enable(XCloudHuaweiCseFeature.class) startup.enable(XCloudHuaweiCseFeature.class)
.config(XCloudBundlesConf.with( .config(XCloudBundlesConf.with(
XCloudBundle.naming("pps-workflow").addModule("pps", "cloud", "primbpm"), XCloudBundle.naming("pps-prediction").addModule("pps", "cloud", "prediction"),
XCloudBundle.naming("pps-interface").addModule("pps", "cloud", "fiybook"), XCloudBundle.naming("pps-space").addModule("pps", "cloud", "space")));
XCloudBundle.naming("pps-interface").addModule("pps", "cloud", "sms"),
XCloudBundle.naming("pps-interface").addModule("pps", "cloud", "ihd"),
XCloudBundle.naming("pps-interface").addModule("pps", "cloud", "scadapi"),
XCloudBundle.naming("pps-dispatch").addModule("pps", "cloud", "dispatch"),
XCloudBundle.naming("pps-base-frame").addModule("pps", "cloud", "baseframe"),
XCloudBundle.naming("pps-interface").addModule("pps", "cloud", "iam"),
XCloudBundle.naming("pps-interface").addModule("pps", "cloud", "ukey")));
startup.run(args); startup.run(args);
} }
......
...@@ -77,7 +77,8 @@ x.cache.type=redis ...@@ -77,7 +77,8 @@ x.cache.type=redis
x.cache.host=127.0.0.1 x.cache.host=127.0.0.1
x.cache.port=6379 x.cache.port=6379
#x.cache.auth=hswGaTeNb5MRc4zqyKM4zA== #x.cache.auth=hswGaTeNb5MRc4zqyKM4zA==
x.cache.auth=BJ8HiKUS_Rg= #x.cache.auth=BJ8HiKUS_Rg=
x.cache.auth=tTxoOdue2XzmQ8RDq2AA-A==
x.cache.db=0 x.cache.db=0
#obs pps-obs-02.obsv3.gw-beijing-1.bjcloud.pipechina.com.cn #obs pps-obs-02.obsv3.gw-beijing-1.bjcloud.pipechina.com.cn
x.storage.type=obs x.storage.type=obs
...@@ -129,4 +130,6 @@ weather.mail.username=zhaowentao0117@163.com ...@@ -129,4 +130,6 @@ weather.mail.username=zhaowentao0117@163.com
weather.mail.password=BBCZPUESXSVSNXGI weather.mail.password=BBCZPUESXSVSNXGI
weather.mail.protocol=imap weather.mail.protocol=imap
#\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86) #\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86)
third-party.chang-qing.url=http://10.78.7.253 third-party.chang-qing.url=http://10.78.7.253
\ No newline at end of file
feature.swagger.enable=true
\ No newline at end of file
...@@ -86,114 +86,17 @@ x.mq.ssl-endpoint-identification-algorithm= ...@@ -86,114 +86,17 @@ x.mq.ssl-endpoint-identification-algorithm=
x.mq.ssl-truststore-location=classpath:kafka/truststore-prod.jks x.mq.ssl-truststore-location=classpath:kafka/truststore-prod.jks
# datasource # datasource
x.db.sharding=1 x.db.sharding=1
x.db.driver=org.postgresql.Driver x.db.driver=com.mysql.jdbc.Driver
x.db.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_base_info?currentSchema=pps_base_info&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true x.db.url=jdbc:mysql://120.46.208.168:3306/gf_demo?characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&useSSL=false
x.db.user=pps_interface_user x.db.user=root
x.db.password=QIb-U6D4dKMTP4NwMh7AOA== x.db.password=vwy69PQDfShqozf4ISXEoQ==
x.db.naming=snake-case x.db.naming=snake-case
x.db.pps.core.analysis.sharding=1
x.db.pps.core.analysis.driver=org.postgresql.Driver
x.db.pps.core.analysis.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_analysis?currentSchema=pps_analysis&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.analysis.user=pps_interface_user
x.db.pps.core.analysis.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.analysis.naming=snake-case
x.db.pps.core.primbpm.sharding=1
x.db.pps.core.primbpm.driver=org.postgresql.Driver
x.db.pps.core.primbpm.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_workflow?currentSchema=pps_workflow&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.primbpm.user=pps_interface_user
x.db.pps.core.primbpm.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.primbpm.naming=snake-case
x.db.pps.core.calc.sharding=1
x.db.pps.core.calc.driver=org.postgresql.Driver
x.db.pps.core.calc.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_transportation_calc?currentSchema=pps_transportation_calc&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.calc.user=pps_interface_user
x.db.pps.core.calc.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.calc.naming=snake-case
x.db.pps.core.dispatch.sharding=1
x.db.pps.core.dispatch.driver=org.postgresql.Driver
x.db.pps.core.dispatch.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_dispatch?currentSchema=pps_dispatch&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.dispatch.user=pps_interface_user
x.db.pps.core.dispatch.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.dispatch.naming=snake-case
x.db.pps.core.energy.sharding=1
x.db.pps.core.energy.driver=org.postgresql.Driver
x.db.pps.core.energy.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_energy_consumption?currentSchema=pps_energy_consumption&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.energy.user=pps_interface_user
x.db.pps.core.energy.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.energy.naming=snake-case
x.db.pps.core.baseframe.sharding=1
x.db.pps.core.baseframe.driver=org.postgresql.Driver
x.db.pps.core.baseframe.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_base_frame?currentSchema=pps_base_frame&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.baseframe.user=pps_interface_user
x.db.pps.core.baseframe.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.baseframe.naming=snake-case
x.db.pps.core.measure.sharding=1
x.db.pps.core.measure.driver=org.postgresql.Driver
x.db.pps.core.measure.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_measure?currentSchema=pps_measure&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.measure.user=pps_interface_user
x.db.pps.core.measure.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.measure.naming=snake-case
x.db.pps.core.online.sharding=1
x.db.pps.core.online.driver=org.postgresql.Driver
x.db.pps.core.online.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_into_production?currentSchema=pps_into_production&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.online.user=pps_interface_user
x.db.pps.core.online.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.online.naming=snake-case
x.db.pps.core.plan.sharding=1
x.db.pps.core.plan.driver=org.postgresql.Driver
x.db.pps.core.plan.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_plan?currentSchema=pps_plan&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.plan.user=pps_interface_user
x.db.pps.core.plan.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.plan.naming=snake-case
x.db.pps.core.signature.sharding=1
x.db.pps.core.signature.driver=org.postgresql.Driver
x.db.pps.core.signature.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_signature?currentSchema=pps_signature&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.signature.user=pps_interface_user
x.db.pps.core.signature.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.signature.naming=snake-case
x.db.pps.core.system.sharding=1 x.db.pps.core.system.sharding=1
x.db.pps.core.system.driver=org.postgresql.Driver x.db.pps.core.system.driver=com.mysql.jdbc.Driver
x.db.pps.core.system.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_base_info?currentSchema=pps_base_info&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true x.db.pps.core.system.url=jdbc:mysql://120.46.208.168:3306/gf_demo?characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&useSSL=false
x.db.pps.core.system.user=pps_interface_user x.db.pps.core.system.user=root
x.db.pps.core.system.password=QIb-U6D4dKMTP4NwMh7AOA== x.db.pps.core.system.password=vwy69PQDfShqozf4ISXEoQ==
x.db.pps.core.system.naming=snake-case x.db.pps.core.system.naming=snake-case
x.db.pps.core.interface.sharding=1
x.db.pps.core.interface.driver=org.postgresql.Driver
x.db.pps.core.interface.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_interface?currentSchema=pps_interface&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.interface.user=pps_interface_user
x.db.pps.core.interface.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.interface.naming=snake-case
x.db.pps.core.report.sharding=1
x.db.pps.core.report.driver=org.postgresql.Driver
x.db.pps.core.report.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_report?currentSchema=pps_report&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.report.user=pps_interface_user
x.db.pps.core.report.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.report.naming=snake-case
x.db.pps.core.mdm.sharding=1
x.db.pps.core.mdm.driver=org.postgresql.Driver
x.db.pps.core.mdm.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_third?currentSchema=pps_third&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.mdm.user=pps_interface_user
x.db.pps.core.mdm.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.mdm.naming=snake-case
x.db.pps.core.ihd.sharding=1
x.db.pps.core.ihd.driver=org.postgresql.Driver
#x.db.pps.core.ihd.url=jdbc:postgresql://11.0.25.218:5432/pps_uat?characterEncoding=utf8&allowEncodingChanges=true
x.db.pps.core.ihd.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_base_info?currentSchema=pps_base_info&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.ihd.user=pps_interface_user
x.db.pps.core.ihd.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.ihd.naming=snake-case
x.db.pps.core.transfer.sharding=1
x.db.pps.core.transfer.driver=org.postgresql.Driver
x.db.pps.core.transfer.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_interface?currentSchema=pps_interface&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.transfer.user=pps_interface_user
x.db.pps.core.transfer.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.transfer.naming=snake-case
x.db.pps.core.ims.sharding=1
x.db.pps.core.ims.driver=org.postgresql.Driver
x.db.pps.core.ims.url=jdbc:postgresql://10.37.122.120:8000,10.37.122.12:8000,10.37.122.196:8000/pps_interface?currentSchema=pps_interface&characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&autoBalance=true
x.db.pps.core.ims.user=pps_interface_user
x.db.pps.core.ims.password=QIb-U6D4dKMTP4NwMh7AOA==
x.db.pps.core.ims.naming=snake-case
#huawei-cse config #huawei-cse config
spring.cloud.servicecomb.discovery.address=https://10.37.122.202:30100,https://10.37.122.167:30100 spring.cloud.servicecomb.discovery.address=https://10.37.122.202:30100,https://10.37.122.167:30100
spring.cloud.servicecomb.config.serverType=service-center spring.cloud.servicecomb.config.serverType=service-center
...@@ -208,4 +111,5 @@ weather.mail.username=zhaowentao0117@163.com ...@@ -208,4 +111,5 @@ weather.mail.username=zhaowentao0117@163.com
weather.mail.password=JPFHTZWASWSDSSZP weather.mail.password=JPFHTZWASWSDSSZP
weather.mail.protocol=imap weather.mail.protocol=imap
#\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86) #\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86)
third-party.chang-qing.url=http://10.78.7.253 third-party.chang-qing.url=http://10.78.7.253
\ No newline at end of file feature.swagger.enable=false
\ No newline at end of file
...@@ -109,4 +109,5 @@ weather.mail.username=fzygl@petrochina.com.cn ...@@ -109,4 +109,5 @@ weather.mail.username=fzygl@petrochina.com.cn
weather.mail.password=wulingjie@xuqi914 weather.mail.password=wulingjie@xuqi914
weather.mail.protocol=pop3 weather.mail.protocol=pop3
#\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86) #\u7B2C\u4E09\u65B9\u63A5\u53E3\u5730\u5740(\u957F\u5E86)
third-party.chang-qing.url=http://10.78.7.253 third-party.chang-qing.url=http://10.78.7.253
\ No newline at end of file feature.swagger.enable=false
\ No newline at end of file
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