Commit 75c520dd authored by ZWT's avatar ZWT

feat[零碳项目]: 松原演示

[1.修改井口日用电趋势统计表,增加谷电时段发电时长及谷电占比字段,同时在代码中添加对应字段并修改数据库mapper文件相关业务处理逻辑sql语句;
2.修改线路日用电趋势统计表,增加谷电时段发电时长及谷电占比字段,同时在代码中添加对应字段并修改数据库mapper文件相关业务处理逻辑sql语句;
3.修改井口/线路日用电趋势统计定时任务,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理,同时增加获取每日井口及线路谷电运行时长统计逻辑,完成功能冒烟测试;
4.修改首页总览接口逻辑,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理;
5.修改首页井场实时监控接口逻辑,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理;
6.修改首页光伏实时监控接口逻辑,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理;
7.修改首页井场效果评价接口逻辑,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理;
8.修改首页井场用能分析接口逻辑,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理;
]
parent 1e0ac44b
......@@ -264,6 +264,73 @@ public class HomePageService {
.build());
}
/**
* 井场用能分析
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult }<{@link GetPowerAnalyseTrendOutput }>
*/
@XText("首页模块--井场用能分析")
@XApiGet(anonymous = true)
public XSingleResult<GetPowerAnalyseTrendOutput> getPowerAnalyseTrend(XContext context, GetStationViewInput input) {
String stationId = input.getStationId();
//查组织下所有井
List<DynamicQueryBaseWellheadOutput> wellList = this.getWellList(context, stationId);
//查组织下所有电站
List<GetBasePhotovoltaicPlantCloudOutput> plantList = this.getPlantList(context, stationId, null);
//查前七日用能分析
DateTime endTime = DateUtil.beginOfDay(DateUtil.date());
DateTime startTime = DateUtil.offsetDay(endTime, -7);
ThirdWellAvgActivePowerViewMapper mapper = context.getBean(ThirdWellAvgActivePowerViewMapper.class);
ThirdActivePowerViewMapper dailyUpdateMapper = context.getBean(ThirdActivePowerViewMapper.class);
//当前配置
String oilFieldCode = this.getOilFieldCode(context);
//用电功率
List<ThirdWellAvgActivePowerView> avgList = mapper.selectPowerConsumptionHour(ThirdWellAvgActivePowerView.builder()
.wellNumbers(wellList.stream()
.map(DynamicQueryBaseWellheadOutput::getWellNumber)
.collect(Collectors.toList()))
.startTime(startTime)
.endTime(endTime)
.systemSource(oilFieldCode)
.build());
//发电功率
List<ThirdActivePowerView> powerList = dailyUpdateMapper.selectGeneratedPowerHour(ThirdActivePowerView.builder()
.stationNames(plantList.stream()
.map(GetBasePhotovoltaicPlantCloudOutput::getStationName)
.collect(Collectors.toList()))
.startTime(startTime)
.endTime(endTime)
.systemSource(oilFieldCode)
.build());
//封装
GetPowerAnalyseTrendOutput output = new GetPowerAnalyseTrendOutput();
if (CollUtil.isNotEmpty(avgList)) {
List<GetPowerConsumptionTrendOutput> consumptionList = new ArrayList<>(avgList.size());
for (ThirdWellAvgActivePowerView view : avgList) {
consumptionList.add(
new GetPowerConsumptionTrendOutput(DateUtil.format(view.getInputTime(), BusinessConstant.DATE_FORMAT_HOUR), view.getAvgActivePower())
);
}
output.setConsumptionList(consumptionList);
} else {
output.setConsumptionList(Collections.emptyList());
}
if (CollUtil.isNotEmpty(powerList)) {
List<GetPowerGenerationTrendOutput> generationList = new ArrayList<>(powerList.size());
for (ThirdActivePowerView view : powerList) {
generationList.add(
new GetPowerGenerationTrendOutput(DateUtil.format(view.getCreateDate(), BusinessConstant.DATE_FORMAT_HOUR), view.getPhotovoltaicPower())
);
}
output.setGenerationList(generationList);
} else {
output.setGenerationList(Collections.emptyList());
}
return XSingleResult.success(output);
}
/**
* 首页模块--用能分析
*
......@@ -326,7 +393,7 @@ public class HomePageService {
BigDecimal powerGeneration;
BigDecimal powerConsumption;
for (DateTime dateTime : rangeToList) {
powerConsumption = avgMap.getOrDefault(dateTime, null);
powerConsumption = avgMap.getOrDefault(dateTime, BigDecimal.ZERO);
powerGeneration = powerMap.getOrDefault(dateTime, BigDecimal.ZERO);
outputs.add(GetPowerAnalyseOutput.builder()
.dateFormat(dateTime.toString(BusinessConstant.DATE_FORMAT_ALL))
......
package pps.core.prediction.service.data.home_page;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.util.List;
/**
* 用能曲线
*
* @author ZWT
* @date 2024/04/01
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetPowerAnalyseTrendOutput {
@XText("发电功率趋势")
private List<GetPowerGenerationTrendOutput> generationList;
@XText("用电功率趋势")
private List<GetPowerConsumptionTrendOutput> consumptionList;
}
package pps.core.prediction.service.data.home_page;
import lombok.AllArgsConstructor;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
/**
* 获取功耗趋势输出
*
* @author ZWT
* @date 2024/07/25
*/
@Data
@AllArgsConstructor
public class GetPowerConsumptionTrendOutput {
@XText("日期")
private String dateFormat;
@XText("用电功率(kWh)")
private BigDecimal powerConsumption;
}
\ No newline at end of file
package pps.core.prediction.service.data.home_page;
import lombok.AllArgsConstructor;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
/**
* 获取发电趋势输出
*
* @author ZWT
* @date 2024/07/25
*/
@Data
@AllArgsConstructor
public class GetPowerGenerationTrendOutput {
@XText("日期")
private String dateFormat;
@XText("发电功率(kWh)")
private BigDecimal powerGeneration;
}
\ No newline at end of file
......@@ -95,6 +95,8 @@
GROUP BY station_name,
DATE_FORMAT(create_date, '%Y-%m-%d %H:00:00')) z
GROUP BY create_date
ORDER BY
create_date
</select>
<select id="selectAvgPhotovoltaicPower" parameterType="pps.core.prediction.entity.ThirdActivePowerView"
......
......@@ -137,5 +137,7 @@
) z
GROUP BY
input_time
ORDER BY
input_time
</select>
</mapper>
\ 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