From 668f8e3fb2c560f6dda7daebeb6151e807f6bbf8 Mon Sep 17 00:00:00 2001 From: "3067418132@qq.com" Date: Thu, 7 May 2026 09:59:03 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=86=B7=E9=87=8F=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=88=90=E4=BA=94=E5=88=86=E9=92=9F=E5=AD=98=E5=82=A8=E4=B8=80?= =?UTF-8?q?=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dealdata/impl/DataProcessServiceImpl.java | 76 +++++++++++-------- 1 file changed, 43 insertions(+), 33 deletions(-) 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 eca7812..6d09d1e 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 @@ -495,39 +495,7 @@ public class DataProcessServiceImpl implements DataProcessService { List dataList1 = entry1.getValue(); // 进行数据处理入库操作等 try { - List dealList = new ArrayList<>(); - Map> dateOptionalMap = dealAndInsertChillers(dataList1, mtType); - for (Map.Entry> value : dateOptionalMap.entrySet()) { - boolean present = value.getValue().isPresent(); - if (!present) { - continue; - } - dealList.add(value.getValue().get()); - } - // 根据时间排序 - dealList.sort(Comparator.comparing(CollectionParamsManage::getCurTime)); - // 批量插入到chillers_data_min表 - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - int year = calendar.get(Calendar.YEAR); - String tableName = "chillers_data_min" + year; - for (CollectionParamsManage collectionParamsManage : dealList) { - // 判断是否存在,存在的话就不插入 - DeviceReport deviceReport = new DeviceReport(); - deviceReport.setDeviceNum(collectionParamsManage.getMtNum()); - deviceReport.setCurTime(collectionParamsManage.getCurTime()); - if (null != dataProcessMapper.isHaveData(deviceReport, tableName)) { - continue; - } - dataProcessMapper.batchInsertChiller(List.of(collectionParamsManage), tableName); - } -// int batchSize = 10; -// // 分页查询并插入数据 -// for (int i = 0; i < cacheList.size(); i += batchSize) { -// List batchList = cacheList.subList(i, Math.min(i + batchSize, cacheList.size())); -// // 执行插入语句 -// dataProcessMapper.batchInsertChiller(batchList, tableName); -// } + dealAndInsertChillersData(dataList1, mtType); } catch (Exception e) { log.error("处理主机参数异常:{}", e); } @@ -535,6 +503,48 @@ public class DataProcessServiceImpl implements DataProcessService { } } + /** + * 处理冷水机组数据并插入数据库,每5分钟存储一条数据 + * @param dataList 同一设备的数据列表 + * @param deviceType 设备类型 + */ + private void dealAndInsertChillersData(List dataList, String deviceType) { + // 格式化时间点为5分钟间隔,然后取同样时间点的最大值 + Map> collect = dataList.stream() + .peek(val -> val.setCurTime(DateUtils.stringToDate(DateUtils.getTimeMin(val.getCurTime(), 5), "yyyy-MM-dd HH:mm:ss"))) + .collect( + Collectors.groupingBy( + CollectionParamsManage::getCurTime, + Collectors.maxBy(Comparator.comparing(CollectionParamsManage::getCurValue))) + ); + collect = sortMapByDate(collect); + + if (collect.isEmpty()) { + return; + } + + // 批量插入到chillers_data_min表 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + int year = calendar.get(Calendar.YEAR); + String tableName = "chillers_data_min" + year; + + // 遍历处理后的数据,插入数据库 + for (Map.Entry> entry : collect.entrySet()) { + if (entry.getValue().isPresent()) { + CollectionParamsManage collectionParamsManage = entry.getValue().get(); + // 判断是否存在,存在的话就不插入 + DeviceReport deviceReport = new DeviceReport(); + deviceReport.setDeviceNum(collectionParamsManage.getMtNum()); + deviceReport.setCurTime(collectionParamsManage.getCurTime()); + if (null != dataProcessMapper.isHaveData(deviceReport, tableName)) { + continue; + } + dataProcessMapper.batchInsertChiller(List.of(collectionParamsManage), tableName); + } + } + } + /** * 排序 * @param map