Browse Source

1、梅州监视界面优化

dev_mz
3067418132@qq.com 2 weeks ago
parent
commit
81fe5824f2
  1. 1
      mh-admin/src/main/java/com/mh/web/controller/device/ChillersParamsController.java
  2. 55
      mh-admin/src/test/java/com/mh/MHApplicationTest.java
  3. 7
      mh-common/src/main/java/com/mh/common/core/domain/dto/SysPerformanceDTO.java
  4. 4
      mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java
  5. 83
      mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java
  6. 6
      mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java

1
mh-admin/src/main/java/com/mh/web/controller/device/ChillersParamsController.java

@ -90,6 +90,7 @@ public class ChillersParamsController extends BaseController {
// 使用正则表达式去掉“号主机”及之前的内容
String result = otherName != null ? otherName.replaceFirst(".*号主机", "") : otherName;
result = result != null ? result.replace("-", "") : result;
result = result != null ? result.replace("系统1", "") : result;
item.setOtherName(result);
});
// list中的CollectionParamsManage对象赋值到CollectionParamsManageVO2形成List<CollectionParamsManageVO2>

55
mh-admin/src/test/java/com/mh/MHApplicationTest.java

@ -22,6 +22,7 @@ import com.mh.system.service.overview.IProOverviewService;
import com.mh.system.service.report.IComprehensiveReportService;
import com.mh.system.service.report.IMeterReadingsHisService;
import com.mh.system.service.report.IReportHotWaterService;
import com.mh.web.controller.monitor.CoolingSystemMonitorController;
import jakarta.annotation.Resource;
import org.checkerframework.checker.units.qual.A;
import org.junit.jupiter.api.Test;
@ -29,6 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
@ -66,6 +69,58 @@ public class MHApplicationTest {
@Autowired
private IComprehensiveReportService comprehensiveReportService;
@Autowired
private CoolingSystemMonitorController iCoolingSystemMonitorService;
@Test
public void getSys() {
// iCoolingSystemMonitorService.getSysPerformance();
// 蒸发器侧(冷冻水):Qev = (冷冻水流量 × (冷冻回水温度 - 冷冻供水温度)) / 0.86
BigDecimal freezingFlow = new BigDecimal("260");
BigDecimal freezingSupplyTemp = new BigDecimal("15.8");
BigDecimal freezingReturnTemp = new BigDecimal("18.7");
// 冷凝器侧(冷却水):Qcd = (冷却水流量 × (冷却回水温度 - 冷却供水温度)) / 0.86
BigDecimal coolingFlow = new BigDecimal("280.280");
BigDecimal coolingSupplyTemp = new BigDecimal("34.030");
BigDecimal coolingReturnTemp = new BigDecimal("30.890");
// 主机3瞬时读数(功率)
BigDecimal chillerPower = new BigDecimal("113.7");
BigDecimal qev = null;
BigDecimal qcd = null;
// 计算蒸发器制冷量 Qev
if (freezingFlow != null && freezingSupplyTemp != null && freezingReturnTemp != null) {
BigDecimal deltaT = freezingReturnTemp.subtract(freezingSupplyTemp).abs();
qev = freezingFlow.multiply(deltaT)
.divide(new BigDecimal("0.86"), 2, RoundingMode.HALF_UP);
}
// 计算冷凝器排热量 Qcd
if (coolingFlow != null && coolingSupplyTemp != null && coolingReturnTemp != null) {
BigDecimal deltaT = coolingReturnTemp.subtract(coolingSupplyTemp).abs();
qcd = coolingFlow.multiply(deltaT)
.divide(new BigDecimal("0.86"), 2, RoundingMode.HALF_UP);
}
// 计算热平衡率 = Qev / (Qcd - 主机3瞬时读数) × 100%
if (qev != null && qcd != null && chillerPower != null) {
BigDecimal denominator = qcd.subtract(chillerPower);
if (denominator.compareTo(BigDecimal.ZERO) > 0) {
BigDecimal heatBalance = qev.divide(denominator, 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
// 这里再增加一个判断,数据有效区间95%~105%。如果高于105%,则设置为105%。如果低于95%,则设置为95%。
if (heatBalance.compareTo(new BigDecimal("105")) > 0) {
heatBalance = new BigDecimal("105");
} else if (heatBalance.compareTo(new BigDecimal("95")) < 0) {
heatBalance = new BigDecimal("95");
}
System.out.println(heatBalance);
}
}
}
@Test
public void comprehensiveReport() {
long startTime = System.currentTimeMillis();

7
mh-common/src/main/java/com/mh/common/core/domain/dto/SysPerformanceDTO.java

@ -22,12 +22,19 @@ public class SysPerformanceDTO {
private BigDecimal realCold;
// 热平衡率
private BigDecimal heatBalance;
private BigDecimal yearEER;
private BigDecimal yearPower;
private BigDecimal yearCold;
public void setHeatBalance(BigDecimal heatBalance) {
this.heatBalance = heatBalance;
}
public void setRealEER(BigDecimal realEER) {
this.realEER = realEER.setScale(1, BigDecimal.ROUND_HALF_UP);
}

4
mh-system/src/main/java/com/mh/system/mapper/device/CollectionParamsManageMapper.java

@ -151,14 +151,14 @@ public interface CollectionParamsManageMapper extends BaseMapper<CollectionParam
" hi.order_num, " +
" cpm.param_type, " +
" CASE " +
" WHEN ar.create_time >= CURRENT_DATE AND ar.create_time < CURRENT_DATE + interval '1 day' " +
" WHEN ar.create_time >= CURRENT_TIMESTAMP - interval '1 hour' " +
" THEN 1 " +
" ELSE 0 " +
" END as alarm_status, " +
" ROW_NUMBER() OVER ( " +
" PARTITION BY csr.house_id " +
" ORDER BY " +
" CASE WHEN ar.create_time >= CURRENT_DATE AND ar.create_time < CURRENT_DATE + interval '1 day' THEN 0 ELSE 1 END, " +
" CASE WHEN ar.create_time >= CURRENT_TIMESTAMP - interval '1 hour' THEN 0 ELSE 1 END, " +
" cpm.cur_time DESC " +
" ) as row_num " +
" FROM " +

83
mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java

@ -353,6 +353,74 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer
sysPerformanceDTO.setYearEER(yearEer);
}
}
// 查询热平衡率
// 查询总表的数据
QueryWrapper<CollectionParamsManage> queryWrapper1 = new QueryWrapper<CollectionParamsManage>()
.eq("system_type", "0")
.in("param_type", Arrays.asList("12", "13", "16", "31"))
.in("other_name", Arrays.asList("总冷量计瞬时流量",
"冷冻供水温度",
"冷冻回水温度",
"总冷却冷量计瞬时流量",
"冷却供水温度",
"冷却回水温度",
"主机3瞬时读数"));
List<CollectionParamsManage> collectionParamsManages1 = collectionParamsManageMapper.selectList(queryWrapper1);
// 流量单位:推断为 m³/h(立方米/小时)。
//水的比热容Cp:取 4.186 kJ/(kg·℃)。
//水的密度ρ:取 1000 kg/m³。
//换算系数:将 m³/h 换算为 kW 的快捷系数为 0.86(因为 1 kW = 1 kJ/s,1小时=3600秒,系数≈ 3600/4186)。
if (null != collectionParamsManages1 && !collectionParamsManages1.isEmpty()) {
// 蒸发器侧(冷冻水):Qev = (冷冻水流量 × (冷冻回水温度 - 冷冻供水温度)) / 0.86
BigDecimal freezingFlow = findCurValue(collectionParamsManages1, "总冷量计瞬时流量");
BigDecimal freezingSupplyTemp = findCurValue(collectionParamsManages1, "冷冻供水温度");
BigDecimal freezingReturnTemp = findCurValue(collectionParamsManages1, "冷冻回水温度");
// 冷凝器侧(冷却水):Qcd = (冷却水流量 × (冷却回水温度 - 冷却供水温度)) / 0.86
BigDecimal coolingFlow = findCurValue(collectionParamsManages1, "总冷却冷量计瞬时流量");
BigDecimal coolingSupplyTemp = findCurValue(collectionParamsManages1, "冷却供水温度");
BigDecimal coolingReturnTemp = findCurValue(collectionParamsManages1, "冷却回水温度");
// 主机3瞬时读数(功率)
BigDecimal chillerPower = findCurValue(collectionParamsManages1, "主机3瞬时读数");
BigDecimal qev = null;
BigDecimal qcd = null;
// 计算蒸发器制冷量 Qev
if (freezingFlow != null && freezingSupplyTemp != null && freezingReturnTemp != null) {
BigDecimal deltaT = freezingReturnTemp.subtract(freezingSupplyTemp).abs();
qev = freezingFlow.multiply(deltaT)
.divide(new BigDecimal("0.86"), 2, RoundingMode.HALF_UP);
}
// 计算冷凝器排热量 Qcd
if (coolingFlow != null && coolingSupplyTemp != null && coolingReturnTemp != null) {
BigDecimal deltaT = coolingReturnTemp.subtract(coolingSupplyTemp).abs();
qcd = coolingFlow.multiply(deltaT)
.divide(new BigDecimal("0.86"), 2, RoundingMode.HALF_UP);
}
// 计算热平衡率 = Qev / (Qcd - 主机3瞬时读数) × 100%
if (qev != null && qcd != null && chillerPower != null) {
BigDecimal denominator = qcd.subtract(chillerPower);
if (denominator.compareTo(BigDecimal.ZERO) > 0) {
BigDecimal heatBalance = qev.divide(denominator, 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal("100")).setScale(1, RoundingMode.HALF_UP);
// 这里再增加一个判断,数据有效区间95%~105%。如果高于105%,则设置为105%。如果低于95%,则设置为95%。
if (heatBalance.compareTo(new BigDecimal("105")) > 0) {
heatBalance = new BigDecimal("105.0");
} else if (heatBalance.compareTo(new BigDecimal("95")) < 0) {
heatBalance = new BigDecimal("95.0");
}
sysPerformanceDTO.setHeatBalance(heatBalance);
} else {
log.warn("热平衡率计算:分母(Qcd - 主机功率) <= 0,跳过计算。Qcd={}, chillerPower={}", qcd, chillerPower);
}
} else {
log.warn("热平衡率计算:部分参数缺失。qev={}, qcd={}, chillerPower={}", qev, qcd, chillerPower);
}
}
return sysPerformanceDTO;
}
@ -427,4 +495,19 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer
}
return result;
}
/**
* 从列表中根据 otherName 查找对应记录的 curValue
* @param list 数据列表
* @param otherName 别名
* @return curValue未找到或值为null则返回null
*/
private BigDecimal findCurValue(List<CollectionParamsManage> list, String otherName) {
return list.stream()
.filter(item -> otherName.equals(item.getOtherName()))
.map(CollectionParamsManage::getCurValue)
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
}
}

6
mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java

@ -239,7 +239,7 @@ public class ProOverviewServiceImpl implements IProOverviewService {
// 初始化结果列表
List<OverviewEnergyDTO> result = Collections.synchronizedList(new ArrayList<>());
// 使用Map存储不同类型的能源DTO
Map<String, OverviewEnergyDTO> energyMap = new HashMap<>();
LinkedHashMap<String, OverviewEnergyDTO> energyMap = new LinkedHashMap<>();
energyMap.put("16", new OverviewEnergyDTO());
energyMap.put("17", new OverviewEnergyDTO());
energyMap.put("18", new OverviewEnergyDTO());
@ -332,11 +332,11 @@ public class ProOverviewServiceImpl implements IProOverviewService {
private String getEnergyLabel(String paramType) {
switch (paramType) {
case "16":
return "总电量";
return "总电量";
case "17":
return "总产冷量";
case "18":
return "总用水量";
return "总热水补水";
case "19":
return "总蒸汽流量";
default:

Loading…
Cancel
Save