From ed025d27507f96433461c56333a675608228b1c1 Mon Sep 17 00:00:00 2001 From: mashili Date: Tue, 1 Jul 2025 16:25:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A6=82=E7=8E=87=E7=BB=9F=E8=AE=A1-=E7=94=B5?= =?UTF-8?q?=E9=87=8F=E6=8C=87=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ems/EmsStatisticalReportController.java | 50 +++++++++++++++ .../xzzn/ems/domain/vo/DateSearchRequest.java | 47 ++++++++++++++ .../ems/domain/vo/ElectricDataInfoVo.java | 63 +++++++++++++++++++ .../xzzn/ems/domain/vo/SiteMonitorDataVo.java | 10 +++ .../com/xzzn/ems/mapper/EmsPcsDataMapper.java | 10 +-- .../ems/service/IEmsStatsReportService.java | 16 +++++ .../impl/EmsStatsReportServiceImpl.java | 62 ++++++++++++++++++ .../mapper/ems/EmsDevicesSettingMapper.xml | 2 +- .../resources/mapper/ems/EmsPcsDataMapper.xml | 6 +- 9 files changed, 257 insertions(+), 9 deletions(-) create mode 100644 ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsStatisticalReportController.java create mode 100644 ems-system/src/main/java/com/xzzn/ems/domain/vo/DateSearchRequest.java create mode 100644 ems-system/src/main/java/com/xzzn/ems/domain/vo/ElectricDataInfoVo.java create mode 100644 ems-system/src/main/java/com/xzzn/ems/service/IEmsStatsReportService.java create mode 100644 ems-system/src/main/java/com/xzzn/ems/service/impl/EmsStatsReportServiceImpl.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 new file mode 100644 index 0000000..7786264 --- /dev/null +++ b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsStatisticalReportController.java @@ -0,0 +1,50 @@ +package com.xzzn.web.controller.ems; + +import com.xzzn.common.core.controller.BaseController; +import com.xzzn.common.core.domain.AjaxResult; +import com.xzzn.common.utils.StringUtils; +import com.xzzn.ems.domain.vo.DateSearchRequest; +import com.xzzn.ems.service.IEmsStatsReportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; + +/** + * 单站监控-统计报表 + * + * @author xzzn + */ +@RestController +@RequestMapping("/ems/statsReport") +public class EmsStatisticalReportController extends BaseController +{ + + @Autowired + private IEmsStatsReportService ieEmsStatsReportService; + + /** + * 概率统计-收益指标查询 + */ + @GetMapping("/getRevenueData") + public AjaxResult getRevenueData(DateSearchRequest requestVo) + { + return success(null); + } + + /** + * 概率统计-电量指标查询 + */ + @GetMapping("/getElectricData") + public AjaxResult getElectricData(DateSearchRequest requestVo) + { + if (!StringUtils.isEmpty(requestVo.getSiteId())) { + return success(ieEmsStatsReportService.getElectricDataResult(requestVo)); + } else { + return error("站点id必传"); + } + } + +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/DateSearchRequest.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/DateSearchRequest.java new file mode 100644 index 0000000..123d55d --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/DateSearchRequest.java @@ -0,0 +1,47 @@ +package com.xzzn.ems.domain.vo; + + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 入参-时间 + * + */ +public class DateSearchRequest { + + /** 开始时间 */ + @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/domain/vo/ElectricDataInfoVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/ElectricDataInfoVo.java new file mode 100644 index 0000000..5827ba6 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/ElectricDataInfoVo.java @@ -0,0 +1,63 @@ +package com.xzzn.ems.domain.vo; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 概率统计-电量指标返回 + * + */ +public class ElectricDataInfoVo { + + /** + * 总充电量 + */ + private BigDecimal totalChargedCap; + + /** + * 总放电量 + */ + private BigDecimal totalDisChargedCap; + + /** + * 综合效率 = 放电量/充电量 + */ + private BigDecimal efficiency; + + /** + * 按天放电统计 + */ + private List sevenDayDisChargeStats; + + public BigDecimal getTotalChargedCap() { + return totalChargedCap; + } + + public void setTotalChargedCap(BigDecimal totalChargedCap) { + this.totalChargedCap = totalChargedCap; + } + + public BigDecimal getTotalDisChargedCap() { + return totalDisChargedCap; + } + + public void setTotalDisChargedCap(BigDecimal totalDisChargedCap) { + this.totalDisChargedCap = totalDisChargedCap; + } + + public BigDecimal getEfficiency() { + return efficiency; + } + + public void setEfficiency(BigDecimal efficiency) { + this.efficiency = efficiency; + } + + public List getSevenDayDisChargeStats() { + return sevenDayDisChargeStats; + } + + public void setSevenDayDisChargeStats(List sevenDayDisChargeStats) { + this.sevenDayDisChargeStats = sevenDayDisChargeStats; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorDataVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorDataVo.java index e68c14d..58c0291 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorDataVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorDataVo.java @@ -22,6 +22,8 @@ public class SiteMonitorDataVo { */ private BigDecimal chargedCap; + private BigDecimal dailyEfficiency; + public String getAmmeterDate() { return ammeterDate; } @@ -45,4 +47,12 @@ public class SiteMonitorDataVo { public void setChargedCap(BigDecimal chargedCap) { this.chargedCap = chargedCap; } + + public BigDecimal getDailyEfficiency() { + return dailyEfficiency; + } + + public void setDailyEfficiency(BigDecimal dailyEfficiency) { + this.dailyEfficiency = dailyEfficiency; + } } 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 7f4c5bc..ad02af4 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 @@ -6,10 +6,7 @@ import java.util.List; import java.util.Map; import com.xzzn.ems.domain.EmsPcsData; -import com.xzzn.ems.domain.vo.ElectricIndexList; -import com.xzzn.ems.domain.vo.PcsDetailInfoVo; -import com.xzzn.ems.domain.vo.SiteMonitorDataVo; -import com.xzzn.ems.domain.vo.SiteMonitorRunningHeadInfoVo; +import com.xzzn.ems.domain.vo.*; import org.apache.ibatis.annotations.Param; /** @@ -103,9 +100,8 @@ public interface EmsPcsDataMapper /** * 根据时间按天获取充放电量 - * @param startDate - * @param endDate + * @param requestVo * @return */ - public List getPcsDataByDate(Date startDate, Date endDate); + public List getPcsDataByDate(DateSearchRequest requestVo); } 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 new file mode 100644 index 0000000..114bf3b --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/service/IEmsStatsReportService.java @@ -0,0 +1,16 @@ +package com.xzzn.ems.service; + +import com.xzzn.ems.domain.vo.DateSearchRequest; +import com.xzzn.ems.domain.vo.ElectricDataInfoVo;;import java.util.Date; + +/** + * 统计报表数据Service接口 + * + * @author xzzn + * @date 2025-06-29 + */ +public interface IEmsStatsReportService +{ + + public ElectricDataInfoVo getElectricDataResult(DateSearchRequest 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 new file mode 100644 index 0000000..631dab7 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsStatsReportServiceImpl.java @@ -0,0 +1,62 @@ +package com.xzzn.ems.service.impl; + +import com.xzzn.ems.domain.vo.DateSearchRequest; +import com.xzzn.ems.domain.vo.ElectricDataInfoVo; +import com.xzzn.ems.domain.vo.SiteMonitorDataVo; +import com.xzzn.ems.mapper.EmsPcsDataMapper; +import com.xzzn.ems.service.IEmsStatsReportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; + +/** + * 统计报表数据Service业务层处理 + * + * @author xzzn + * @date 2025-06-29 + */ +@Service +public class EmsStatsReportServiceImpl implements IEmsStatsReportService +{ + + @Autowired + private EmsPcsDataMapper emsPcsDataMapper; + + @Override + public ElectricDataInfoVo getElectricDataResult(DateSearchRequest requestVo) { + ElectricDataInfoVo electricDataInfoVo = new ElectricDataInfoVo(); + + // 根据时间获取每天的充放电量 + List dataList = emsPcsDataMapper.getPcsDataByDate(requestVo); + if (!CollectionUtils.isEmpty(dataList)){ + // 总充、总放、效率 + BigDecimal totalDischarge = new BigDecimal(0); + BigDecimal totalCharge = new BigDecimal(0); + BigDecimal efficiency = new BigDecimal(0); + + for (SiteMonitorDataVo siteMonitorDataVo : dataList) { + totalDischarge = totalDischarge.add(siteMonitorDataVo.getDisChargedCap() == null ? BigDecimal.ZERO : siteMonitorDataVo.getDisChargedCap()); + totalCharge = totalCharge.add(siteMonitorDataVo.getChargedCap() == null ? BigDecimal.ZERO : siteMonitorDataVo.getChargedCap()); + + // 计算单天的效率 + BigDecimal dailyEfficiency = new BigDecimal(0); + if ( siteMonitorDataVo.getDisChargedCap().compareTo(BigDecimal.ZERO)>0){ + dailyEfficiency = siteMonitorDataVo.getDisChargedCap().divide(siteMonitorDataVo.getChargedCap(), 2, RoundingMode.HALF_UP); + } + siteMonitorDataVo.setDailyEfficiency(dailyEfficiency); + } + if ( totalCharge.compareTo(BigDecimal.ZERO)>0){ + efficiency = totalDischarge.divide(totalCharge, 2, RoundingMode.HALF_UP); + } + electricDataInfoVo.setSevenDayDisChargeStats(dataList); + electricDataInfoVo.setTotalDisChargedCap(totalDischarge); + electricDataInfoVo.setTotalChargedCap(totalCharge); + electricDataInfoVo.setEfficiency(efficiency); + } + return electricDataInfoVo; + } +} diff --git a/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml index 3fb659d..3323af8 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml @@ -151,7 +151,7 @@ \ No newline at end of file