Commit 9663a531 authored by ZWT's avatar ZWT

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

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 364c0d54
package pps.core.space.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import pps.core.space.entity.WellDailyElectricityTrendView;
......@@ -29,4 +30,12 @@ public interface WellDailyElectricityTrendViewMapper {
* @return {@link List }<{@link WellDailyElectricityTrendView }>
*/
List<WellDailyElectricityTrendView> selectList(WellDailyElectricityTrendView record);
/**
* 批量插入
*
* @param list 列表
* @return int
*/
int batchInsert(@Param(value = "list") List<WellDailyElectricityTrendView> list);
}
......@@ -11,6 +11,8 @@ import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerI
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateInput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateOutput;
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.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils;
......@@ -21,6 +23,7 @@ import pps.core.space.entity.WellDailyElectricityTrendView;
import pps.core.space.mapper.LineDailyElectricityTrendMapper;
import pps.core.space.mapper.LineDailyElectricityTrendViewMapper;
import pps.core.space.mapper.SpaceOptimizeShortDurationViewMapper;
import pps.core.space.mapper.WellDailyElectricityTrendViewMapper;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.data.XListResult;
......@@ -58,8 +61,8 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
Map<String, List<GetThirdActivePowerOutput>> powerMap = this.getAvgPhotovoltaicPower(context, yesterday);
//查昨日间开优化结果
Map<String, List<SpaceOptimizeShortDurationView>> lineMap = this.getOptimizationResult(context, yesterday);
//查昨日
//查昨日井口生产情况
Map<String, List<GetWellheadDailyProductionSituationOutput>> wellProductionMap = this.getWellProductionList(context, yesterday);
//查昨日日累计发电
Map<String, BigDecimal> dailyUpdatePowerMap = this.getDailyUpdatePowerMap(context, yesterday);
//查去年同期用电趋势
......@@ -67,7 +70,7 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
//用电趋势计算结果
List<LineDailyElectricityTrendView> saveList = new ArrayList<>(powerMap.size());
//井口用电趋势计算结果
List<WellDailyElectricityTrendView> wellSaveList = new ArrayList<>(powerMap.size());
List<WellDailyElectricityTrendView> wellSaveList = new ArrayList<>(wellProductionMap.size());
BigDecimal currentServiceRating;
List<GetThirdActivePowerOutput> thirdActivePowerList;
Map<Integer, List<SpaceOptimizeShortDurationView>> startSeqMap;
......@@ -120,9 +123,10 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
}
//开启事务批量插入
return XTransactionHelper.begin(context, () -> {
int size;
if (CollUtil.isNotEmpty(saveList)) {
LineDailyElectricityTrendViewMapper mapper = context.getBean(LineDailyElectricityTrendViewMapper.class);
int size = saveList.size();
size = saveList.size();
if (size > BaseUtils.BATCH_SIZE) {
List<List<LineDailyElectricityTrendView>> subList = BaseUtils.getSubList(saveList);
subList.forEach(mapper::batchInsert);
......@@ -130,6 +134,16 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
mapper.batchInsert(saveList);
}
}
if (CollUtil.isNotEmpty(wellSaveList)) {
WellDailyElectricityTrendViewMapper mapper = context.getBean(WellDailyElectricityTrendViewMapper.class);
size = wellSaveList.size();
if (size > BaseUtils.BATCH_SIZE) {
List<List<WellDailyElectricityTrendView>> subList = BaseUtils.getSubList(wellSaveList);
subList.forEach(mapper::batchInsert);
} else {
mapper.batchInsert(wellSaveList);
}
}
return XServiceResult.OK;
});
}
......@@ -206,6 +220,30 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
return powerMap;
}
/**
* 每日井口生产情况
*
* @param context 上下文
* @param createDate 创建日期
* @return {@link Map }<{@link String }, {@link List }<{@link GetWellheadDailyProductionSituationOutput }>>
*/
private Map<String, List<GetWellheadDailyProductionSituationOutput>> getWellProductionList(XContext context, Date createDate) {
IThirdPowerCloudService service = context.getBean(IThirdPowerCloudService.class);
XListResult<GetWellheadDailyProductionSituationOutput> result = service.queryWellProductionList(context, GetWellheadDailyProductionSituationInput.builder()
.createDate(createDate)
.build());
result.throwIfFail();
Map<String, List<GetWellheadDailyProductionSituationOutput>> collect;
List<GetWellheadDailyProductionSituationOutput> list = result.getResult();
if (CollUtil.isEmpty(list)) {
collect = Collections.emptyMap();
} else {
collect = list.stream()
.collect(Collectors.groupingBy(GetWellheadDailyProductionSituationOutput::getWellNumber));
}
return collect;
}
/**
* 获取优化结果
*
......
......@@ -42,4 +42,23 @@
where
id=#{id}
</select>
<insert id="batchInsert" parameterType="list">
INSERT INTO well_daily_electricity_trend (well_number, daily_open_hour, daily_green_open_hour,
daily_electricity_consumption, daily_liquid_production, daily_carbon_reduction, green_electricity_rate,
create_date, system_source) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.wellNumber},
#{item.dailyOpenHour},
#{item.dailyGreenOpenHour},
#{item.dailyElectricityConsumption},
#{item.dailyLiquidProduction},
#{item.dailyCarbonReduction},
#{item.greenElectricityRate},
#{item.createDate},
#{item.systemSource}
)
</foreach>
</insert>
</mapper>
\ No newline at end of file
......@@ -4,6 +4,8 @@ import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerI
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateInput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateOutput;
import pps.cloud.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationInput;
import pps.cloud.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
......@@ -16,7 +18,7 @@ import xstartup.data.XListResult;
* @date 2024/05/23 14:14
*/
@XService
@XText("第三方有功功率Cloud模块")
@XText("第三方Cloud模块")
public interface IThirdPowerCloudService {
/**
......@@ -26,7 +28,7 @@ public interface IThirdPowerCloudService {
* @param input 输入
* @return {@link XListResult }<{@link GetThirdActivePowerOutput }>
*/
@XText("第三方有功功率Cloud模块--获得15分钟平均功率")
@XText("第三方Cloud模块--获得15分钟平均功率")
XListResult<GetThirdActivePowerOutput> queryAvgPhotovoltaicPower(XContext context, GetThirdActivePowerInput input);
/**
......@@ -36,5 +38,16 @@ public interface IThirdPowerCloudService {
* @param input 输入
* @return {@link XListResult }<{@link GetThirdDailyAccumulationUpdateOutput }>
*/
@XText("第三方Cloud模块--查询每日井场日累计数据")
XListResult<GetThirdDailyAccumulationUpdateOutput> queryDailyUpdatePower(XContext context, GetThirdDailyAccumulationUpdateInput input);
/**
* 查询每日井口生产情况
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetWellheadDailyProductionSituationOutput }>
*/
@XText("第三方Cloud模块--查询每日井口生产情况")
XListResult<GetWellheadDailyProductionSituationOutput> queryWellProductionList(XContext context, GetWellheadDailyProductionSituationInput input);
}
package pps.cloud.prediction.service.data.wellhead_daily_production_situation;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.util.Date;
/**
* 井口生产情况表
*
* @author ZWT
* @date 2024/05/24
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetWellheadDailyProductionSituationInput {
@XText("创建时间")
private Date createDate;
}
\ No newline at end of file
package pps.cloud.prediction.service.data.wellhead_daily_production_situation;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
/**
* 井口生产情况表
*
* @author ZWT
* @date 2024/05/24
*/
@Data
public class GetWellheadDailyProductionSituationOutput {
@XText("井号")
private String wellNumber;
@XText("日期")
private Date dataDate;
@XText("生产时间(h)")
private BigDecimal productionTime;
@XText("日耗电量(kW-h)")
private BigDecimal dailyElectricityConsumption;
@XText("日产液量(t)")
private BigDecimal dailyLiquidProduction;
}
......@@ -5,7 +5,7 @@ import org.springframework.stereotype.Repository;
import pps.core.prediction.entity.WellheadDailyProductionSituationEnt;
/**
* 井口生产情况表(测试用)
* 井口生产情况表
*
* @author ZWT
* @date 2023/09/27
......
......@@ -8,7 +8,7 @@ import java.util.Date;
import java.util.List;
/**
* 井口生产情况表(测试用)
* 井口生产情况表
*
* @author ZWT
* @date 2023/09/27
......
......@@ -6,10 +6,14 @@ import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerI
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateInput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateOutput;
import pps.cloud.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationInput;
import pps.cloud.prediction.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationOutput;
import pps.core.prediction.entity.ThirdActivePowerView;
import pps.core.prediction.entity.ThirdDailyAccumulationUpdateEnt;
import pps.core.prediction.entity.WellheadDailyProductionSituationEnt;
import pps.core.prediction.mapper.ThirdActivePowerViewMapper;
import pps.core.prediction.mapper.ThirdDailyAccumulationUpdateMapper;
import pps.core.prediction.mapper.WellheadDailyProductionSituationMapper;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
......@@ -63,4 +67,25 @@ public class ThirdPowerCloudServiceImpl implements IThirdPowerCloudService {
);
return XListResult.success(XCopyUtils.copyNewList(list, GetThirdDailyAccumulationUpdateOutput.class));
}
/**
* 查询每日井口生产情况
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetWellheadDailyProductionSituationOutput }>
*/
@Override
public XListResult<GetWellheadDailyProductionSituationOutput> queryWellProductionList(XContext context, GetWellheadDailyProductionSituationInput input) {
WellheadDailyProductionSituationMapper mapper = context.getBean(WellheadDailyProductionSituationMapper.class);
List<WellheadDailyProductionSituationEnt> list = mapper.selectList(new QueryWrapper<WellheadDailyProductionSituationEnt>()
.select("well_number",
"IFNULL( production_time, 0 ) AS production_time",
"IFNULL( daily_electricity_consumption, 0 ) AS daily_electricity_consumption",
"IFNULL( daily_liquid_production, 0 ) AS daily_liquid_production")
.lambda()
.eq(WellheadDailyProductionSituationEnt::getDataDate, input.getCreateDate())
);
return XListResult.success(XCopyUtils.copyNewList(list, GetWellheadDailyProductionSituationOutput.class));
}
}
\ No newline at end of file
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