2024-03-28 09:46:50 完成建筑供暖、锅炉蓄热、建材电窑炉、电厨炊、冶金窑炉模型年减碳量、运行收益算法修改。

master
魔神煜修罗皇 1 year ago
parent ebffd01048
commit 27c05b01e2
  1. 2
      dntd-common/src/main/java/com/dky/utils/enums/EnergyPriceType.java
  2. 38
      dntd-tool/src/main/java/com/dky/generate/BuildHeatingScene.java
  3. 2
      dntd-tool/src/main/java/com/dky/generate/HeatBoilerScene.java
  4. 48
      dntd-tool/src/main/java/com/dky/generate/KitchenCookScene.java
  5. 40
      dntd-tool/src/main/java/com/dky/generate/MaterialKilnScene.java
  6. 36
      dntd-tool/src/main/java/com/dky/generate/MetalKilnScene.java
  7. 30
      dntd-tool/src/main/java/com/dky/test/TestMain.java

@ -7,7 +7,7 @@ public enum EnergyPriceType {
Industry_Electric_Price(4, 1.2, "工业电价"),
Coal_Price_Per_Kilogram(1, 0.9, "煤炭平均价格/千克"),
Kerosene_Price_Per_Kilogram(2, 8.3, "煤油平均价格/千克"),
Natural_Gas_Price_Per_Kilogram(3, 3.83, "天然气平均价格/千克"),
Natural_Gas_Price_Per_Kilogram(3, 3.82, "天然气平均价格/千克"),
Raw_Coal_Price_Per_Kilogram(101, 0.788, "原煤平均价格/千克"),
Crude_Oil_Price_Per_Kilogram(301,8.0, "原油平均价格/千克"),

@ -5,8 +5,10 @@ import cn.hutool.json.JSONObject;
import com.dky.calculate.*;
import com.dky.modelI.DntdModelI;
import com.dky.utils.GetTargetDeviceList;
import com.dky.utils.GetThisEnergyEmissions;
import com.dky.utils.entity.SysDeviceHeatScene;
import com.dky.utils.enums.DeviceSubType;
import com.dky.utils.enums.EnergyEmissions;
import com.dky.utils.result.MatchedDevice;
import java.text.DecimalFormat;
@ -50,8 +52,6 @@ public class BuildHeatingScene implements DntdModelI {
Double heatingArea = Double.parseDouble(buildInfo.get("heatingArea").toString());
// 年采暖时间(天)
Integer days = Integer.parseInt(buildInfo.get("days").toString());
// 上年运行费用(万元)
Double lastYearFee = Double.parseDouble(buildInfo.get("lastYearFee").toString());
/*
实际可承载容量A = 运行或合同容量x0.9[将运行容量或合同容量折算成容量]x85%
@ -180,6 +180,39 @@ public class BuildHeatingScene implements DntdModelI {
laborFee1 = laborFee1 + (matchedDevice.getCount() * matchedDevice.getDeviceHeatScene().getLaborCost() / matchedDevice.getDeviceHeatScene().getDevServiceLife());
}
Double previousYearEnergyUsage = 1.0;
Double lastYearFee = 0.0;
Double energyPrice = 0.0;
try {
energyPrice = Double.parseDouble(buildInfo.get("energyPrice").toString());
} catch (NullPointerException e){
energyPrice = GetThisEnergyEmissions.getThisEnergyPrice((Integer) buildInfo.get("energyCode"));
}
try {
// 上年运行费用(元)
lastYearFee = Double.parseDouble(buildInfo.get("lastYearFee").toString());
} catch (NullPointerException e) {
// e.printStackTrace();
System.out.println("计算因子采用默认值");
previousYearEnergyUsage = Double.parseDouble(buildInfo.get("previousYearEnergyUsage").toString());
lastYearFee = HeatBoilerModel.calLastYearFee(laborFee1, previousYearEnergyUsage, energyPrice);
}
try {
// 替代前年能源用量
previousYearEnergyUsage = Double.parseDouble(buildInfo.get("previousYearEnergyUsage").toString());
} catch (NullPointerException e){
lastYearFee = Double.parseDouble(buildInfo.get("lastYearFee").toString());
previousYearEnergyUsage = lastYearFee / energyPrice;
}
// 替代前上年原设备碳排放量
double energyLastYearFactor = HeatBoilerModel.calLastYearFactor(previousYearEnergyUsage, GetThisEnergyEmissions.getThisEnergyEmission((Integer) buildInfo.get("energyCode")));
// 年减碳量
calculateAnnualCarbon = HeatBoilerModel.calculateAnnualCarbonReduction(energyLastYearFactor, electric, EnergyEmissions.ELECTRIC.getCo2EmissionFactor());
//初次投资费用
returnJsonObject.set("startCost", decimalFormat.format(startCost));
// 设备总价
@ -189,7 +222,6 @@ public class BuildHeatingScene implements DntdModelI {
//年总费用
returnJsonObject.set("yearCost", decimalFormat.format(allCost));
//年减碳量
calculateAnnualCarbon = BuildHeatingModel.calculateAnnualCarbonReduction(lastYearFee, laborFee1, electric);
returnJsonObject.set("calculate", decimalFormat.format(calculateAnnualCarbon/1000));
//替代电量
returnJsonObject.set("electric", decimalFormat.format(electric));

@ -154,6 +154,7 @@ public class HeatBoilerScene implements DntdModelI {
// 替代前年能源用量
previousYearEnergyUsage = Double.parseDouble(originalDevInfo.get("previousYearEnergyUsage").toString());
} catch (NullPointerException e){
lastYearFee = Double.parseDouble(originalDevInfo.get("lastYearFee").toString());
previousYearEnergyUsage = lastYearFee / energyPrice;
}
@ -163,6 +164,7 @@ public class HeatBoilerScene implements DntdModelI {
} catch (NullPointerException e) {
// e.printStackTrace();
System.out.println("计算因子采用默认值");
previousYearEnergyUsage = Double.parseDouble(originalDevInfo.get("previousYearEnergyUsage").toString());
lastYearFee = HeatBoilerModel.calLastYearFee(0.0, previousYearEnergyUsage, energyPrice);
}
// 替代前上年原设备碳排放量

@ -1,14 +1,13 @@
package com.dky.generate;
import cn.hutool.json.JSONObject;
import com.dky.calculate.Advantage;
import com.dky.calculate.BuildHeatingAdvantage;
import com.dky.calculate.KitchenCookModel;
import com.dky.calculate.KitchenCookScheme;
import com.dky.calculate.*;
import com.dky.modelI.DntdModelI;
import com.dky.utils.GetTargetDeviceList;
import com.dky.utils.GetThisEnergyEmissions;
import com.dky.utils.entity.SysDeviceHeatScene;
import com.dky.utils.enums.DeviceSubType;
import com.dky.utils.enums.EnergyEmissions;
import com.dky.utils.result.MatchedDevice;
import java.text.DecimalFormat;
@ -29,9 +28,11 @@ public class KitchenCookScene implements DntdModelI {
List<SysDeviceHeatScene> alternateDeviceList = GetTargetDeviceList.main(DeviceSubType.Kitchen_Cooking.getDesc(), sceneList);
JSONObject distInfo = new JSONObject();
JSONObject originalDevInfo = new JSONObject();
try{
distInfo = (JSONObject) jsonObject.get("distInfo");
originalDevInfo = (JSONObject) jsonObject.get("originalDevInfo");
} catch (Exception e){
e.printStackTrace();
}
@ -40,8 +41,6 @@ public class KitchenCookScene implements DntdModelI {
Double runCapacity = Double.parseDouble(distInfo.get("runCapacity").toString());
// 上年最大需量
Double lastYearNeed = Double.parseDouble(distInfo.get("lastYearNeed").toString());
// 上年运行费用(万元)
Double lastYearFee = Double.parseDouble(jsonObject.get("lastYearFee").toString());
// 人数
Integer peopleNum = Integer.parseInt(jsonObject.get("peopleNum").toString());
@ -69,7 +68,7 @@ public class KitchenCookScene implements DntdModelI {
double D1 = lastYearNeed + C1;
String remark = "";
if ( A < D1){
if (A < D1){
remark = "本方案存在扩容投资需求,扩容投资不计入初次投资费用";
}
@ -105,6 +104,40 @@ public class KitchenCookScene implements DntdModelI {
laborCost = laborCost + (matchedDevice.getCount() * matchedDevice.getDeviceHeatScene().getLaborCost() / matchedDevice.getDeviceHeatScene().getDevServiceLife());
}
Double previousYearEnergyUsage = 1.0;
Double lastYearFee = 0.0;
Double energyPrice = 0.0;
Integer energyCode = (Integer) originalDevInfo.get("energyCode");
try {
energyPrice = Double.parseDouble(originalDevInfo.get("energyPrice").toString());
} catch (NullPointerException e){
energyPrice = GetThisEnergyEmissions.getThisEnergyPrice(energyCode);
}
try {
// 上年运行费用(元)
lastYearFee = Double.parseDouble(originalDevInfo.get("lastYearFee").toString());
} catch (NullPointerException e) {
// e.printStackTrace();
System.out.println("计算因子采用默认值");
previousYearEnergyUsage = Double.parseDouble(originalDevInfo.get("previousYearEnergyUsage").toString());
lastYearFee = HeatBoilerModel.calLastYearFee(laborCost, previousYearEnergyUsage, energyPrice);
}
try {
// 替代前年能源用量
previousYearEnergyUsage = Double.parseDouble(originalDevInfo.get("previousYearEnergyUsage").toString());
} catch (NullPointerException e){
previousYearEnergyUsage = lastYearFee / energyPrice;
}
// 替代前上年原设备碳排放量
double energyLastYearFactor = HeatBoilerModel.calLastYearFactor(previousYearEnergyUsage, GetThisEnergyEmissions.getThisEnergyEmission(energyCode));
// 年减碳量
calculateAnnualCarbon = HeatBoilerModel.calculateAnnualCarbonReduction(energyLastYearFactor, electric, EnergyEmissions.ELECTRIC.getCo2EmissionFactor());
//初次投资费用
returnJsonObject.set("startCost", decimalFormat.format(startCost));
// 设备总价
@ -114,7 +147,6 @@ public class KitchenCookScene implements DntdModelI {
//年总费用
returnJsonObject.set("yearCost", decimalFormat.format(allCost));
//年减碳量
calculateAnnualCarbon = KitchenCookModel.calculateAnnualCarbonReduction(lastYearFee, laborCost, electric);
returnJsonObject.set("calculate", decimalFormat.format(calculateAnnualCarbon/1000));
//替代电量
returnJsonObject.set("electric", decimalFormat.format(electric));

@ -4,8 +4,10 @@ import cn.hutool.json.JSONObject;
import com.dky.calculate.*;
import com.dky.modelI.DntdModelI;
import com.dky.utils.GetTargetDeviceList;
import com.dky.utils.GetThisEnergyEmissions;
import com.dky.utils.entity.SysDeviceHeatScene;
import com.dky.utils.enums.DeviceSubType;
import com.dky.utils.enums.EnergyEmissions;
import com.dky.utils.result.MatchedDevice;
import java.text.DecimalFormat;
@ -45,8 +47,7 @@ public class MaterialKilnScene implements DntdModelI {
Double workArea = Double.parseDouble(heatUseNeedInfo.get("workArea").toString()) / 1000;
// 预计年产量(吨)
Double yearOutPut = Double.parseDouble(heatUseNeedInfo.get("yearOutPut").toString());
// 上年运行费用(元)
Double lastYearFee = Double.parseDouble(originalDevInfo.get("lastYearFee").toString());
// 根据供热需量设备功率计算出不同技术类型下所需要不同功率设备数据
List<MatchedDevice> matchedDeviceGroupList = MaterialKilnScheme.calSchemeByTechType(workArea, alternateDeviceList);
@ -98,6 +99,38 @@ public class MaterialKilnScene implements DntdModelI {
laborFee1 = laborFee1 + (matchedDevice.getCount() * matchedDevice.getDeviceHeatScene().getLaborCost() / matchedDevice.getDeviceHeatScene().getDevServiceLife());
}
Double previousYearEnergyUsage = 1.0;
Double lastYearFee = 0.0;
Double energyPrice = 0.0;
try {
energyPrice = Double.parseDouble(originalDevInfo.get("energyPrice").toString());
} catch (NullPointerException e){
energyPrice = GetThisEnergyEmissions.getThisEnergyPrice((Integer) originalDevInfo.get("energyCode"));
}
try {
// 替代前年能源用量
previousYearEnergyUsage = Double.parseDouble(originalDevInfo.get("previousYearEnergyUsage").toString());
} catch (NullPointerException e){
lastYearFee = Double.parseDouble(originalDevInfo.get("lastYearFee").toString());
previousYearEnergyUsage = lastYearFee / energyPrice;
}
try {
// 上年运行费用(元)
lastYearFee = Double.parseDouble(originalDevInfo.get("lastYearFee").toString());
} catch (NullPointerException e) {
// e.printStackTrace();
System.out.println("计算因子采用默认值");
lastYearFee = HeatBoilerModel.calLastYearFee(laborFee1, previousYearEnergyUsage, energyPrice);
}
// 替代前上年原设备碳排放量
double energyLastYearFactor = HeatBoilerModel.calLastYearFactor(previousYearEnergyUsage, GetThisEnergyEmissions.getThisEnergyEmission((Integer) originalDevInfo.get("energyCode")));
// 年减碳量
calculateAnnualCarbon = HeatBoilerModel.calculateAnnualCarbonReduction(energyLastYearFactor, electric, EnergyEmissions.ELECTRIC.getCo2EmissionFactor());
//初次投资费用
returnJsonObject.set("startCost", decimalFormat.format(startCost));
// 设备总价
@ -106,8 +139,7 @@ public class MaterialKilnScene implements DntdModelI {
returnJsonObject.set("yearRunCost", decimalFormat.format(runCost));
//年总费用
returnJsonObject.set("yearCost", decimalFormat.format(allCost));
//年减碳量
calculateAnnualCarbon = MaterialKilnModel.calculateAnnualCarbonReduction(lastYearFee, laborFee1, electric);
returnJsonObject.set("calculate", decimalFormat.format(calculateAnnualCarbon / 1000));
//替代电量
returnJsonObject.set("electric", decimalFormat.format(electric));

@ -5,8 +5,10 @@ import cn.hutool.json.JSONObject;
import com.dky.calculate.*;
import com.dky.modelI.DntdModelI;
import com.dky.utils.GetTargetDeviceList;
import com.dky.utils.GetThisEnergyEmissions;
import com.dky.utils.entity.SysDeviceHeatScene;
import com.dky.utils.enums.DeviceSubType;
import com.dky.utils.enums.EnergyEmissions;
import com.dky.utils.result.MatchedDevice;
import java.text.DecimalFormat;
@ -53,8 +55,6 @@ public class MetalKilnScene implements DntdModelI {
Double needTemp = Double.parseDouble(heatUseNeedInfo.get("needTemp").toString());
// 用户所属行业编码
String userIndustry = jsonObject.get("userIndustry").toString();
// 上年运行费用(元)
Double lastYearFee = Double.parseDouble(originalDevInfo.get("lastYearFee").toString());
// 根据供热需量设备功率计算出不同技术类型下所需要不同功率设备数据
List<SysDeviceHeatScene> schemeList = MetalKilnScheme.getSchemeList(userIndustry, needTemp, alternateDeviceList);
@ -107,6 +107,37 @@ public class MetalKilnScene implements DntdModelI {
laborFee1 = laborFee1 + (matchedDevice.getCount() * matchedDevice.getDeviceHeatScene().getLaborCost() / matchedDevice.getDeviceHeatScene().getDevServiceLife());
}
Double previousYearEnergyUsage = 1.0;
Double lastYearFee = 0.0;
Double energyPrice = 0.0;
try {
energyPrice = Double.parseDouble(originalDevInfo.get("energyPrice").toString());
} catch (NullPointerException e){
energyPrice = GetThisEnergyEmissions.getThisEnergyPrice((Integer) originalDevInfo.get("energyCode"));
}
try {
// 替代前年能源用量
previousYearEnergyUsage = Double.parseDouble(originalDevInfo.get("previousYearEnergyUsage").toString());
} catch (NullPointerException e){
lastYearFee = Double.parseDouble(originalDevInfo.get("lastYearFee").toString());
previousYearEnergyUsage = lastYearFee / energyPrice;
}
try {
// 上年运行费用(元)
lastYearFee = Double.parseDouble(originalDevInfo.get("lastYearFee").toString());
} catch (NullPointerException e) {
// e.printStackTrace();
System.out.println("计算因子采用默认值");
lastYearFee = HeatBoilerModel.calLastYearFee(laborFee1, previousYearEnergyUsage, energyPrice);
}
// 替代前上年原设备碳排放量
double energyLastYearFactor = HeatBoilerModel.calLastYearFactor(previousYearEnergyUsage, GetThisEnergyEmissions.getThisEnergyEmission((Integer) originalDevInfo.get("energyCode")));
// 年减碳量
calculateAnnualCarbon = HeatBoilerModel.calculateAnnualCarbonReduction(energyLastYearFactor, electric, EnergyEmissions.ELECTRIC.getCo2EmissionFactor());
//初次投资费用
returnJsonObject.set("startCost", decimalFormat.format(startCost));
// 设备总价
@ -116,7 +147,6 @@ public class MetalKilnScene implements DntdModelI {
//年总费用
returnJsonObject.set("yearCost", decimalFormat.format(allCost));
//年减碳量
calculateAnnualCarbon = MaterialKilnModel.calculateAnnualCarbonReduction(lastYearFee, laborFee1, electric);
returnJsonObject.set("calculate", decimalFormat.format(calculateAnnualCarbon / 1000));
//替代电量
returnJsonObject.set("electric", decimalFormat.format(electric));

@ -32,29 +32,29 @@ public class TestMain {
JSONObject param = new JSONObject();
param.put("type", "0105");
/*param.put("lastYearFee", 500000.2);
param.put("peopleNum", 88);*/
param.put("userIndustry", "3200");
param.put("userIndustry", "3240");
// param.put("peopleNum", 88);
param.put("distInfo", new JSONObject()
.put("runCapacity", 2400.0)
.put("lastYearNeed", 1600.0));
.put("runCapacity", 6000.0)
.put("lastYearNeed", 5382.0));
param.put("heatUseNeedInfo", new JSONObject()
.put("workArea", 11800)
.put("needTemp", 888.987)
.put("needTemp", 1088.987)
.put("yearOutPut", 1000000.0));
/*param.put("heatUseNeedInfo", new JSONObject()
.put("heatingNeedPower", 33)
.put("thermometerValueOut", 100.8));*/
.put("heatingNeedPower", 23)
.put("thermometerValueOut", 100.85));*/
/*param.put("originalDevInfo", new JSONObject()
.put("previousYearEnergyUsage", 24090000)
.put("lastYearFee", 3150000));*/
/*param.put("buildInfo", new JSONObject()
.put("previousYearEnergyUsage", 2409000)
.put("energyCode", 1));*/
/* param.put("buildInfo", new JSONObject()
.put("days", 185)
.put("heatingArea", 47639)
.put("lastYearFee", 3000000));*/
.put("energyCode", 1)
.put("heatingArea", 4000)
.put("lastYearFee", 6300000));*/
param.put("originalDevInfo", new JSONObject()
.put("previousYearEnergyUsage", 24090000)
.put("lastYearFee", 3000000));
.put("energyCode", 1)
.put("lastYearFee", 2100000));
/*param.put("energyInfo", new JSONObject()
.put("ut", 1180.0)
.put("i1", 888.987)

Loading…
Cancel
Save