From d807b9117d303343dba328aa9d7d6eb9178bd987 Mon Sep 17 00:00:00 2001 From: mashili Date: Sun, 14 Sep 2025 22:44:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE20250904=E4=BC=98=E5=8C=96-PC?= =?UTF-8?q?S=E6=9B=B2=E7=BA=BF=E5=92=8C=E7=94=B5=E6=B1=A0=E5=A0=86?= =?UTF-8?q?=E6=9B=B2=E7=BA=BF=E8=BF=94=E5=9B=9E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ems/EmsStatisticalReportController.java | 8 +--- .../xzzn/ems/domain/vo/PCSCurveResponse.java | 30 +++++++++++++ .../xzzn/ems/domain/vo/PcsStatisListVo.java | 13 +++++- .../ems/domain/vo/StackCurveResponse.java | 30 +++++++++++++ .../xzzn/ems/domain/vo/StackStatisListVo.java | 13 +++++- .../ems/service/IEmsStatsReportService.java | 4 +- .../impl/EmsStatsReportServiceImpl.java | 45 +++++++++++++++++-- .../mapper/ems/EmsBatteryStackMapper.xml | 4 +- .../resources/mapper/ems/EmsPcsDataMapper.xml | 4 +- 9 files changed, 135 insertions(+), 16 deletions(-) create mode 100644 ems-system/src/main/java/com/xzzn/ems/domain/vo/PCSCurveResponse.java create mode 100644 ems-system/src/main/java/com/xzzn/ems/domain/vo/StackCurveResponse.java diff --git a/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsStatisticalReportController.java b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsStatisticalReportController.java index 4d43ef1..906c261 100644 --- a/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsStatisticalReportController.java +++ b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsStatisticalReportController.java @@ -58,8 +58,7 @@ public class EmsStatisticalReportController extends BaseController @GetMapping("/getPCSData") public AjaxResult getPCSData(DateSearchRequest requestVo) { - if (!StringUtils.isEmpty(requestVo.getSiteId()) && - !StringUtils.isEmpty(requestVo.getDeviceId()) && + if (!StringUtils.isEmpty(requestVo.getSiteId())&& !StringUtils.isEmpty(requestVo.getDataType())) { return success(ieEmsStatsReportService.getPCSDataResult(requestVo)); } else { @@ -74,7 +73,6 @@ public class EmsStatisticalReportController extends BaseController public AjaxResult getStackData(DateSearchRequest requestVo) { if (!StringUtils.isEmpty(requestVo.getSiteId()) && - !StringUtils.isEmpty(requestVo.getDeviceId()) && !StringUtils.isEmpty(requestVo.getDataType())) { return success(ieEmsStatsReportService.getStackDataResult(requestVo)); } else { @@ -131,9 +129,7 @@ public class EmsStatisticalReportController extends BaseController @GetMapping("/getPowerData") public AjaxResult getPowerData(DateSearchRequest requestVo) { - if (!StringUtils.isEmpty(requestVo.getSiteId()) - && !StringUtils.isEmpty(requestVo.getDeviceId()) - && !StringUtils.isEmpty(requestVo.getDataType())) { + if (!StringUtils.isEmpty(requestVo.getSiteId())) { return success(ieEmsStatsReportService.getPowerDataList(requestVo)); } else { return error("缺少必传项"); diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/PCSCurveResponse.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PCSCurveResponse.java new file mode 100644 index 0000000..cfa956b --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PCSCurveResponse.java @@ -0,0 +1,30 @@ +package com.xzzn.ems.domain.vo; + +import java.util.List; + +/** + * 单数据统计-pcs曲线-返回对象 + * + */ +public class PCSCurveResponse { + /** pcs设备id */ + private String deviceId; + /** 数据对象 */ + private List dataList; + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public List getDataList() { + return dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/PcsStatisListVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PcsStatisListVo.java index e22fa71..c5f9384 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/PcsStatisListVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PcsStatisListVo.java @@ -3,7 +3,7 @@ package com.xzzn.ems.domain.vo; import java.math.BigDecimal; /** - * 数据统计-pcs曲线-通用对象 + * 数据统计-pcs曲线-数据list对象 */ public class PcsStatisListVo { /** @@ -36,6 +36,9 @@ public class PcsStatisListVo { */ private BigDecimal wCurrent; + /** pcs设备id */ + private String deviceId; + public String getStatisDate() { return statisDate; } @@ -83,4 +86,12 @@ public class PcsStatisListVo { public void setwCurrent(BigDecimal wCurrent) { this.wCurrent = wCurrent; } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackCurveResponse.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackCurveResponse.java new file mode 100644 index 0000000..e267d42 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackCurveResponse.java @@ -0,0 +1,30 @@ +package com.xzzn.ems.domain.vo; + +import java.util.List; + +/** + * 数据统计-堆曲线-返回对象 + * + */ +public class StackCurveResponse { + /** pcs设备id */ + private String deviceId; + /** 数据对象 */ + private List dataList; + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public List getDataList() { + return dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackStatisListVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackStatisListVo.java index 3038d51..0c9c6d9 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackStatisListVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackStatisListVo.java @@ -3,7 +3,7 @@ package com.xzzn.ems.domain.vo; import java.math.BigDecimal; /** - * 数据统计-堆曲线-通用对象 + * 数据统计-堆曲线-数据list对象 */ public class StackStatisListVo { /** @@ -31,6 +31,9 @@ public class StackStatisListVo { */ private BigDecimal soc; + /** pcs设备id */ + private String deviceId; + public String getStatisDate() { return statisDate; } @@ -70,4 +73,12 @@ public class StackStatisListVo { public void setSoc(BigDecimal soc) { this.soc = soc; } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/IEmsStatsReportService.java b/ems-system/src/main/java/com/xzzn/ems/service/IEmsStatsReportService.java index 1b1c7ce..bb5bc8e 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/IEmsStatsReportService.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/IEmsStatsReportService.java @@ -16,9 +16,9 @@ public interface IEmsStatsReportService public ElectricDataInfoVo getElectricDataResult(DateSearchRequest requestVo); - public List getPCSDataResult(DateSearchRequest requestVo); + public List getPCSDataResult(DateSearchRequest requestVo); - public List getStackDataResult(DateSearchRequest requestVo); + public List getStackDataResult(DateSearchRequest requestVo); public List getClusterDataResult(StatisClusterDateRequest requestVo); 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 7040e73..34e291d 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 @@ -16,6 +16,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 统计报表数据Service业务层处理 @@ -139,7 +140,8 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService // pcs曲线数据 @Override - public List getPCSDataResult(DateSearchRequest requestVo) { + public List getPCSDataResult(DateSearchRequest requestVo) { + List responseList = new ArrayList<>(); List dataList = new ArrayList(); // 默认时间-7天 @@ -164,12 +166,30 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService // 开始日期-结束日期大于 1 个月,按月展示数据 dataList = emsPcsDataMapper.getPcsActivePowerByMonth(requestVo); } - return dataList; + + // 数据格式转换 按deviceId分组 + if (dataList != null && dataList.size()>0){ + responseList = dataList.stream() + .collect(Collectors.groupingBy(PcsStatisListVo::getDeviceId)) + // 将Map转换为Set后流转 + .entrySet().stream() + // 映射为PCSCurveResponse对象 + .map(entry -> { + PCSCurveResponse response = new PCSCurveResponse(); + response.setDeviceId(entry.getKey()); + response.setDataList(entry.getValue()); + return response; + }) + // 收集为List + .collect(Collectors.toList()); + } + return responseList; } // 电池堆曲线 @Override - public List getStackDataResult(DateSearchRequest requestVo) { + public List getStackDataResult(DateSearchRequest requestVo) { + List responseList = new ArrayList<>(); List dataList = new ArrayList(); // 默认时间-7天 dealRequestTime(requestVo); @@ -193,7 +213,24 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService // 开始日期-结束日期大于 1 个月,按月展示数据 dataList = emsBatteryStackMapper.getStackDataByMonth(requestVo); } - return dataList; + + // 数据格式转换 按deviceId分组 + if (dataList != null && dataList.size()>0){ + responseList = dataList.stream() + .collect(Collectors.groupingBy(StackStatisListVo::getDeviceId)) + // 将Map转换为Set后流转 + .entrySet().stream() + // 映射为PCSCurveResponse对象 + .map(entry -> { + StackCurveResponse response = new StackCurveResponse(); + response.setDeviceId(entry.getKey()); + response.setDataList(entry.getValue()); + return response; + }) + // 收集为List + .collect(Collectors.toList()); + } + return responseList; } // 电池温度 diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml index 7058b1b..11a905c 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml @@ -359,7 +359,6 @@ WHERE p.site_id = #{siteId} - and p.device_id = #{deviceId} AND p.update_time >= #{startDate} @@ -390,6 +389,7 @@ select latest.dateDay as statisDate, + t.device_id as deviceId, from ( SELECT p.site_id, p.device_id,DATE_FORMAT(p.update_time, '%Y-%m-%d') AS dateDay,MAX(p.update_time) as max_update_time FROM ems_battery_stack p @@ -416,6 +417,7 @@ select latest.dateDay as statisDate, + t.device_id as deviceId, from ( SELECT p.site_id, p.device_id,DATE(p.data_update_time ) AS dateDay,MAX(p.data_update_time) as max_update_time FROM ems_pcs_data p @@ -513,6 +513,7 @@ select latest.dateHour as statisDate, + t.device_id as deviceId, from ( SELECT p.site_id, p.device_id,DATE_FORMAT(p.data_update_time, '%H')+1 AS dateHour,MAX(p.data_update_time) as max_update_time FROM ems_pcs_data p