Commit 43f31bc3 authored by ZWT's avatar ZWT

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

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 92ca5448
...@@ -126,4 +126,10 @@ public class ThirdDailyAccumulationUpdateView implements Serializable { ...@@ -126,4 +126,10 @@ public class ThirdDailyAccumulationUpdateView implements Serializable {
*/ */
@TableField(exist = false) @TableField(exist = false)
private Date endTime; private Date endTime;
/**
* 月
*/
@TableField(exist = false)
private Integer month;
} }
...@@ -616,6 +616,56 @@ public class EnergyConsumptionAnalysisService { ...@@ -616,6 +616,56 @@ public class EnergyConsumptionAnalysisService {
return XListResult.success(outputs); return XListResult.success(outputs);
} }
/*------------------------------ 间开效果评价 ------------------------------*/
/**
* 本月累计节电经济效益
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetEconomicBenefitsOutput }>
*/
@XText("间开效果评价--本月累计节电经济效益")
@XApiGet
public XListResult<GetEconomicBenefitsOutput> economicBenefits(XContext context, GetEnergyConsumptionAnalysisInput input) {
DynamicQueryBasePowerLinePlantInput plantInput = new DynamicQueryBasePowerLinePlantInput();
String stationName = input.getStationName();
if (CharSequenceUtil.isNotBlank(stationName)) {
plantInput.setLineName(stationName);
} else {
plantInput.setOuIds(this.getOrgIdsByPath(context, input.getOuId()));
}
List<DynamicQueryBasePowerLinePlantViewOutput> plantList = this.getPowerLinePlantViewList(context, plantInput);
DateTime end = DateUtil.beginOfDay(DateUtil.yesterday());
DateTime start = DateUtil.beginOfMonth(end);
Map<Date, BigDecimal> map;
if (CollUtil.isNotEmpty(plantList)) {
//实际发电量
map = this.getPowerMap(context, start, DateUtil.offsetDay(end, 1),
plantList.stream()
.map(DynamicQueryBasePowerLinePlantViewOutput::getStationName)
.collect(Collectors.toList()), 1);
} else {
map = Collections.emptyMap();
}
List<DateTime> rangeToList = DateUtil.rangeToList(start, end, DateField.DAY_OF_YEAR);
//封装数据
List<GetEconomicBenefitsOutput> outputs = new ArrayList<>(rangeToList.size());
for (DateTime dateTime : rangeToList) {
BigDecimal economicBenefits;
if (map.containsKey(dateTime)) {
economicBenefits = this.calculateEconomicBenefits(map.get(dateTime));
} else {
economicBenefits = BigDecimal.ZERO;
}
outputs.add(GetEconomicBenefitsOutput.builder()
.dateFormat(dateTime)
.economicBenefits(economicBenefits)
.build());
}
return XListResult.success(outputs);
}
/*------------------------------ 能耗分析(废弃) ------------------------------*/ /*------------------------------ 能耗分析(废弃) ------------------------------*/
/** /**
...@@ -1094,4 +1144,24 @@ public class EnergyConsumptionAnalysisService { ...@@ -1094,4 +1144,24 @@ public class EnergyConsumptionAnalysisService {
} }
return collect; return collect;
} }
/**
* 计算经济效益
*
* @param photovoltaicPower 光伏发电
* @return {@link BigDecimal }
*/
private BigDecimal calculateEconomicBenefits(BigDecimal photovoltaicPower) {
BigDecimal economicBenefits;
if (photovoltaicPower.compareTo(BigDecimal.ZERO) > 0) {
economicBenefits = photovoltaicPower
.multiply(BigDecimal.valueOf(0.6))
.subtract(photovoltaicPower
.multiply(BigDecimal.valueOf(0.28)))
.setScale(2, RoundingMode.HALF_UP);
} else {
economicBenefits = BigDecimal.ZERO;
}
return economicBenefits;
}
} }
package pps.core.prediction.service.data.energy_consumption_analysis;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
/**
* 经济效益
*
* @author ZWT
* @date 2024/05/27 10:05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetEconomicBenefitsOutput {
@XText("日期")
private Date dateFormat;
@XText("经济效益(元)")
private BigDecimal economicBenefits;
}
...@@ -137,8 +137,13 @@ ...@@ -137,8 +137,13 @@
<foreach collection="stationNameList" open="(" close=")" separator="," item="item"> <foreach collection="stationNameList" open="(" close=")" separator="," item="item">
#{item} #{item}
</foreach> </foreach>
AND create_date BETWEEN #{startTime} <if test="startTime != null and endTime != null">
AND #{endTime} AND create_date BETWEEN #{startTime}
AND #{endTime}
</if>
<if test="month != null and month != ''">
AND MONTH(create_date) = #{month}
</if>
GROUP BY GROUP BY
DATE( create_date ) DATE( create_date )
</select> </select>
......
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