Browse Source

1、广合二厂群控系统相关接口优化;

dev_gh_ers
3067418132@qq.com 2 weeks ago
parent
commit
8c4891ad0f
  1. 8
      mh-admin/src/main/java/com/mh/web/controller/device/ChillersParamsController.java
  2. 4
      mh-admin/src/main/resources/application-dev.yml
  3. 2
      mh-common/src/main/java/com/mh/common/model/request/AdvantechReceiver.java
  4. 19
      mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java
  5. 3
      mh-system/src/main/java/com/mh/system/mapper/WeatherDataMapper.java
  6. 2
      mh-system/src/main/java/com/mh/system/mapper/energy/OverviewMapper.java
  7. 25
      mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java
  8. 23
      mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java
  9. 11
      mh-system/src/main/java/com/mh/system/service/policy/impl/PolicyManageServiceImpl.java
  10. 8
      mh-system/src/main/resources/mapper/system/EnergyMapper.xml

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

@ -115,7 +115,13 @@ public class ChillersParamsController extends BaseController {
List<Map<String, Object>> result = collect.entrySet().stream().map(entry -> {
Map<String, Object> map = new HashMap<>();
map.put("mtType", entry.getKey());
map.put("mtTypeName", sysMtTypeList.stream().filter(item -> item.getDictValue().equals(entry.getKey())).findFirst().get().getDictLabel());
String mtTypeName = sysMtTypeList.stream()
.filter(item -> item.getDictValue().equals(entry.getKey()))
.findFirst()
.map(SysDictData::getDictLabel)
.orElse(entry.getKey());
map.put("mtTypeName", mtTypeName);
map.put("list", entry.getValue());
return map;
}).collect(Collectors.toList());

4
mh-admin/src/main/resources/application-dev.yml

@ -98,8 +98,8 @@ spring:
# 主库数据源
master:
#添加allowMultiQueries=true 在批量更新时才不会出错
url: jdbc:postgresql://127.0.0.1:5432/eemcs_gh_ers_dev
# url: jdbc:postgresql://106.55.173.225:5505/eemcs
# url: jdbc:postgresql://127.0.0.1:5432/eemcs_gh_ers_dev
url: jdbc:postgresql://106.55.173.225:5505/eemcs_gh_ers
username: postgres
password: mh@803
# 从库数据源

2
mh-common/src/main/java/com/mh/common/model/request/AdvantechReceiver.java

@ -26,4 +26,6 @@ public class AdvantechReceiver<T> {
*/
private String ts;
private int type;
}

19
mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java

@ -200,10 +200,18 @@ public class DataProcessServiceImpl implements DataProcessService {
Object dObject = data.getD();
if (dObject instanceof List) {
// 如果已经是List类型,直接转换
@SuppressWarnings("unchecked")
List<AdvantechDatas> tempList = (List<AdvantechDatas>) dObject;
list = tempList;
// 如果已经是List类型,需要先序列化为JSON再反序列化,确保类型正确
String jsonStr = JSON.toJSONString(dObject);
// 替换掉inf
if (jsonStr.contains("inf")) {
jsonStr = jsonStr.replace("inf", "0");
}
try {
list = JSON.parseObject(jsonStr, new TypeReference<List<AdvantechDatas>>() {});
} catch (Exception e) {
log.error("JSON解析失败,原始数据: {}", jsonStr, e);
list = new ArrayList<>();
}
} else {
// 如果是其他类型(如String),则进行JSON解析
String dString = dObject.toString();
@ -243,7 +251,6 @@ public class DataProcessServiceImpl implements DataProcessService {
Date date = DateUtils.stringToDate(formattedTime, "yyyy-MM-dd HH:mm:ss");
collectionParamsManage.setCurTime(date);
entities.add(collectionParamsManage);
break;
}
}
} catch (Exception e) {
@ -592,7 +599,7 @@ public class DataProcessServiceImpl implements DataProcessService {
private Map<Date, Optional<CollectionParamsManage>> dealAndInsertChillers(List<CollectionParamsManage> dataList, String mtType) {
// 格式化时间点,然后取同样时间点的最大值
Map<Date, Optional<CollectionParamsManage>> collect = dataList.stream()
.peek(val -> val.setCurTime(DateUtils.stringToDate(DateUtils.getTimeMin(val.getCurTime(), 1), "yyyy-MM-dd HH:mm:ss")))
.peek(val -> val.setCurTime(DateUtils.stringToDate(DateUtils.getTimeMin(val.getCurTime(), 5), "yyyy-MM-dd HH:mm:ss")))
.collect(
Collectors.groupingBy(
CollectionParamsManage::getCurTime,

3
mh-system/src/main/java/com/mh/system/mapper/WeatherDataMapper.java

@ -31,4 +31,7 @@ public interface WeatherDataMapper extends BaseMapper<WeatherData> {
"order by " +
" weather_date ")
List<WeatherDataDTO> getWeatherTemp(@Param("startTime") String startTime, @Param("endTime") String endTime);
@Select("select * from weather_data order by report_time desc limit 1")
List<WeatherData> selectOneByReportTime();
}

2
mh-system/src/main/java/com/mh/system/mapper/energy/OverviewMapper.java

@ -101,7 +101,7 @@ public interface OverviewMapper {
" mt_type in ('2','5') " +
" and grade = 140 " +
" and param_type in ('16','17') " +
" and other_name like '%总%' " +
// " and other_name like '%总%' " +
"</script>")
List<Map<String, Object>> selectLastCap();

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

@ -209,6 +209,7 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer
.filter(value -> "16".equals(value.getParamType()) && "5".equals(value.getMtType()) && value.getCurTime() != null)
.filter(value -> DateUtils.isSameDay(new Date(), value.getCurTime()))
.filter(value -> value.getGrade() == 40)
.filter(value -> value.getTerminalDeviceType().equals("15"))
.map(value -> value.getCurValue().subtract(value.getMtInitValue()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
@ -219,6 +220,7 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer
.filter(value -> "16".equals(value.getParamType()) && "5".equals(value.getMtType()) && value.getCurTime() != null)
.filter(value -> DateUtils.isSameDay(new Date(), value.getCurTime()))
.filter(value -> value.getGrade() == 140)
.filter(value -> value.getTerminalDeviceType().equals("15"))
.map(CollectionParamsManage::getCurValue)
.reduce(BigDecimal.ZERO, BigDecimal::add);
@ -284,12 +286,12 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer
// 查询跟当前时间yyyy-MM-dd HH相同的数据
List<CollectionParamsManage> collectionParamsManages = collectionParamsManageMapper.selectList(
new QueryWrapper<CollectionParamsManage>()
.in("mt_num", Arrays.asList("DB200000", "DB200040"))
.in("mt_num", Arrays.asList("DBB30", "DBB34"))
.between("cur_time", startOfDay, endOfDay));
if (collectionParamsManages != null && !collectionParamsManages.isEmpty()) {
// 遍历获取数据,其中mt_num为DB200000是室外温度,mt_num为DB200040是室外湿度
Optional<CollectionParamsManage> first = collectionParamsManages.stream().filter(value -> "DB200000".equals(value.getMtNum())).findFirst();
Optional<CollectionParamsManage> first = collectionParamsManages.stream().filter(value -> "DBB30".equals(value.getMtNum())).findFirst();
double temperature = 0.00;
if (first.isPresent()) {
// 室外温度
@ -297,13 +299,30 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer
result.putIfAbsent("temperature", first.get().getCurValue().setScale(1, RoundingMode.HALF_UP) + "");
}
Optional<CollectionParamsManage> second = collectionParamsManages.stream().filter(value -> "DB200040".equals(value.getMtNum())).findFirst();
Optional<CollectionParamsManage> second = collectionParamsManages.stream().filter(value -> "DBB34".equals(value.getMtNum())).findFirst();
double humidity = 0.00;
if (second.isPresent()) {
// 室外湿度
humidity = second.get().getCurValue().doubleValue();
result.putIfAbsent("humidity", second.get().getCurValue().setScale(1, RoundingMode.HALF_UP) + "");
}
// 判断温湿度是0,则取天气预报数据
if (temperature == 0.00 || humidity == 0.00) {
// 获取天气预报数据
List<WeatherData> weatherData = weatherDataMapper.selectOneByReportTime();
if (weatherData != null && !weatherData.isEmpty()) {
// 获取天气预报数据
WeatherData weatherData1 = weatherData.getFirst();
// 判断是否是今天的日期
if (DateUtils.isSameDay(weatherData1.getReportTime(), new Date())) {
temperature = weatherData1.getTemperature().doubleValue();
result.put("temperature", weatherData1.getTemperature().doubleValue() + "");
humidity = weatherData1.getHumidity().doubleValue();
result.put("humidity", weatherData1.getHumidity().doubleValue() + "");
}
}
}
WeatherUtil weatherUtil = new WeatherUtil();
// 室外压力,采用标准大气压 101325 Pa

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

@ -24,6 +24,7 @@ import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -95,6 +96,12 @@ public class ProOverviewServiceImpl implements IProOverviewService {
public List<?> getCoe() {
//todo 系统能效系数、主机能效、冷冻泵输送系数、冷却泵输送系数、冷却塔输送系数
List<Map<String, Object>> instantData = overviewMapper.selectLastCap();
// instantData流式处理出现重复的数据只保留一个
// instantData流式处理出现重复的数据只保留一个
List<Map<String, Object>> distinctData = instantData.stream()
.filter(distinctByKey(map -> map.get("name")))
.toList();
instantData = distinctData;
//筛选系统用电量
BigDecimal cap = new BigDecimal(0);
BigDecimal sysEle = new BigDecimal(0);
@ -117,10 +124,10 @@ public class ProOverviewServiceImpl implements IProOverviewService {
if (!today) {
continue;
}
if (name.contains("系统")) {
if (name.contains("机房")) {
// 系统
sysEle = sysEle.add(value);
} else if (name.contains("主机")) {
} else if (name.contains("主机总表")) {
// 主机
chillerEle = chillerEle.add(value);
} else if (name.contains("冷冻泵")) {
@ -132,6 +139,8 @@ public class ProOverviewServiceImpl implements IProOverviewService {
} else if (name.contains("冷却塔")) {
// 冷却塔
towerEle = towerEle.add(value);
} else if (name.contains("冷量")) {
cap = cap.add(value);
}
}
Map<String, Object> resultMap = new HashMap<>();
@ -170,6 +179,16 @@ public class ProOverviewServiceImpl implements IProOverviewService {
return List.of(resultMap);
}
/**
* 根据指定key去重的工具方法
* @param keyExtractor 提取用于去重的key的函数
* @return 过滤谓词
*/
private static <T> java.util.function.Predicate<T> distinctByKey(java.util.function.Function<? super T, ?> keyExtractor) {
Set<Object> seen = ConcurrentHashMap.newKeySet();
return t -> seen.add(keyExtractor.apply(t));
}
@Override
public List<?> ersDatas(String systemType) {
// 从collection_params_manage、device_ledger中查询数据,获取device_ledger.device_name,order_num,system_type,device_type

11
mh-system/src/main/java/com/mh/system/service/policy/impl/PolicyManageServiceImpl.java

@ -179,12 +179,13 @@ public class PolicyManageServiceImpl implements IPolicyManageService {
if (funPolicyType.equals("2")) {
policy.setCurValue(BigDecimal.valueOf((policy.getCurValue() == null ? new BigDecimal("0") : policy.getCurValue())
.divide(new BigDecimal((int) Math.pow(10, policy.getDigits())), 0, RoundingMode.HALF_UP).intValue())); // 除以1000并保留整数
} else if (funPolicyType.equals("1") && (policy.getPointName().contains("加载")
|| policy.getPointName().contains("减载"))) {
// 减载时间,反馈是ms,页面是min,所以除以1000 * 60
policy.setCurValue(BigDecimal.valueOf((policy.getCurValue() == null ? new BigDecimal("0") : policy.getCurValue())
.divide(new BigDecimal((int) Math.pow(10, policy.getDigits())).multiply(new BigDecimal("60")), 0, RoundingMode.HALF_UP).intValue()));
}
// else if (funPolicyType.equals("1") && (policy.getPointName().contains("加载")
// || policy.getPointName().contains("减载"))) {
// // 减载时间,反馈是ms,页面是min,所以除以1000 * 60
// policy.setCurValue(BigDecimal.valueOf((policy.getCurValue() == null ? new BigDecimal("0") : policy.getCurValue())
// .divide(new BigDecimal((int) Math.pow(10, policy.getDigits())).multiply(new BigDecimal("60")), 0, RoundingMode.HALF_UP).intValue()));
// }
// 判断系统启动模式值是多少,如果是1:一键启动,如果是2:定时启动
if (policy.getPolicyType().equals("5") && policy.getFunPolicyType().equals("1")) {
// 查询当前系统启动模式值

8
mh-system/src/main/resources/mapper/system/EnergyMapper.xml

@ -1052,7 +1052,7 @@
cpm.device_ledger_id = dl.id
and dl.device_type = '5'
and cpm.grade = 140
-- and cpm.terminal_device_type = '15'
and cpm.terminal_device_type = '15'
)
group by
device_type,
@ -1079,7 +1079,7 @@
cpm.device_ledger_id = dl.id
and dl.device_type = '6'
and cpm.grade = 140
-- and cpm.terminal_device_type = '15'
and cpm.terminal_device_type = '15'
)
group by
device_type,
@ -1133,7 +1133,7 @@
on
cpm.device_ledger_id = dl.id
and dl.device_type = '6'
and cpm.grade = 140
and cpm.grade = 140 and cpm.terminal_device_type = '15'
)
group by
device_type,
@ -1185,7 +1185,7 @@
on
cpm.device_ledger_id = dl.id
and dl.device_type = '6'
and cpm.grade = 140
and cpm.grade = 140 and cpm.terminal_device_type = '15'
)
group by
device_type,

Loading…
Cancel
Save