2024-03-20 17:00:00 建材电窑炉模型接口开发

master
魔神煜修罗皇 1 year ago
parent 3595d104dc
commit 611a4ae50d
  1. 124
      dntd-common/src/main/java/com/dky/utils/CalculateUtils.java
  2. 34
      dntd-common/src/main/java/com/dky/utils/enums/MetalKinTemps.java
  3. 32
      dntd-model-metalkiln/src/main/java/calculate/MetalKilnScheme.java
  4. 2
      dntd-model-metalkiln/src/main/resources/modelCode.properties
  5. 7
      dntd-tool/pom.xml
  6. 7
      dntd-tool/src/main/java/com/dky/generate/KitchenCookScene.java
  7. 139
      dntd-tool/src/main/java/com/dky/generate/MetalKilnScene.java
  8. 146
      dntd-tool/src/main/java/com/dky/stirtpar/StirparModelCalculate.java
  9. 33
      dntd-tool/src/main/java/com/dky/test/TestMain.java
  10. 46
      dntd-tool/src/main/resources/electricConsumeStirpatCoefficient.json
  11. 42
      dntd-tool/src/main/resources/energyConsumeStirpatCoefficient.json
  12. 4
      dntd-tool/src/main/resources/modelCode.properties

@ -0,0 +1,124 @@
package com.dky.utils;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* double的计算不精确会有类似0.0000000000000002的误差正确的方法是使用BigDecimal或者用整型
* 整型地方法适合于货币精度已知的情况比如12.11+1.10转成1211+110计算最后再/100即可
* 以下是摘抄的BigDecimal方法:
* @author Stone
*/
public class CalculateUtils {
private static final long serialVersionUID = -3345205828566485102L;
// 默认除法运算精度
private static final Integer DEF_DIV_SCALE = 2;
/**
* 提供精确的加法运算
*
* @param value1 被加数
* @param value2 加数
* @return 两个参数的和
*/
public static Double add(Double value1, Double value2) {
if (null == value1){
value1 = 0.0;
}
if (null == value2){
value2 = 0.0;
}
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.add(b2).doubleValue();
}
/**
* 提供精确的减法运算
*
* @param value1 被减数
* @param value2 减数
* @return 两个参数的差
*/
public static double sub(Double value1, Double value2) {
if (null == value1){
value1 = 0.0;
}
if (null == value2){
value2 = 0.0;
}
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.subtract(b2).doubleValue();
}
/**
* 提供精确的乘法运算
*
* @param value1 被乘数
* @param value2 乘数
* @return 两个参数的积
*/
public static Double mul(Double value1, Double value2) {
if (null == value1){
value1 = 0.0;
}
if (null == value2){
value2 = 0.0;
}
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.multiply(b2).doubleValue();
}
/**
* 提供相对精确的除法运算当发生除不尽的情况时 精确到小数点以后10位以后的数字四舍五入
*
* @param dividend 被除数
* @param divisor 除数
* @return 两个参数的商
*/
public static Double divide(Double dividend, Double divisor) {
if (null == dividend){
dividend = 0.0;
}
if (null == divisor){
divisor = 1.0;
}
return divide(dividend, divisor, DEF_DIV_SCALE);
}
/**
* 提供相对精确的除法运算 当发生除不尽的情况时由scale参数指定精度以后的数字四舍五入
*
* @param dividend 被除数
* @param divisor 除数
* @param scale 表示表示需要精确到小数点以后几位
* @return 两个参数的商
*/
public static Double divide(Double dividend, Double divisor, Integer scale) {
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(dividend));
BigDecimal b2 = new BigDecimal(Double.toString(divisor));
return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue();
}
/**
* 提供指定数值的精确小数位四舍五入处理
*
* @param value 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double value, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(value));
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue();
}
}

@ -0,0 +1,34 @@
package com.dky.utils.enums;
public enum MetalKinTemps {
Metal_Kiln_Direct_Heat_Min_Temp(648.0, "直接加热电阻炉"),
Metal_Kiln_Direct_Heat_Max_Temp(857.9, "直接加热电阻炉"),
Metal_Kiln_Interstitial_Heat_Min_Temp(858.0, "间接加热电阻炉(钟罩式光亮退火炉)"),
Metal_Kiln_Interstitial_Heat_Max_Temp(996.9, "间接加热电阻炉(钟罩式光亮退火炉)"),
Metal_Kiln_Induction_Min_Temp(997.0, "中/高频感应电炉"),
Metal_Kiln_Induction_Max_Temp(1285.7, "中/高频感应电炉");
/**
* 温度
*/
private final Double temp;
/**
* 描述
*/
private final String desc;
public Double getTemp() {
return temp;
}
public String getDesc() {
return desc;
}
MetalKinTemps(Double temp, String desc) {
this.temp = temp;
this.desc = desc;
}
}

