Commit 996e0aec authored by ZWT's avatar ZWT

feat(吉林演示): 松原

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 1999b94d
......@@ -10,6 +10,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantViewOutput;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadInput;
......@@ -32,6 +33,7 @@ import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils;
import pps.core.prediction.constant.ThirdPartyApiConstant;
import pps.core.prediction.entity.*;
import pps.core.prediction.enums.BusinessError;
import pps.core.prediction.mapper.*;
import pps.core.prediction.service.data.energy_consumption_analysis.*;
import pps.core.prediction.service.data.home_page.GetPowerAnalyseOutput;
......@@ -41,12 +43,14 @@ import pps.core.prediction.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.exception.XServiceException;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XListResult;
import xstartup.data.XPageData;
import xstartup.data.XPageResult;
import xstartup.data.XSingleResult;
import xstartup.feature.api.annotation.XApiGet;
import xstartup.feature.api.annotation.XApiPost;
import java.math.BigDecimal;
import java.math.RoundingMode;
......@@ -66,7 +70,85 @@ public class EnergyConsumptionAnalysisService {
/*------------------------------ 能耗分析(吉林) ------------------------------*/
/**
* 电量统计
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult }<{@link GetElectricityStatisticsOutput }>
*/
@XText("能耗分析--电量统计")
@XApiPost
public XSingleResult<GetElectricityStatisticsOutput> electricityStatistics(XContext context, GetStatisticsInput input) {
//日期初始化
Date beginTime, endTime;
if (ObjectUtil.isAllNotEmpty(input.getBeginTime(), input.getEndTime())) {
beginTime = input.getBeginTime();
endTime = input.getEndTime();
} else {
DateTime now = DateUtil.date();
Integer dateType = ObjectUtil.defaultIfNull(input.getDateType(), 1);
switch (dateType) {
case 1:
beginTime = DateUtil.beginOfWeek(now);
endTime = DateUtil.endOfWeek(now);
break;
case 2:
beginTime = DateUtil.beginOfMonth(now);
endTime = DateUtil.endOfMonth(now);
break;
case 3:
beginTime = DateUtil.beginOfYear(now);
endTime = DateUtil.endOfYear(now);
break;
default:
throw new XServiceException(BusinessError.DateTypeError);
}
}
//初始化
GetElectricityStatisticsOutput output = GetElectricityStatisticsOutput.builder()
.currentPeriodGenerate(BigDecimal.ZERO)
.lastPeriodGenerate(BigDecimal.ZERO)
.currentPeriodUse(BigDecimal.ZERO)
.lastPeriodUse(BigDecimal.ZERO)
.build();
//查组织机构下所有线路
List<DynamicQueryBasePowerLineOutput> lineList = ServiceUtil.getBasePowerLineListByOuIdList(context, ServiceUtil.getOrgIdsByPath(context, input.getOuId()));
if (CollUtil.isEmpty(lineList)) {
return XSingleResult.success(output);
}
Set<String> lineNameSet = lineList.stream()
.map(DynamicQueryBasePowerLineOutput::getLineName)
.collect(Collectors.toSet());
//统计电量--本期
StationDailyProductionSituationEnt statistics = this.getStationDailyStatistics(context, beginTime, endTime, lineNameSet);
output.setCurrentPeriodGenerate(statistics.getPhotovoltaicPower());
output.setCurrentPeriodUse(statistics.getDailyElectricityConsumption());
statistics = this.getStationDailyStatistics(context, DateUtil.offset(beginTime, DateField.YEAR, -1), DateUtil.offset(endTime, DateField.YEAR, -1), lineNameSet);
output.setLastPeriodGenerate(statistics.getPhotovoltaicPower());
output.setLastPeriodUse(statistics.getDailyElectricityConsumption());
return XSingleResult.success(output);
}
/**
* 获取电站日统计数据
*
* @param context 上下文
* @param beginTime 开始时间
* @param endTime 结束时间
* @param lineNameSet 行名称集
* @return {@link StationDailyProductionSituationEnt }
*/
private StationDailyProductionSituationEnt getStationDailyStatistics(XContext context, Date beginTime, Date endTime, Set<String> lineNameSet) {
StationDailyProductionSituationMapper mapper = context.getBean(StationDailyProductionSituationMapper.class);
return mapper.selectOne(new QueryWrapper<StationDailyProductionSituationEnt>()
.select("IFNULL( SUM( photovoltaic_power ), 0 ) AS photovoltaic_power",
"IFNULL( SUM( daily_electricity_consumption ), 0 ) AS daily_electricity_consumption")
.lambda()
.between(StationDailyProductionSituationEnt::getDataDate, beginTime, endTime)
.in(StationDailyProductionSituationEnt::getStationName, lineNameSet)
);
}
......@@ -80,7 +162,7 @@ public class EnergyConsumptionAnalysisService {
* @return {@link XListResult }<{@link PowerStatisticsOutput }>
*/
@XText("能耗分析--今日/昨日/同期电量统计")
@XApiGet(anonymous = true)
@XApiGet
public XListResult<PowerStatisticsOutput> powerStatistics(XContext context, GetEnergyConsumptionAnalysisInput input) {
DynamicQueryBasePowerLinePlantInput plantInput = new DynamicQueryBasePowerLinePlantInput();
String stationName = input.getStationName();
......
package pps.core.prediction.service.data.energy_consumption_analysis;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* 电量统计
*
* @author ZWT
* @date 2024/10/20 20:31
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetElectricityStatisticsOutput {
/**
* 本期发电(kwh)
*/
private BigDecimal currentPeriodGenerate;
/**
* 同期发电(kwh)
*/
private BigDecimal lastPeriodGenerate;
/**
* 本期用电(kwh)
*/
private BigDecimal currentPeriodUse;
/**
* 同期用电(kwh)
*/
private BigDecimal lastPeriodUse;
}
package pps.core.prediction.service.data.energy_consumption_analysis;
import lombok.Data;
import java.util.Date;
/**
* 入参
*
* @author ZWT
* @date 2024/10/20 20:36
*/
@Data
public class GetStatisticsInput {
/**
* 组织机构id
*/
private String ouId;
/**
* 日期类型(1_本周;2_本月;3_本年)
*/
private Integer dateType;
/**
* 开始时间
*/
private Date beginTime;
/**
* 结束时间
*/
private Date endTime;
}
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