Commit edda220d authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.开发间开优化结果统计功能,创建间开优化效果统计表,生成对应代码;
2.修改15天,10天,3天,1天间开优化功能,修改代码结构;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 1ccd0ea3
......@@ -85,6 +85,21 @@ public class BusinessConstant {
*/
public static final String PERIOD_TYPE_LOW = "LOW";
/**
* 时段类型_平
*/
public static final String PERIOD_TYPE_PEACE = "PEACE";
/**
* 时段类型_高
*/
public static final String PERIOD_TYPE_PEAK = "PEAK";
/**
* 时段类型_尖
*/
public static final String PERIOD_TYPE_RUSH = "RUSH";
/**
* 间抽井
*/
......@@ -180,6 +195,11 @@ public class BusinessConstant {
*/
public static final BigDecimal BIG_DECIMAL_0_35 = BigDecimal.valueOf(0.35);
/**
* 0.3587
*/
public static final BigDecimal BIG_DECIMAL_0_3587 = BigDecimal.valueOf(0.3587);
/**
* 6.67
*/
......
......@@ -236,6 +236,34 @@ public class BaseUtils {
return rate;
}
/**
* 用能成本
* <p>
* 光伏发电够抽油机运行的时段:度电成本*抽油机运行功率*运行时长(h)
* 光伏发电不够抽油机运行时段,该时段的电费(峰谷平不同,每月也有区别)*抽油机运行功率*运行时长(h)
* 降低费用为优化前-优化后
*
* @param one 电费
* @param two 运行功率
* @param three 运行时长
* @return {@link BigDecimal }
*/
public static BigDecimal energyCost(BigDecimal one, BigDecimal two, BigDecimal three) {
return one.multiply(two)
.multiply(three)
.setScale(2, RoundingMode.UP);
}
/**
* 大于0
*
* @param one 一
* @return boolean
*/
public static boolean greaterThan_0(BigDecimal one) {
return one.compareTo(BigDecimal.ZERO) > 0;
}
/**
* 获取环比
* (本期-上期) /上期*100%
......
......@@ -3,6 +3,7 @@ package pps.cloud.base.service.data.base_price_strategy_detail;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
/**
......@@ -34,4 +35,7 @@ public class GetBasePriceStrategyDetailOutput {
@XText("结束时间")
private Date closeTime;
@XText("电价")
private BigDecimal electrovalence;
}
......@@ -68,6 +68,26 @@ public class SpaceOptimizeEffectEnt extends BaseModel implements Serializable {
@TableField
private BigDecimal greenPowerRate;
@XText("优化前绿电电费(元)")
@TableField
private BigDecimal greenPowerCost;
@XText("优化前谷电电费(元)")
@TableField
private BigDecimal lowPowerCost;
@XText("优化前平电费(元)")
@TableField
private BigDecimal midPowerCost;
@XText("优化前高峰电费(元)")
@TableField
private BigDecimal highPowerCost;
@XText("优化前尖峰电费(元)")
@TableField
private BigDecimal peakPowerCost;
@XText("优化前用能成本(元)")
@TableField
private BigDecimal powerCost;
......@@ -100,6 +120,26 @@ public class SpaceOptimizeEffectEnt extends BaseModel implements Serializable {
@TableField
private BigDecimal optimalGreenPowerRate;
@XText("优化后绿电电费(元)")
@TableField
private BigDecimal optimalGreenPowerCost;
@XText("优化后谷电电费(元)")
@TableField
private BigDecimal optimalLowPowerCost;
@XText("优化后平电费(元)")
@TableField
private BigDecimal optimalMidPowerCost;
@XText("优化后高峰电费(元)")
@TableField
private BigDecimal optimalHighPowerCost;
@XText("优化后尖峰电费(元)")
@TableField
private BigDecimal optimalPeakPowerCost;
@XText("优化后用能成本(元)")
@TableField
private BigDecimal optimalPowerCost;
......
......@@ -66,6 +66,26 @@ public class SpaceOptimizeEffectView extends BaseModel implements Serializable {
@TableField
private BigDecimal greenPowerRate;
@XText("优化前绿电电费(元)")
@TableField
private BigDecimal greenPowerCost;
@XText("优化前谷电电费(元)")
@TableField
private BigDecimal lowPowerCost;
@XText("优化前平电费(元)")
@TableField
private BigDecimal midPowerCost;
@XText("优化前高峰电费(元)")
@TableField
private BigDecimal highPowerCost;
@XText("优化前尖峰电费(元)")
@TableField
private BigDecimal peakPowerCost;
@XText("优化前用能成本(元)")
@TableField
private BigDecimal powerCost;
......@@ -98,6 +118,26 @@ public class SpaceOptimizeEffectView extends BaseModel implements Serializable {
@TableField
private BigDecimal optimalGreenPowerRate;
@XText("优化后绿电电费(元)")
@TableField
private BigDecimal optimalGreenPowerCost;
@XText("优化后谷电电费(元)")
@TableField
private BigDecimal optimalLowPowerCost;
@XText("优化后平电费(元)")
@TableField
private BigDecimal optimalMidPowerCost;
@XText("优化后高峰电费(元)")
@TableField
private BigDecimal optimalHighPowerCost;
@XText("优化后尖峰电费(元)")
@TableField
private BigDecimal optimalPeakPowerCost;
@XText("优化后用能成本(元)")
@TableField
private BigDecimal optimalPowerCost;
......
......@@ -152,13 +152,13 @@ public class SpaceOptimizeBaseService {
//遍历
DateTime begin;
Map<Date, List<SpaceOptimizeWellheadDTO>> wellDateMap;
List<SpaceOptimizeWellheadDTO> optimizeWellList;
DynamicQueryBasePowerLineOutput line;
List<String> plantIds;
List<DynamicQueryPlantPredictedPowerOutput> powerList;
String monthBaseOne;
Map<String, List<GetBasePriceStrategyDetailOutput>> monthStrategyMap;
List<GetBasePriceStrategyDetailOutput> monthStrategyList = null;
Map<String, BigDecimal> electrovalenceMap;
SpaceInstitutionWellheadView baseWell;
BigDecimal serviceRating;
List<SpaceOptimizeWeight> weightList;
......@@ -194,6 +194,11 @@ public class SpaceOptimizeBaseService {
if (CollUtil.isEmpty(monthStrategyList)) {
continue;
}
//取电价
electrovalenceMap = new HashMap<>(4);
for (GetBasePriceStrategyDetailOutput strategy : monthStrategyList) {
electrovalenceMap.put(strategy.getPeriodTypeKey(), strategy.getElectrovalence());
}
//取优化井
if (!wellMap.containsKey(period.getId())) {
continue;
......@@ -359,11 +364,91 @@ public class SpaceOptimizeBaseService {
effectView.setGreenPowerRate(BaseUtils.getRate(effectView.getGreenPowerDuration(), effectView.getTotalDuration()));
effectView.setOptimalGreenPowerRate(BaseUtils.getRate(effectView.getOptimalGreenPowerDuration(), effectView.getOptimalTotalDuration()));
effectView.setGreenPowerUpgrade(effectView.getOptimalGreenPowerRate().subtract(effectView.getGreenPowerRate()));
//用能成本
BigDecimal powerCost = BigDecimal.ZERO;
BigDecimal optimalPowerCost = BigDecimal.ZERO;
//谷电电费
if (electrovalenceMap.containsKey(BusinessConstant.PERIOD_TYPE_LOW)) {
if (BaseUtils.greaterThan_0(effectView.getLowPowerDuration())) {
effectView.setLowPowerCost(BaseUtils.energyCost(electrovalenceMap.get(BusinessConstant.PERIOD_TYPE_LOW), baseWell.getServiceRating(), BaseUtils.divide(effectView.getLowPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
powerCost = powerCost.add(effectView.getLowPowerCost());
} else {
effectView.setLowPowerCost(BigDecimal.ZERO);
}
if (BaseUtils.greaterThan_0(effectView.getOptimalLowPowerDuration())) {
effectView.setOptimalLowPowerCost(BaseUtils.energyCost(electrovalenceMap.get(BusinessConstant.PERIOD_TYPE_LOW), baseWell.getServiceRating(), BaseUtils.divide(effectView.getOptimalLowPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
optimalPowerCost = optimalPowerCost.add(effectView.getOptimalLowPowerCost());
} else {
effectView.setOptimalLowPowerCost(BigDecimal.ZERO);
}
}
//平电电费
if (electrovalenceMap.containsKey(BusinessConstant.PERIOD_TYPE_PEACE)) {
if (BaseUtils.greaterThan_0(effectView.getMidPowerDuration())) {
effectView.setMidPowerCost(BaseUtils.energyCost(electrovalenceMap.get(BusinessConstant.PERIOD_TYPE_PEACE), baseWell.getServiceRating(), BaseUtils.divide(effectView.getMidPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
powerCost = powerCost.add(effectView.getMidPowerCost());
} else {
effectView.setMidPowerCost(BigDecimal.ZERO);
}
if (BaseUtils.greaterThan_0(effectView.getOptimalMidPowerDuration())) {
effectView.setOptimalMidPowerCost(BaseUtils.energyCost(electrovalenceMap.get(BusinessConstant.PERIOD_TYPE_PEACE), baseWell.getServiceRating(), BaseUtils.divide(effectView.getOptimalMidPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
optimalPowerCost = optimalPowerCost.add(effectView.getOptimalMidPowerCost());
} else {
effectView.setOptimalMidPowerCost(BigDecimal.ZERO);
}
}
//高峰电费
if (electrovalenceMap.containsKey(BusinessConstant.PERIOD_TYPE_PEAK)) {
if (BaseUtils.greaterThan_0(effectView.getHighPowerDuration())) {
effectView.setHighPowerCost(BaseUtils.energyCost(electrovalenceMap.get(BusinessConstant.PERIOD_TYPE_PEAK), baseWell.getServiceRating(), BaseUtils.divide(effectView.getHighPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
powerCost = powerCost.add(effectView.getHighPowerCost());
} else {
effectView.setHighPowerCost(BigDecimal.ZERO);
}
if (BaseUtils.greaterThan_0(effectView.getOptimalHighPowerDuration())) {
effectView.setOptimalHighPowerCost(BaseUtils.energyCost(electrovalenceMap.get(BusinessConstant.PERIOD_TYPE_PEAK), baseWell.getServiceRating(), BaseUtils.divide(effectView.getOptimalHighPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
optimalPowerCost = optimalPowerCost.add(effectView.getOptimalHighPowerCost());
} else {
effectView.setOptimalHighPowerCost(BigDecimal.ZERO);
}
}
//尖峰电费
if (electrovalenceMap.containsKey(BusinessConstant.PERIOD_TYPE_RUSH)) {
if (BaseUtils.greaterThan_0(effectView.getPeakPowerDuration())) {
effectView.setPeakPowerCost(BaseUtils.energyCost(electrovalenceMap.get(BusinessConstant.PERIOD_TYPE_RUSH), baseWell.getServiceRating(), BaseUtils.divide(effectView.getPeakPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
powerCost = powerCost.add(effectView.getPeakPowerCost());
} else {
effectView.setPeakPowerCost(BigDecimal.ZERO);
}
if (BaseUtils.greaterThan_0(effectView.getOptimalPeakPowerDuration())) {
effectView.setOptimalPeakPowerCost(BaseUtils.energyCost(electrovalenceMap.get(BusinessConstant.PERIOD_TYPE_RUSH), baseWell.getServiceRating(), BaseUtils.divide(effectView.getOptimalPeakPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
optimalPowerCost = optimalPowerCost.add(effectView.getOptimalPeakPowerCost());
} else {
effectView.setOptimalPeakPowerCost(BigDecimal.ZERO);
}
}
//绿电电费
if (BaseUtils.greaterThan_0(effectView.getGreenPowerDuration())) {
effectView.setGreenPowerCost(BaseUtils.energyCost(BusinessConstant.BIG_DECIMAL_0_3587, baseWell.getServiceRating(), BaseUtils.divide(effectView.getGreenPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
powerCost = powerCost.add(effectView.getGreenPowerCost());
} else {
effectView.setGreenPowerCost(BigDecimal.ZERO);
}
if (BaseUtils.greaterThan_0(effectView.getOptimalGreenPowerDuration())) {
effectView.setOptimalGreenPowerCost(BaseUtils.energyCost(BusinessConstant.BIG_DECIMAL_0_3587, baseWell.getServiceRating(), BaseUtils.divide(effectView.getOptimalGreenPowerDuration(), BusinessConstant.BIG_DECIMAL_60)));
optimalPowerCost = optimalPowerCost.add(effectView.getOptimalGreenPowerCost());
} else {
effectView.setOptimalGreenPowerCost(BigDecimal.ZERO);
}
effectView.setPowerCost(powerCost);
effectView.setOptimalPowerCost(optimalPowerCost);
//降低费用:优化前-优化后
effectView.setCostDown(effectView.getPowerCost().subtract(effectView.getOptimalPowerCost()));
effectList.add(effectView);
}
}
}
//入库
System.out.println();
}
}
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pps.core.space.mapper.SpaceOptimizeEffectViewMapper">
<resultMap id="BaseResultMap" type="pps.core.space.entity.SpaceOptimizeEffectView">
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="is_deleted" property="isDeleted" jdbcType="INTEGER" />
<result column="create_by_id" property="createById" jdbcType="VARCHAR" />
<result column="create_by_name" property="createByName" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="DATE" />
<result column="modify_by_id" property="modifyById" jdbcType="VARCHAR" />
<result column="modify_by_name" property="modifyByName" jdbcType="VARCHAR" />
<result column="modify_time" property="modifyTime" jdbcType="DATE" />
<result column="period_id" property="periodId" jdbcType="VARCHAR" />
<result column="wellhead_id" property="wellheadId" jdbcType="VARCHAR" />
<result column="well_number" property="wellNumber" jdbcType="VARCHAR" />
<result column="optimize_date" property="optimizeDate" jdbcType="DATE" />
<result column="optimal_result" property="optimalResult" jdbcType="VARCHAR" />
<result column="total_duration" property="totalDuration" jdbcType="DECIMAL" />
<result column="green_power_duration" property="greenPowerDuration" jdbcType="DECIMAL" />
<result column="low_power_duration" property="lowPowerDuration" jdbcType="DECIMAL" />
<result column="mid_power_duration" property="midPowerDuration" jdbcType="DECIMAL" />
<result column="high_power_duration" property="highPowerDuration" jdbcType="DECIMAL" />
<result column="peak_power_duration" property="peakPowerDuration" jdbcType="DECIMAL" />
<result column="green_power_rate" property="greenPowerRate" jdbcType="DECIMAL" />
<result column="power_cost" property="powerCost" jdbcType="DECIMAL" />
<result column="optimal_total_duration" property="optimalTotalDuration" jdbcType="DECIMAL" />
<result column="optimal_green_power_duration" property="optimalGreenPowerDuration" jdbcType="DECIMAL" />
<result column="optimal_low_power_duration" property="optimalLowPowerDuration" jdbcType="DECIMAL" />
<result column="optimal_mid_power_duration" property="optimalMidPowerDuration" jdbcType="DECIMAL" />
<result column="optimal_high_power_duration" property="optimalHighPowerDuration" jdbcType="DECIMAL" />
<result column="optimal_peak_power_duration" property="optimalPeakPowerDuration" jdbcType="DECIMAL" />
<result column="optimal_green_power_rate" property="optimalGreenPowerRate" jdbcType="DECIMAL" />
<result column="optimal_power_cost" property="optimalPowerCost" jdbcType="DECIMAL" />
<result column="green_power_upgrade" property="greenPowerUpgrade" jdbcType="DECIMAL" />
<result column="cost_down" property="costDown" jdbcType="DECIMAL" />
</resultMap>
<sql id="Base_Column_List">
id,
<resultMap id="BaseResultMap" type="pps.core.space.entity.SpaceOptimizeEffectView">
<id column="id" property="id" jdbcType="VARCHAR"/>
<result column="is_deleted" property="isDeleted" jdbcType="INTEGER"/>
<result column="create_by_id" property="createById" jdbcType="VARCHAR"/>
<result column="create_by_name" property="createByName" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="DATE"/>
<result column="modify_by_id" property="modifyById" jdbcType="VARCHAR"/>
<result column="modify_by_name" property="modifyByName" jdbcType="VARCHAR"/>
<result column="modify_time" property="modifyTime" jdbcType="DATE"/>
<result column="period_id" property="periodId" jdbcType="VARCHAR"/>
<result column="wellhead_id" property="wellheadId" jdbcType="VARCHAR"/>
<result column="well_number" property="wellNumber" jdbcType="VARCHAR"/>
<result column="optimize_date" property="optimizeDate" jdbcType="DATE"/>
<result column="optimal_result" property="optimalResult" jdbcType="VARCHAR"/>
<result column="total_duration" property="totalDuration" jdbcType="DECIMAL"/>
<result column="green_power_duration" property="greenPowerDuration" jdbcType="DECIMAL"/>
<result column="low_power_duration" property="lowPowerDuration" jdbcType="DECIMAL"/>
<result column="mid_power_duration" property="midPowerDuration" jdbcType="DECIMAL"/>
<result column="high_power_duration" property="highPowerDuration" jdbcType="DECIMAL"/>
<result column="peak_power_duration" property="peakPowerDuration" jdbcType="DECIMAL"/>
<result column="green_power_rate" property="greenPowerRate" jdbcType="DECIMAL"/>
<result column="green_power_cost" property="greenPowerCost" jdbcType="DECIMAL"/>
<result column="low_power_cost" property="lowPowerCost" jdbcType="DECIMAL"/>
<result column="mid_power_cost" property="midPowerCost" jdbcType="DECIMAL"/>
<result column="high_power_cost" property="highPowerCost" jdbcType="DECIMAL"/>
<result column="peak_power_cost" property="peakPowerCost" jdbcType="DECIMAL"/>
<result column="power_cost" property="powerCost" jdbcType="DECIMAL"/>
<result column="optimal_total_duration" property="optimalTotalDuration" jdbcType="DECIMAL"/>
<result column="optimal_green_power_duration" property="optimalGreenPowerDuration" jdbcType="DECIMAL"/>
<result column="optimal_low_power_duration" property="optimalLowPowerDuration" jdbcType="DECIMAL"/>
<result column="optimal_mid_power_duration" property="optimalMidPowerDuration" jdbcType="DECIMAL"/>
<result column="optimal_high_power_duration" property="optimalHighPowerDuration" jdbcType="DECIMAL"/>
<result column="optimal_peak_power_duration" property="optimalPeakPowerDuration" jdbcType="DECIMAL"/>
<result column="optimal_green_power_rate" property="optimalGreenPowerRate" jdbcType="DECIMAL"/>
<result column="optimal_green_power_cost" property="optimalGreenPowerCost" jdbcType="DECIMAL"/>
<result column="optimal_low_power_cost" property="optimalLowPowerCost" jdbcType="DECIMAL"/>
<result column="optimal_mid_power_cost" property="optimalMidPowerCost" jdbcType="DECIMAL"/>
<result column="optimal_high_power_cost" property="optimalHighPowerCost" jdbcType="DECIMAL"/>
<result column="optimal_peak_power_cost" property="optimalPeakPowerCost" jdbcType="DECIMAL"/>
<result column="optimal_power_cost" property="optimalPowerCost" jdbcType="DECIMAL"/>
<result column="green_power_upgrade" property="greenPowerUpgrade" jdbcType="DECIMAL"/>
<result column="cost_down" property="costDown" jdbcType="DECIMAL"/>
</resultMap>
<sql id="Base_Column_List">
id
,
is_deleted,
create_by_id,
create_by_name,
......@@ -55,6 +66,11 @@
high_power_duration,
peak_power_duration,
green_power_rate,
green_power_cost,
low_power_cost,
mid_power_cost,
high_power_cost,
peak_power_cost,
power_cost,
optimal_total_duration,
optimal_green_power_duration,
......@@ -63,22 +79,27 @@
optimal_high_power_duration,
optimal_peak_power_duration,
optimal_green_power_rate,
optimal_green_power_cost,
optimal_low_power_cost,
optimal_mid_power_cost,
optimal_high_power_cost,
optimal_peak_power_cost,
optimal_power_cost,
green_power_upgrade,
cost_down
</sql>
<select id="selectOne" parameterType="pps.core.space.entity.SpaceOptimizeEffectView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from space_optimize_effect
where
id=#{id}
</select>
<select id="selectList" parameterType="pps.core.space.entity.SpaceOptimizeEffectView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from space_optimize_effect
where
id=#{id}
</select>
</sql>
<select id="selectOne" parameterType="pps.core.space.entity.SpaceOptimizeEffectView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from space_optimize_effect
where
id=#{id}
</select>
<select id="selectList" parameterType="pps.core.space.entity.SpaceOptimizeEffectView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from space_optimize_effect
where
id=#{id}
</select>
</mapper>
\ 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