@ -3,6 +3,8 @@ package calculate;
import com.dky.utils.ConfigReader;
import com.dky.utils.entity.SysDeviceHeatScene;
import com.dky.utils.enums.DeviceSubType;
import com.dky.utils.enums.MetalKinTemps;
import com.dky.utils.result.MatchedDevice;
import java.util.*;
@ -41,31 +43,55 @@ public class MetalKilnScheme {
return matchedDeviceList;
}
public static void getSchemeList(List<SysDeviceHeatScene> sysDeviceHeatSceneList) {
public static List<SysDeviceHeatScene> getSchemeList(String userIndustry, Double needTemp, List<SysDeviceHeatScene> sysDeviceHeatSceneList) {
// 黑色金属矿采选业 行业编码
String property = ConfigReader.getProperty("industry_code");
Map<String, Object> map = new HashMap<>();
List<SysDeviceHeatScene> sceneDevicesList = new ArrayList<>();
// 将sysDeviceHeatSceneList流转换为排序后的ArrayList<SysDeviceHeatScene>对象。
// 排序依据是SysDeviceHeatScene对象的getDevTechType方法返回的值。
ArrayList<SysDeviceHeatScene> ary = sysDeviceHeatSceneList.stream().collect(
Collectors.collectingAndThen(
// 使用TreeSet收集元素,以保证收集后的集合是按照getDevTechType方法返回值排序的。
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SysDeviceHeatScene::getDevTechType))),
// 将TreeSet转换为ArrayList。
ArrayList::new
)
);
// 遍历ary数组中的每个元素
ary.forEach((item) -> {
List<SysDeviceHeatScene> list = new ArrayList<>();
// 遍历sysDeviceHeatSceneList列表,筛选出与当前item的设备技术类型相同的设备
sysDeviceHeatSceneList.forEach((device) -> {
if (device.getDevTechType().equals(item.getDevTechType())) {
list.add(device);
list.add(device); // 将符合条件的设备添加到list中
}
});
// 将按照设备技术类型分组后的设备列表,添加到map中
map.put(item.getDevTechType(), list);
});
}
if (userIndustry.equals(property)) {
sceneDevicesList = (List<SysDeviceHeatScene>) map.get(DeviceSubType.Metal_Kiln_Electric_Arc.getDesc());
} else {
if (needTemp >= MetalKinTemps.Metal_Kiln_Direct_Heat_Min_Temp.getTemp() && needTemp <= MetalKinTemps.Metal_Kiln_Direct_Heat_Max_Temp.getTemp()){
sceneDevicesList = (List<SysDeviceHeatScene>) map.get(DeviceSubType.Metal_Kiln_Direct_Heat.getDesc());
} else if (needTemp >= MetalKinTemps.Metal_Kiln_Interstitial_Heat_Min_Temp.getTemp() && needTemp <= MetalKinTemps.Metal_Kiln_Interstitial_Heat_Max_Temp.getTemp()){
sceneDevicesList = (List<SysDeviceHeatScene>) map.get(DeviceSubType.Metal_Kiln_Interstitial_Heat.getDesc());
} else if (needTemp >= MetalKinTemps.Metal_Kiln_Induction_Min_Temp.getTemp() && needTemp <= MetalKinTemps.Metal_Kiln_Induction_Max_Temp.getTemp()) {
sceneDevicesList = (List<SysDeviceHeatScene>) map.get(DeviceSubType.Metal_Kiln_Induction.getDesc());
}
}
return sceneDevicesList;
}
public static void main(String[] args) {
String property = ConfigReader.getProperty("industry_code");
System.out.println(property);
}
}

