diff --git a/ems-common/src/main/java/com/xzzn/common/enums/SiteEnum.java b/ems-common/src/main/java/com/xzzn/common/enums/SiteEnum.java new file mode 100644 index 0000000..78b0b90 --- /dev/null +++ b/ems-common/src/main/java/com/xzzn/common/enums/SiteEnum.java @@ -0,0 +1,31 @@ +package com.xzzn.common.enums; + +/** + * device-设备类型 + * + * @author xzzn + */ + +public enum SiteEnum +{ + DDS("021_DDS_01", "电动所内部"), FX("021_FXX_01", "奉贤西部污水处理厂"); + + private final String code; + private final String info; + + SiteEnum(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/PowerStatisListVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PowerStatisListVo.java index 5159437..330f05f 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/PowerStatisListVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PowerStatisListVo.java @@ -12,22 +12,22 @@ public class PowerStatisListVo { private String statisDate; /** - * 电网功率-total_apparent_power总交流视在功率 + * 电网功率-total_active_power(LOAD) */ private BigDecimal gridPower; /** - * 负载功率-total_active_power总交流有功电率 + * 负载功率 */ private BigDecimal loadPower; /** - * 储能功率-max_discharge_power_capacity最大可放功率 + * 储能功率-secondary_total_active_power(METE) */ private BigDecimal storagePower; /** - * 光伏功率-ac_capacitive_reactive_power交流侧容性无功功率 + * 光伏功率-total_active_power(METEGT) */ private BigDecimal pvPower; diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAmmeterDataMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAmmeterDataMapper.java index 4b1b554..5049e76 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAmmeterDataMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAmmeterDataMapper.java @@ -84,4 +84,8 @@ public interface EmsAmmeterDataMapper // 概率统计-电量指标(按月) public List getChargeDataByMonth(@Param("siteId")String siteId, @Param("deviceId")String deviceId,@Param("startDate")Date startDate,@Param("endDate")Date endDate); + // 报表统计-功率曲线 + public List getPowerDataByHour(DateSearchRequest requestVo); + public List getPowerDataByDay(DateSearchRequest requestVo); + public List getPowerDataByMonth(DateSearchRequest requestVo); } 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 ce7a868..a3d1bc1 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 @@ -1,9 +1,7 @@ package com.xzzn.ems.mapper; -import java.math.BigDecimal; import java.util.Date; import java.util.List; -import java.util.Map; import com.xzzn.ems.domain.EmsPcsData; import com.xzzn.ems.domain.vo.*; @@ -129,15 +127,4 @@ public interface EmsPcsDataMapper public List getPcsActivePowerByHour(DateSearchRequest requestVo); public List getPcsActivePowerByMonth(DateSearchRequest requestVo); - - /** - * 获取pcs功率曲线数据 - * @param requestVo - * @return - */ - public List getPowerDataByHour(DateSearchRequest requestVo); - - public List getPowerDataByDay(DateSearchRequest requestVo); - - public List getPowerDataByMonth(DateSearchRequest requestVo); } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/DDSDataProcessServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/DDSDataProcessServiceImpl.java index 05cf43a..e527c2f 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/DDSDataProcessServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/DDSDataProcessServiceImpl.java @@ -888,6 +888,9 @@ public class DDSDataProcessServiceImpl extends AbstractBatteryDataProcessor impl dataMete.setVoltageUnbalanceDegree(StringUtils.getBigDecimal(obj.get("DYBPHD"))); dataMete.setCurrentUnbalanceDegree(StringUtils.getBigDecimal(obj.get("DLBPHD"))); + // 储能功率 + dataMete.setSecondaryTotalActivePower(StringUtils.getBigDecimal(obj.get("ZYGGL"))); + dataMete.setCreateBy("system"); dataMete.setCreateTime(DateUtils.getNowDate()); dataMete.setUpdateBy("system"); 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 34e291d..94335b4 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,5 +1,6 @@ package com.xzzn.ems.service.impl; +import com.xzzn.common.enums.SiteEnum; import com.xzzn.common.utils.DateUtils; import com.xzzn.ems.domain.EmsAmmeterData; import com.xzzn.ems.domain.vo.*; @@ -11,6 +12,7 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.DecimalFormat; import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; @@ -46,6 +48,9 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService @Autowired private EmsDailyChargeDataMapper emsDailyChargeDataMapper; + private static final BigDecimal DDS_STORAGE_FACTOR = new BigDecimal("0.1"); + private static final BigDecimal DDS_PV_FACTOR = new BigDecimal("-0.001"); + // 电量指标 @Override public ElectricDataInfoVo getElectricDataResult(DateSearchRequest requestVo) { @@ -328,23 +333,52 @@ public class EmsStatsReportServiceImpl implements IEmsStatsReportService if (DateUtils.isSameDay(startDate, endDate)){ endDate = DateUtils.addDays(endDate, 1); requestVo.setEndDate(endDate); - dataList = emsPcsDataMapper.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 = emsPcsDataMapper.getPowerDataByDay(requestVo); + dataList = emsAmmeterDataMapper.getPowerDataByDay(requestVo); } else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 30){ endDate = DateUtils.addDays(endDate, 1); requestVo.setEndDate(endDate); // 开始日期-结束日期大于 1 个月,按月展示数据 - dataList = emsPcsDataMapper.getPowerDataByMonth(requestVo); + dataList = emsAmmeterDataMapper.getPowerDataByMonth(requestVo); } + // 处理数据设置 负荷功率 + dealDataPower(requestVo.getSiteId(),dataList); return dataList; } + private void dealDataPower(String siteId, List dataList) { + DecimalFormat df = new DecimalFormat("0.####"); + + if (dataList == null || dataList.size() == 0){ + return; + } + + for (PowerStatisListVo powerStatisListVo : dataList) { + BigDecimal gridPower = powerStatisListVo.getGridPower() == null ? BigDecimal.ZERO : powerStatisListVo.getGridPower(); + BigDecimal storagePower = powerStatisListVo.getStoragePower() == null ? BigDecimal.ZERO : powerStatisListVo.getStoragePower(); + BigDecimal pvPower = powerStatisListVo.getPvPower() == null ? BigDecimal.ZERO : powerStatisListVo.getPvPower(); + BigDecimal loadPower = new BigDecimal(0); + + // 电动所:储能功率=储能功率乘0.1;光伏功率=光伏功率*乘-0.001;负荷功率=电网功率+光伏功率-储能功率 + if (SiteEnum.DDS.getCode().equals(siteId)){ + powerStatisListVo.setStoragePower(storagePower.multiply(DDS_STORAGE_FACTOR).stripTrailingZeros()); + powerStatisListVo.setPvPower(pvPower.multiply(DDS_PV_FACTOR).stripTrailingZeros()); + loadPower = gridPower.add(powerStatisListVo.getPvPower()).subtract(powerStatisListVo.getStoragePower()); + powerStatisListVo.setLoadPower(loadPower); + } else if (SiteEnum.FX.getCode().equals(siteId)){ + // 奉贤:负荷功率=电网功率-储能功率; + loadPower = gridPower.subtract(storagePower); + powerStatisListVo.setLoadPower(loadPower); + } + } + } + // 统计入参时间处理 public void dealRequestTime(DateSearchRequest requestVo){ diff --git a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml index fc045db..3b1308a 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml @@ -963,4 +963,63 @@ WHERE rn = 1 ORDER BY ammeterDate + + + MAX(CASE WHEN t.device_id = 'METE' THEN t.secondary_total_active_power END) AS gridPower, + MAX(CASE WHEN t.device_id = 'LOAD' THEN t.total_active_power END) AS storagePower, + MAX(CASE WHEN t.device_id = 'METEGF' THEN t.total_active_power END) AS pvPower + + + + WHERE p.device_id in ('METE','LOAD','METEGF') + and p.site_id = #{siteId} + + AND p.data_update_time >= #{startDate} + + + AND p.data_update_time < #{endDate} + + + + + + + + \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml index 667765c..7b08a6c 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml @@ -539,64 +539,4 @@ AND latest.max_update_time = t.data_update_time order by statisDate desc - - - - - t.total_apparent_power as gridPower - - - t.total_active_power as loadPower - - - t.max_discharge_power_capacity as storagePower - - - t.ac_capacitive_reactive_power as pvPower - - - 0 as gridPower - - - - - - - - - \ No newline at end of file