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 1f557f5..4d43ef1 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 @@ -100,7 +100,7 @@ public class EmsStatisticalReportController extends BaseController } /** - * 概率统计-获取总表 + * 概率统计-获取站点下所有电表 */ @GetMapping("/getLoadNameList") public AjaxResult getLoadNameList(String siteId) diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSBatteryClusterVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSBatteryClusterVo.java index 8de0dda..dfae301 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSBatteryClusterVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSBatteryClusterVo.java @@ -57,6 +57,9 @@ public class BMSBatteryClusterVo { /** 设备唯一标识符 */ private String deviceId; + /** 父类设备名称 */ + private String parentDeviceName; + private List batteryDataList; public String getDeviceName() { @@ -194,4 +197,12 @@ public class BMSBatteryClusterVo { public void setBatteryDataList(List batteryDataList) { this.batteryDataList = batteryDataList; } + + public String getParentDeviceName() { + return parentDeviceName; + } + + public void setParentDeviceName(String parentDeviceName) { + this.parentDeviceName = parentDeviceName; + } } 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 58c0291..a2aaf1f 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 @@ -24,6 +24,10 @@ public class SiteMonitorDataVo { private BigDecimal dailyEfficiency; + private BigDecimal totalChargedCap; + + private BigDecimal totalDisChargedCap; + public String getAmmeterDate() { return ammeterDate; } @@ -55,4 +59,20 @@ public class SiteMonitorDataVo { public void setDailyEfficiency(BigDecimal dailyEfficiency) { this.dailyEfficiency = dailyEfficiency; } + + 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; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDailyChargeDataMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDailyChargeDataMapper.java index 2d88493..27c3864 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDailyChargeDataMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDailyChargeDataMapper.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import com.xzzn.ems.domain.EmsDailyChargeData; +import com.xzzn.ems.domain.vo.ElectricIndexList; import com.xzzn.ems.domain.vo.SiteMonitorDataVo; import org.apache.ibatis.annotations.Param; @@ -76,4 +77,9 @@ public interface EmsDailyChargeDataMapper // 按天获取站点每日总充总放 public List getTotalChargeDataByDay(@Param("siteId")String siteId,@Param("startDate")Date startDate, @Param("endDate")Date endDate); + + // 按月获取站点每日总充总放 + public List getTotalChargeDataByMonth(@Param("siteId")String siteId,@Param("startDate")Date startDate, @Param("endDate")Date endDate); + + public List getAllSiteChargeDataByMonth(); } diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDevicesSettingMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDevicesSettingMapper.java index 29e851e..d46d6b0 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDevicesSettingMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDevicesSettingMapper.java @@ -77,11 +77,11 @@ public interface EmsDevicesSettingMapper public List> getDeviceInfosBySiteIdAndCategory(@Param("siteId")String siteId, @Param("deviceCategory")String deviceCategory); /** - * 获取该设备下的总表 + * 获取该设备下所有的电表 * @param siteId * @return */ - public List> getLoadNameList(String siteId); + public List> getAmmeterNameList(String siteId); public EmsDevicesSetting getDeviceBySiteAndDeviceId(@Param("deviceId")String deviceId, @Param("siteId")String siteId); 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 9a5a7f2..ce7a868 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 @@ -92,12 +92,6 @@ public interface EmsPcsDataMapper */ public List getPcsDetailInfoBySiteId(String siteId); - /** - * 获取总充+总放 - * @return - */ - public Map getPcsTotalChargeData(String siteId); - /** * 根据时间按天获取充放电量 * @param siteId @@ -106,14 +100,7 @@ public interface EmsPcsDataMapper * @return */ public List getPcsDataByDay(@Param("siteId")String siteId, @Param("startDate")Date startDate, @Param("endDate")Date endDate); - /** - * 根据时间按月获取充放电量 - * @param siteId - * @param startDate - * @param endDate - * @return - */ - public List getPcsDataByMonth(@Param("siteId")String siteId, @Param("startDate")Date startDate, @Param("endDate")Date endDate); + /** * 根据时间按小时获取充放电量 * @param siteId 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 32a9ec8..7040e73 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 @@ -1,6 +1,7 @@ package com.xzzn.ems.service.impl; import com.xzzn.common.utils.DateUtils; +import com.xzzn.ems.domain.EmsAmmeterData; import com.xzzn.ems.domain.vo.*; import com.xzzn.ems.mapper.*; import com.xzzn.ems.service.IEmsStatsReportService; @@ -70,37 +71,38 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService String siteId = requestVo.getSiteId(); String deviceId = requestVo.getDeviceId(); - if ("021_DDS_01".equals(siteId)){ - deviceId = "METE"; - } else if ("021_FXX_01".equals(siteId)){ - deviceId = "LOAD"; - } // 日期筛选 List dataList = new ArrayList(); // 开始日期和结束日期同一天,展示 0-24 小时数据 if (DateUtils.isSameDay(startDate, endDate)){ electricDataInfoVo.setUnit("时"); - //endDate = DateUtils.addDays(endDate, 1); - //dataList = emsPcsDataMapper.getPcsDataByHour(requestVo.getSiteId(), startDate, endDate); - dataList = emsAmmeterDataMapper.getChargeDataByHour(siteId,deviceId,startDate); + if ("021_DDS_01".equals(siteId)) { + deviceId = "METE"; + dataList = emsAmmeterDataMapper.getChargeDataByHour(siteId,deviceId,startDate); + } else if ("021_FXX_01".equals(siteId)) { + endDate = DateUtils.addDays(endDate, 1); + dataList = emsPcsDataMapper.getPcsDataByHour(requestVo.getSiteId(), startDate, endDate); + } } else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 1 && DateUtils.differentDaysByMillisecond(endDate, startDate) < 30){ electricDataInfoVo.setUnit("日"); // 开始日期-结束日期大于 1 天,小于30 天,按天展示数据 - //dataList = emsPcsDataMapper.getPcsDataByDay(requestVo.getSiteId(), startDate, endDate); dataList = emsDailyChargeDataMapper.getTotalChargeDataByDay(siteId,startDate,endDate); } else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 30){ electricDataInfoVo.setUnit("月"); // 开始日期-结束日期大于 1 个月,按月展示数据 - dataList = emsAmmeterDataMapper.getChargeDataByMonth(requestVo.getSiteId(),deviceId, startDate, endDate); + dataList = emsDailyChargeDataMapper.getTotalChargeDataByMonth(siteId,startDate, endDate); } - // 根据时间获取每天的充放电量 + // 获取昨天昨晚一条数据,计算第一个小时的差值 + //setFirstDataDiff(dataList,siteId,deviceId); + // 计算充放电效率 if (!CollectionUtils.isEmpty(dataList)){ for (SiteMonitorDataVo siteMonitorDataVo : dataList) { // 计算单天的效率 BigDecimal dailyEfficiency = new BigDecimal(0); - if ( siteMonitorDataVo.getChargedCap().compareTo(BigDecimal.ZERO)>0){ + if ( siteMonitorDataVo.getChargedCap() != null && + siteMonitorDataVo.getChargedCap().compareTo(BigDecimal.ZERO)>0){ dailyEfficiency = siteMonitorDataVo.getDisChargedCap().divide(siteMonitorDataVo.getChargedCap(), 2, RoundingMode.HALF_UP); dailyEfficiency = dailyEfficiency.multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); } @@ -112,6 +114,29 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService return electricDataInfoVo; } + private void setFirstDataDiff(List dataList, String siteId, String deviceId) { + BigDecimal yestTotalDisChargeDate = new BigDecimal(0); + BigDecimal yestTotalChargeDate = new BigDecimal(0); + + String yestDate = DateUtils.getYesterdayDate(); + if (dataList != null && dataList.size()>0){ + SiteMonitorDataVo firstData = dataList.get(0); + if ("021_DDS_01".equals(siteId)){ + EmsAmmeterData yestData = emsAmmeterDataMapper.getYestLatestDate(siteId,deviceId,yestDate); + if (yestData != null) { + yestTotalDisChargeDate = yestData.getCurrentReverseActiveTotal(); + yestTotalChargeDate = yestData.getCurrentForwardActiveTotal(); + } + } else if ("021_FXX_01".equals(siteId)) { + + } + firstData.setChargedCap(firstData.getTotalChargedCap() == null ? BigDecimal.ZERO + : firstData.getTotalChargedCap().subtract(yestTotalChargeDate)); + firstData.setDisChargedCap(firstData.getTotalDisChargedCap() == null ? BigDecimal.ZERO + : firstData.getTotalDisChargedCap().subtract(yestTotalDisChargeDate)); + } + } + // pcs曲线数据 @Override public List getPCSDataResult(DateSearchRequest requestVo) { @@ -188,7 +213,7 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService @Override public List> getLoadNameList(String siteId) { - return emsDevicesSettingMapper.getLoadNameList(siteId); + return emsDevicesSettingMapper.getAmmeterNameList(siteId); } // 电表报表 diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/HomePageServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/HomePageServiceImpl.java index 03a8a62..948b85f 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/HomePageServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/HomePageServiceImpl.java @@ -113,7 +113,7 @@ public class HomePageServiceImpl implements IHomePageService HomePageDataViewVo homePageDataViewVo = new HomePageDataViewVo(); // 电量指标 //List electricDataList = emsPcsDataMapper.getElectDataList(); - List electricDataList = getElectricDataList(); + List electricDataList = getElectricDataList2(); homePageDataViewVo.setElecDataList(electricDataList); // 系统效率 List systemEfficiencyLists = new ArrayList<>(); @@ -159,6 +159,12 @@ public class HomePageServiceImpl implements IHomePageService return homePageDataViewVo; } + private List getElectricDataList2() { + List electricDataList = new ArrayList<>(); + electricDataList = emsDailyChargeDataMapper.getAllSiteChargeDataByMonth(); + return electricDataList; + } + private List getElectricDataList() { List electricDataList = new ArrayList<>(); // 获取每个月最早和最晚的时间 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 3084a11..3915c6e 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 @@ -321,9 +321,11 @@ public class SingleSiteServiceImpl implements ISingleSiteService { for (Map clusterDevice : clusterIds) { BMSBatteryClusterVo bmsBatteryClusterVo = new BMSBatteryClusterVo(); bmsBatteryClusterVo.setDeviceName(clusterDevice.get("deviceName").toString()); + bmsBatteryClusterVo.setParentDeviceName(clusterDevice.get("parentDeviceName").toString()); // 从redis取单个簇详细数据 String clusterId = clusterDevice.get("id").toString(); EmsBatteryCluster clusterData = redisCache.getCacheObject(RedisKeyConstants.CLUSTER +siteId+"_"+clusterId); + String parentDeviceId = ""; if (clusterData != null) { BeanUtils.copyProperties(clusterData, bmsBatteryClusterVo); // 处理单体电池数据-平均/最大/最小 @@ -331,7 +333,6 @@ public class SingleSiteServiceImpl implements ISingleSiteService { dealWithBatteryClusterData(clusterData,clusterDataList); bmsBatteryClusterVo.setBatteryDataList(clusterDataList); } - bmsBatteryClusterVoList.add(bmsBatteryClusterVo); } } diff --git a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml index ff90c79..fc045db 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml @@ -918,24 +918,25 @@ diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml index 4c1c4d9..7058b1b 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml @@ -428,8 +428,8 @@ - SELECT SUM(t.total_charge_data) AS totalChargedCap, - SUM(t.total_discharge_data) AS totalDischargedCap + SELECT + SUM(t.total_charge_data) AS totalChargedCap, + SUM(t.total_discharge_data) AS totalDischargedCap FROM ems_daily_charge_data t - LEFT JOIN ems_site_setting ss ON t.site_id = ss.site_id - WHERE t.date_time = #{nowData} + LEFT JOIN ems_site_setting ss ON t.site_id = ss.site_id + INNER JOIN ( + SELECT site_id,MAX(date_time) AS latest_date FROM ems_daily_charge_data + WHERE date_time <= #{nowData} - and t.site_id = #{siteId} + and site_id = #{siteId} - AND t.total_charge_data IS NOT NULL - AND t.total_discharge_data IS NOT NULL + AND total_charge_data IS NOT NULL + AND total_discharge_data IS NOT NULL + GROUP BY site_id + ) AS latest ON t.date_time = latest.latest_date + and t.site_id = latest.site_id + + where t.site_id = #{siteId} + SELECT t.date_time AS ammeterDate, - t.total_charge_Data as chargedCap, - t.total_discharge_Data as disChargedCap + SUM(t.charge_data) as chargedCap, + SUM(t.discharge_data) as disChargedCap FROM ems_daily_charge_data t WHERE t.site_id = #{siteId} AND t.date_time BETWEEN #{startDate} AND #{endDate} + group BY ammeterDate order by ammeterDate + + + + \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml index 38cb326..af5eb4f 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml @@ -182,10 +182,15 @@ - + select distinct device_id as id,device_name as deviceName from ems_devices_setting where site_id = #{siteId} and device_category = 'AMMETER' select latest.dateHour as ammeterDate, - sum(t.total_ac_charge_energy) as chargedCap, - sum(t.total_ac_discharge_energy) as disChargedCap + sum(t.daily_ac_charge_energy) as chargedCap, + sum(t.daily_ac_discharge_energy) as disChargedCap 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