Commit 167cf779 authored by ZWT's avatar ZWT

feat(能源管理系统): 测试问题修复

1.修改间开制度管理-长期/中长期间开优化定时任务,解决未设置区间的井口不展示时间区间问题;
2.开发间开制度管理-校准周期模块,间开制度跟踪接口,完成接口冒烟测试,并生成接口文档;
3.修改间开制度管理-短期间开模块,短期间开制度详情接口,解决井口间开时间段展示异常问题;
4.开发间开制度管理-校准周期模块,井口生产情况分页列表接口,创建测试数据表,添加模拟数据,生成映射类,完成接口冒烟测试,并生成接口文档;
5.开发统计分析-能耗分析模块,发电列表接口;
6.修改统计分析-能耗分析模块,发电列表接口,添加计算生产负荷逻辑,修改光伏电站Cloud模块查询电站列表接口,增加电站ID集合查询条件,添加接口文档,并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 356beaeb
...@@ -7,12 +7,22 @@ import xstartup.annotation.XText; ...@@ -7,12 +7,22 @@ import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.data.XListResult; import xstartup.data.XListResult;
/**
* 光伏电站Cloud模块
*
* @author TianChao
* @date 2023/09/27
*/
@XService @XService
public interface BasePhotovoltaicPlantCloudService { public interface BasePhotovoltaicPlantCloudService {
@XText("获取电站") /**
XListResult<GetBasePhotovoltaicPlantCloudOutput> getBasePhotovoltaicPlantViewList(XContext context, GetBasePhotovoltaicPlantCloudInput input); * 光伏电站Cloud模块-获取电站列表
*
@XText("获取电站") * @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link GetBasePhotovoltaicPlantCloudOutput}>
*/
@XText("光伏电站Cloud模块-获取电站列表")
XListResult<GetBasePhotovoltaicPlantCloudOutput> getBasePhotovoltaicPlantList(XContext context, GetBasePhotovoltaicPlantCloudInput input); XListResult<GetBasePhotovoltaicPlantCloudOutput> getBasePhotovoltaicPlantList(XContext context, GetBasePhotovoltaicPlantCloudInput input);
} }
package pps.cloud.base.service.data.base_photovoltaic_plant; package pps.cloud.base.service.data.base_photovoltaic_plant;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import java.util.List;
/**
* 光伏电站Cloud模块
*
* @author ZWT
* @date 2023/09/27
*/
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetBasePhotovoltaicPlantCloudInput { public class GetBasePhotovoltaicPlantCloudInput {
@XText("ID") @XText("ID")
private String id; private String id;
...@@ -11,4 +25,6 @@ public class GetBasePhotovoltaicPlantCloudInput { ...@@ -11,4 +25,6 @@ public class GetBasePhotovoltaicPlantCloudInput {
@XText("是否删除(1_是;0_否)") @XText("是否删除(1_是;0_否)")
private Integer isDeleted; private Integer isDeleted;
@XText("电站ID集合")
private List<String> plantIds;
} }
package pps.cloud.base.service.data.base_photovoltaic_plant; package pps.cloud.base.service.data.base_photovoltaic_plant;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data; import lombok.Data;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/**
* 光伏电站Cloud模块
*
* @author ZWT
* @date 2023/09/27
*/
@Data @Data
public class GetBasePhotovoltaicPlantCloudOutput { public class GetBasePhotovoltaicPlantCloudOutput {
@XText("ID") @XText("ID")
...@@ -65,5 +70,4 @@ public class GetBasePhotovoltaicPlantCloudOutput { ...@@ -65,5 +70,4 @@ public class GetBasePhotovoltaicPlantCloudOutput {
@XText("所属省份") @XText("所属省份")
private String provinceCode; private String provinceCode;
} }
package pps.core.base.service; package pps.core.base.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import pps.cloud.base.service.BasePhotovoltaicPlantCloudService; import pps.cloud.base.service.BasePhotovoltaicPlantCloudService;
import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudInput; import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudInput;
import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudOutput; import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudOutput;
import pps.core.base.constant.ScadaConstant;
import pps.core.base.entity.BasePhotovoltaicPlantEnt; import pps.core.base.entity.BasePhotovoltaicPlantEnt;
import pps.core.base.entity.BasePhotovoltaicPlantView;
import pps.core.base.mapper.BasePhotovoltaicPlantMapper; import pps.core.base.mapper.BasePhotovoltaicPlantMapper;
import pps.core.base.mapper.BasePhotovoltaicPlantViewMapper;
import pps.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils; import xstartup.base.util.XCopyUtils;
...@@ -17,24 +16,31 @@ import xstartup.data.XListResult; ...@@ -17,24 +16,31 @@ import xstartup.data.XListResult;
import java.util.List; import java.util.List;
/**
* 光伏电站Cloud模块
*
* @author TianChao
* @date 2023/09/27
*/
@XService @XService
public class BasePhotovoltaicPlantCloudServiceImpl implements BasePhotovoltaicPlantCloudService { public class BasePhotovoltaicPlantCloudServiceImpl implements BasePhotovoltaicPlantCloudService {
@Override
public XListResult<GetBasePhotovoltaicPlantCloudOutput> getBasePhotovoltaicPlantViewList(XContext context, GetBasePhotovoltaicPlantCloudInput input) {
BasePhotovoltaicPlantViewMapper mapper = context.getBean(BasePhotovoltaicPlantViewMapper.class);
BasePhotovoltaicPlantView view = new BasePhotovoltaicPlantView();
view.setIsDeleted(ScadaConstant.IS_DELETE_FLASE);
List<BasePhotovoltaicPlantView> plantList = mapper.selectPlantDetailList(view);
return null;
}
/**
* 光伏电站Cloud模块-获取电站列表
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link GetBasePhotovoltaicPlantCloudOutput}>
*/
@Override @Override
public XListResult<GetBasePhotovoltaicPlantCloudOutput> getBasePhotovoltaicPlantList(XContext context, GetBasePhotovoltaicPlantCloudInput input) { public XListResult<GetBasePhotovoltaicPlantCloudOutput> getBasePhotovoltaicPlantList(XContext context, GetBasePhotovoltaicPlantCloudInput input) {
List<String> plantIds = input.getPlantIds();
BasePhotovoltaicPlantMapper mapper = context.getBean(BasePhotovoltaicPlantMapper.class); BasePhotovoltaicPlantMapper mapper = context.getBean(BasePhotovoltaicPlantMapper.class);
QueryWrapper<BasePhotovoltaicPlantEnt> queryWrapper = new QueryWrapper<>(); List<BasePhotovoltaicPlantEnt> list = mapper.selectList(new LambdaQueryWrapper<BasePhotovoltaicPlantEnt>()
queryWrapper.lambda().eq(BasePhotovoltaicPlantEnt::getIsDeleted , BusinessConstant.ONE); .eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
List<BasePhotovoltaicPlantEnt> list = mapper.selectList(queryWrapper); .in(CollUtil.isNotEmpty(plantIds), BaseModel::getId, plantIds)
List<GetBasePhotovoltaicPlantCloudOutput> outPuts = XCopyUtils.copyNewList(list , GetBasePhotovoltaicPlantCloudOutput.class); );
List<GetBasePhotovoltaicPlantCloudOutput> outPuts = XCopyUtils.copyNewList(list, GetBasePhotovoltaicPlantCloudOutput.class);
return XListResult.success(outPuts); return XListResult.success(outPuts);
} }
} }
...@@ -4,7 +4,10 @@ import cn.hutool.core.collection.CollUtil; ...@@ -4,7 +4,10 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.base.service.BasePhotovoltaicPlantCloudService;
import pps.cloud.base.service.IBasePowerLineCloudService; import pps.cloud.base.service.IBasePowerLineCloudService;
import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudInput;
import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput; import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput; import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput;
import pps.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
...@@ -23,8 +26,11 @@ import xstartup.data.XListResult; ...@@ -23,8 +26,11 @@ import xstartup.data.XListResult;
import xstartup.feature.api.annotation.XApiAnonymous; import xstartup.feature.api.annotation.XApiAnonymous;
import xstartup.feature.api.annotation.XApiGet; import xstartup.feature.api.annotation.XApiGet;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -61,7 +67,6 @@ public class EnergyConsumptionAnalysisService { ...@@ -61,7 +67,6 @@ public class EnergyConsumptionAnalysisService {
DateTime date = DateUtil.date(); DateTime date = DateUtil.date();
PlantPredictedPowerDataMapper powerDataMapper; PlantPredictedPowerDataMapper powerDataMapper;
switch (input.getDateType()) { switch (input.getDateType()) {
//负荷率=实际发电量/理论最大发电量x100%
case 0: case 0:
powerDataMapper = context.getBean(PlantPredictedPowerDataMapper.class); powerDataMapper = context.getBean(PlantPredictedPowerDataMapper.class);
powerGenerationList = powerDataMapper.selectList(new QueryWrapper<PlantPredictedPowerDataEnt>() powerGenerationList = powerDataMapper.selectList(new QueryWrapper<PlantPredictedPowerDataEnt>()
...@@ -111,7 +116,31 @@ public class EnergyConsumptionAnalysisService { ...@@ -111,7 +116,31 @@ public class EnergyConsumptionAnalysisService {
if (CollUtil.isNotEmpty(powerGenerationList)) { if (CollUtil.isNotEmpty(powerGenerationList)) {
XCopyUtils.copyList(powerGenerationList, outputList, GetEnergyConsumptionAnalysisOutput.class); XCopyUtils.copyList(powerGenerationList, outputList, GetEnergyConsumptionAnalysisOutput.class);
//有发电量说明有电站ID,查电站详情 //有发电量说明有电站ID,查电站详情
List<GetBasePhotovoltaicPlantCloudOutput> plantList = this.getPhotovoltaicPlantByPlantIds(context, plantIdList);
Optional<BigDecimal> reduce = plantList.stream()
.map(GetBasePhotovoltaicPlantCloudOutput::getTotalPower)
.reduce(BigDecimal::add);
if (reduce.isPresent()) {
//负荷率=实际发电量/理论最大发电量x100%
BigDecimal maximumPowerGeneration = reduce.get();
BigDecimal power;
BigDecimal oneHundred = new BigDecimal(100);
for (GetEnergyConsumptionAnalysisOutput output : outputList) {
power = output.getPower();
if (Objects.isNull(power) ||
power.compareTo(BigDecimal.ZERO) <= BusinessConstant.ZERO ||
maximumPowerGeneration.compareTo(BigDecimal.ZERO) == BusinessConstant.ZERO
) {
output.setProductionLoad(BigDecimal.ZERO);
continue;
}
//计算负荷
output.setProductionLoad(
power.divide(maximumPowerGeneration, 4, BigDecimal.ROUND_HALF_UP)
.multiply(oneHundred)
);
}
}
} }
return XListResult.success(outputList); return XListResult.success(outputList);
} }
...@@ -135,4 +164,21 @@ public class EnergyConsumptionAnalysisService { ...@@ -135,4 +164,21 @@ public class EnergyConsumptionAnalysisService {
result.throwIfFail(); result.throwIfFail();
return result.getResult(); return result.getResult();
} }
/**
* 获取光伏发电厂
*
* @param context 上下文
* @param plantIds 植物id
* @return {@link List}<{@link GetBasePhotovoltaicPlantCloudOutput}>
*/
private List<GetBasePhotovoltaicPlantCloudOutput> getPhotovoltaicPlantByPlantIds(XContext context, List<String> plantIds) {
BasePhotovoltaicPlantCloudService cloudService = context.getBean(BasePhotovoltaicPlantCloudService.class);
XListResult<GetBasePhotovoltaicPlantCloudOutput> result = cloudService.getBasePhotovoltaicPlantList(context,
GetBasePhotovoltaicPlantCloudInput.builder()
.plantIds(plantIds)
.build());
result.throwIfFail();
return result.getResult();
}
} }
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