Commit c4d0b7b5 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.开发中间库表结构及数据导出功能,检查中间库表结构是否有变动,同时获取最新数据,验证数据是否更新;
2.创建场站每日信息统计记录表,新建场站日信息数据采集汇总定时任务,整理汇总场站纬度每日数据,完成功能验证;
3.针对吉林提供的统计数据,对吉林首页部分功能修改;
4.针对中间库每日井口数据统计表结构变动,修改井口日统计定时任务数据处理逻辑,完成功能验证;
5.修改日发电量统计定时任务,排查数据丢失问题,完成功能验证;
6.修改场站每日信息汇总统计定时任务,增加统计每日光伏发电量逻辑,修改表结构及数据结构和业务处理逻辑,完成功能验证;
7.修改吉林首页线路详情接口,区分部署环境,增加吉林个性化数据处理逻辑,完成接口冒烟测试;
8.修改实际发电功率统计定时任务,排查数据丢失问题,完成功能验证;
9.修改实际发电量统计定时任务,排查数据丢失问题,完成功能验证;
10.修改吉林首页井场效果评价数据统计接口,区分部署环境,增加吉林个性化数据处理逻辑,完成接口冒烟测试;
11.能耗分析页面开发吉林个性化功能,完成电量统计接口开发,编辑线上接口文档并生成接口用例,完成接口冒烟测试;
12.能耗分析页面开发吉林个性化功能,完成发电量统计接口开发,编辑线上接口文档并生成接口用例,完成接口冒烟测试;
13.能耗分析页面开发吉林个性化功能,完成用电量统计接口开发,编辑线上接口文档并生成接口用例,完成接口冒烟测试;
14.能耗分析页面开发吉林个性化功能,完成峰谷能耗对比分析接口开发,编辑线上接口文档并生成接口用例,完成接口冒烟测试;
15.能耗分析页面开发吉林个性化功能,完成用能分析接口开发,编辑线上接口文档并生成接口用例,完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 0af704fa
...@@ -70,4 +70,8 @@ public class ThirdActivePowerView implements Serializable { ...@@ -70,4 +70,8 @@ public class ThirdActivePowerView implements Serializable {
@XText("结束时间") @XText("结束时间")
@TableField(exist = false) @TableField(exist = false)
private Date endTime; private Date endTime;
@XText("日期范围(1_小时;2_日;_3_月)")
@TableField(exist = false)
private int dayFlag;
} }
...@@ -62,4 +62,8 @@ public class ThirdWellAvgActivePowerView implements Serializable { ...@@ -62,4 +62,8 @@ public class ThirdWellAvgActivePowerView implements Serializable {
@XText("结束时间") @XText("结束时间")
@TableField(exist = false) @TableField(exist = false)
private Date endTime; private Date endTime;
@XText("日期范围(1_小时;2_日;_3_月)")
@TableField(exist = false)
private int dayFlag;
} }
...@@ -68,6 +68,62 @@ public class EnergyConsumptionAnalysisService { ...@@ -68,6 +68,62 @@ public class EnergyConsumptionAnalysisService {
/*------------------------------ 能耗分析(吉林) ------------------------------*/ /*------------------------------ 能耗分析(吉林) ------------------------------*/
/**
* 用能分析
* 15天以内,按小时展示
* 月:按日展示
* 年:按月展示
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetPowerAnalyseOutput }>
*/
@XText("能耗分析--用能分析")
@XApiPost
public XListResult<GetPowerAnalyseOutput> energyAnalyse(XContext context, GetStatisticsInput input) {
List<String> orgIds = ServiceUtil.getOrgIdsByPath(context, input.getOuId());
String oilFieldCode = ServiceUtil.getOilFieldCode(context);
//日期初始化
input.getBetweenDate();
Date beginTime = input.getBeginTime();
Date endTime = input.getEndTime();
//判断时间范围
int dayFlag;
long day = DateUtil.betweenDay(beginTime, endTime, false);
if (day <= 15) {
//小时
dayFlag = 1;
} else if (day <= 90) {
//天
dayFlag = 2;
} else {
//月
dayFlag = 3;
}
//用电功率
Map<Date, BigDecimal> avgMap = this.queryPowerConsumptionHour(context,
ServiceUtil.getPowerLineWellheadList(context, DynamicQueryBasePowerLineWellheadInput.builder()
.ouIds(orgIds)
.build()),
beginTime,
endTime,
oilFieldCode,
dayFlag
);
//发电功率
Map<Date, BigDecimal> powerMap = this.queryGeneratedPowerHour(context,
ServiceUtil.getPowerLinePlantList(context, DynamicQueryBasePowerLinePlantInput.builder()
.ouIds(orgIds)
.build()),
beginTime,
endTime,
oilFieldCode,
dayFlag
);
//封装数据
return XListResult.success(this.setPowerAnalyseList(avgMap, powerMap, beginTime, endTime, oilFieldCode, dayFlag));
}
/** /**
* 电量统计 * 电量统计
* *
...@@ -423,17 +479,19 @@ public class EnergyConsumptionAnalysisService { ...@@ -423,17 +479,19 @@ public class EnergyConsumptionAnalysisService {
ServiceUtil.getPowerLineWellheadList(context, wellheadInput), ServiceUtil.getPowerLineWellheadList(context, wellheadInput),
input.getStartTime(), input.getStartTime(),
endTime, endTime,
oilFieldCode oilFieldCode,
1
); );
//发电功率 //发电功率
Map<Date, BigDecimal> powerMap = this.queryGeneratedPowerHour(context, Map<Date, BigDecimal> powerMap = this.queryGeneratedPowerHour(context,
ServiceUtil.getPowerLinePlantList(context, plantInput), ServiceUtil.getPowerLinePlantList(context, plantInput),
input.getStartTime(), input.getStartTime(),
endTime, endTime,
oilFieldCode oilFieldCode,
1
); );
//封装数据 //封装数据
return XListResult.success(this.setPowerAnalyseList(avgMap, powerMap, input.getStartTime(), input.getEndTime(), oilFieldCode)); return XListResult.success(this.setPowerAnalyseList(avgMap, powerMap, input.getStartTime(), input.getEndTime(), oilFieldCode, 1));
} }
/** /**
...@@ -835,7 +893,8 @@ public class EnergyConsumptionAnalysisService { ...@@ -835,7 +893,8 @@ public class EnergyConsumptionAnalysisService {
.build()), .build()),
today, today,
tomorrow, tomorrow,
oilFieldCode oilFieldCode,
1
); );
//发电功率 //发电功率
Map<Date, BigDecimal> powerMap = this.queryGeneratedPowerHour(context, Map<Date, BigDecimal> powerMap = this.queryGeneratedPowerHour(context,
...@@ -844,10 +903,11 @@ public class EnergyConsumptionAnalysisService { ...@@ -844,10 +903,11 @@ public class EnergyConsumptionAnalysisService {
.build()), .build()),
today, today,
tomorrow, tomorrow,
oilFieldCode oilFieldCode,
1
); );
//封装数据 //封装数据
return XListResult.success(this.setPowerAnalyseList(avgMap, powerMap, today, tomorrow, oilFieldCode)); return XListResult.success(this.setPowerAnalyseList(avgMap, powerMap, today, tomorrow, oilFieldCode, 1));
} }
/** /**
...@@ -1422,9 +1482,10 @@ public class EnergyConsumptionAnalysisService { ...@@ -1422,9 +1482,10 @@ public class EnergyConsumptionAnalysisService {
* @param startTime 开始时间 * @param startTime 开始时间
* @param endTime 结束时间 * @param endTime 结束时间
* @param oilFieldCode 环境 * @param oilFieldCode 环境
* @param dayFlag 日期范围(1_小时;2_日;_3_月)
* @return {@link Map }<{@link Date }, {@link BigDecimal }> * @return {@link Map }<{@link Date }, {@link BigDecimal }>
*/ */
private Map<Date, BigDecimal> queryPowerConsumptionHour(XContext context, List<DynamicQueryBasePowerLineWellheadViewOutput> wellheadList, Date startTime, Date endTime, String oilFieldCode) { private Map<Date, BigDecimal> queryPowerConsumptionHour(XContext context, List<DynamicQueryBasePowerLineWellheadViewOutput> wellheadList, Date startTime, Date endTime, String oilFieldCode, int dayFlag) {
Map<Date, BigDecimal> avgMap; Map<Date, BigDecimal> avgMap;
if (CollUtil.isNotEmpty(wellheadList)) { if (CollUtil.isNotEmpty(wellheadList)) {
ThirdWellAvgActivePowerViewMapper mapper = context.getBean(ThirdWellAvgActivePowerViewMapper.class); ThirdWellAvgActivePowerViewMapper mapper = context.getBean(ThirdWellAvgActivePowerViewMapper.class);
...@@ -1435,6 +1496,7 @@ public class EnergyConsumptionAnalysisService { ...@@ -1435,6 +1496,7 @@ public class EnergyConsumptionAnalysisService {
.startTime(startTime) .startTime(startTime)
.endTime(endTime) .endTime(endTime)
.systemSource(oilFieldCode) .systemSource(oilFieldCode)
.dayFlag(dayFlag)
.build()) .build())
.stream() .stream()
.collect(Collectors.toMap(ThirdWellAvgActivePowerView::getInputTime, ThirdWellAvgActivePowerView::getAvgActivePower)); .collect(Collectors.toMap(ThirdWellAvgActivePowerView::getInputTime, ThirdWellAvgActivePowerView::getAvgActivePower));
...@@ -1452,9 +1514,10 @@ public class EnergyConsumptionAnalysisService { ...@@ -1452,9 +1514,10 @@ public class EnergyConsumptionAnalysisService {
* @param startTime 开始时间 * @param startTime 开始时间
* @param endTime 结束时间 * @param endTime 结束时间
* @param oilFieldCode 环境 * @param oilFieldCode 环境
* @param dayFlag 日期范围(1_小时;2_日;_3_月)
* @return {@link Map }<{@link Date }, {@link BigDecimal }> * @return {@link Map }<{@link Date }, {@link BigDecimal }>
*/ */
private Map<Date, BigDecimal> queryGeneratedPowerHour(XContext context, List<DynamicQueryBasePowerLinePlantViewOutput> plantList, Date startTime, Date endTime, String oilFieldCode) { private Map<Date, BigDecimal> queryGeneratedPowerHour(XContext context, List<DynamicQueryBasePowerLinePlantViewOutput> plantList, Date startTime, Date endTime, String oilFieldCode, int dayFlag) {
Map<Date, BigDecimal> powerMap; Map<Date, BigDecimal> powerMap;
if (CollUtil.isNotEmpty(plantList)) { if (CollUtil.isNotEmpty(plantList)) {
ThirdActivePowerViewMapper dailyUpdateMapper = context.getBean(ThirdActivePowerViewMapper.class); ThirdActivePowerViewMapper dailyUpdateMapper = context.getBean(ThirdActivePowerViewMapper.class);
...@@ -1465,6 +1528,7 @@ public class EnergyConsumptionAnalysisService { ...@@ -1465,6 +1528,7 @@ public class EnergyConsumptionAnalysisService {
.startTime(startTime) .startTime(startTime)
.endTime(endTime) .endTime(endTime)
.systemSource(oilFieldCode) .systemSource(oilFieldCode)
.dayFlag(dayFlag)
.build()) .build())
.stream() .stream()
.collect(Collectors.toMap(ThirdActivePowerView::getCreateDate, ThirdActivePowerView::getPhotovoltaicPower)); .collect(Collectors.toMap(ThirdActivePowerView::getCreateDate, ThirdActivePowerView::getPhotovoltaicPower));
...@@ -1481,11 +1545,23 @@ public class EnergyConsumptionAnalysisService { ...@@ -1481,11 +1545,23 @@ public class EnergyConsumptionAnalysisService {
* @param powerMap 功率图 * @param powerMap 功率图
* @param startTime 开始时间 * @param startTime 开始时间
* @param endTime 结束时间 * @param endTime 结束时间
* @param dayFlag 日期范围(1_小时;2_日;_3_月)
* @return {@link List }<{@link GetPowerAnalyseOutput }> * @return {@link List }<{@link GetPowerAnalyseOutput }>
*/ */
private List<GetPowerAnalyseOutput> setPowerAnalyseList(Map<Date, BigDecimal> avgMap, Map<Date, BigDecimal> powerMap, Date startTime, Date endTime, String oilFieldCode) { private List<GetPowerAnalyseOutput> setPowerAnalyseList(Map<Date, BigDecimal> avgMap, Map<Date, BigDecimal> powerMap, Date startTime, Date endTime, String oilFieldCode, int dayFlag) {
//封装数据 //封装数据
List<DateTime> rangeToList = DateUtil.rangeToList(startTime, endTime, DateField.HOUR_OF_DAY); DateField dateField;
switch (dayFlag) {
case 2:
dateField = DateField.DAY_OF_YEAR;
break;
case 3:
dateField = DateField.MONTH;
break;
default:
dateField = DateField.HOUR_OF_DAY;
}
List<DateTime> rangeToList = DateUtil.rangeToList(startTime, endTime, dateField);
List<GetPowerAnalyseOutput> outputs = new ArrayList<>(rangeToList.size()); List<GetPowerAnalyseOutput> outputs = new ArrayList<>(rangeToList.size());
BigDecimal powerConsumption; BigDecimal powerConsumption;
BigDecimal powerGeneration; BigDecimal powerGeneration;
......
...@@ -76,7 +76,17 @@ ...@@ -76,7 +76,17 @@
ROUND( SUM( photovoltaic_power ), 2 ) AS photovoltaic_power, ROUND( SUM( photovoltaic_power ), 2 ) AS photovoltaic_power,
create_date create_date
FROM (SELECT IFNULL(AVG(photovoltaic_power), 0) AS photovoltaic_power, FROM (SELECT IFNULL(AVG(photovoltaic_power), 0) AS photovoltaic_power,
DATE_FORMAT(create_date, '%Y-%m-%d %H:00:00') AS create_date, <choose>
<when test="dayFlag == 3">
DATE_FORMAT( create_date, '%Y-%m-01' ) AS create_date,
</when>
<when test="dayFlag == 2">
DATE_FORMAT( create_date, '%Y-%m-%d' ) AS create_date,
</when>
<otherwise>
DATE_FORMAT( create_date, '%Y-%m-%d %H:00:00' ) AS create_date,
</otherwise>
</choose>
station_name station_name
FROM third_active_power FROM third_active_power
WHERE ( WHERE (
...@@ -93,7 +103,7 @@ ...@@ -93,7 +103,7 @@
</if> </if>
) )
GROUP BY station_name, GROUP BY station_name,
DATE_FORMAT(create_date, '%Y-%m-%d %H:00:00')) z create_date) z
GROUP BY create_date GROUP BY create_date
ORDER BY ORDER BY
create_date create_date
......
...@@ -96,19 +96,11 @@ ...@@ -96,19 +96,11 @@
SELECT SELECT
avg_active_power, avg_active_power,
<choose> <choose>
<when test="systemSource == 'SY'"> <when test="dayFlag == 3">
CASE DATE_FORMAT( input_time, '%Y-%m-01' ) AS input_time,
WHEN HOUR ( input_time ) / 4 &lt; 1 THEN </when>
DATE_FORMAT( input_time, '%Y-%m-%d 04:00:00' ) <when test="dayFlag == 2">
WHEN HOUR ( input_time ) / 4 &lt; 2 THEN DATE_FORMAT( input_time, '%Y-%m-%d' ) AS input_time,
DATE_FORMAT( input_time, '%Y-%m-%d 08:00:00' )
WHEN HOUR ( input_time ) / 4 &lt; 3 THEN
DATE_FORMAT( input_time, '%Y-%m-%d 12:00:00' )
WHEN HOUR ( input_time ) / 4 &lt; 4 THEN
DATE_FORMAT( input_time, '%Y-%m-%d 16:00:00' )
WHEN HOUR ( input_time ) / 4 &lt; 5 THEN
DATE_FORMAT( input_time, '%Y-%m-%d 20:00:00' ) ELSE DATE_FORMAT( input_time, '%Y-%m-%d 00:00:00' )
END input_time,
</when> </when>
<otherwise> <otherwise>
DATE_FORMAT( input_time, '%Y-%m-%d %H:00:00' ) AS input_time, DATE_FORMAT( input_time, '%Y-%m-%d %H:00:00' ) AS input_time,
......
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