@ -62,6 +62,12 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.dky</groupId>
<artifactId>dntd-model-metalkiln</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<resources>
@ -70,6 +76,7 @@
<filtering>true</filtering>
<includes>
<include>*.properties</include>
<include>**/*.json</include>
</includes>
</resource>
</resources>

@ -1,7 +1,10 @@
package com.dky.generate;
import cn.hutool.json.JSONObject;
import com.dky.calculate.*;
import com.dky.calculate.Advantage;
import com.dky.calculate.BuildHeatingAdvantage;
import com.dky.calculate.KitchenCookModel;
import com.dky.calculate.KitchenCookScheme;
import com.dky.modelI.DntdModelI;
import com.dky.utils.GetTargetDeviceList;
import com.dky.utils.entity.SysDeviceHeatScene;
@ -12,7 +15,6 @@ import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class KitchenCookScene implements DntdModelI {
@ -127,6 +129,7 @@ public class KitchenCookScene implements DntdModelI {
returnJsonObject.set("intelligence", BuildHeatingAdvantage.intelligence());
returnJsonObject.set("environment", BuildHeatingAdvantage.environment(Double.valueOf(decimalFormat.format(calculateAnnualCarbon/1000))));
return returnJsonObject;
}

@ -0,0 +1,139 @@
package com.dky.generate;
import calculate.MetalKilnScheme;
import cn.hutool.json.JSONObject;
import com.dky.calculate.*;
import com.dky.modelI.DntdModelI;
import com.dky.utils.GetTargetDeviceList;
import com.dky.utils.entity.SysDeviceHeatScene;
import com.dky.utils.enums.DeviceSubType;
import com.dky.utils.result.MatchedDevice;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
public class MetalKilnScene implements DntdModelI {
DecimalFormat decimalFormat = new DecimalFormat("#.00");
// 首先A=由运行/合同容量折合成kW(x0.9)x85%,
static final Double COEFFICIENT_1 = 0.9;
static final Double COEFFICIENT_2 = 0.85;
@Override
public JSONObject createReport(JSONObject jsonObject, List<SysDeviceHeatScene> list) {
List<SysDeviceHeatScene> alternateDeviceList = GetTargetDeviceList.main(DeviceSubType.Metal_Kiln.getDesc(), list);
JSONObject distInfo = new JSONObject();
JSONObject heatUseNeedInfo = new JSONObject();
JSONObject originalDevInfo = new JSONObject();
try {
distInfo = (JSONObject) jsonObject.get("distInfo");
heatUseNeedInfo = (JSONObject) jsonObject.get("heatUseNeedInfo");
originalDevInfo = (JSONObject) jsonObject.get("originalDevInfo");
} catch (Exception e) {
e.printStackTrace();
}
// 运行容量
Double runCapacity = Double.parseDouble(distInfo.get("runCapacity").toString());
// 上年最大需量
Double lastYearNeed = Double.parseDouble(distInfo.get("lastYearNeed").toString());
// 工作容积(单位: m³)【 1 立方米=1000 升 】
Double workArea = Double.parseDouble(heatUseNeedInfo.get("workArea").toString()) / 1000;
// 预计年产量(吨)
Double yearOutPut = Double.parseDouble(heatUseNeedInfo.get("yearOutPut").toString());
// 温度要求(摄氏度)
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);
List<MatchedDevice> matchedDeviceGroupList = MetalKilnScheme.calSchemeByTechType(workArea, schemeList);
// 实际可承载容量A = 运行(或合同容量)x0.9 [将运行容量或合同容量折算成容量] x85%
double A = runCapacity * COEFFICIENT_1 * COEFFICIENT_2;
// 根据供热需量设备功率计算每个技术类型下需要的不同功率的设备的数量,然后将不同功率及对应的数量进行计算得出总功率C1,取最大
Double C1 = CalC.getC1(Collections.singletonList(matchedDeviceGroupList));
// 改造后最大需量
double D1 = lastYearNeed + C1;
String remark = "";
// 同时考虑热泵和电锅炉
if (A < D1) {
remark = "本方案存在扩容投资需求,扩容投资不计入初次投资费用";
}
/*
封装返回
*/
JSONObject returnJsonObject = new JSONObject();
Double startCost = 0.0;
Double runCost = 0.0;
Double allCost = 0.0;
Double calculateAnnualCarbon = 0.0;
Double laborFee1 = 0.0;
Double electric = 0.0;
List<HashMap<String, Object>> deviceList = new ArrayList<>();
for (MatchedDevice matchedDevice : matchedDeviceGroupList) {
HashMap<String, Object> map = new HashMap<>();
map.put("devSubType", matchedDevice.getDeviceHeatScene().getDevSubType());
map.put("devTechType", matchedDevice.getDeviceHeatScene().getDevTechType());
map.put("devCount", matchedDevice.getCount());
map.put("devPrice", matchedDevice.getDeviceHeatScene().getDevPrice());
deviceList.add(map);
startCost = startCost + (matchedDevice.getCount() * matchedDevice.getDeviceHeatScene().getDevPrice());
runCost = runCost + (MaterialKilnModel.calculateAnnualOperatingCost(matchedDevice.getDeviceHeatScene().getDevPower(), matchedDevice.getCount(), matchedDevice.getDeviceHeatScene().getDevSubstituteLaborCost(), matchedDevice.getDeviceHeatScene().getDevAnnualOperationTime()));
allCost = allCost + (MaterialKilnModel.calculateAnnualTotalCost(matchedDevice.getDeviceHeatScene().getDevPower(), matchedDevice.getCount(), matchedDevice.getDeviceHeatScene().getDevSubstituteLaborCost(),
matchedDevice.getDeviceHeatScene().getDevAnnualOperationTime(), matchedDevice.getDeviceHeatScene().getDevPrice(), matchedDevice.getDeviceHeatScene().getDevServiceLife()));
electric = electric + (MaterialKilnModel.calculateSubstituteElectricity(matchedDevice.getDeviceHeatScene().getDevPower(), matchedDevice.getCount(), matchedDevice.getDeviceHeatScene().getDevAnnualOperationTime()));
laborFee1 = laborFee1 + (matchedDevice.getCount() * matchedDevice.getDeviceHeatScene().getLaborCost() / matchedDevice.getDeviceHeatScene().getDevServiceLife());
}
//初次投资费用
returnJsonObject.set("startCost", decimalFormat.format(startCost));
// 设备总价
returnJsonObject.set("devCost", decimalFormat.format(startCost));
//年运行费用
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));
//备注
returnJsonObject.set("remark", remark);
//封装需配置设备情况
returnJsonObject.set("deviceList", deviceList);
//封装方案优势
returnJsonObject.set("safety", BuildHeatingAdvantage.safety());
returnJsonObject.set("economy", Advantage.economy(startCost, runCost, lastYearFee));
returnJsonObject.set("intelligence", BuildHeatingAdvantage.intelligence());
returnJsonObject.set("environment", BuildHeatingAdvantage.environment(Double.valueOf(decimalFormat.format(calculateAnnualCarbon / 1000))));
return returnJsonObject;
}
}

