diff --git a/dntd-common/src/main/java/com/dky/utils/enums/EnergyPriceType.java b/dntd-common/src/main/java/com/dky/utils/enums/EnergyPriceType.java index ecbb84f..67a4a20 100644 --- a/dntd-common/src/main/java/com/dky/utils/enums/EnergyPriceType.java +++ b/dntd-common/src/main/java/com/dky/utils/enums/EnergyPriceType.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, "原油平均价格/千克"), diff --git a/dntd-tool/src/main/java/com/dky/generate/BuildHeatingScene.java b/dntd-tool/src/main/java/com/dky/generate/BuildHeatingScene.java index 71cff04..9a79603 100644 --- a/dntd-tool/src/main/java/com/dky/generate/BuildHeatingScene.java +++ b/dntd-tool/src/main/java/com/dky/generate/BuildHeatingScene.java @@ -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)); diff --git a/dntd-tool/src/main/java/com/dky/generate/HeatBoilerScene.java b/dntd-tool/src/main/java/com/dky/generate/HeatBoilerScene.java index b0c5527..df3ac2e 100644 --- a/dntd-tool/src/main/java/com/dky/generate/HeatBoilerScene.java +++ b/dntd-tool/src/main/java/com/dky/generate/HeatBoilerScene.java @@ -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); } // 替代前上年原设备碳排放量 diff --git a/dntd-tool/src/main/java/com/dky/generate/KitchenCookScene.java b/dntd-tool/src/main/java/com/dky/generate/KitchenCookScene.java index 0a7156b..edd83fc 100644 --- a/dntd-tool/src/main/java/com/dky/generate/KitchenCookScene.java +++ b/dntd-tool/src/main/java/com/dky/generate/KitchenCookScene.java @@ -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 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)); diff --git a/dntd-tool/src/main/java/com/dky/generate/MaterialKilnScene.java b/dntd-tool/src/main/java/com/dky/generate/MaterialKilnScene.java index c4560b7..90a2068 100644 --- a/dntd-tool/src/main/java/com/dky/generate/MaterialKilnScene.java +++ b/dntd-tool/src/main/java/com/dky/generate/MaterialKilnScene.java @@ -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 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)); diff --git a/dntd-tool/src/main/java/com/dky/generate/MetalKilnScene.java b/dntd-tool/src/main/java/com/dky/generate/MetalKilnScene.java index 8a3a691..35d7462 100644 --- a/dntd-tool/src/main/java/com/dky/generate/MetalKilnScene.java +++ b/dntd-tool/src/main/java/com/dky/generate/MetalKilnScene.java @@ -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 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)); diff --git a/dntd-tool/src/main/java/com/dky/test/TestMain.java b/dntd-tool/src/main/java/com/dky/test/TestMain.java index 0aaaa58..762b8cf 100644 --- a/dntd-tool/src/main/java/com/dky/test/TestMain.java +++ b/dntd-tool/src/main/java/com/dky/test/TestMain.java @@ -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)