diff --git a/ems-common/src/main/java/com/xzzn/common/enums/AmmeterCategoryStatus.java b/ems-common/src/main/java/com/xzzn/common/enums/AmmeterCategory.java similarity index 55% rename from ems-common/src/main/java/com/xzzn/common/enums/AmmeterCategoryStatus.java rename to ems-common/src/main/java/com/xzzn/common/enums/AmmeterCategory.java index 957e9f6..978b342 100644 --- a/ems-common/src/main/java/com/xzzn/common/enums/AmmeterCategoryStatus.java +++ b/ems-common/src/main/java/com/xzzn/common/enums/AmmeterCategory.java @@ -5,14 +5,18 @@ package com.xzzn.common.enums; * * @author xzzn */ -public enum AmmeterCategoryStatus +public enum AmmeterCategory { - TOTAL_CHARGE("1", "累计充电量"), TOTAL_DISCHARGE("2", "累计放电量"), DAILY_CHARGE("3", "日充电量"), DAILY_DISCHARGE("4", "日放电量"); + CURRENT_COMB_ACTIVE("1", "当前组合有功电能"), + CURRENT_COMB_REACTIVE("2", "当前组合无功"), + A_POWER("3", "A相功率"), + B_POWER("4", "B相功率"), + C_POWER("5", "C相功率"); private final String code; private final String info; - AmmeterCategoryStatus(String code, String info) + AmmeterCategory(String code, String info) { this.code = code; this.info = info; diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataResponse.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataResponse.java new file mode 100644 index 0000000..b5f0994 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataResponse.java @@ -0,0 +1,31 @@ +package com.xzzn.ems.domain.vo; + +import java.util.List; + +/** + * 电表数据 + */ +public class AmmeterDataResponse { + + /** 总表信息 */ + private AmmeterLoadDataVo ammeterLoadData; + + /** 储能表信息 */ + private AmmeterMeteDataVo ammeterMeteData; + + public AmmeterLoadDataVo getAmmeterLoadData() { + return ammeterLoadData; + } + + public void setAmmeterLoadDataVoList(AmmeterLoadDataVo ammeterLoadData) { + this.ammeterLoadData = ammeterLoadData; + } + + public AmmeterMeteDataVo getAmmeterMeteData() { + return ammeterMeteData; + } + + public void setAmmeterMeteDataVoList(AmmeterMeteDataVo ammeterMeteData) { + this.ammeterMeteData = ammeterMeteData; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterLoadDataVo.java similarity index 72% rename from ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataVo.java rename to ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterLoadDataVo.java index 119f4ab..f443390 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterLoadDataVo.java @@ -6,9 +6,9 @@ import java.util.Date; import java.util.List; /** - * 电表数据 + * 电表-总表数据 */ -public class AmmeterDataVo { +public class AmmeterLoadDataVo { /** 电表名称 */ private String deviceName; @@ -20,7 +20,8 @@ public class AmmeterDataVo { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date dataUpdateTime; - private List ammeterDataDetailInfos; + /** 总表数据信息 */ + private List loadDataDetailInfo; public String getDeviceName() { return deviceName; @@ -46,11 +47,11 @@ public class AmmeterDataVo { this.dataUpdateTime = dataUpdateTime; } - public List getAmmeterDataDetailInfos() { - return ammeterDataDetailInfos; + public List getLoadDataDetailInfo() { + return loadDataDetailInfo; } - public void setAmmeterDataDetailInfos(List ammeterDataDetailInfos) { - this.ammeterDataDetailInfos = ammeterDataDetailInfos; + public void setLoadDataDetailInfo(List loadDataDetailInfo) { + this.loadDataDetailInfo = loadDataDetailInfo; } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterMeteDataVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterMeteDataVo.java new file mode 100644 index 0000000..a9a941d --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterMeteDataVo.java @@ -0,0 +1,57 @@ +package com.xzzn.ems.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; +import java.util.List; + +/** + * 电表-总表数据 + */ +public class AmmeterMeteDataVo { + + /** 电表名称 */ + private String deviceName; + + /** 通信状态 */ + private String emsCommunicationStatus; + + /** 数据更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dataUpdateTime; + + /** 储能表数据信息 */ + private List meteDataDetailInfo; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getEmsCommunicationStatus() { + return emsCommunicationStatus; + } + + public void setEmsCommunicationStatus(String emsCommunicationStatus) { + this.emsCommunicationStatus = emsCommunicationStatus; + } + + public Date getDataUpdateTime() { + return dataUpdateTime; + } + + public void setDataUpdateTime(Date dataUpdateTime) { + this.dataUpdateTime = dataUpdateTime; + } + + public List getMeteDataDetailInfo() { + return meteDataDetailInfo; + } + + public void setMeteDataDetailInfo(List meteDataDetailInfo) { + this.meteDataDetailInfo = meteDataDetailInfo; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataDetailInfo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/LoadDataDetailInfo.java similarity index 63% rename from ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataDetailInfo.java rename to ems-system/src/main/java/com/xzzn/ems/domain/vo/LoadDataDetailInfo.java index 7ef28fa..a019f26 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataDetailInfo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/LoadDataDetailInfo.java @@ -1,12 +1,11 @@ package com.xzzn.ems.domain.vo; import java.math.BigDecimal; -import java.util.Date; /** - * 电表详细数据 + * 电表-总表数据展示 */ -public class AmmeterDataDetailInfo +public class LoadDataDetailInfo { /** 类别 */ private String category; @@ -15,10 +14,10 @@ public class AmmeterDataDetailInfo private BigDecimal totalKwh = BigDecimal.ZERO; /** 尖 (kWh) */ - private BigDecimal sharpKwh = BigDecimal.ZERO; + private BigDecimal peakKwh = BigDecimal.ZERO; /** 峰 (kWh) */ - private BigDecimal peakKwh = BigDecimal.ZERO; + private BigDecimal highKwh = BigDecimal.ZERO; /** 平 (kWh) */ private BigDecimal flatKwh = BigDecimal.ZERO; @@ -26,11 +25,6 @@ public class AmmeterDataDetailInfo /** 谷 (kWh) */ private BigDecimal valleyKwh = BigDecimal.ZERO; - /** 总表设备Id */ - private String deviceId; - - /** 数据更新时间 */ - private Date updateTime; public BigDecimal getValleyKwh() { return valleyKwh; @@ -56,12 +50,12 @@ public class AmmeterDataDetailInfo this.peakKwh = peakKwh; } - public BigDecimal getSharpKwh() { - return sharpKwh; + public BigDecimal getHighKwh() { + return highKwh; } - public void setSharpKwh(BigDecimal sharpKwh) { - this.sharpKwh = sharpKwh; + public void setHighKwh(BigDecimal highKwh) { + this.highKwh = highKwh; } public BigDecimal getTotalKwh() { @@ -79,20 +73,4 @@ public class AmmeterDataDetailInfo public void setCategory(String category) { this.category = category; } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public Date getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/MeteDataDetailInfo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/MeteDataDetailInfo.java new file mode 100644 index 0000000..ede89d8 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/MeteDataDetailInfo.java @@ -0,0 +1,42 @@ +package com.xzzn.ems.domain.vo; + +import java.math.BigDecimal; + +/** + * 电表-储能表数据展示 + */ +public class MeteDataDetailInfo +{ + /** 类别:A相 B相 C相*/ + private String category; + + /** 有功功率 */ + private BigDecimal activePower = BigDecimal.ZERO; + + /** 无功功率 */ + private BigDecimal reactivePower = BigDecimal.ZERO; + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public BigDecimal getActivePower() { + return activePower; + } + + public void setActivePower(BigDecimal activePower) { + this.activePower = activePower; + } + + public BigDecimal getReactivePower() { + return reactivePower; + } + + public void setReactivePower(BigDecimal reactivePower) { + this.reactivePower = reactivePower; + } +} 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 d308762..bff726e 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 @@ -2,8 +2,6 @@ package com.xzzn.ems.mapper; import java.util.List; import com.xzzn.ems.domain.EmsAmmeterData; -import com.xzzn.ems.domain.vo.AmmeterDataDetailInfo; -import org.apache.ibatis.annotations.Param; /** * 总数据Mapper接口 @@ -60,11 +58,4 @@ public interface EmsAmmeterDataMapper * @return 结果 */ public int deleteEmsAmmeterDataByIds(Long[] ids); - - /** - * 获取总表详细数据 - * @param siteId - * @return - */ - public List getAmmeterDetailInfo(@Param("siteId")String siteId, @Param("deviceId") String deviceId); } 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 9b97989..684b56b 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 @@ -29,5 +29,5 @@ public interface ISingleSiteService public List getClusterDataInfoList(String clusterDeviceId,String siteId); - public List getAmmeterDataList(String siteId); + public AmmeterDataResponse getAmmeterDataList(String siteId); } 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 2637a16..c5ccee9 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 @@ -2,7 +2,7 @@ package com.xzzn.ems.service.impl; import com.xzzn.common.constant.RedisKeyConstants; import com.xzzn.common.core.redis.RedisCache; -import com.xzzn.common.enums.AmmeterCategoryStatus; +import com.xzzn.common.enums.AmmeterCategory; import com.xzzn.common.enums.DeviceCategory; import com.xzzn.common.utils.StringUtils; import com.xzzn.ems.domain.*; @@ -29,6 +29,10 @@ public class SingleSiteServiceImpl implements ISingleSiteService { private static final String CLUSTER_DATA_SOC = "SOC"; + private static final String AMMETER_DEVICE_LOAD = "LOAD"; + + private static final String AMMETER_DEVICE_METE = "METE"; + @Autowired private EmsPcsDataMapper emsPcsDataMapper; @Autowired @@ -331,60 +335,96 @@ public class SingleSiteServiceImpl implements ISingleSiteService { * @return */ @Override - public List getAmmeterDataList(String siteId) { - List ammeterDataVos = new ArrayList<>(); + public AmmeterDataResponse getAmmeterDataList(String siteId) { + AmmeterDataResponse ammeterResponse = new AmmeterDataResponse(); if (!StringUtils.isEmpty(siteId)) { - // 先获取总表设备 + // 先获取电表设备 List> ammeterIdList = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.AMMETER.getCode()); - for (Map ammeterDevice : ammeterIdList) { - AmmeterDataVo ammeterDataVo = new AmmeterDataVo(); - ammeterDataVo.setDeviceName(ammeterDevice.get("deviceName").toString()); - ammeterDataVo.setEmsCommunicationStatus(ammeterDevice.get("communicationStatus").toString()); - // 从redis取总表详细数据 - String ammeterId = ammeterDevice.get("id").toString(); - EmsAmmeterData ammeterData = redisCache.getCacheObject(RedisKeyConstants.AMMETER + siteId + "_" +ammeterId); - if (ammeterData != null) { - ammeterDataVo.setDataUpdateTime(ammeterData.getDataUpdateTime()); - // 处理类别数据 - List ammeterDataDetailInfos = new ArrayList<>(); - dealAmmeterCategoryDataInfo(ammeterData,ammeterDataDetailInfos); - ammeterDataVo.setAmmeterDataDetailInfos(ammeterDataDetailInfos); - } - ammeterDataVos.add(ammeterDataVo); + for (Map ammeterDevice : ammeterIdList) { + String ammeterId = ammeterDevice.get("id").toString(); + // 从redis取总表详细数据 + EmsAmmeterData ammeterData = redisCache.getCacheObject(RedisKeyConstants.AMMETER + siteId + "_" +ammeterId); + // 判断电表类型 + if (AMMETER_DEVICE_LOAD.equals(ammeterId)) { + AmmeterLoadDataVo ammeterLoadDataVo = new AmmeterLoadDataVo(); + ammeterLoadDataVo.setDeviceName(ammeterDevice.get("deviceName").toString()); + ammeterLoadDataVo.setEmsCommunicationStatus(ammeterDevice.get("communicationStatus").toString()); + // 处理总表数据 + dealAmmeterLoadData(ammeterData,ammeterLoadDataVo); + ammeterResponse.setAmmeterLoadDataVoList(ammeterLoadDataVo); + } else if (AMMETER_DEVICE_METE.equals(ammeterId)) { + AmmeterMeteDataVo ammeterMeteDataVo = new AmmeterMeteDataVo(); + ammeterMeteDataVo.setDeviceName(ammeterDevice.get("deviceName").toString()); + ammeterMeteDataVo.setEmsCommunicationStatus(ammeterDevice.get("communicationStatus").toString()); + // 处理储能表数据 + dealAmmeterMeteData(ammeterData,ammeterMeteDataVo); + ammeterResponse.setAmmeterMeteDataVoList(ammeterMeteDataVo); + } } } - return ammeterDataVos; + return ammeterResponse; } - private void dealAmmeterCategoryDataInfo(EmsAmmeterData ammeterData, List ammeterDataDetailInfos) { - // 累计放电量 - AmmeterDataDetailInfo ammeterDataDetailInfo1 = new AmmeterDataDetailInfo(); - ammeterDataDetailInfo1.setCategory(AmmeterCategoryStatus.TOTAL_CHARGE.getInfo()); - ammeterDataDetailInfo1.setTotalKwh(ammeterData.getCurrentCombActiveTotal()); - ammeterDataDetailInfo1.setSharpKwh(ammeterData.getCurrentCombActivePeak()); - ammeterDataDetailInfo1.setPeakKwh(ammeterData.getCurrentCombActiveHigh()); - ammeterDataDetailInfo1.setFlatKwh(ammeterData.getCurrentCombActiveFlat()); - ammeterDataDetailInfo1.setValleyKwh(ammeterData.getCurrentCombActiveValley()); - ammeterDataDetailInfos.add(ammeterDataDetailInfo1); - // 累计放电量 - AmmeterDataDetailInfo ammeterDataDetailInfo2 = new AmmeterDataDetailInfo(); - ammeterDataDetailInfo2.setCategory(AmmeterCategoryStatus.TOTAL_DISCHARGE.getInfo()); - ammeterDataDetailInfo2.setTotalKwh(ammeterData.getCurrentCombReactiveTotal()); - ammeterDataDetailInfo2.setSharpKwh(ammeterData.getCurrentCombReactivePeak()); - ammeterDataDetailInfo2.setPeakKwh(ammeterData.getCurrentCombReactiveHigh()); - ammeterDataDetailInfo2.setFlatKwh(ammeterData.getCurrentCombReactiveFlat()); - ammeterDataDetailInfo2.setValleyKwh(ammeterData.getCurrentCombReactiveValley()); - ammeterDataDetailInfos.add(ammeterDataDetailInfo2); - // 日放电量 - AmmeterDataDetailInfo ammeterDataDetailInfo3 = new AmmeterDataDetailInfo(); - ammeterDataDetailInfo3.setCategory(AmmeterCategoryStatus.DAILY_CHARGE.getInfo()); - ammeterDataDetailInfos.add(ammeterDataDetailInfo3); - // 日充电量 - AmmeterDataDetailInfo ammeterDataDetailInfo4 = new AmmeterDataDetailInfo(); - ammeterDataDetailInfo4.setCategory(AmmeterCategoryStatus.DAILY_DISCHARGE.getInfo()); - ammeterDataDetailInfos.add(ammeterDataDetailInfo4); + private void dealAmmeterMeteData(EmsAmmeterData ammeterData, AmmeterMeteDataVo ammeterMeteDataVo) { + if (ammeterData != null) { + // 数据更新时间 + ammeterMeteDataVo.setDataUpdateTime(ammeterData.getDataUpdateTime()); + + List meteDataDetailInfos = new ArrayList<>(); + // 拼接数据 + // a相 + MeteDataDetailInfo meteDataDetailInfo1 = new MeteDataDetailInfo(); + meteDataDetailInfo1.setCategory(AmmeterCategory.A_POWER.getInfo()); + meteDataDetailInfo1.setActivePower(ammeterData.getPhaseAActivePower()); + meteDataDetailInfo1.setReactivePower(ammeterData.getPhaseAReactivePower()); + meteDataDetailInfos.add(meteDataDetailInfo1); + // b相 + MeteDataDetailInfo meteDataDetailInfo2 = new MeteDataDetailInfo(); + meteDataDetailInfo2.setCategory(AmmeterCategory.B_POWER.getInfo()); + meteDataDetailInfo2.setActivePower(ammeterData.getPhaseBActivePower()); + meteDataDetailInfo2.setReactivePower(ammeterData.getPhaseBReactivePower()); + meteDataDetailInfos.add(meteDataDetailInfo2); + // c相 + MeteDataDetailInfo meteDataDetailInfo3 = new MeteDataDetailInfo(); + meteDataDetailInfo3.setCategory(AmmeterCategory.C_POWER.getInfo()); + meteDataDetailInfo3.setActivePower(ammeterData.getPhaseCActivePower()); + meteDataDetailInfo3.setReactivePower(ammeterData.getPhaseCReactivePower()); + meteDataDetailInfos.add(meteDataDetailInfo3); + ammeterMeteDataVo.setMeteDataDetailInfo(meteDataDetailInfos); + } + } + + private void dealAmmeterLoadData(EmsAmmeterData ammeterData, AmmeterLoadDataVo ammeterDataVo) { + if (ammeterData != null) { + // 数据更新时间 + ammeterDataVo.setDataUpdateTime(ammeterData.getDataUpdateTime()); + + List loadDataDetailInfos = new ArrayList<>(); + // 拼接数据 + // 组合有功 + LoadDataDetailInfo ammeterDataDetailInfo1 = new LoadDataDetailInfo(); + ammeterDataDetailInfo1.setCategory(AmmeterCategory.CURRENT_COMB_ACTIVE.getInfo()); + ammeterDataDetailInfo1.setTotalKwh(ammeterData.getCurrentCombActiveTotal()); + ammeterDataDetailInfo1.setPeakKwh(ammeterData.getCurrentCombActivePeak()); + ammeterDataDetailInfo1.setHighKwh(ammeterData.getCurrentCombActiveHigh()); + ammeterDataDetailInfo1.setFlatKwh(ammeterData.getCurrentCombActiveFlat()); + ammeterDataDetailInfo1.setValleyKwh(ammeterData.getCurrentCombActiveValley()); + loadDataDetailInfos.add(ammeterDataDetailInfo1); + // 组合无功 + LoadDataDetailInfo ammeterDataDetailInfo2 = new LoadDataDetailInfo(); + ammeterDataDetailInfo2.setCategory(AmmeterCategory.CURRENT_COMB_REACTIVE.getInfo()); + ammeterDataDetailInfo2.setTotalKwh(ammeterData.getCurrentCombReactiveTotal()); + ammeterDataDetailInfo2.setPeakKwh(ammeterData.getCurrentCombReactivePeak()); + ammeterDataDetailInfo2.setHighKwh(ammeterData.getCurrentCombReactiveHigh()); + ammeterDataDetailInfo2.setFlatKwh(ammeterData.getCurrentCombReactiveFlat()); + ammeterDataDetailInfo2.setValleyKwh(ammeterData.getCurrentCombReactiveValley()); + loadDataDetailInfos.add(ammeterDataDetailInfo2); + + ammeterDataVo.setLoadDataDetailInfo(loadDataDetailInfos); + } + } } diff --git a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml index 01c652e..f16f592 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml @@ -549,24 +549,4 @@ - \ No newline at end of file