From a5e977c0d1025b6a2cf47a1d2cea6202041b583f Mon Sep 17 00:00:00 2001 From: gaojinming Date: Tue, 25 Nov 2025 14:23:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E4=BF=AE=E6=94=B9=E6=84=8F?= =?UTF-8?q?=E8=A7=8120251120-=E8=AE=BE=E5=A4=87=E7=9B=91=E6=8E=A7=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E8=BF=90=E8=A1=8C=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=9B=BE=E6=8C=89=E7=85=A7=E5=B0=8F=E6=97=B6=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=EF=BC=8C=E5=85=B1=E7=94=A8=E6=97=B6=E9=97=B4=E8=8C=83=E5=9B=B4?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E6=97=B6=E9=97=B4=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ems/EmsSiteMonitorController.java | 17 +- .../xzzn/ems/domain/vo/BatteryAveSOCVo.java | 13 ++ .../xzzn/ems/domain/vo/BatteryAveTempVo.java | 13 ++ .../ems/domain/vo/EnergyStoragePowVo.java | 13 ++ .../com/xzzn/ems/domain/vo/PcsMaxTempVo.java | 14 ++ .../ems/domain/vo/RunningGraphRequest.java | 45 +++++ .../xzzn/ems/service/ISingleSiteService.java | 8 +- .../service/impl/SingleSiteServiceImpl.java | 167 ++++++++++-------- .../mapper/ems/EmsBatteryClusterMapper.xml | 7 +- .../mapper/ems/EmsBatteryStackMapper.xml | 14 +- .../resources/mapper/ems/EmsPcsDataMapper.xml | 33 ++-- 11 files changed, 232 insertions(+), 112 deletions(-) create mode 100644 ems-system/src/main/java/com/xzzn/ems/domain/vo/RunningGraphRequest.java diff --git a/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteMonitorController.java b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteMonitorController.java index 3134973..785206a 100644 --- a/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteMonitorController.java +++ b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteMonitorController.java @@ -7,6 +7,7 @@ import com.xzzn.common.utils.StringUtils; import com.xzzn.ems.domain.vo.BMSBatteryDataList; import com.xzzn.ems.domain.vo.BatteryDataStatsListVo; import com.xzzn.ems.domain.vo.DateSearchRequest; +import com.xzzn.ems.domain.vo.RunningGraphRequest; import com.xzzn.ems.domain.vo.SiteBatteryDataList; import com.xzzn.ems.service.IEmsSiteService; import com.xzzn.ems.service.IEmsStatsReportService; @@ -55,27 +56,27 @@ public class EmsSiteMonitorController extends BaseController{ * 单站监控-设备监控-实时运行曲线图数据 */ @GetMapping("/runningGraph/storagePower") - public AjaxResult getRunningGraphStorage(@RequestParam String siteId) + public AjaxResult getRunningGraphStorage(RunningGraphRequest request) { - return success(iSingleSiteService.getRunningGraphStorage(siteId)); + return success(iSingleSiteService.getRunningGraphStorage(request)); } @GetMapping("/runningGraph/pcsMaxTemp") - public AjaxResult getRunningGraphPcsMaxTemp(@RequestParam String siteId) + public AjaxResult getRunningGraphPcsMaxTemp(RunningGraphRequest request) { - return success(iSingleSiteService.getRunningGraphPcsMaxTemp(siteId)); + return success(iSingleSiteService.getRunningGraphPcsMaxTemp(request)); } @GetMapping("/runningGraph/batteryAveSoc") - public AjaxResult getRunningGraphBatterySoc(@RequestParam String siteId) + public AjaxResult getRunningGraphBatterySoc(RunningGraphRequest request) { - return success(iSingleSiteService.getRunningGraphBatterySoc(siteId)); + return success(iSingleSiteService.getRunningGraphBatterySoc(request)); } @GetMapping("/runningGraph/batteryAveTemp") - public AjaxResult getRunningGraphBatteryTemp(@RequestParam String siteId) + public AjaxResult getRunningGraphBatteryTemp(RunningGraphRequest request) { - return success(iSingleSiteService.getRunningGraphBatteryTemp(siteId)); + return success(iSingleSiteService.getRunningGraphBatteryTemp(request)); } /** diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryAveSOCVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryAveSOCVo.java index d85a12c..9d60a7c 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryAveSOCVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryAveSOCVo.java @@ -8,6 +8,11 @@ import java.util.Date; * */ public class BatteryAveSOCVo { + /** + * 游标显示日期 + */ + private String dateDay; + /** * 数据时间 */ @@ -33,4 +38,12 @@ public class BatteryAveSOCVo { public void setBatterySOC(BigDecimal batterySOC) { this.batterySOC = batterySOC; } + + public String getDateDay() { + return dateDay; + } + + public void setDateDay(String dateDay) { + this.dateDay = dateDay; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryAveTempVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryAveTempVo.java index b79e0de..9e5736e 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryAveTempVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryAveTempVo.java @@ -8,6 +8,11 @@ import java.util.Date; * */ public class BatteryAveTempVo { + /** + * 游标显示日期 + */ + private String dateDay; + /** * 数据时间 */ @@ -33,4 +38,12 @@ public class BatteryAveTempVo { public void setBatteryTemp(BigDecimal batteryTemp) { this.batteryTemp = batteryTemp; } + + public String getDateDay() { + return dateDay; + } + + public void setDateDay(String dateDay) { + this.dateDay = dateDay; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/EnergyStoragePowVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/EnergyStoragePowVo.java index 713c34d..0512662 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/EnergyStoragePowVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/EnergyStoragePowVo.java @@ -8,6 +8,11 @@ import java.util.Date; * */ public class EnergyStoragePowVo { + /** + * 游标显示日期 + */ + private String dateDay; + /** * 显示日期 */ @@ -54,6 +59,14 @@ public class EnergyStoragePowVo { return pcsTotalReactivePower; } + public String getDateDay() { + return dateDay; + } + + public void setDateDay(String dateDay) { + this.dateDay = dateDay; + } + public void setPcsTotalReactivePower(BigDecimal pcsTotalReactivePower) { this.pcsTotalReactivePower = pcsTotalReactivePower; } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/PcsMaxTempVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PcsMaxTempVo.java index 04d6978..a336e51 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/PcsMaxTempVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PcsMaxTempVo.java @@ -7,6 +7,12 @@ import java.math.BigDecimal; * */ public class PcsMaxTempVo { + + /** + * 游标显示日期 + */ + private String dateDay; + /** * 数据时间 */ @@ -42,4 +48,12 @@ public class PcsMaxTempVo { public void setTemp(BigDecimal temp) { this.temp = temp; } + + public String getDateDay() { + return dateDay; + } + + public void setDateDay(String dateDay) { + this.dateDay = dateDay; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/RunningGraphRequest.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/RunningGraphRequest.java new file mode 100644 index 0000000..a144147 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/RunningGraphRequest.java @@ -0,0 +1,45 @@ +package com.xzzn.ems.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 实时运行曲线图请求参数 + */ +public class RunningGraphRequest { + + /** 开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startDate; + + /** 结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date endDate; + + private String siteId; + + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + + public String getSiteId() { + return siteId; + } + + public void setSiteId(String siteId) { + this.siteId = siteId; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/service/ISingleSiteService.java b/ems-system/src/main/java/com/xzzn/ems/service/ISingleSiteService.java index fa88d06..0faff27 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/ISingleSiteService.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/ISingleSiteService.java @@ -17,7 +17,7 @@ public interface ISingleSiteService public SiteMonitorRunningHeadInfoVo getSiteRunningHeadInfo(String siteId); - public SiteMonitorRuningInfoVo getRunningGraphStorage(String siteId); + public SiteMonitorRuningInfoVo getRunningGraphStorage(RunningGraphRequest request); public List getPcsDetailInfo(String siteId); @@ -32,11 +32,11 @@ public interface ISingleSiteService public List getAmmeterDataList(String siteId); - public SiteMonitorRuningInfoVo getRunningGraphPcsMaxTemp(String siteId); + public SiteMonitorRuningInfoVo getRunningGraphPcsMaxTemp(RunningGraphRequest request); - public SiteMonitorRuningInfoVo getRunningGraphBatterySoc(String siteId); + public SiteMonitorRuningInfoVo getRunningGraphBatterySoc(RunningGraphRequest request); - public SiteMonitorRuningInfoVo getRunningGraphBatteryTemp(String siteId); + public SiteMonitorRuningInfoVo getRunningGraphBatteryTemp(RunningGraphRequest request); public List getClusterBatteryList(String siteId, String stackDeviceId, String clusterDeviceId); diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java index 6f09eeb..8d01440 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java @@ -165,46 +165,50 @@ public class SingleSiteServiceImpl implements ISingleSiteService { // 获取单站监控实时运行-PCS有功无功功率 @Override - public SiteMonitorRuningInfoVo getRunningGraphStorage(String siteId) { + public SiteMonitorRuningInfoVo getRunningGraphStorage(RunningGraphRequest request) { SiteMonitorRuningInfoVo siteMonitorRuningInfoVo = new SiteMonitorRuningInfoVo(); - if (!StringUtils.isEmpty(siteId)) { - // 时间暂定今日+昨日 - Date today = DateUtils.getNowDate(); - Date yesterday = DateUtils.addDays(today, -1); - - //pcs有功无功 - List pcsPowerList = new ArrayList<>(); - List energyStoragePowList = emsPcsDataMapper.getStoragePowerList(siteId, yesterday, today); - - // List -> 按pcs的deviceId分组转成List - if (!CollectionUtils.isEmpty(energyStoragePowList)) { - Map> dataMap = energyStoragePowList.stream() - .collect(Collectors.groupingBy( - EnergyStoragePowVo::getDeviceId, - Collectors.toList())); - - pcsPowerList = dataMap.entrySet().stream() - .map(entry -> { - PcsPowerList pcdData = new PcsPowerList(); - pcdData.setDeviceId(entry.getKey()); - pcdData.setEnergyStoragePowList(entry.getValue()); - return pcdData; - }).collect(Collectors.toList()); - - // 生成时间列表(每分钟一个) - List targetMinutes = new ArrayList<>(60); - LocalDateTime startDate = DateUtils.toLocalDateTime(yesterday).truncatedTo(ChronoUnit.DAYS); - LocalDateTime endDate = DateUtils.toLocalDateTime(today); - while (startDate.isBefore(endDate)) { - targetMinutes.add(startDate); - startDate = startDate.plusMinutes(1); // 递增1分钟 - } - // 根据时间列表填充数据 - pcsPowerList = fullFillData(pcsPowerList,targetMinutes); - } - - siteMonitorRuningInfoVo.setPcsPowerList(pcsPowerList); + if (Objects.isNull(request) || StringUtils.isEmpty(request.getSiteId())) { + return siteMonitorRuningInfoVo; } +// // 时间暂定今日+昨日 +// Date today = DateUtils.getNowDate(); +// Date yesterday = DateUtils.addDays(today, -1); + Date startDate = request.getStartDate(); + Date endDate = request.getEndDate(); + + //pcs有功无功 + List pcsPowerList = new ArrayList<>(); + List energyStoragePowList = emsPcsDataMapper.getStoragePowerList(request.getSiteId(), startDate, endDate); + + // List -> 按pcs的deviceId分组转成List + if (!CollectionUtils.isEmpty(energyStoragePowList)) { + Map> dataMap = energyStoragePowList.stream() + .collect(Collectors.groupingBy( + EnergyStoragePowVo::getDeviceId, + Collectors.toList())); + + pcsPowerList = dataMap.entrySet().stream() + .map(entry -> { + PcsPowerList pcdData = new PcsPowerList(); + pcdData.setDeviceId(entry.getKey()); + pcdData.setEnergyStoragePowList(entry.getValue()); + return pcdData; + }).collect(Collectors.toList()); + +// // 生成时间列表(每分钟一个) +// List targetMinutes = new ArrayList<>(60); +// LocalDateTime startDate = DateUtils.toLocalDateTime(yesterday).truncatedTo(ChronoUnit.DAYS); +// LocalDateTime endDate = DateUtils.toLocalDateTime(today); +// while (startDate.isBefore(endDate)) { +// targetMinutes.add(startDate); +// startDate = startDate.plusMinutes(1); // 递增1分钟 +// } +// // 根据时间列表填充数据 +// pcsPowerList = fullFillData(pcsPowerList, targetMinutes); + } + + siteMonitorRuningInfoVo.setPcsPowerList(pcsPowerList); + return siteMonitorRuningInfoVo; } private List fullFillData(List pcsPowerList, List targetMinutes) { @@ -259,18 +263,21 @@ public class SingleSiteServiceImpl implements ISingleSiteService { // 获取单站监控实时运行-pcs最高温度 @Override - public SiteMonitorRuningInfoVo getRunningGraphPcsMaxTemp(String siteId) { + public SiteMonitorRuningInfoVo getRunningGraphPcsMaxTemp(RunningGraphRequest request) { SiteMonitorRuningInfoVo siteMonitorRuningInfoVo = new SiteMonitorRuningInfoVo(); List pcsMaxTempList = new ArrayList<>(); - // 时间暂定今日+昨日 - Date today = new Date(); - Date yesterday = DateUtils.addDays(today, -1); +// // 时间暂定今日+昨日 +// Date today = new Date(); +// Date yesterday = DateUtils.addDays(today, -1); + String siteId = request.getSiteId(); + Date startDate = request.getStartDate(); + Date endDate = request.getEndDate(); //PCS最高温度list List pcsMaxTempVos = new ArrayList<>(); if (SiteEnum.FX.getCode().equals(siteId)) { - pcsMaxTempVos = emsPcsDataMapper.getFXMaxTemp(siteId, yesterday, today); + pcsMaxTempVos = emsPcsDataMapper.getFXMaxTemp(siteId, startDate, endDate); } else if (SiteEnum.DDS.getCode().equals(siteId)) { - pcsMaxTempVos = emsPcsDataMapper.getDDSMaxTemp(siteId, yesterday, today); + pcsMaxTempVos = emsPcsDataMapper.getDDSMaxTemp(siteId, startDate, endDate); } // List -> 按pcs的deviceId分组转成List @@ -288,16 +295,16 @@ public class SingleSiteServiceImpl implements ISingleSiteService { return pcdData; }).collect(Collectors.toList()); - // 生成时间列表(每小时一个) - List targetHours = new ArrayList<>(60); - LocalDateTime startDate = DateUtils.toLocalDateTime(yesterday).truncatedTo(ChronoUnit.DAYS); - LocalDateTime endDate = DateUtils.toLocalDateTime(today); - while (startDate.isBefore(endDate)) { - targetHours.add(startDate); - startDate = startDate.plusHours(1); // 递增1小时 - } - // 根据时间列表填充数据 - pcsMaxTempList = fullFillMaxTempData(pcsMaxTempList,targetHours); +// // 生成时间列表(每小时一个) +// List targetHours = new ArrayList<>(60); +// LocalDateTime startDate = DateUtils.toLocalDateTime(yesterday).truncatedTo(ChronoUnit.DAYS); +// LocalDateTime endDate = DateUtils.toLocalDateTime(today); +// while (startDate.isBefore(endDate)) { +// targetHours.add(startDate); +// startDate = startDate.plusHours(1); // 递增1小时 +// } +// // 根据时间列表填充数据 +// pcsMaxTempList = fullFillMaxTempData(pcsMaxTempList,targetHours); } siteMonitorRuningInfoVo.setPcsMaxTempList(pcsMaxTempList); @@ -355,35 +362,49 @@ public class SingleSiteServiceImpl implements ISingleSiteService { // 获取单站监控实时运行-平均soc @Override - public SiteMonitorRuningInfoVo getRunningGraphBatterySoc(String siteId) { + public SiteMonitorRuningInfoVo getRunningGraphBatterySoc(RunningGraphRequest request) { SiteMonitorRuningInfoVo siteMonitorRuningInfoVo = new SiteMonitorRuningInfoVo(); - if (!StringUtils.isEmpty(siteId)) { - // 时间暂定今日+昨日 - Date today = new Date(); - Date yesterday = DateUtils.addDays(today, -1); + if (!StringUtils.isEmpty(request.getSiteId())) { +// // 时间暂定今日+昨日 +// Date today = new Date(); +// Date yesterday = DateUtils.addDays(today, -1); //电池平均soclist - List batteryAveSOCList = emsBatteryStackMapper.getAveSocList(siteId, yesterday, today); + List batteryAveSOCList = emsBatteryStackMapper.getAveSocList(request.getSiteId(), request.getStartDate(), request.getEndDate()); siteMonitorRuningInfoVo.setBatteryAveSOCList(batteryAveSOCList); } return siteMonitorRuningInfoVo; } // 获取单站监控实时运行-电池平均温度 @Override - public SiteMonitorRuningInfoVo getRunningGraphBatteryTemp(String siteId) { + public SiteMonitorRuningInfoVo getRunningGraphBatteryTemp(RunningGraphRequest request) { SiteMonitorRuningInfoVo siteMonitorRuningInfoVo = new SiteMonitorRuningInfoVo(); - if (!StringUtils.isEmpty(siteId)) { - // 时间暂定今日+昨日 - Date today = new Date(); - Date yesterday = DateUtils.addDays(today, -1); - //电池平均温度list - List batteryAveTempList = new ArrayList<>(); - if (SiteEnum.FX.getCode().equals(siteId)) { - batteryAveTempList = emsBatteryClusterMapper.getBatteryAveTempList(siteId, yesterday, today); - } else if (SiteEnum.DDS.getCode().equals(siteId)) { - batteryAveTempList = emsBatteryStackMapper.getBatteryAveTempList(siteId, yesterday, today); - } - siteMonitorRuningInfoVo.setBatteryAveTempList(batteryAveTempList); + if (Objects.isNull(request) || StringUtils.isEmpty(request.getSiteId())) { + return siteMonitorRuningInfoVo; } + String siteId = request.getSiteId(); + Date startDate = request.getStartDate(); + Date endDate = request.getEndDate(); + //电池平均温度list + List batteryAveTempList = new ArrayList<>(); + if (SiteEnum.FX.getCode().equals(siteId)) { + batteryAveTempList = emsBatteryClusterMapper.getBatteryAveTempList(siteId, startDate, endDate); + } else if (SiteEnum.DDS.getCode().equals(siteId)) { + batteryAveTempList = emsBatteryStackMapper.getBatteryAveTempList(siteId, startDate, endDate); + } + siteMonitorRuningInfoVo.setBatteryAveTempList(batteryAveTempList); +// if (!StringUtils.isEmpty(siteId)) { +// // 时间暂定今日+昨日 +// Date today = new Date(); +// Date yesterday = DateUtils.addDays(today, -1); +// //电池平均温度list +// List batteryAveTempList = new ArrayList<>(); +// if (SiteEnum.FX.getCode().equals(siteId)) { +// batteryAveTempList = emsBatteryClusterMapper.getBatteryAveTempList(siteId, yesterday, today); +// } else if (SiteEnum.DDS.getCode().equals(siteId)) { +// batteryAveTempList = emsBatteryStackMapper.getBatteryAveTempList(siteId, yesterday, today); +// } +// siteMonitorRuningInfoVo.setBatteryAveTempList(batteryAveTempList); +// } return siteMonitorRuningInfoVo; } diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml index 0c693ce..90a8074 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml @@ -327,13 +327,12 @@ diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml index 0e3e080..58171c9 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml @@ -347,13 +347,12 @@ @@ -495,13 +494,12 @@ diff --git a/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml index 302d1a0..6359898 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml @@ -461,13 +461,14 @@ SELECT t.site_id,t.device_id as deviceId, t.total_active_power AS pcsTotalActPower, t.total_reactive_power AS pcsTotalReactivePower, - DATE_FORMAT(t.data_update_time, '%Y-%m-%d %H:%i:00') AS createDate + DATE_FORMAT(t.create_time, '%Y-%m-%d') AS dateDay, + DATE_FORMAT(t.data_update_time, '%H:%i:00') AS createDate FROM ems_pcs_data t WHERE t.site_id = #{siteId} - AND t.data_update_time >= Date(#{startDate}) - AND t.data_update_time <= #{endDate} - GROUP BY t.site_id, deviceId,pcsTotalActPower,pcsTotalReactivePower,createDate - ORDER BY createDate + AND Date(t.data_update_time) between #{startDate} and #{endDate} + AND minute(t.data_update_time) = 0 + GROUP BY t.site_id, deviceId,pcsTotalActPower,pcsTotalReactivePower,dateDay,createDate + ORDER BY dateDay,createDate \ No newline at end of file