Commit 0b559ff9 authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.修改极短期间开预测定时任务逻辑,解决优化后部分优化结果时间段过短问题;
2.修改心知天气气象数据获取及接收定时任务,解决天气数据通过邮件下载后,部分数据精度丢失问题;
3.修改首页各个接口逻辑,对小数类型字段进行处理,修改首页接口,增加小时保留两位四舍五入逻辑,同时解决线路详情接口部分查询逻辑报错问题;
4.能耗分析模块,能耗概览接口修改,修改查询逻辑,修改数据获取逻辑及绿电占比计算逻辑;
5.能耗分析模块,消纳曲线用电趋势接口修改,修改查询逻辑,修改数据获取逻辑及绿电占比计算逻辑;
6.能耗分析模块,用电详情接口修改,修改查询逻辑,修改数据获取逻辑及绿电占比计算逻辑;
7.修改首页先导实验井间开制度模块接口查询逻辑,解决极短期间开优化修改后没有第一次开井时间标识导致数据查询不出来问题;
8.基础间开制度新增修改接口逻辑修改,删除防冻堵对井口处理逻辑;
9.极短期间开优化算法修改,增加防冻堵井开井时间优化逻辑;
10.提供长庆通过日期获取当日间开优化结果接口开发,完成接口冒烟测试并添加线上接口文档;
11.提供长庆1天光伏出力预测结果接口开发,完成接口冒烟测试并添加线上接口文档;
12.提供长庆15天光伏出力预测结果接口开发,完成接口冒烟测试并添加线上接口文档;
13.修改极短期间开优化算法,优化防冻堵策略;
14.开发第三方历史天气导入功能;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 8e865672
...@@ -115,12 +115,7 @@ public class PlantPowerDataService { ...@@ -115,12 +115,7 @@ public class PlantPowerDataService {
map.put("sort", value.getSort()); map.put("sort", value.getSort());
fieldList.add(map); fieldList.add(map);
} }
fieldList.sort(new Comparator<Map<String, Object>>() { fieldList.sort(Comparator.comparing(o -> ((Integer) o.get("sort"))));
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
return ((Integer) o1.get("sort")).compareTo((Integer) o2.get("sort"));
}
});
return fieldList.stream().map(x -> ((String) x.get("col"))).collect(Collectors.toList()); return fieldList.stream().map(x -> ((String) x.get("col"))).collect(Collectors.toList());
} }
...@@ -128,10 +123,9 @@ public class PlantPowerDataService { ...@@ -128,10 +123,9 @@ public class PlantPowerDataService {
try { try {
Object ret = HttpUtils.send2("http://127.0.0.1:10098/aiprediction/xgbtrain?plantId=" + plantId, Object ret = HttpUtils.send2("http://127.0.0.1:10098/aiprediction/xgbtrain?plantId=" + plantId,
""); "");
;
context.getLogger().info(ret.toString()); context.getLogger().info(ret.toString());
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("调用训练接口失败"); throw new RuntimeException("调用训练接口失败");
} }
} }
} }
\ No newline at end of file
...@@ -143,5 +143,4 @@ public class PlantPredictedPowerDataService { ...@@ -143,5 +143,4 @@ public class PlantPredictedPowerDataService {
throw new RuntimeException("调用训练接口失败"); throw new RuntimeException("调用训练接口失败");
} }
} }
}
} \ No newline at end of file
...@@ -14,7 +14,6 @@ import xstartup.base.util.XStringUtils; ...@@ -14,7 +14,6 @@ import xstartup.base.util.XStringUtils;
import xstartup.data.XListResult; import xstartup.data.XListResult;
import xstartup.feature.api.annotation.XApiGet; import xstartup.feature.api.annotation.XApiGet;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -30,11 +29,10 @@ public class PlantPredictedPowerMidTermService { ...@@ -30,11 +29,10 @@ public class PlantPredictedPowerMidTermService {
QueryWrapper<PlantPredictedPowerMidTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), input.getStartTime(), 15); QueryWrapper<PlantPredictedPowerMidTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), input.getStartTime(), 15);
List<PlantPredictedPowerMidTermEnt> list = mapper.selectList(queryWrapper); List<PlantPredictedPowerMidTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class); List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class);
ThirdActivePowerServiceHelper.getActivePower(context, outputs ,input.getPlantId()); ThirdActivePowerServiceHelper.getActivePower(context, outputs, input.getPlantId());
return XListResult.success(outputs); return XListResult.success(outputs);
} }
@XApiGet @XApiGet
@XText("根据电站预测10天的预测数据") @XText("根据电站预测10天的预测数据")
public XListResult<GetPlantPredictedPowerMidTermOutput> getTenPlantPredictedPowerMidTermList(XContext context, GetPlantPredictedPowerMidTermInput input) { public XListResult<GetPlantPredictedPowerMidTermOutput> getTenPlantPredictedPowerMidTermList(XContext context, GetPlantPredictedPowerMidTermInput input) {
...@@ -42,7 +40,7 @@ public class PlantPredictedPowerMidTermService { ...@@ -42,7 +40,7 @@ public class PlantPredictedPowerMidTermService {
QueryWrapper<PlantPredictedPowerMidTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), input.getStartTime(), 10); QueryWrapper<PlantPredictedPowerMidTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), input.getStartTime(), 10);
List<PlantPredictedPowerMidTermEnt> list = mapper.selectList(queryWrapper); List<PlantPredictedPowerMidTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class); List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class);
ThirdActivePowerServiceHelper.getActivePower(context, outputs ,input.getPlantId()); ThirdActivePowerServiceHelper.getActivePower(context, outputs, input.getPlantId());
return XListResult.success(outputs); return XListResult.success(outputs);
} }
...@@ -60,4 +58,4 @@ public class PlantPredictedPowerMidTermService { ...@@ -60,4 +58,4 @@ public class PlantPredictedPowerMidTermService {
queryWrapper.lambda().orderByAsc(PlantPredictedPowerMidTermEnt::getDataDate); queryWrapper.lambda().orderByAsc(PlantPredictedPowerMidTermEnt::getDataDate);
return queryWrapper; return queryWrapper;
} }
} }
\ No newline at end of file
...@@ -5,7 +5,6 @@ import pps.core.prediction.entity.PlantPredictedPowerShortTermEnt; ...@@ -5,7 +5,6 @@ import pps.core.prediction.entity.PlantPredictedPowerShortTermEnt;
import pps.core.prediction.mapper.PlantPredictedPowerShortTermMapper; import pps.core.prediction.mapper.PlantPredictedPowerShortTermMapper;
import pps.core.prediction.service.data.plant_predicted_power_mid_term.GetPlantPredictedPowerMidTermOutput; import pps.core.prediction.service.data.plant_predicted_power_mid_term.GetPlantPredictedPowerMidTermOutput;
import pps.core.prediction.service.data.plant_predicted_power_short_term.GetPlantPredictedPowerShortTermInput; 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.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -30,11 +29,10 @@ public class PlantPredictedPowerShortTermService { ...@@ -30,11 +29,10 @@ public class PlantPredictedPowerShortTermService {
QueryWrapper<PlantPredictedPowerShortTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), input.getStartTime(), 3); QueryWrapper<PlantPredictedPowerShortTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), input.getStartTime(), 3);
List<PlantPredictedPowerShortTermEnt> list = mapper.selectList(queryWrapper); List<PlantPredictedPowerShortTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class); List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class);
ThirdActivePowerServiceHelper.getActivePower(context, outputs ,input.getPlantId()); ThirdActivePowerServiceHelper.getActivePower(context, outputs, input.getPlantId());
return XListResult.success(outputs); return XListResult.success(outputs);
} }
@XApiGet @XApiGet
@XText("根据电站预测1天的预测数据") @XText("根据电站预测1天的预测数据")
public XListResult<GetPlantPredictedPowerMidTermOutput> getOnePlantPredictedPowerShortTermList(XContext context, GetPlantPredictedPowerShortTermInput input) { public XListResult<GetPlantPredictedPowerMidTermOutput> getOnePlantPredictedPowerShortTermList(XContext context, GetPlantPredictedPowerShortTermInput input) {
...@@ -42,7 +40,7 @@ public class PlantPredictedPowerShortTermService { ...@@ -42,7 +40,7 @@ public class PlantPredictedPowerShortTermService {
QueryWrapper<PlantPredictedPowerShortTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), input.getStartTime(), 1); QueryWrapper<PlantPredictedPowerShortTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), input.getStartTime(), 1);
List<PlantPredictedPowerShortTermEnt> list = mapper.selectList(queryWrapper); List<PlantPredictedPowerShortTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class); List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class);
ThirdActivePowerServiceHelper.getActivePower(context, outputs ,input.getPlantId()); ThirdActivePowerServiceHelper.getActivePower(context, outputs, input.getPlantId());
return XListResult.success(outputs); return XListResult.success(outputs);
} }
...@@ -60,4 +58,4 @@ public class PlantPredictedPowerShortTermService { ...@@ -60,4 +58,4 @@ public class PlantPredictedPowerShortTermService {
queryWrapper.lambda().orderByAsc(PlantPredictedPowerShortTermEnt::getDataDate); queryWrapper.lambda().orderByAsc(PlantPredictedPowerShortTermEnt::getDataDate);
return queryWrapper; return queryWrapper;
} }
} }
\ No newline at end of file
...@@ -5,7 +5,6 @@ import pps.core.prediction.entity.PlantPredictedPowerUltraTermEnt; ...@@ -5,7 +5,6 @@ import pps.core.prediction.entity.PlantPredictedPowerUltraTermEnt;
import pps.core.prediction.mapper.PlantPredictedPowerUltraTermMapper; import pps.core.prediction.mapper.PlantPredictedPowerUltraTermMapper;
import pps.core.prediction.service.data.plant_predicted_power_mid_term.GetPlantPredictedPowerMidTermOutput; import pps.core.prediction.service.data.plant_predicted_power_mid_term.GetPlantPredictedPowerMidTermOutput;
import pps.core.prediction.service.data.plant_predicted_power_ultra_term.GetPlantPredictedPowerUltraTermInput; 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.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -28,8 +27,8 @@ public class PlantPredictedPowerUltraTermService { ...@@ -28,8 +27,8 @@ public class PlantPredictedPowerUltraTermService {
public XListResult<GetPlantPredictedPowerMidTermOutput> getPlantPredictedPowerUltraTermList(XContext context, GetPlantPredictedPowerUltraTermInput input) { public XListResult<GetPlantPredictedPowerMidTermOutput> getPlantPredictedPowerUltraTermList(XContext context, GetPlantPredictedPowerUltraTermInput input) {
//4小时数据,往前推1天,往后推4小时 //4小时数据,往前推1天,往后推4小时
PlantPredictedPowerUltraTermMapper mapper = context.getBean(PlantPredictedPowerUltraTermMapper.class); PlantPredictedPowerUltraTermMapper mapper = context.getBean(PlantPredictedPowerUltraTermMapper.class);
String startTime = ""; String startTime;
String endTime = ""; String endTime;
if (XStringUtils.isEmpty(input.getStartTime())) { if (XStringUtils.isEmpty(input.getStartTime())) {
startTime = XDateUtils.getString(XDateUtils.addDays(new Date(), -1)); startTime = XDateUtils.getString(XDateUtils.addDays(new Date(), -1));
endTime = XDateUtils.getString(XDateUtils.addHours(new Date(), 4)); endTime = XDateUtils.getString(XDateUtils.addHours(new Date(), 4));
...@@ -41,7 +40,7 @@ public class PlantPredictedPowerUltraTermService { ...@@ -41,7 +40,7 @@ public class PlantPredictedPowerUltraTermService {
QueryWrapper<PlantPredictedPowerUltraTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), startTime, endTime); QueryWrapper<PlantPredictedPowerUltraTermEnt> queryWrapper = setQueryWrapper(input.getPlantId(), startTime, endTime);
List<PlantPredictedPowerUltraTermEnt> list = mapper.selectList(queryWrapper); List<PlantPredictedPowerUltraTermEnt> list = mapper.selectList(queryWrapper);
List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class); List<GetPlantPredictedPowerMidTermOutput> outputs = XCopyUtils.copyNewList(list, GetPlantPredictedPowerMidTermOutput.class);
ThirdActivePowerServiceHelper.getActivePower(context, outputs ,input.getPlantId()); ThirdActivePowerServiceHelper.getActivePower(context, outputs, input.getPlantId());
return XListResult.success(outputs); return XListResult.success(outputs);
} }
...@@ -53,4 +52,4 @@ public class PlantPredictedPowerUltraTermService { ...@@ -53,4 +52,4 @@ public class PlantPredictedPowerUltraTermService {
queryWrapper.lambda().orderByAsc(PlantPredictedPowerUltraTermEnt::getDataDate); queryWrapper.lambda().orderByAsc(PlantPredictedPowerUltraTermEnt::getDataDate);
return queryWrapper; return queryWrapper;
} }
} }
\ No newline at end of file
...@@ -37,4 +37,4 @@ public class PlantTrainPowerTaskService implements PlantTrainPowerTaskCloudServi ...@@ -37,4 +37,4 @@ public class PlantTrainPowerTaskService implements PlantTrainPowerTaskCloudServi
GetPlantTrainPowerTaskCloudOutput output = XCopyUtils.copyNewObject(ent, GetPlantTrainPowerTaskCloudOutput.class); GetPlantTrainPowerTaskCloudOutput output = XCopyUtils.copyNewObject(ent, GetPlantTrainPowerTaskCloudOutput.class);
return XSingleResult.success(output); return XSingleResult.success(output);
} }
} }
\ No newline at end of file
...@@ -46,4 +46,4 @@ public class PredictionService { ...@@ -46,4 +46,4 @@ public class PredictionService {
XCopyUtils.copyObject(entity, output); XCopyUtils.copyObject(entity, output);
return XSingleResult.success(output); return XSingleResult.success(output);
} }
} }
\ No newline at end of file
...@@ -14,30 +14,29 @@ import java.util.List; ...@@ -14,30 +14,29 @@ import java.util.List;
public class ThirdActivePowerServiceHelper { public class ThirdActivePowerServiceHelper {
public static void getActivePower(XContext context, List<GetPlantPredictedPowerMidTermOutput> outputs , String plantId){ public static void getActivePower(XContext context, List<GetPlantPredictedPowerMidTermOutput> outputs, String plantId) {
ThirdActivePowerMapper mapper = context.getBean(ThirdActivePowerMapper.class); ThirdActivePowerMapper mapper = context.getBean(ThirdActivePowerMapper.class);
List<ThirdActivePowerEnt> powerList = mapper.selectList(new LambdaQueryWrapper<ThirdActivePowerEnt>() List<ThirdActivePowerEnt> powerList = mapper.selectList(new LambdaQueryWrapper<ThirdActivePowerEnt>()
.eq(ThirdActivePowerEnt::getStationId , plantId) .eq(ThirdActivePowerEnt::getStationId, plantId)
.ge(ThirdActivePowerEnt::getCreateDate , XDateUtils.addDays(new Date() , -2))); .ge(ThirdActivePowerEnt::getCreateDate, XDateUtils.addDays(new Date(), -2)));
if(powerList.size() > 0){ if (powerList.size() > 0) {
outputs.forEach(item->{ outputs.forEach(item -> {
if(item.getPower() == null && XDateUtils.compare(XDateUtils.parse(item.getDataDate()) , new Date()) < 0){ if (item.getPower() == null && XDateUtils.compare(XDateUtils.parse(item.getDataDate()), new Date()) < 0) {
if(item.getDataDate().equals("2024-03-28 14:30:00")) if (item.getDataDate().equals("2024-03-28 14:30:00"))
System.out.println(item.getDataDate()); System.out.println(item.getDataDate());
Date targetDate = XDateUtils.parse(item.getDataDate()); Date targetDate = XDateUtils.parse(item.getDataDate());
Date closeDate = powerList.get(0).getCreateDate(); Date closeDate = powerList.get(0).getCreateDate();
BigDecimal photovoltaicPower = powerList.get(0).getPhotovoltaicPower(); BigDecimal photovoltaicPower = powerList.get(0).getPhotovoltaicPower();
for(ThirdActivePowerEnt power : powerList){ for (ThirdActivePowerEnt power : powerList) {
if(Math.abs(power.getCreateDate().getTime() -targetDate.getTime()) if (Math.abs(power.getCreateDate().getTime() - targetDate.getTime())
< Math.abs(closeDate.getTime() -targetDate.getTime())){ < Math.abs(closeDate.getTime() - targetDate.getTime())) {
closeDate = power.getCreateDate(); closeDate = power.getCreateDate();
photovoltaicPower = power.getPhotovoltaicPower(); photovoltaicPower = power.getPhotovoltaicPower();
} }
} }
item.setPower(photovoltaicPower); item.setPower(photovoltaicPower);
} }
}); });
} }
} }
} }
\ 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