From 5a86769b4099c69f9c27ecb07fadf11883846492 Mon Sep 17 00:00:00 2001 From: zq Date: Tue, 27 Jan 2026 19:15:55 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E6=8A=A5=E8=A1=A8-=E5=8A=9F?= =?UTF-8?q?=E7=8E=87=E6=9B=B2=E7=BA=BF=E6=8C=89=E7=85=A7=E5=88=86=E9=92=9F?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xzzn/ems/mapper/EmsPcsDataMapper.java | 2 + .../impl/EmsStatsReportServiceImpl.java | 48 +++++++++++-------- .../mapper/ems/EmsAmmeterDataMapper.xml | 8 ++-- .../mapper/ems/EmsBatteryClusterMapper.xml | 5 +- .../mapper/ems/EmsBatteryStackMapper.xml | 5 +- .../resources/mapper/ems/EmsPcsDataMapper.xml | 20 ++++++++ 6 files changed, 60 insertions(+), 28 deletions(-) diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsDataMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsDataMapper.java index 4c33796..9a79e50 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsDataMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsDataMapper.java @@ -136,6 +136,8 @@ public interface EmsPcsDataMapper public List getPcsActivePowerByMonth(DateSearchRequest requestVo); + public List getPcsActivePowerByMinutes(DateSearchRequest requestVo); + // 实时运行-fx-pcs最高温度 public List getFXMaxTemp(@Param("siteId")String siteId, @Param("startDate")Date startDate, @Param("endDate")Date endDate); // 实时运行-dds-pcs最高温度 diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsStatsReportServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsStatsReportServiceImpl.java index 21b523f..ac478f8 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsStatsReportServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsStatsReportServiceImpl.java @@ -183,11 +183,17 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService Date startDate = requestVo.getStartDate(); Date endDate = requestVo.getEndDate(); - // 开始日期和结束日期同一天,展示 0-24 小时数据 +// // 开始日期和结束日期同一天,展示 0-24 小时数据 +// if (DateUtils.isSameDay(startDate, endDate)){ +// endDate = DateUtils.addDays(endDate, 1); +// requestVo.setEndDate(endDate); +// dataList = emsPcsDataMapper.getPcsActivePowerByHour(requestVo); +// } + // 开始日期和结束日期同一天,展示5分钟一组数据点 if (DateUtils.isSameDay(startDate, endDate)){ endDate = DateUtils.addDays(endDate, 1); requestVo.setEndDate(endDate); - dataList = emsPcsDataMapper.getPcsActivePowerByHour(requestVo); + dataList = emsPcsDataMapper.getPcsActivePowerByMinutes(requestVo); } else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 1 && DateUtils.differentDaysByMillisecond(endDate, startDate) < 30){ endDate = DateUtils.addDays(endDate, 1); @@ -452,42 +458,44 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService Date endDate = requestVo.getEndDate(); if (startDate == null || endDate == null) { // 默认按分钟展示-前一个小时数据 - LocalDateTime oneHourAgo = LocalDateTime.now().minusHours(1).truncatedTo(ChronoUnit.MINUTES);; + LocalDateTime oneHourAgo = LocalDateTime.now().minusHours(1).truncatedTo(ChronoUnit.MINUTES); startDate = DateUtils.toDate(oneHourAgo); requestVo.setStartDate(startDate); requestVo.setEndDate(DateUtils.getNowDate()); - dataList = emsAmmeterDataMapper.getPowerDataByMinutes(requestVo); - // 生成目标时间点列表(每分钟一个) - List targetMinutes = new ArrayList<>(60); - LocalDateTime current = oneHourAgo; - - for (int i = 0; i < 60; i++) { - targetMinutes.add(current); // 添加当前分钟 - current = current.plusMinutes(1); // 递增1分钟 - } - - // 填充数据 - if (dataList != null && dataList.size() >= 0){ - dataList = fillEveryMinutesData(dataList,targetMinutes); - } +// dataList = emsAmmeterDataMapper.getPowerDataByMinutes(requestVo); +// // 生成目标时间点列表(每分钟一个) +// List targetMinutes = new ArrayList<>(60); +// LocalDateTime current = oneHourAgo; +// +// for (int i = 0; i < 60; i++) { +// targetMinutes.add(current); // 添加当前分钟 +// current = current.plusMinutes(1); // 递增1分钟 +// } +// +// // 填充数据 +// if (dataList != null && dataList.size() >= 0){ +// dataList = fillEveryMinutesData(dataList,targetMinutes); +// } } // 开始日期和结束日期同一天,展示 0-24 小时数据 else if (DateUtils.isSameDay(startDate, endDate)){ endDate = DateUtils.addDays(endDate, 1); requestVo.setEndDate(endDate); - dataList = emsAmmeterDataMapper.getPowerDataByHour(requestVo); +// dataList = emsAmmeterDataMapper.getPowerDataByHour(requestVo); } else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 1 && DateUtils.differentDaysByMillisecond(endDate, startDate) < 30){ endDate = DateUtils.addDays(endDate, 1); requestVo.setEndDate(endDate); // 开始日期-结束日期大于 1 天,小于30 天,按天展示数据 - dataList = emsAmmeterDataMapper.getPowerDataByDay(requestVo); +// dataList = emsAmmeterDataMapper.getPowerDataByDay(requestVo); } else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 30){ endDate = DateUtils.addDays(endDate, 1); requestVo.setEndDate(endDate); // 开始日期-结束日期大于 1 个月,按月展示数据 - dataList = emsAmmeterDataMapper.getPowerDataByMonth(requestVo); +// dataList = emsAmmeterDataMapper.getPowerDataByMonth(requestVo); } + // 都按照5分钟一个数据点展示数据 + dataList = emsAmmeterDataMapper.getPowerDataByMinute(requestVo); // 负荷功率 dealDataPower(requestVo.getSiteId(),dataList); diff --git a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml index 4f3edcf..b8098e1 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml @@ -1145,10 +1145,9 @@ WITH ranked AS ( SELECT *, - DATE_FORMAT( - DATE_ADD(DATE_FORMAT(p.update_time, '%Y-%m-%d %H:00:00'), INTERVAL FLOOR(MINUTE(p.update_time) / 5) * 5 MINUTE) - , '%Y-%m-%d %H:%i:%s') AS statisDate, - ROW_NUMBER() OVER (PARTITION BY p.device_id, date_format(p.data_update_time, '%Y-%m-%d %H:00:00'), FLOOR(MINUTE(p.data_update_time) / 5) ORDER BY p.data_update_time) as rn + DATE_FORMAT(DATE_ADD(DATE_FORMAT(p.data_update_time, '%Y-%m-%d %H:00:00'), INTERVAL CEIL(MINUTE(p.data_update_time) / 5) * 5 MINUTE) + , '%Y-%m-%d %H:%i:%s') AS statisDate, + ROW_NUMBER() OVER (PARTITION BY p.device_id, date_format(p.data_update_time, '%Y-%m-%d %H:00:00'), CEIL(MINUTE(p.data_update_time) / 5) ORDER BY p.data_update_time DESC) as rn FROM ems_ammeter_data p @@ -1159,6 +1158,7 @@ FROM ranked as t + where t.rn = 1 GROUP BY t.site_id, t.statisDate \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml index 0eced41..7dc50c5 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml @@ -433,8 +433,9 @@ WITH ranked AS ( SELECT *, - date_format(p.update_time, '%Y-%m-%d %H:00:00') + INTERVAL FLOOR(MINUTE(p.update_time) / 5) * 5 MINUTE AS group_time, - ROW_NUMBER() OVER (PARTITION BY p.device_id, date_format(p.update_time, '%Y-%m-%d %H:00:00'), FLOOR(MINUTE(p.update_time) / 5) ORDER BY p.update_time) as rn + DATE_FORMAT(DATE_ADD(DATE_FORMAT(p.update_time, '%Y-%m-%d %H:00:00'), INTERVAL CEIL(MINUTE(p.update_time) / 5) * 5 MINUTE) + , '%Y-%m-%d %H:%i:%s') AS group_time, + ROW_NUMBER() OVER (PARTITION BY p.device_id, date_format(p.update_time, '%Y-%m-%d %H:00:00'), CEIL(MINUTE(p.update_time) / 5) ORDER BY p.data_update_time DESC) as rn FROM ems_battery_cluster p diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml index 2313431..bd83e2e 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml @@ -513,8 +513,9 @@ WITH ranked AS ( SELECT *, - date_format(p.update_time, '%Y-%m-%d %H:00:00') + INTERVAL FLOOR(MINUTE(p.update_time) / 5) * 5 MINUTE AS group_time, - ROW_NUMBER() OVER (PARTITION BY p.device_id, date_format(p.update_time, '%Y-%m-%d %H:00:00'), FLOOR(MINUTE(p.update_time) / 5) ORDER BY p.update_time) as rn + DATE_FORMAT(DATE_ADD(DATE_FORMAT(p.update_time, '%Y-%m-%d %H:00:00'), INTERVAL CEIL(MINUTE(p.update_time) / 5) * 5 MINUTE) + , '%Y-%m-%d %H:%i:%s') AS group_time, + ROW_NUMBER() OVER (PARTITION BY p.device_id, date_format(p.update_time, '%Y-%m-%d %H:00:00'), CEIL(MINUTE(p.update_time) / 5) ORDER BY p.data_update_time DESC) as rn FROM ems_battery_stack p diff --git a/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml index 12cd76f..52e50e6 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml @@ -599,6 +599,26 @@ order by statisDate desc + +