Commit 1384c362 authored by ZWT's avatar ZWT

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

[
1.统计分析-井组监控页功能开发,开发井组生产详情接口,完成接口冒烟测试并编写线上接口文档生成接口用例;
2.统计分析-井组监控页功能开发,开发井口实时信息接口,完成接口冒烟测试并编写线上接口文档生成接口用例;
3.统计分析-井组监控页功能开发,开发光伏电站发电详情接口,完成接口冒烟测试并编写线上接口文档生成接口用例;
4.统计分析-能耗分析页功能开发,开发今日/昨日/同期电量统计接口,完成接口冒烟测试并编写线上接口文档生成接口用例;
]
parent 71924d70
......@@ -2,6 +2,7 @@ package pps.cloud.space.service;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendInput;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendOutput;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetValleyElectricRateOutput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyAverageInput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendInput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendOutput;
......@@ -52,6 +53,16 @@ public interface IDailyElectricityTrendCloudService {
@XText("日用电趋势计算Cloud模块--累积用电")
XSingleResult<GetLineDailyElectricityTrendOutput> querySumDailyElectricity(XContext context, GetLineDailyElectricityTrendInput input);
/**
* 查询谷电占比
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetValleyElectricRateOutput }>
*/
@XText("日用电趋势计算Cloud模块--谷电占比")
XListResult<GetValleyElectricRateOutput> queryValleyElectricRate(XContext context, GetLineDailyElectricityTrendInput input);
/**
* 井口分析分页
*
......
package pps.cloud.space.service.data.line_daily_electricity_trend;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
/**
* 谷电占比
*
* @author ZWT
* @date 2024/07/26
*/
@Data
public class GetValleyElectricRateOutput {
/**
* 日期标识(1_今日,2_昨日,3_同期)
*/
@XText("日期标识(1_今日,2_昨日,3_同期)")
private Integer dayFlag;
/**
* 谷电占比(%)
*/
@XText("谷电占比(%)")
private BigDecimal valleyElectricRate;
}
......@@ -89,6 +89,12 @@ public class LineDailyElectricityTrendView implements Serializable {
/*------------------------------ other ------------------------------*/
/**
* 日期标识(1_今日,2_昨日,3_同期)
*/
@TableField(exist = false)
private Integer dayFlag;
/**
* 开始时间
*/
......
......@@ -45,4 +45,12 @@ public interface LineDailyElectricityTrendViewMapper {
* @return {@link List }<{@link LineDailyElectricityTrendView }>
*/
List<LineDailyElectricityTrendView> selectDailyElectricityTrend(LineDailyElectricityTrendView record);
/**
* 查询谷电占比
*
* @param record 记录
* @return {@link List }<{@link LineDailyElectricityTrendView }>
*/
List<LineDailyElectricityTrendView> selectValleyElectricRate(LineDailyElectricityTrendView record);
}
......@@ -27,6 +27,7 @@ import pps.cloud.prediction.service.data.wellhead_daily_production_situation.Get
import pps.cloud.space.service.IDailyElectricityTrendCloudService;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendInput;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendOutput;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetValleyElectricRateOutput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyAverageInput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendInput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendOutput;
......@@ -285,6 +286,27 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
return XSingleResult.success(XCopyUtils.copyNewObject(ent, GetLineDailyElectricityTrendOutput.class));
}
/**
* 查询谷电占比
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetValleyElectricRateOutput }>
*/
@Override
public XListResult<GetValleyElectricRateOutput> queryValleyElectricRate(XContext context, GetLineDailyElectricityTrendInput input) {
Date today = input.getStartTime();
LineDailyElectricityTrendViewMapper mapper = context.getBean(LineDailyElectricityTrendViewMapper.class);
List<LineDailyElectricityTrendView> list = mapper.selectValleyElectricRate(LineDailyElectricityTrendView.builder()
.createDate(today)
.startTime(DateUtil.offsetDay(today, -1))
.endTime(DateUtil.offset(today, DateField.YEAR, -1))
.stationNameList(input.getStationNameList())
.systemSource(input.getSystemSource())
.build());
return XListResult.success(XCopyUtils.copyNewList(list, GetValleyElectricRateOutput.class));
}
/**
* 井口分析分页
*
......
......@@ -103,4 +103,59 @@
ORDER BY
create_date
</select>
<resultMap id="ExtResultMap" type="pps.core.space.entity.LineDailyElectricityTrendView" extends="BaseResultMap">
<result column="day_flag" property="dayFlag" jdbcType="INTEGER"/>
</resultMap>
<select id="selectValleyElectricRate" parameterType="pps.core.space.entity.LineDailyElectricityTrendView"
resultMap="ExtResultMap">
SELECT
z.day_flag,
IFNULL( ROUND( z.valley_electric_open_hour / z.sum_run_duration * 100, 2 ), 0 ) AS valley_electric_rate
FROM
(
SELECT
IFNULL( SUM( valley_electric_open_hour ), 0 ) AS valley_electric_open_hour,
IFNULL( SUM( sum_run_duration ), 0 ) AS sum_run_duration,
1 AS day_flag
FROM
line_daily_electricity_trend
WHERE
DATE ( create_date ) = #{createDate}
AND system_source = #{systemSource}
AND station_name IN
<foreach collection="stationNameList" open="(" close=")" separator="," item="item">
#{item}
</foreach>
UNION ALL
SELECT
IFNULL( SUM( valley_electric_open_hour ), 0 ) AS valley_electric_open_hour,
IFNULL( SUM( sum_run_duration ), 0 ) AS sum_run_duration,
2 AS day_flag
FROM
line_daily_electricity_trend
WHERE
DATE ( create_date ) = #{startTime}
AND system_source = #{systemSource}
AND station_name IN
<foreach collection="stationNameList" open="(" close=")" separator="," item="item">
#{item}
</foreach>
UNION ALL
SELECT
IFNULL( SUM( valley_electric_open_hour ), 0 ) AS valley_electric_open_hour,
IFNULL( SUM( sum_run_duration ), 0 ) AS sum_run_duration,
3 AS day_flag
FROM
line_daily_electricity_trend
WHERE
DATE ( create_date ) = #{endTime}
AND system_source = #{systemSource}
AND station_name IN
<foreach collection="stationNameList" open="(" close=")" separator="," item="item">
#{item}
</foreach>
) z
</select>
</mapper>
\ No newline at end of file
......@@ -24,6 +24,7 @@ import pps.cloud.space.service.ISpaceInstitutionDetailCloudService;
import pps.cloud.space.service.ISpaceOptimizeShortCloudService;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendInput;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendOutput;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetValleyElectricRateOutput;
import pps.cloud.space.service.data.space_institution_wellhead.GetSpaceInstitutionWellheadInput;
import pps.cloud.space.service.data.space_institution_wellhead.GetSpaceInstitutionWellheadOutput;
import pps.cloud.space.service.data.space_optimize_short_wellhead.*;
......@@ -92,18 +93,36 @@ public class EnergyConsumptionAnalysisService {
List<DynamicQueryBasePowerLinePlantViewOutput> plantList = this.getPowerLinePlantViewList(context, plantInput);
//电站名称列表有值再查
if (CollUtil.isNotEmpty(plantList)) {
DateTime today = DateUtil.date();
DateTime today = DateUtil.beginOfDay(DateUtil.date());
String oilFieldCode = ServiceUtil.getOilFieldCode(context);
List<String> collect = plantList.stream()
.map(DynamicQueryBasePowerLinePlantViewOutput::getStationName)
.collect(Collectors.toList());
ThirdDailyAccumulationUpdateViewMapper mapper = context.getBean(ThirdDailyAccumulationUpdateViewMapper.class);
List<ThirdDailyAccumulationUpdateView> viewList = mapper.selectPowerStatisticsByDate(ThirdDailyAccumulationUpdateView.builder()
.today(DateUtil.beginOfDay(today))
.today(today)
.yesterday(DateUtil.beginOfDay(DateUtil.yesterday()))
.lastYear(DateUtil.beginOfDay(DateUtil.offset(today, DateField.YEAR, -1)))
.stationNameList(plantList.stream()
.map(DynamicQueryBasePowerLinePlantViewOutput::getStationName)
.collect(Collectors.toList()))
.systemSource(ServiceUtil.getOilFieldCode(context))
.lastYear(DateUtil.offset(today, DateField.YEAR, -1))
.stationNameList(collect)
.systemSource(oilFieldCode)
.build());
outputs = XCopyUtils.copyNewList(viewList, PowerStatisticsOutput.class);
//谷电占比
if (BusinessConstant.ENV_SY.equals(oilFieldCode)) {
IDailyElectricityTrendCloudService service = context.getBean(IDailyElectricityTrendCloudService.class);
XListResult<GetValleyElectricRateOutput> result = service.queryValleyElectricRate(context, GetLineDailyElectricityTrendInput.builder()
.systemSource(oilFieldCode)
.stationNameList(collect)
.startTime(today)
.build());
result.throwIfFail();
List<GetValleyElectricRateOutput> valleyElectricRateList = result.getResult();
Map<Integer, BigDecimal> decimalMap = valleyElectricRateList.stream()
.collect(Collectors.toMap(GetValleyElectricRateOutput::getDayFlag, GetValleyElectricRateOutput::getValleyElectricRate));
for (PowerStatisticsOutput output : outputs) {
output.setValleyElectricRate(decimalMap.getOrDefault(output.getDayFlag(), BigDecimal.ZERO));
}
}
} else {
outputs = Collections.emptyList();
}
......
......@@ -43,4 +43,10 @@ public class PowerStatisticsOutput {
*/
@XText("绿电占比(%)")
private BigDecimal greenElectricityRate;
/**
* 谷电占比(%)
*/
@XText("谷电占比(%)")
private BigDecimal valleyElectricRate;
}
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