Commit 92ca5448 authored by ZWT's avatar ZWT

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

1.修改第三方日累计数据推送表表结构,增加日累计储能放电量字段,同时修改代码对应实体及mapper文件,修改相关接口增加储能日累计放电量接收逻辑;
2.修改首页井场收益分析模块接口,修改获取储能累计放电量逻辑;
3.设计并创建井口日用电趋势表,生成对应实体类及mapper文件;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 3970b4d8
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 xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XListResult;
import xstartup.data.XServiceResult;
/**
......@@ -23,4 +26,14 @@ public interface IDailyElectricityTrendCloudService {
*/
@XText("日用电趋势计算Cloud模块--定时任务")
XServiceResult dailyElectricityTrendJob(XContext context);
/**
* 用电趋势统计
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetLineDailyElectricityTrendOutput }>
*/
@XText("日用电趋势计算Cloud模块--用电趋势统计")
XListResult<GetLineDailyElectricityTrendOutput> queryDailyElectricityTrend(XContext context, GetLineDailyElectricityTrendInput input);
}
package pps.cloud.space.service.data.line_daily_electricity_trend;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* 用电趋势统计
*
* @author ZWT
* @date 2024/05/24 16:23
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetLineDailyElectricityTrendInput {
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 电站名称列表
*/
private List<String> stationNameList;
}
package pps.cloud.space.service.data.line_daily_electricity_trend;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
/**
* 用电趋势统计
*
* @author ZWT
* @date 2024/05/24 16:23
*/
@Data
public class GetLineDailyElectricityTrendOutput {
@XText("井组名称(线路/光伏电站)")
@TableField
private String stationName;
@XText("光伏日用电量(KWh)")
@TableField
private BigDecimal photovoltaicPower;
@XText("市电日用电量(KWh)")
@TableField
private BigDecimal municipalPower;
@XText("同期光伏日用电量(KWh)")
@TableField
private BigDecimal lastPhotovoltaicPower;
@XText("同期市电日用电量(KWh)")
@TableField
private BigDecimal lastMunicipalPower;
@XText("创建时间")
@TableField
private Date createDate;
}
......@@ -10,6 +10,7 @@ import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 线路日用电趋势
......@@ -73,4 +74,24 @@ public class LineDailyElectricityTrendView implements Serializable {
@XText("来源系统")
@TableField
private String systemSource;
/*------------------------------ other ------------------------------*/
/**
* 开始时间
*/
@TableField(exist = false)
private Date startTime;
/**
* 结束时间
*/
@TableField(exist = false)
private Date endTime;
/**
* 电站名称列表
*/
@TableField(exist = false)
private List<String> stationNameList;
}
......@@ -37,4 +37,12 @@ public interface LineDailyElectricityTrendViewMapper {
* @return int
*/
int batchInsert(@Param(value = "list") List<LineDailyElectricityTrendView> list);
/**
* 用电趋势统计
*
* @param record 记录
* @return {@link List }<{@link LineDailyElectricityTrendView }>
*/
List<LineDailyElectricityTrendView> selectDailyElectricityTrend(LineDailyElectricityTrendView record);
}
......@@ -15,6 +15,8 @@ import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThir
import pps.cloud.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationInput;
import pps.cloud.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationOutput;
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.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.LineDailyElectricityTrendEnt;
......@@ -27,6 +29,7 @@ import pps.core.space.mapper.SpaceOptimizeShortDurationViewMapper;
import pps.core.space.mapper.WellDailyElectricityTrendViewMapper;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XListResult;
import xstartup.data.XServiceResult;
import xstartup.helper.XTransactionHelper;
......@@ -171,6 +174,26 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
});
}
/**
* 用电趋势统计
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetLineDailyElectricityTrendOutput }>
*/
@Override
public XListResult<GetLineDailyElectricityTrendOutput> queryDailyElectricityTrend(XContext context, GetLineDailyElectricityTrendInput input) {
LineDailyElectricityTrendViewMapper mapper = context.getBean(LineDailyElectricityTrendViewMapper.class);
List<LineDailyElectricityTrendView> list = mapper.selectDailyElectricityTrend(
LineDailyElectricityTrendView.builder()
.startTime(input.getStartTime())
.endTime(input.getEndTime())
.stationNameList(input.getStationNameList())
.build()
);
return XListResult.success(XCopyUtils.copyNewList(list, GetLineDailyElectricityTrendOutput.class));
}
/*------------------------------------- private -------------------------------------*/
/**
......
......@@ -70,4 +70,27 @@
)
</foreach>
</insert>
<select id="selectDailyElectricityTrend" parameterType="pps.core.space.entity.LineDailyElectricityTrendView"
resultMap="BaseResultMap">
SELECT
IFNULL( SUM( photovoltaic_power ), 0 ) AS photovoltaic_power,
IFNULL( SUM( municipal_power ), 0 ) AS municipal_power,
IFNULL( SUM( last_photovoltaic_power ), 0 ) AS last_photovoltaic_power,
IFNULL( SUM( last_municipal_power ), 0 ) AS last_municipal_power,
DATE( create_date ) AS create_date
FROM
line_daily_electricity_trend
WHERE
station_name IN
<foreach collection="stationNameList" open="(" close=")" separator="," item="item">
#{item}
</foreach>
AND create_date BETWEEN #{startTime}
AND #{endTime}
GROUP BY
DATE( create_date )
ORDER BY
create_date
</select>
</mapper>
\ No newline at end of file
......@@ -20,7 +20,10 @@ import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowe
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadViewOutput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput;
import pps.cloud.space.service.IDailyElectricityTrendCloudService;
import pps.cloud.space.service.ISpaceInstitutionDetailCloudService;
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.space_institution_wellhead.GetSpaceInstitutionWellheadInput;
import pps.cloud.space.service.data.space_institution_wellhead.GetSpaceInstitutionWellheadOutput;
import pps.cloud.system.service.SysOrganizationCloudService;
......@@ -47,6 +50,7 @@ import xstartup.feature.api.annotation.XApiGet;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
......@@ -266,17 +270,46 @@ public class EnergyConsumptionAnalysisService {
* @return {@link XListResult }<{@link GetElectricityAnalysisOutput }>
*/
@XText("能耗分析--用电分析")
@XApiGet(anonymous = true)
@XApiGet
public XListResult<GetElectricityAnalysisOutput> electricityAnalysis(XContext context, QueryEnergyConsumptionAnalysisInput input) {
DynamicQueryBasePowerLinePlantInput plantInput = new DynamicQueryBasePowerLinePlantInput();
String stationName = input.getStationName();
if (CharSequenceUtil.isNotBlank(stationName)) {
plantInput.setLineName(stationName);
} else {
plantInput.setOuIds(this.getOrgIdsByPath(context, input.getOuId()));
}
input.getBetweenDate();
Map<Date, GetLineDailyElectricityTrendOutput> collect;
List<DynamicQueryBasePowerLinePlantViewOutput> plantList = this.getPowerLinePlantViewList(context, plantInput);
if (CollUtil.isNotEmpty(plantList)) {
DateTime endTime = DateUtil.offsetDay(input.getEndTime(), 1);
collect = this.getDailyElectricityTrendMap(context, GetLineDailyElectricityTrendInput.builder()
.startTime(input.getStartTime())
.endTime(endTime)
.stationNameList(plantList.stream()
.map(DynamicQueryBasePowerLinePlantViewOutput::getStationName)
.collect(Collectors.toList()))
.build());
} else {
collect = Collections.emptyMap();
}
List<DateTime> rangeToList = DateUtil.rangeToList(input.getStartTime(), input.getEndTime(), DateField.DAY_OF_YEAR);
List<GetElectricityAnalysisOutput> outputs = new ArrayList<>(rangeToList.size());
//封装数据
GetLineDailyElectricityTrendOutput getLineDailyElectricityTrendOutput;
BigDecimal photovoltaicConsumption = BigDecimal.ZERO;
BigDecimal municipalConsumption = BigDecimal.ZERO;
BigDecimal lastPhotovoltaicConsumption = BigDecimal.ZERO;
BigDecimal lastMunicipalConsumption = BigDecimal.ZERO;
for (DateTime dateTime : rangeToList) {
if (collect.containsKey(dateTime)) {
getLineDailyElectricityTrendOutput = collect.get(dateTime);
photovoltaicConsumption = getLineDailyElectricityTrendOutput.getPhotovoltaicPower();
municipalConsumption = getLineDailyElectricityTrendOutput.getMunicipalPower();
lastPhotovoltaicConsumption = getLineDailyElectricityTrendOutput.getLastPhotovoltaicPower();
lastMunicipalConsumption = getLineDailyElectricityTrendOutput.getLastMunicipalPower();
}
outputs.add(GetElectricityAnalysisOutput.builder()
.dateFormat(dateTime.toString())
.photovoltaicConsumption(photovoltaicConsumption)
......@@ -1039,4 +1072,26 @@ public class EnergyConsumptionAnalysisService {
}
return outputs;
}
/**
* 用电趋势统计
*
* @param context 上下文
* @param input 输入
* @return {@link Map }<{@link Date }, {@link GetLineDailyElectricityTrendOutput }>
*/
private Map<Date, GetLineDailyElectricityTrendOutput> getDailyElectricityTrendMap(XContext context, GetLineDailyElectricityTrendInput input) {
IDailyElectricityTrendCloudService service = context.getBean(IDailyElectricityTrendCloudService.class);
XListResult<GetLineDailyElectricityTrendOutput> result = service.queryDailyElectricityTrend(context, input);
result.throwIfFail();
List<GetLineDailyElectricityTrendOutput> list = result.getResult();
Map<Date, GetLineDailyElectricityTrendOutput> collect;
if (CollUtil.isNotEmpty(list)) {
collect = list.stream()
.collect(Collectors.toMap(GetLineDailyElectricityTrendOutput::getCreateDate, Function.identity()));
} else {
collect = Collections.emptyMap();
}
return collect;
}
}
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