2024-01-30 18:35:06

master
魔神煜修罗皇 1 year ago
parent 2725199dd2
commit a253c3a9c3
  1. 4
      dntd-model-buildheating/src/main/java/com/dky/calculate/BuildHeatingModel.java
  2. 2
      dntd-model-buildheating/src/main/java/com/dky/calculate/SchemeRating.java
  3. 36
      dntd-tool/src/main/java/com/dky/generate/BuildHeatingSence.java

@ -30,7 +30,7 @@ public class BuildHeatingModel {
Double devicePower,
Integer days,
Double laborCost){
return (deviceNum * devicePower * days * 24 * 0.5) + (laborCost * deviceNum);
return (deviceNum * devicePower * days * 24 * 0.5) + (laborCost );
}
/**
@ -49,7 +49,7 @@ public class BuildHeatingModel {
Double devicePower,
Integer days,
Double laborCost){
double run = (deviceNum * devicePower * days * 24 * 0.5) + (laborCost * deviceNum);;
double run = (deviceNum * devicePower * days * 24 * 0.5) + (laborCost );
return ((deviceNum * devicePrice) / useYears) + run;
}

@ -30,7 +30,7 @@ public class SchemeRating {
cost = cost + ((device.getCount() * device.getDeviceHeatScene().getDevPrice()) + (device.getCount()) * device.getDeviceHeatScene().getDevSubstituteLaborCost() * device.getDeviceHeatScene().getDevServiceLife());
}
rating.set(((1 - ((v1[0] - eff) / v1[0])) * 100 * 0.8) + ((1 - ((cost - v1[1]) / v1[1])) * 100 * 0.2));
System.out.println("方案: " + plan + ",评分 = " + rating + "\n");
// System.out.println("方案: " + plan + ",评分 = " + rating + "\n");
optimalMap.put(rating.get(), plan);
}

@ -10,6 +10,7 @@ import com.dky.utils.result.MatchedDevice;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
@ -23,16 +24,17 @@ public class BuildHeatingSence implements DntdModelI {
List<SysDeviceHeatScene> list = ModelTool.specList;
JSONObject distInfo = (JSONObject) jsonObject2.get("distInfo");
JSONObject buildInfo = (JSONObject) jsonObject2.get("buildInfo");
System.out.println("时间: " + Integer.parseInt(buildInfo.get("days").toString()));
// 运行容量
Double runCapacity = (Double) distInfo.get("runCapacity");
Double runCapacity = Double.parseDouble(distInfo.get("runCapacity").toString());
// 上年最大需量
Double lastYearNeed = (Double) distInfo.get("lastYearNeed");
Double lastYearNeed = Double.parseDouble(distInfo.get("lastYearNeed").toString());
// 建筑面积
Double heatingArea = (Double) buildInfo.get("heatingArea");
Double heatingArea = Double.parseDouble(buildInfo.get("heatingArea").toString());
// 年采暖时间(天)
Integer days = (Integer) buildInfo.get("days");
Integer days = Integer.parseInt(buildInfo.get("days").toString());
// 上年运行费用(万元)
Double lastYearFee = (Double) buildInfo.get("lastYearFee");
Double lastYearFee = Double.parseDouble(buildInfo.get("lastYearFee").toString());
Double A = runCapacity * 0.9 * 0.85;
// 冗余容量
@ -45,14 +47,19 @@ public class BuildHeatingSence implements DntdModelI {
map.forEach((k, v) -> {
if (k.contains("电锅炉")) {
C.set(v);
System.out.println("C" + C.get());
} else {
C1.set(v);
System.out.println("C1" + C1.get());
}
});
}
Double D = lastYearNeed + C.get();
Double D1 = lastYearNeed + C1.get();
List<MatchedDevice> matchedDeviceList = new ArrayList<>();
List<MatchedDevice> matchedDeviceList;
Map<Double, List<MatchedDevice>> listMap;
// 判断只能用热泵
if (D1 < A && A < D) {
List<SysDeviceHeatScene> deviceList = new ArrayList<>();
@ -61,11 +68,22 @@ public class BuildHeatingSence implements DntdModelI {
deviceList.add(sysDeviceHeatScene);
}
}));
matchedDeviceList = SchemeRating.getOptimalScheme(SchemeRating.getOptimalList(Scheme.calScheme(heatingArea, deviceList)));
listMap = SchemeRating.getOptimalList(Scheme.calScheme(heatingArea, deviceList));
matchedDeviceList = SchemeRating.getOptimalScheme(listMap);
} else {
matchedDeviceList = SchemeRating.getOptimalScheme(SchemeRating.getOptimalList(calScheme));
listMap = SchemeRating.getOptimalList(calScheme);
matchedDeviceList = SchemeRating.getOptimalScheme(listMap);
}
List<Map<String, Object>> maps = new ArrayList<>();
listMap.forEach((k,v)->{
Map<String, Object> map = new HashMap<>();
map.put("rating", decimalFormat.format(k));
map.put("plan", v);
map.put("planName", v.get(0).getDeviceHeatScene().getDevTechType());
maps.add(map);
});
JSONObject jsonObject = new JSONObject();
AtomicReference<String> planInfos = new AtomicReference<>();
AtomicReference<String> devTechType = new AtomicReference<>();
@ -100,6 +118,8 @@ public class BuildHeatingSence implements DntdModelI {
jsonObject.put("devCount", devCount.get().replace("null",""));
jsonObject.put("devPrice", devPrice.get().replace("null",""));
jsonObject.put("devCost", decimalFormat.format(startCost.get()));
jsonObject.put("safety", "精准控温");
jsonObject.put("matchedDeviceList", maps);
jsonObject.put("economy", Advantage.economy(startCost.get(), allCost.get(), runCost.get(), lastYearFee));
jsonObject.put("intelligence", Advantage.intelligence());
jsonObject.put("environment", Advantage.environment(Double.valueOf(decimalFormat.format(calculateAnnualCarbon.get()))));

Loading…
Cancel
Save