Commit 9392f642 authored by ZWT's avatar ZWT

feat(零碳): 长庆演示系统新增功能

1.修改第三方日累计数据推送表表结构,增加日累计储能放电量字段,同时修改代码对应实体及mapper文件,修改相关接口增加储能日累计放电量接收逻辑;
2.修改首页井场收益分析模块接口,修改获取储能累计放电量逻辑;
3.设计并创建井口日用电趋势表,生成对应实体类及mapper文件;
4.统计分析模块,新增本月累计节电经济效益查询接口,添加线上接口文档并完成接口冒烟测试;
5.统计分析模块,新增本月累计减碳量查询接口,添加线上接口文档并完成接口冒烟测试;
6.统计分析模块,新增光伏发电趋势查询接口,添加线上接口文档并完成接口冒烟测试;
7.统计分析模块,新增月度总览查询接口,添加线上接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent fef6dfb3
...@@ -82,48 +82,18 @@ public class ServiceUtil { ...@@ -82,48 +82,18 @@ public class ServiceUtil {
} }
/** /**
* 获得预测功率输出 * 查15分钟电站预测功率
* *
* @param context 上下文 * @param context 上下文
* @param inputTimeStr 输入时间str
* @param stationId 工作站id
* @param offsetDay 偏移日
* @param cycle 周期 * @param cycle 周期
* @return {@link List }<{@link GetPredictedPowerOutput }> * @param stationId 工作站id
* @param beginTime 开始时间
* @param endTime 结束时间
* @return {@link Map }<{@link DateTime }, {@link BigDecimal }>
*/ */
public static List<GetPredictedPowerOutput> getPredictedPowerOutput(XContext context, String inputTimeStr, String stationId, int offsetDay, int cycle) { public static Map<Date, BigDecimal> getPredictedPowerMap15(XContext context, int cycle, String stationId, Date beginTime, Date endTime) {
//判断是否需要启用演示配置
DateTime date = DateUtil.date();
DateTime inputTime;
if (CharSequenceUtil.isBlank(inputTimeStr)) {
inputTime = DateUtil.beginOfDay(date);
} else {
inputTime = DateUtil.parse(inputTimeStr, BusinessConstant.DATE_FORMAT_DAY);
}
//时间出力截至时间
Date showTime = date;
DateTime day = inputTime;
int betweenDay = 0;
//输入时间等于当日时间时,进行演示开关校验
if (0 == DateUtil.compare(DateUtil.beginOfDay(date), inputTime)) {
ConfigShowMapper configMapper = context.getBean(ConfigShowMapper.class);
ConfigShowEnt configShowEnt = configMapper.selectOne(new LambdaQueryWrapper<ConfigShowEnt>()
.last("LIMIT 1"));
if (ObjectUtil.isAllNotEmpty(configShowEnt, configShowEnt.getIsEnable(), configShowEnt.getChoiceDate())) {
day = configShowEnt.getIsEnable().equals(0) ? DateUtil.date(configShowEnt.getChoiceDate()) : inputTime;
showTime = DateUtil.parse(day.toString(BusinessConstant.DATE_FORMAT_DAY) + " " + date.toString(BusinessConstant.TIME_FORMAT));
//计算偏移
betweenDay = (int) DateUtil.betweenDay(inputTime, day, false);
if (DateUtil.compare(day, inputTime) > 0) {
betweenDay = -betweenDay;
}
}
}
DateTime beginTime = DateUtil.offsetMinute(day, -1);
DateTime endTime = DateUtil.offsetDay(day, offsetDay);
showTime = DateUtil.offsetDay(showTime, offsetDay);
//查预测功率 //查预测功率
Map<DateTime, BigDecimal> predictedMap; Map<Date, BigDecimal> predictedMap;
switch (cycle) { switch (cycle) {
case 1: case 1:
//查短期预测 //查短期预测
...@@ -158,6 +128,19 @@ public class ServiceUtil { ...@@ -158,6 +128,19 @@ public class ServiceUtil {
default: default:
predictedMap = Collections.emptyMap(); predictedMap = Collections.emptyMap();
} }
return predictedMap;
}
/**
* 查15分钟电站实际功率
*
* @param context 上下文
* @param stationId 工作站id
* @param beginTime 开始时间
* @param showTime 演出时间
* @return {@link Map }<{@link Date }, {@link BigDecimal }>
*/
public static Map<Date, BigDecimal> getActivePowerMap15(XContext context, String stationId, Date beginTime, Date showTime) {
//查实际功率 //查实际功率
ThirdActivePowerViewMapper powerMapper = context.getBean(ThirdActivePowerViewMapper.class); ThirdActivePowerViewMapper powerMapper = context.getBean(ThirdActivePowerViewMapper.class);
List<ThirdActivePowerView> powerList = powerMapper.selectAvgPower15(ThirdActivePowerView.builder() List<ThirdActivePowerView> powerList = powerMapper.selectAvgPower15(ThirdActivePowerView.builder()
...@@ -172,8 +155,24 @@ public class ServiceUtil { ...@@ -172,8 +155,24 @@ public class ServiceUtil {
} else { } else {
powerMap = Collections.emptyMap(); powerMap = Collections.emptyMap();
} }
return powerMap;
}
/**
* 获得预测功率输出
*
* @param beginTime 开始时间
* @param endTime 结束时间
* @param betweenDay 天之间
* @param now 现在
* @param predictedMap 预测地图
* @param powerMap 功率图
* @return {@link List }<{@link GetPredictedPowerOutput }>
*/
public static List<GetPredictedPowerOutput> getPowerOutput(DateTime beginTime, DateTime endTime, int betweenDay, DateTime now,
Map<Date, BigDecimal> predictedMap, Map<Date, BigDecimal> powerMap) {
//取时间范围 //取时间范围
List<DateTime> rangeToList = DateUtil.rangeToList(day, endTime, DateField.MINUTE, 15); List<DateTime> rangeToList = DateUtil.rangeToList(beginTime, endTime, DateField.MINUTE, 15);
GetPredictedPowerOutput output; GetPredictedPowerOutput output;
List<GetPredictedPowerOutput> outputs = new ArrayList<>(rangeToList.size()); List<GetPredictedPowerOutput> outputs = new ArrayList<>(rangeToList.size());
Date dataDate; Date dataDate;
...@@ -189,7 +188,7 @@ public class ServiceUtil { ...@@ -189,7 +188,7 @@ public class ServiceUtil {
//匹配预测发电量 //匹配预测发电量
output.setPredictPower(predictedMap.getOrDefault(dateTime, BigDecimal.ZERO)); output.setPredictPower(predictedMap.getOrDefault(dateTime, BigDecimal.ZERO));
//匹配实际发电量 //匹配实际发电量
if (DateUtil.compare(dataDate, date) > 0) { if (DateUtil.compare(dataDate, now) > 0) {
output.setPower(BigDecimal.ZERO); output.setPower(BigDecimal.ZERO);
} else { } else {
output.setPower(powerMap.getOrDefault(dateTime, BigDecimal.ZERO)); output.setPower(powerMap.getOrDefault(dateTime, BigDecimal.ZERO));
...@@ -199,6 +198,54 @@ public class ServiceUtil { ...@@ -199,6 +198,54 @@ public class ServiceUtil {
return outputs; return outputs;
} }
/**
* 获得预测功率输出
*
* @param context 上下文
* @param inputTimeStr 输入时间str
* @param stationId 工作站id
* @param offsetDay 偏移日
* @param cycle 周期
* @return {@link List }<{@link GetPredictedPowerOutput }>
*/
public static List<GetPredictedPowerOutput> getPredictedPowerOutput(XContext context, String inputTimeStr, String stationId, int offsetDay, int cycle) {
//判断是否需要启用演示配置
DateTime date = DateUtil.date();
DateTime inputTime;
if (CharSequenceUtil.isBlank(inputTimeStr)) {
inputTime = DateUtil.beginOfDay(date);
} else {
inputTime = DateUtil.parse(inputTimeStr, BusinessConstant.DATE_FORMAT_DAY);
}
//时间出力截至时间
Date showTime = date;
DateTime day = inputTime;
int betweenDay = 0;
//输入时间等于当日时间时,进行演示开关校验
if (0 == DateUtil.compare(DateUtil.beginOfDay(date), inputTime)) {
ConfigShowMapper configMapper = context.getBean(ConfigShowMapper.class);
ConfigShowEnt configShowEnt = configMapper.selectOne(new LambdaQueryWrapper<ConfigShowEnt>()
.last("LIMIT 1"));
if (ObjectUtil.isAllNotEmpty(configShowEnt, configShowEnt.getIsEnable(), configShowEnt.getChoiceDate())) {
day = configShowEnt.getIsEnable().equals(0) ? DateUtil.date(configShowEnt.getChoiceDate()) : inputTime;
showTime = DateUtil.parse(day.toString(BusinessConstant.DATE_FORMAT_DAY) + " " + date.toString(BusinessConstant.TIME_FORMAT));
//计算偏移
betweenDay = (int) DateUtil.betweenDay(inputTime, day, false);
if (DateUtil.compare(day, inputTime) > 0) {
betweenDay = -betweenDay;
}
}
}
DateTime beginTime = DateUtil.offsetMinute(day, -1);
DateTime endTime = DateUtil.offsetDay(day, offsetDay);
showTime = DateUtil.offsetDay(showTime, offsetDay);
//查预测功率
Map<Date, BigDecimal> predictedMap = getPredictedPowerMap15(context, cycle, stationId, beginTime, endTime);
//查实际功率
Map<Date, BigDecimal> powerMap = getActivePowerMap15(context, stationId, beginTime, showTime);
return getPowerOutput(day, endTime, betweenDay, date, predictedMap, powerMap);
}
/*----------------------------------- 私有方法 -----------------------------------*/ /*----------------------------------- 私有方法 -----------------------------------*/
/** /**
......
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