diff --git a/mh-admin/src/main/java/com/mh/web/controller/device/ChillersParamsController.java b/mh-admin/src/main/java/com/mh/web/controller/device/ChillersParamsController.java index ef79c97..3167773 100644 --- a/mh-admin/src/main/java/com/mh/web/controller/device/ChillersParamsController.java +++ b/mh-admin/src/main/java/com/mh/web/controller/device/ChillersParamsController.java @@ -115,7 +115,13 @@ public class ChillersParamsController extends BaseController { List> result = collect.entrySet().stream().map(entry -> { Map 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()); diff --git a/mh-admin/src/main/resources/application-dev.yml b/mh-admin/src/main/resources/application-dev.yml index 37b8b6b..38b89f8 100644 --- a/mh-admin/src/main/resources/application-dev.yml +++ b/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 # 从库数据源 diff --git a/mh-common/src/main/java/com/mh/common/model/request/AdvantechReceiver.java b/mh-common/src/main/java/com/mh/common/model/request/AdvantechReceiver.java index 5fae9ec..e0d46bf 100644 --- a/mh-common/src/main/java/com/mh/common/model/request/AdvantechReceiver.java +++ b/mh-common/src/main/java/com/mh/common/model/request/AdvantechReceiver.java @@ -26,4 +26,6 @@ public class AdvantechReceiver { */ private String ts; + private int type; + } diff --git a/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java b/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java index a5a09fd..ba21430 100644 --- a/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java +++ b/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 tempList = (List) 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>() {}); + } 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> dealAndInsertChillers(List dataList, String mtType) { // 格式化时间点,然后取同样时间点的最大值 Map> 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, diff --git a/mh-system/src/main/java/com/mh/system/mapper/WeatherDataMapper.java b/mh-system/src/main/java/com/mh/system/mapper/WeatherDataMapper.java index cbbea46..7c45383 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/WeatherDataMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/WeatherDataMapper.java @@ -31,4 +31,7 @@ public interface WeatherDataMapper extends BaseMapper { "order by " + " weather_date ") List getWeatherTemp(@Param("startTime") String startTime, @Param("endTime") String endTime); + + @Select("select * from weather_data order by report_time desc limit 1") + List selectOneByReportTime(); } diff --git a/mh-system/src/main/java/com/mh/system/mapper/energy/OverviewMapper.java b/mh-system/src/main/java/com/mh/system/mapper/energy/OverviewMapper.java index 4bde37c..3dc1d29 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/energy/OverviewMapper.java +++ b/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 '%总%' " + "") List> selectLastCap(); diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java index 093b014..1dd11bc 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java +++ b/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 collectionParamsManages = collectionParamsManageMapper.selectList( new QueryWrapper() - .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 first = collectionParamsManages.stream().filter(value -> "DB200000".equals(value.getMtNum())).findFirst(); + Optional 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 second = collectionParamsManages.stream().filter(value -> "DB200040".equals(value.getMtNum())).findFirst(); + Optional 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 = 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 diff --git a/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java index 8d9d74b..8c25869 100644 --- a/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java +++ b/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> instantData = overviewMapper.selectLastCap(); + // instantData流式处理出现重复的数据只保留一个 + // instantData流式处理出现重复的数据只保留一个 + List> 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 resultMap = new HashMap<>(); @@ -170,6 +179,16 @@ public class ProOverviewServiceImpl implements IProOverviewService { return List.of(resultMap); } + /** + * 根据指定key去重的工具方法 + * @param keyExtractor 提取用于去重的key的函数 + * @return 过滤谓词 + */ + private static java.util.function.Predicate distinctByKey(java.util.function.Function keyExtractor) { + Set 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 diff --git a/mh-system/src/main/java/com/mh/system/service/policy/impl/PolicyManageServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/policy/impl/PolicyManageServiceImpl.java index 9f2bcdd..033f83e 100644 --- a/mh-system/src/main/java/com/mh/system/service/policy/impl/PolicyManageServiceImpl.java +++ b/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")) { // 查询当前系统启动模式值 diff --git a/mh-system/src/main/resources/mapper/system/EnergyMapper.xml b/mh-system/src/main/resources/mapper/system/EnergyMapper.xml index 8788c6d..571c962 100644 --- a/mh-system/src/main/resources/mapper/system/EnergyMapper.xml +++ b/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,