Commit b475f770 authored by ZWT's avatar ZWT

feat[零碳项目]: 松原演示

[1.修改井口日用电趋势统计表,增加谷电时段发电时长及谷电占比字段,同时在代码中添加对应字段并修改数据库mapper文件相关业务处理逻辑sql语句;
2.修改线路日用电趋势统计表,增加谷电时段发电时长及谷电占比字段,同时在代码中添加对应字段并修改数据库mapper文件相关业务处理逻辑sql语句;
3.修改井口/线路日用电趋势统计定时任务,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理,同时增加获取每日井口及线路谷电运行时长统计逻辑,完成功能冒烟测试;
4.修改首页总览接口逻辑,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理;
5.修改首页井场实时监控接口逻辑,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理;
6.修改首页光伏实时监控接口逻辑,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理;
7.修改首页井场效果评价接口逻辑,增加环境区分,通过读取配置表来获取当前部署环境,针对不同环境进行不同业务处理;
]
parent 085ac59f
......@@ -236,8 +236,8 @@ public class BaseUtils {
public static BigDecimal getRate(BigDecimal one, BigDecimal two) {
BigDecimal rate;
if (two.compareTo(BigDecimal.ZERO) > 0) {
rate = one.divide(two, 4, RoundingMode.HALF_UP)
.multiply(BusinessConstant.BIG_DECIMAL_100);
rate = one.multiply(BusinessConstant.BIG_DECIMAL_100)
.divide(two, 2, RoundingMode.HALF_UP);
} else {
rate = BigDecimal.ZERO;
}
......
......@@ -10,6 +10,7 @@ import xstartup.base.XContext;
import xstartup.data.XListResult;
import xstartup.data.XPageResult;
import xstartup.data.XServiceResult;
import xstartup.data.XSingleResult;
/**
* 日用电趋势计算Cloud模块
......@@ -40,6 +41,16 @@ public interface IDailyElectricityTrendCloudService {
@XText("日用电趋势计算Cloud模块--用电趋势统计")
XListResult<GetLineDailyElectricityTrendOutput> queryDailyElectricityTrend(XContext context, GetLineDailyElectricityTrendInput input);
/**
* 累积用电
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult }<{@link GetLineDailyElectricityTrendOutput }>
*/
@XText("日用电趋势计算Cloud模块--累积用电")
XSingleResult<GetLineDailyElectricityTrendOutput> querySumDailyElectricity(XContext context, GetLineDailyElectricityTrendInput input);
/**
* 井口分析分页
*
......@@ -47,5 +58,6 @@ public interface IDailyElectricityTrendCloudService {
* @param input 输入
* @return {@link XPageResult }<{@link GetWellDailyElectricityTrendOutput }>
*/
@XText("日用电趋势计算Cloud模块--井口分析分页")
XPageResult<GetWellDailyElectricityTrendOutput> queryWellheadAnalysisPage(XContext context, GetWellDailyElectricityTrendInput input);
}
......@@ -5,8 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* 用电趋势统计
......@@ -33,5 +33,10 @@ public class GetLineDailyElectricityTrendInput {
/**
* 电站名称列表
*/
private List<String> stationNameList;
private Collection<String> stationNameList;
/**
* 来源系统
*/
private String systemSource;
}
package pps.cloud.space.service.data.line_daily_electricity_trend;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import xstartup.annotation.XText;
......@@ -17,26 +16,26 @@ import java.util.Date;
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("谷电开井时间(h)")
private BigDecimal valleyElectricOpenHour;
@XText("总运行时间(h)")
private BigDecimal sumRunDuration;
@XText("创建时间")
@TableField
private Date createDate;
}
......@@ -9,8 +9,8 @@ import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* 线路日用电趋势
......@@ -105,5 +105,5 @@ public class LineDailyElectricityTrendView implements Serializable {
* 电站名称列表
*/
@TableField(exist = false)
private List<String> stationNameList;
private Collection<String> stationNameList;
}
......@@ -8,6 +8,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;
import pps.cloud.base.service.BasePhotovoltaicPlantCloudService;
......@@ -45,6 +46,7 @@ import xstartup.base.util.XCopyUtils;
import xstartup.data.XListResult;
import xstartup.data.XPageResult;
import xstartup.data.XServiceResult;
import xstartup.data.XSingleResult;
import xstartup.helper.XTransactionHelper;
import java.math.BigDecimal;
......@@ -268,6 +270,26 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
return XListResult.success(XCopyUtils.copyNewList(list, GetLineDailyElectricityTrendOutput.class));
}
/**
* 累积用电
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult }<{@link GetLineDailyElectricityTrendOutput }>
*/
@Override
public XSingleResult<GetLineDailyElectricityTrendOutput> querySumDailyElectricity(XContext context, GetLineDailyElectricityTrendInput input) {
LineDailyElectricityTrendMapper mapper = context.getBean(LineDailyElectricityTrendMapper.class);
LineDailyElectricityTrendEnt ent = mapper.selectOne(new QueryWrapper<LineDailyElectricityTrendEnt>()
.select("IFNULL( SUM( valley_electric_open_hour ), 0 ) AS valley_electric_open_hour",
"IFNULL( SUM( sum_run_duration ), 0 ) AS sum_run_duration")
.lambda()
.eq(LineDailyElectricityTrendEnt::getSystemSource, input.getSystemSource())
.in(LineDailyElectricityTrendEnt::getStationName, input.getStationNameList())
);
return XSingleResult.success(XCopyUtils.copyNewObject(ent, GetLineDailyElectricityTrendOutput.class));
}
/**
* 井口分析分页
*
......
......@@ -25,6 +25,9 @@ import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowe
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput;
import pps.cloud.base.service.data.config_oil_field.GetConfigOilFieldOutput;
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.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.data.sys_area.GetSysAreaInput;
......@@ -32,6 +35,7 @@ import pps.cloud.system.service.data.sys_area.GetSysAreaOutput;
import pps.cloud.system.service.data.sys_organization.GetAllOuListByOuIdInput;
import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewOutput;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils;
import pps.core.prediction.entity.*;
import pps.core.prediction.enums.BusinessError;
import pps.core.prediction.mapper.*;
......@@ -463,13 +467,13 @@ public class HomePageService {
}
/**
* 收益分析
* 井场效果评价
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetIncomeAnalysisOutput}>
*/
@XText("首页模块--收益分析")
@XText("首页模块--井场效果评价")
@XApiGet
public XSingleResult<GetIncomeAnalysisOutput> getIncomeAnalysis(XContext context, GetStationViewInput input) {
String stationId = input.getStationId();
......@@ -480,6 +484,8 @@ public class HomePageService {
BigDecimal energyStorageCapacity = BigDecimal.ZERO;
BigDecimal carbonReduction = BigDecimal.ZERO;
BigDecimal economicBenefit = BigDecimal.ZERO;
BigDecimal valleyElectricRate = BigDecimal.ZERO;
BigDecimal accumulatedCharge = BigDecimal.ZERO;
String greenElectricityRate = "-";
String zeroGreenElectricityRate = "100";
BigDecimal avoidPeakRate = BigDecimal.ZERO;
......@@ -492,6 +498,7 @@ public class HomePageService {
isOffGrid = true;
}
}
String oilFieldCode = this.getOilFieldCode(context);
ThirdDailyAccumulationUpdateMapper analysisMapper = context.getBean(ThirdDailyAccumulationUpdateMapper.class);
ThirdDailyAccumulationUpdateEnt analysisEnt = analysisMapper.selectOne(new QueryWrapper<ThirdDailyAccumulationUpdateEnt>()
.select("IFNULL( SUM( photovoltaic_power ), 0 ) AS photovoltaic_power",
......@@ -501,6 +508,7 @@ public class HomePageService {
"IFNULL( SUM( in_place_consumption ), 0 ) AS in_place_consumption")
.lambda()
.in(ThirdDailyAccumulationUpdateEnt::getStationName, lineNameList)
.eq(ThirdDailyAccumulationUpdateEnt::getSystemSource, oilFieldCode)
);
//发电量
powerGeneration = analysisEnt.getPhotovoltaicPower()
......@@ -508,9 +516,6 @@ public class HomePageService {
//用电量
dailyElectricityConsumption = analysisEnt.getDailyElectricityConsumption()
.divide(BusinessConstant.BIG_DECIMAL_10000, 2, RoundingMode.HALF_UP);
//储能日累计放电量
energyStorageCapacity = analysisEnt.getEnergyStorageDischarge()
.divide(BusinessConstant.BIG_DECIMAL_10000, 2, RoundingMode.HALF_UP);
//累计减碳量
carbonReduction = analysisEnt.getPhotovoltaicPower()
.multiply(BusinessConstant.BIG_DECIMAL_6_67)
......@@ -521,22 +526,45 @@ public class HomePageService {
.subtract(analysisEnt.getPhotovoltaicPower()
.multiply(BigDecimal.valueOf(0.28)))
.divide(BusinessConstant.BIG_DECIMAL_10000, 2, RoundingMode.HALF_UP);
if (CharSequenceUtil.equals("bb1bff9d-7068-48c9-9be8-c80eb0d49152", stationId)) {
greenElectricityRate = "94.03";
} else {
//近零碳井场绿电占比:(累计就地消纳量/累计井场用电量*100%)+5
BigDecimal rate = analysisEnt.getInPlaceConsumption()
.multiply(BusinessConstant.BIG_DECIMAL_100)
.divide(analysisEnt.getDailyElectricityConsumption(), 2, RoundingMode.HALF_UP)
.add(BigDecimal.valueOf(5));
greenElectricityRate = rate.toString();
//区分环境
switch (oilFieldCode) {
case BusinessConstant.ENV_CQ:
if (CharSequenceUtil.equals("bb1bff9d-7068-48c9-9be8-c80eb0d49152", stationId)) {
greenElectricityRate = "94.03";
} else {
//近零碳井场绿电占比:(累计就地消纳量/累计井场用电量*100%)+5
greenElectricityRate = BaseUtils.getRate(analysisEnt.getInPlaceConsumption(), analysisEnt.getDailyElectricityConsumption())
.add(BigDecimal.valueOf(5))
.toString();
}
//余电上网:发电量-就地消纳量
avoidPeakRate = analysisEnt.getPhotovoltaicPower()
.subtract(analysisEnt.getInPlaceConsumption())
.divide(BusinessConstant.BIG_DECIMAL_10000, 2, RoundingMode.HALF_UP);
//储能日累计放电量
energyStorageCapacity = analysisEnt.getEnergyStorageDischarge()
.divide(BusinessConstant.BIG_DECIMAL_10000, 2, RoundingMode.HALF_UP);
break;
case BusinessConstant.ENV_SY:
//近零碳井场绿电占比:(累计就地消纳量/累计井场用电量*100%)+5
greenElectricityRate = BaseUtils.getRate(analysisEnt.getInPlaceConsumption(), analysisEnt.getDailyElectricityConsumption())
.add(BigDecimal.valueOf(5))
.toString();
//谷电占比:所有井的谷电时间开井时长/所有井开井时长保留2位小数
IDailyElectricityTrendCloudService bean = context.getBean(IDailyElectricityTrendCloudService.class);
XSingleResult<GetLineDailyElectricityTrendOutput> result = bean.querySumDailyElectricity(context, GetLineDailyElectricityTrendInput.builder()
.systemSource(oilFieldCode)
.stationNameList(lineNameList)
.build());
result.throwIfFail();
GetLineDailyElectricityTrendOutput lineDailyElectricity = result.getResult();
valleyElectricRate = BaseUtils.getRate(lineDailyElectricity.getValleyElectricOpenHour(), lineDailyElectricity.getSumRunDuration());
//累计电费
break;
default:
}
//零碳井场绿电占比:有离网线路的默认100%
zeroGreenElectricityRate = isOffGrid || ObjectUtil.isEmpty(stationId) ? zeroGreenElectricityRate : "-";
//余电上网:发电量-就地消纳量
avoidPeakRate = analysisEnt.getPhotovoltaicPower()
.subtract(analysisEnt.getInPlaceConsumption())
.divide(BusinessConstant.BIG_DECIMAL_10000, 2, RoundingMode.HALF_UP);
}
return XSingleResult.success(GetIncomeAnalysisOutput.builder()
.absorptionRate(BusinessConstant.BIG_DECIMAL_100)
......@@ -548,6 +576,8 @@ public class HomePageService {
.economicBenefit(economicBenefit)
.dailyElectricityConsumption(dailyElectricityConsumption)
.zeroGreenElectricityRate(zeroGreenElectricityRate)
.valleyElectricRate(valleyElectricRate)
.accumulatedCharge(accumulatedCharge)
.build());
}
......@@ -767,6 +797,22 @@ public class HomePageService {
return result.getResult();
}
/**
* 获取输电线井口列表
*
* @param context 上下文
* @param lineIds 线路ID
* @return {@link List }<{@link DynamicQueryBasePowerLineWellheadViewOutput }>
*/
private List<DynamicQueryBasePowerLineWellheadViewOutput> getPowerLineWellheadList(XContext context, List<String> lineIds) {
IBasePowerLineCloudService service = context.getBean(IBasePowerLineCloudService.class);
XListResult<DynamicQueryBasePowerLineWellheadViewOutput> result = service.getPowerLineWellheadList(context, DynamicQueryBasePowerLineWellheadInput.builder()
.lineIds(lineIds)
.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