@ -0,0 +1,146 @@
package com.dky.stirtpar;
import cn.hutool.json.JSONObject;
import com.dky.modelI.DntdModelI;
import com.dky.utils.CalculateUtils;
import com.dky.utils.entity.SysDeviceHeatScene;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.text.DecimalFormat;
import java.util.List;
public class StirparModelCalculate implements DntdModelI {
DecimalFormat df = new DecimalFormat("#.00");
/**
* 计算热源消耗总量
* @param provinceCode 省份编码
* @param peopleNum 人口
* @param averageGdp 人均GDP
* @param U 城市化率
* @param I 工业增加值
* @param II 工业能源强度
* @return
*/
public static Double energyConsumeStirCoefficient(String provinceCode, Integer peopleNum, Double averageGdp, Double U, Double I, Double II) {
JSONObject jo = (JSONObject) toJSON("energyConsumeStirpatCoefficient.json").get(provinceCode);
Double a = Double.parseDouble(jo.get("a").toString());
Double b1 = Double.parseDouble(jo.get("b1").toString());
Double b2 = Double.parseDouble(jo.get("b2").toString());
Double b3 = Double.parseDouble(jo.get("b3").toString());
Double b4 = Double.parseDouble(jo.get("b4").toString());
Double b5 = Double.parseDouble(jo.get("b5").toString());
Double b6 = Double.parseDouble(jo.get("b6").toString());
Double e = Double.parseDouble(jo.get("e").toString());
Double add1 = CalculateUtils.add(a, b1 * Math.log(peopleNum));
Double add2 = CalculateUtils.add(add1, b2 * Math.log(U));
Double add3 = CalculateUtils.add(add2, b3 * Math.log(averageGdp));
Double add4 = CalculateUtils.add(add3, b4 * Math.pow(Math.log(averageGdp), 2));
Double add5 = CalculateUtils.add(add4, b5 * Math.log(I));
Double add6 = CalculateUtils.add(add5, b6 * Math.log(II));
Double add7 = CalculateUtils.add(add6, e);
return Math.round(Math.exp(add7) * 100) / 100.0;
}
/**
* 计算电耗消耗总量
* @param provinceCode 省份编码
* @param CT 能源消耗量
* @param peopleNum 人口
* @param averageGdp 人均GDP
* @param U 城市化率
* @param PR 电力价格
* @param T 年均温度
* @return
*/
public static Double electricConsumeStirCoefficient(String provinceCode, Double CT, Integer peopleNum, Double averageGdp, Double U, Double PR, Double T) {
JSONObject jo = (JSONObject) toJSON("electricConsumeStirpatCoefficient.json").get(provinceCode);
Double a = Double.parseDouble(jo.get("a").toString());
Double b1 = Double.parseDouble(jo.get("b1").toString());
Double b2 = Double.parseDouble(jo.get("b2").toString());
Double b3 = Double.parseDouble(jo.get("b3").toString());
Double b4 = Double.parseDouble(jo.get("b4").toString());
Double b5 = Double.parseDouble(jo.get("b5").toString());
Double b6 = Double.parseDouble(jo.get("b6").toString());
Double b7 = Double.parseDouble(jo.get("b7").toString());
Double e = Double.parseDouble(jo.get("e").toString());
Double add1 = CalculateUtils.add(a, b1 * Math.log(CT));
Double add2 = CalculateUtils.add(add1, b2 * Math.log(peopleNum));
Double add3 = CalculateUtils.add(add2, b3 * Math.log(U));
Double add4 = CalculateUtils.add(add3, b4 * Math.log(U));
Double add5 = CalculateUtils.add(add4, b5 * Math.log(averageGdp));
Double add6 = CalculateUtils.add(add5, b6 * Math.log(PR));
Double add7 = CalculateUtils.add(add6, b7 * Math.log(T));
Double add8 = CalculateUtils.add(add7, e);
return Math.round(Math.exp(add8) * 100) / 100.0;
}
public static JSONObject toJSON(String fileName) {
// 使用ClassLoader的getResourceAsStream方法读取资源文件
InputStream inputStream = StirparModelCalculate.class.getClassLoader().getResourceAsStream(fileName);
if (inputStream == null) {
System.out.println("读取文件失败");
}
// 使用BufferedReader读取InputStream中的内容
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
StringBuilder stringBuilder = new StringBuilder();
String currentLine;
try {
while ((currentLine = reader.readLine()) != null) {
stringBuilder.append(currentLine);
}
} catch (Exception e) {
e.printStackTrace();
}
// 关闭BufferedReader
try {
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
return new JSONObject(stringBuilder.toString());
}
@Override
public JSONObject createReport(JSONObject jsonObject, List<SysDeviceHeatScene> alternateDeviceList) {
JSONObject electricInfo = new JSONObject();
JSONObject energyInfo = new JSONObject();
try {
energyInfo = (JSONObject) jsonObject.get("energyInfo");
electricInfo = (JSONObject) jsonObject.get("electricInfo");
} catch (Exception e) {
e.printStackTrace();
}
String provinceCode = jsonObject.get("provinceCode").toString();
Integer peopleNum = Integer.parseInt(new DecimalFormat("#").format(energyInfo.get("peopleNum")));
Double averageGdp = Double.parseDouble(energyInfo.get("averageGdp").toString());
Double U = Double.parseDouble(energyInfo.get("ut").toString());
Double I = Double.parseDouble(energyInfo.get("i1").toString());
Double II = Double.parseDouble(energyInfo.get("i2").toString());
Double PR = Double.parseDouble(electricInfo.get("PR").toString());
Double CT = Double.parseDouble(electricInfo.get("CT").toString());
Double T = Double.parseDouble(electricInfo.get("T").toString());
JSONObject resultJsonObject = new JSONObject();
resultJsonObject.put("CT", df.format(energyConsumeStirCoefficient(provinceCode, peopleNum, averageGdp, U, I, II)));
resultJsonObject.put("CE", df.format(electricConsumeStirCoefficient(provinceCode, CT, peopleNum, averageGdp, U, PR, T)));
return resultJsonObject;
}
}

@ -31,15 +31,17 @@ public class TestMain {
mafwefaefwaefawfapList.add(fawdfweawerwgggawfg);
JSONObject param = new JSONObject();
param.put("type", "0102");
param.put("type", "0105");
/*param.put("lastYearFee", 500000.2);
param.put("peopleNum", 88);*/
param.put("userIndustry", "3200");
param.put("distInfo", new JSONObject()
.put("runCapacity", 2400.0)
.put("lastYearNeed", 1600.0));
/*param.put("heatUseNeedInfo", new JSONObject()
param.put("heatUseNeedInfo", new JSONObject()
.put("workArea", 11800)
.put("yearOutPut", 1000000.0));*/
.put("needTemp", 888.987)
.put("yearOutPut", 1000000.0));
/*param.put("heatUseNeedInfo", new JSONObject()
.put("heatingNeedPower", 33)
.put("thermometerValueOut", 100.8));*/
@ -50,12 +52,19 @@ public class TestMain {
.put("days", 185)
.put("heatingArea", 47639)
.put("lastYearFee", 3000000));*/
param.put("heatUseNeedInfo", new JSONObject()
.put("heatingNeedPower", 33)
.put("thermometerValueOut", 112.45));
param.put("originalDevInfo", new JSONObject()
.put("previousYearEnergyUsage", 24090000)
.put("lastYearFee", 3000000));
/*param.put("energyInfo", new JSONObject()
.put("ut", 1180.0)
.put("i1", 888.987)
.put("i2", 1000.0)
.put("peopleNum", 10000000.0)
.put("averageGdp", 10000.0));
param.put("electricInfo", new JSONObject()
.put("PR", 11800)
.put("CT", 12444888.987)
.put("T", 1000000.0));*/
String key = "BPTfj7kSlu6fJHpn/t2IQ1R83MPuA3sjgySntyYRo8GEgUNnTYoxaOX2FTK+X/bPllVx8Ly4/1l2FUb9JwRRbzbMPIdIfal7qO4ftJKJTN1M555BUSyGUOEBHivrarFiliiwnZH5dD4YV+kRUUD70o/1zEysm5M6/FrzXebRcH9EsnLEGta9D+urvisjamjQmunV3razxlsd+SYvbSsYmDRp8QjbJLpkfrlJBL484cB5Nhj8XWx8IZb3lvINkkq+";
// 构建JSONObject对象
@ -144,6 +153,18 @@ public class TestMain {
{66, "电窑炉", "建材电窑炉", "建材电窑炉", null, 25, 26000.00, 60000.00, 180000.00, null, 15, 4500, null, null,0.20,2500.00,500.00,4.00},
{67, "电窑炉", "建材电窑炉", "建材电窑炉", null, 145, 140000.00, 60000.00, 180000.00, null, 15, 4500, null, null,1.50,2500.00,3750.00,4.00},
{68, "电窑炉", "建材电窑炉", "建材电窑炉", null, 300, 250000.00, 60000.00, 180000.00, null, 15, 4500, null, null,3.00,2500.00,7500.00,4.00},
{69, "电窑炉", "冶金窑炉", "直接加热电阻炉", null, 25, 26000.00, 60000.00, 180000.00, null, 15, 4500, null, null,0.20,7800.00,1560.00,4.00},
{70, "电窑炉", "冶金窑炉", "直接加热电阻炉", null, 145, 140000.00, 60000.00, 180000.00, null, 15, 4500, null, null,1.50,7800.00,11700.00,4.00},
{71, "电窑炉", "冶金窑炉", "直接加热电阻炉", null, 300, 250000.00, 60000.00, 180000.00, null, 15, 4500, null, null,3.00,7800.00,23400.00,4.00},
{72, "电窑炉", "冶金窑炉", "间接加热电阻炉(钟罩式光亮退火炉)", null, 25, 60000.00, 60000.00, 180000.00, null, 15, 4500, null, null,0.20,7800.00,1560.00,4.00},
{73, "电窑炉", "冶金窑炉", "间接加热电阻炉(钟罩式光亮退火炉)", null, 145, 250000.00, 60000.00, 180000.00, null, 15, 4500, null, null,1.50,7800.00,11700.00,4.00},
{74, "电窑炉", "冶金窑炉", "间接加热电阻炉(钟罩式光亮退火炉)", null, 300, 450000.00, 60000.00, 180000.00, null, 15, 4500, null, null,3.00,7800.00,23400.00,4.00},
{75, "电窑炉", "冶金窑炉", "电弧炉(钢包精炼LF炉)", null, 25, 28000.00, 60000.00, 180000.00, null, 15, 4500, null, null,0.20,7800.00,1560.00,4.00},
{76, "电窑炉", "冶金窑炉", "电弧炉(钢包精炼LF炉)", null, 145, 150000.00, 60000.00, 180000.00, null, 15, 4500, null, null,1.50,7800.00,11700.00,4.00},
{77, "电窑炉", "冶金窑炉", "电弧炉(钢包精炼LF炉)", null, 300, 260000.00, 60000.00, 180000.00, null, 15, 4500, null, null,3.00,7800.00,23400.00,4.00},
{78, "电窑炉", "冶金窑炉", "中/高频感应电炉", null, 25, 40000.00, 60000.00, 180000.00, null, 15, 4500, null, null,0.20,7800.00,1560.00,4.00},
{79, "电窑炉", "冶金窑炉", "中/高频感应电炉", null, 145, 190000.00, 60000.00, 180000.00, null, 15, 4500, null, null,1.50,7800.00,11700.00,4.00},
{80, "电窑炉", "冶金窑炉", "中/高频感应电炉", null, 300, 270000.00, 60000.00, 180000.00, null, 15, 4500, null, null,3.00,7800.00,23400.00,4.00},
};
// 创建对象并添加到列表

@ -0,0 +1,46 @@
{
"110000": {
"a": 1,
"b1": 2,
"b2": 3,
"b3": 4,
"b4": 5,
"b5": 6,
"b6": 7,
"b7": 9,
"e": 8
},
"120000": {
"a": 1,
"b1": 2,
"b2": 3,
"b3": 4,
"b4": 5,
"b5": 6,
"b6": 7,
"b7": 9,
"e": 8
},
"310000": {
"a": 1,
"b1": 2,
"b2": 3,
"b3": 4,
"b4": 5,
"b5": 6,
"b6": 7,
"b7": 9,
"e": 8
},
"500000": {
"a": 1,
"b1": 2,
"b2": 3,
"b3": 4,
"b4": 5,
"b5": 6,
"b6": 7,
"b7": 9,
"e": 8
}
}

@ -0,0 +1,42 @@
{
"110000": {
"a": 1,
"b1": 2,
"b2": 3,
"b3": 4,
"b4": 5,
"b5": 6,
"b6": 7,
"e": 8
},
"120000": {
"a": 1,
"b1": 2,
"b2": 3,
"b3": 4,
"b4": 5,
"b5": 6,
"b6": 7,
"e": 8
},
"310000": {
"a": 1,
"b1": 2,
"b2": 3,
"b3": 4,
"b4": 5,
"b5": 6,
"b6": 7,
"e": 8
},
"500000": {
"a": 1,
"b1": 2,
"b2": 3,
"b3": 4,
"b4": 5,
"b5": 6,
"b6": 7,
"e": 8
}
}

@ -1,4 +1,6 @@
0101=generate.BuildHeatingScene
0102=generate.HeatBoilerScene
0103=generate.KitchenCookScene
0104=generate.MaterialKilnScene
0104=generate.MaterialKilnScene
0105=generate.MetalKilnScene
0106=stirtpar.StirparModelCalculate
Loading…
Cancel
Save