diff --git a/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteMonitorController.java b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteMonitorController.java index bfbb189..3e959f5 100644 --- a/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteMonitorController.java +++ b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteMonitorController.java @@ -205,6 +205,15 @@ public class EmsSiteMonitorController extends BaseController{ return success(iSingleSiteService.getXfDataList(siteId)); } + /** + * EMS数据 + */ + @GetMapping("/getEmsDataList") + public AjaxResult getEmsDataList(@RequestParam String siteId) + { + return success(iSingleSiteService.getEmsDataList(siteId)); + } + /** * 单站监控-首页-点位展示 * 储能功率、电网功率、负荷功率、光伏功率 diff --git a/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java b/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java index 6163a90..c9d4a11 100644 --- a/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java +++ b/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java @@ -62,6 +62,11 @@ public class RedisKeyConstants */ public static final String COOLING = "COOLING_"; + /** + * EMS数据 redis key + */ + public static final String EMS = "EMS_"; + /** * 点位匹配数据 redis key */ diff --git a/ems-common/src/main/java/com/xzzn/common/enums/DeviceCategory.java b/ems-common/src/main/java/com/xzzn/common/enums/DeviceCategory.java index c90aca1..faf6363 100644 --- a/ems-common/src/main/java/com/xzzn/common/enums/DeviceCategory.java +++ b/ems-common/src/main/java/com/xzzn/common/enums/DeviceCategory.java @@ -21,7 +21,8 @@ public enum DeviceCategory COOLING("COOLING", "冷却", null), DH("DH", "动环", null), XF("XF", "消防", null), - BATTERY_GROUP("BATTERY_GROUP", "电池组", null); + BATTERY_GROUP("BATTERY_GROUP", "电池组", null), + EMS("EMS", "EMS设备", null),; private final String code; private final String info; diff --git a/ems-common/src/main/java/com/xzzn/common/enums/SiteDevice.java b/ems-common/src/main/java/com/xzzn/common/enums/SiteDevice.java index 3725068..508213f 100644 --- a/ems-common/src/main/java/com/xzzn/common/enums/SiteDevice.java +++ b/ems-common/src/main/java/com/xzzn/common/enums/SiteDevice.java @@ -53,5 +53,10 @@ public enum SiteDevice /** * 中水冷却 */ - ZSLQ + ZSLQ, + + /** + * EMS + */ + EMS } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/EmsEmsData.java b/ems-system/src/main/java/com/xzzn/ems/domain/EmsEmsData.java new file mode 100644 index 0000000..3afdad2 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/EmsEmsData.java @@ -0,0 +1,241 @@ +package com.xzzn.ems.domain; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.xzzn.common.annotation.Excel; +import com.xzzn.common.core.domain.BaseEntity; + +/** + * 数据对象 ems_ems_data + * + * @author xzzn + * @date 2025-12-09 + */ +public class EmsEmsData extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 数据采集时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "数据采集时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date dataUpdateTime; + + /** EMS控制模式 */ + @Excel(name = "EMS控制模式") + private BigDecimal emsStatus; + + /** BMS1SOC */ + @Excel(name = "BMS1SOC") + private BigDecimal bms1Soc; + + /** BMS2SOC */ + @Excel(name = "BMS2SOC") + private BigDecimal bms2Soc; + + /** BMS3SOC */ + @Excel(name = "BMS3SOC") + private BigDecimal bms3Soc; + + /** BMS4SOC */ + @Excel(name = "BMS4SOC") + private BigDecimal bms4Soc; + + /** PCS-1有功功率 */ + @Excel(name = "PCS-1有功功率") + private BigDecimal pcs1Yggl; + + /** PCS-2有功功率 */ + @Excel(name = "PCS-2有功功率") + private BigDecimal pcs2Yggl; + + /** PCS-3有功功率 */ + @Excel(name = "PCS-3有功功率") + private BigDecimal pcs3Yggl; + + /** PCS-4有功功率 */ + @Excel(name = "PCS-4有功功率") + private BigDecimal pcs4Yggl; + + /** EMS有功功率 */ + @Excel(name = "EMS有功功率") + private BigDecimal emsYggl; + + /** 站点id */ + @Excel(name = "站点id") + private String siteId; + + /** 设备唯一标识符 */ + @Excel(name = "设备唯一标识符") + private String deviceId; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setDataUpdateTime(Date dataUpdateTime) + { + this.dataUpdateTime = dataUpdateTime; + } + + public Date getDataUpdateTime() + { + return dataUpdateTime; + } + + public void setEmsStatus(BigDecimal emsStatus) + { + this.emsStatus = emsStatus; + } + + public BigDecimal getEmsStatus() + { + return emsStatus; + } + + public void setBms1Soc(BigDecimal bms1Soc) + { + this.bms1Soc = bms1Soc; + } + + public BigDecimal getBms1Soc() + { + return bms1Soc; + } + + public void setBms2Soc(BigDecimal bms2Soc) + { + this.bms2Soc = bms2Soc; + } + + public BigDecimal getBms2Soc() + { + return bms2Soc; + } + + public void setBms3Soc(BigDecimal bms3Soc) + { + this.bms3Soc = bms3Soc; + } + + public BigDecimal getBms3Soc() + { + return bms3Soc; + } + + public void setBms4Soc(BigDecimal bms4Soc) + { + this.bms4Soc = bms4Soc; + } + + public BigDecimal getBms4Soc() + { + return bms4Soc; + } + + public void setPcs1Yggl(BigDecimal pcs1Yggl) + { + this.pcs1Yggl = pcs1Yggl; + } + + public BigDecimal getPcs1Yggl() + { + return pcs1Yggl; + } + + public void setPcs2Yggl(BigDecimal pcs2Yggl) + { + this.pcs2Yggl = pcs2Yggl; + } + + public BigDecimal getPcs2Yggl() + { + return pcs2Yggl; + } + + public void setPcs3Yggl(BigDecimal pcs3Yggl) + { + this.pcs3Yggl = pcs3Yggl; + } + + public BigDecimal getPcs3Yggl() + { + return pcs3Yggl; + } + + public void setPcs4Yggl(BigDecimal pcs4Yggl) + { + this.pcs4Yggl = pcs4Yggl; + } + + public BigDecimal getPcs4Yggl() + { + return pcs4Yggl; + } + + public void setEmsYggl(BigDecimal emsYggl) + { + this.emsYggl = emsYggl; + } + + public BigDecimal getEmsYggl() + { + return emsYggl; + } + + public void setSiteId(String siteId) + { + this.siteId = siteId; + } + + public String getSiteId() + { + return siteId; + } + + public void setDeviceId(String deviceId) + { + this.deviceId = deviceId; + } + + public String getDeviceId() + { + return deviceId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("dataUpdateTime", getDataUpdateTime()) + .append("emsStatus", getEmsStatus()) + .append("bms1Soc", getBms1Soc()) + .append("bms2Soc", getBms2Soc()) + .append("bms3Soc", getBms3Soc()) + .append("bms4Soc", getBms4Soc()) + .append("pcs1Yggl", getPcs1Yggl()) + .append("pcs2Yggl", getPcs2Yggl()) + .append("pcs3Yggl", getPcs3Yggl()) + .append("pcs4Yggl", getPcs4Yggl()) + .append("emsYggl", getEmsYggl()) + .append("siteId", getSiteId()) + .append("deviceId", getDeviceId()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} 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/AmmeterDataVo.java index ff85c61..d4ea0ff 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/AmmeterDataVo.java @@ -44,6 +44,9 @@ public class AmmeterDataVo { // 无功电能 private BigDecimal reactiveEnergy; + /** 报警个数 */ + private int alarmNum; + public BigDecimal getActiveEnergy() { return activeEnergy; } @@ -147,4 +150,12 @@ public class AmmeterDataVo { public void setDeviceId(String deviceId) { this.deviceId = deviceId; } + + public int getAlarmNum() { + return alarmNum; + } + + public void setAlarmNum(int alarmNum) { + this.alarmNum = alarmNum; + } } 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 020ade0..b324959 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 @@ -67,6 +67,9 @@ public class BMSBatteryClusterVo { /** 父类设备名称 */ private String parentDeviceName; + /** 报警个数 */ + private int alarmNum; + private List batteryDataList; public String getDeviceName() { @@ -220,4 +223,12 @@ public class BMSBatteryClusterVo { public void setParentDeviceName(String parentDeviceName) { this.parentDeviceName = parentDeviceName; } + + public int getAlarmNum() { + return alarmNum; + } + + public void setAlarmNum(int alarmNum) { + this.alarmNum = alarmNum; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSOverViewVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSOverViewVo.java index 53f351f..c787ba1 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSOverViewVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSOverViewVo.java @@ -64,6 +64,9 @@ public class BMSOverViewVo { /** 设备唯一标识符 */ private String deviceId; + /** 报警个数 */ + private int alarmNum; + private List batteryDataList; public String getDeviceName() { @@ -202,6 +205,14 @@ public class BMSOverViewVo { this.deviceId = deviceId; } + public int getAlarmNum() { + return alarmNum; + } + + public void setAlarmNum(int alarmNum) { + this.alarmNum = alarmNum; + } + public List getBatteryDataList() { return batteryDataList; } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/CoolingDataViewVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/CoolingDataViewVo.java index 3ae5e4b..d479388 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/CoolingDataViewVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/CoolingDataViewVo.java @@ -50,6 +50,9 @@ public class CoolingDataViewVo { /** 设备唯一标识符 */ private String deviceId; + /** 报警个数 */ + private int alarmNum; + public String getDeviceName() { return deviceName; } @@ -129,4 +132,12 @@ public class CoolingDataViewVo { public void setDeviceId(String deviceId) { this.deviceId = deviceId; } + + public int getAlarmNum() { + return alarmNum; + } + + public void setAlarmNum(int alarmNum) { + this.alarmNum = alarmNum; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/DhDataVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/DhDataVo.java index 6c17ae0..1ad414a 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/DhDataVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/DhDataVo.java @@ -27,6 +27,9 @@ public class DhDataVo { /** 温度 */ private BigDecimal temperature; + /** 报警个数 */ + private int alarmNum; + public String getDeviceId() { return deviceId; } @@ -66,4 +69,12 @@ public class DhDataVo { public void setTemperature(BigDecimal temperature) { this.temperature = temperature; } + + public int getAlarmNum() { + return alarmNum; + } + + public void setAlarmNum(int alarmNum) { + this.alarmNum = alarmNum; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/EmsDataVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/EmsDataVo.java new file mode 100644 index 0000000..936ab79 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/EmsDataVo.java @@ -0,0 +1,168 @@ +package com.xzzn.ems.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xzzn.common.annotation.Excel; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * EMS数据 + */ +public class EmsDataVo { + + /** 设备唯一标识符 */ + private String deviceId; + + /** 设备名称 */ + private String deviceName; + + /** EMS控制模式 */ + private BigDecimal emsStatus; + + /** 数据更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dataUpdateTime; + + /** BMS1SOC */ + private BigDecimal bms1Soc; + + /** BMS2SOC */ + private BigDecimal bms2Soc; + + /** BMS3SOC */ + private BigDecimal bms3Soc; + + /** BMS4SOC */ + private BigDecimal bms4Soc; + + /** PCS-1有功功率 */ + private BigDecimal pcs1Yggl; + + /** PCS-2有功功率 */ + private BigDecimal pcs2Yggl; + + /** PCS-3有功功率 */ + private BigDecimal pcs3Yggl; + + /** PCS-4有功功率 */ + private BigDecimal pcs4Yggl; + + /** EMS有功功率 */ + private BigDecimal emsYggl; + + /** 报警个数 */ + private int alarmNum; + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public BigDecimal getEmsStatus() { + return emsStatus; + } + + public void setEmsStatus(BigDecimal emsStatus) { + this.emsStatus = emsStatus; + } + + public Date getDataUpdateTime() { + return dataUpdateTime; + } + + public void setDataUpdateTime(Date dataUpdateTime) { + this.dataUpdateTime = dataUpdateTime; + } + + public BigDecimal getBms1Soc() { + return bms1Soc; + } + + public void setBms1Soc(BigDecimal bms1Soc) { + this.bms1Soc = bms1Soc; + } + + public BigDecimal getBms2Soc() { + return bms2Soc; + } + + public void setBms2Soc(BigDecimal bms2Soc) { + this.bms2Soc = bms2Soc; + } + + public BigDecimal getBms3Soc() { + return bms3Soc; + } + + public void setBms3Soc(BigDecimal bms3Soc) { + this.bms3Soc = bms3Soc; + } + + public BigDecimal getBms4Soc() { + return bms4Soc; + } + + public void setBms4Soc(BigDecimal bms4Soc) { + this.bms4Soc = bms4Soc; + } + + public BigDecimal getPcs1Yggl() { + return pcs1Yggl; + } + + public void setPcs1Yggl(BigDecimal pcs1Yggl) { + this.pcs1Yggl = pcs1Yggl; + } + + public BigDecimal getPcs2Yggl() { + return pcs2Yggl; + } + + public void setPcs2Yggl(BigDecimal pcs2Yggl) { + this.pcs2Yggl = pcs2Yggl; + } + + public BigDecimal getPcs3Yggl() { + return pcs3Yggl; + } + + public void setPcs3Yggl(BigDecimal pcs3Yggl) { + this.pcs3Yggl = pcs3Yggl; + } + + public BigDecimal getPcs4Yggl() { + return pcs4Yggl; + } + + public void setPcs4Yggl(BigDecimal pcs4Yggl) { + this.pcs4Yggl = pcs4Yggl; + } + + public BigDecimal getEmsYggl() { + return emsYggl; + } + + public void setEmsYggl(BigDecimal emsYggl) { + this.emsYggl = emsYggl; + } + + public int getAlarmNum() { + return alarmNum; + } + + public void setAlarmNum(int alarmNum) { + this.alarmNum = alarmNum; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/XfDataVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/XfDataVo.java index f80acf5..31b8be8 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/XfDataVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/XfDataVo.java @@ -36,6 +36,9 @@ public class XfDataVo { /** 压力开关状态电磁阀状态 */ private BigDecimal dcfzt; + /** 报警个数 */ + private int alarmNum; + public String getDeviceId() { return deviceId; } @@ -100,4 +103,11 @@ public class XfDataVo { this.dcfzt = dcfzt; } + public int getAlarmNum() { + return alarmNum; + } + + public void setAlarmNum(int alarmNum) { + this.alarmNum = alarmNum; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/enums/DeviceMatchTable.java b/ems-system/src/main/java/com/xzzn/ems/enums/DeviceMatchTable.java index 1f2164b..fc91bf9 100644 --- a/ems-system/src/main/java/com/xzzn/ems/enums/DeviceMatchTable.java +++ b/ems-system/src/main/java/com/xzzn/ems/enums/DeviceMatchTable.java @@ -9,6 +9,7 @@ import com.xzzn.ems.domain.EmsClusterAlarmData; import com.xzzn.ems.domain.EmsCoolingAlarmData; import com.xzzn.ems.domain.EmsCoolingData; import com.xzzn.ems.domain.EmsDhData; +import com.xzzn.ems.domain.EmsEmsData; import com.xzzn.ems.domain.EmsPcsAlarmData; import com.xzzn.ems.domain.EmsPcsBranchData; import com.xzzn.ems.domain.EmsPcsData; @@ -33,6 +34,7 @@ public enum DeviceMatchTable DH("DH", "ems_dh_data", EmsDhData.class), XF("XF", "ems_xf_data", EmsXfData.class), BATTERY_GROUP("BATTERY_GROUP", "ems_battery_group", EmsBatteryGroup.class), + EMS("EMS", "ems_ems_data", EmsEmsData.class), /** 告警点位 */ COOLING_ALARM("COOLING_ALARM", "ems_cooling_alarm_data", EmsCoolingAlarmData.class), diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsEmsDataMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsEmsDataMapper.java new file mode 100644 index 0000000..ac80f06 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsEmsDataMapper.java @@ -0,0 +1,61 @@ +package com.xzzn.ems.mapper; + +import java.util.List; +import com.xzzn.ems.domain.EmsEmsData; + +/** + * 数据Mapper接口 + * + * @author xzzn + * @date 2025-12-09 + */ +public interface EmsEmsDataMapper +{ + /** + * 查询数据 + * + * @param id 数据主键 + * @return 数据 + */ + public EmsEmsData selectEmsEmsDataById(Long id); + + /** + * 查询数据列表 + * + * @param emsEmsData 数据 + * @return 数据集合 + */ + public List selectEmsEmsDataList(EmsEmsData emsEmsData); + + /** + * 新增数据 + * + * @param emsEmsData 数据 + * @return 结果 + */ + public int insertEmsEmsData(EmsEmsData emsEmsData); + + /** + * 修改数据 + * + * @param emsEmsData 数据 + * @return 结果 + */ + public int updateEmsEmsData(EmsEmsData emsEmsData); + + /** + * 删除数据 + * + * @param id 数据主键 + * @return 结果 + */ + public int deleteEmsEmsDataById(Long id); + + /** + * 批量删除数据 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteEmsEmsDataByIds(Long[] ids); +} diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPointMatchMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPointMatchMapper.java index c604e11..3614287 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPointMatchMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPointMatchMapper.java @@ -166,4 +166,6 @@ public interface EmsPointMatchMapper List getDevicePointMatchList(@Param("siteId") String siteId, @Param("deviceCategory") String deviceCategory); List selectEmsPointMatchExportList(EmsPointMatch emsPointMatch); + + int getDevicePointAlarmNum(@Param("siteId") String siteId, @Param("deviceCategory") String deviceCategory); } 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 9b82eab..926d1b7 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 @@ -31,9 +31,11 @@ public interface ISingleSiteService public List getAmmeterDataList(String siteId); - List getDhDataList(String siteId); + public List getDhDataList(String siteId); - List getXfDataList(String siteId); + public List getXfDataList(String siteId); + + public List getEmsDataList(String siteId); public SiteMonitorRuningInfoVo getRunningGraphPcsMaxTemp(RunningGraphRequest request); diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java index ecfdee2..a7e08aa 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java @@ -31,25 +31,7 @@ import com.xzzn.ems.domain.*; import com.xzzn.ems.domain.vo.EnergyPriceTimeRange; import com.xzzn.ems.domain.vo.EnergyPriceVo; import com.xzzn.ems.enums.DeviceMatchTable; -import com.xzzn.ems.mapper.EmsAmmeterDataMapper; -import com.xzzn.ems.mapper.EmsBatteryClusterMapper; -import com.xzzn.ems.mapper.EmsBatteryDataMapper; -import com.xzzn.ems.mapper.EmsBatteryDataMinutesMapper; -import com.xzzn.ems.mapper.EmsBatteryGroupMapper; -import com.xzzn.ems.mapper.EmsBatteryStackMapper; -import com.xzzn.ems.mapper.EmsClusterAlarmDataMapper; -import com.xzzn.ems.mapper.EmsCoolingAlarmDataMapper; -import com.xzzn.ems.mapper.EmsCoolingDataMapper; -import com.xzzn.ems.mapper.EmsDailyChargeDataMapper; -import com.xzzn.ems.mapper.EmsDailyEnergyDataMapper; -import com.xzzn.ems.mapper.EmsDevicesSettingMapper; -import com.xzzn.ems.mapper.EmsDhDataMapper; -import com.xzzn.ems.mapper.EmsEnergyPriceConfigMapper; -import com.xzzn.ems.mapper.EmsPcsAlarmDataMapper; -import com.xzzn.ems.mapper.EmsPcsBranchDataMapper; -import com.xzzn.ems.mapper.EmsPcsDataMapper; -import com.xzzn.ems.mapper.EmsStackAlarmDataMapper; -import com.xzzn.ems.mapper.EmsXfDataMapper; +import com.xzzn.ems.mapper.*; import com.xzzn.ems.service.IDeviceDataProcessService; import com.xzzn.ems.service.IEmsAlarmRecordsService; import com.xzzn.ems.service.IEmsDeviceSettingService; @@ -122,6 +104,8 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i private EmsDailyEnergyDataMapper emsDailyEnergyDataMapper; @Autowired private EmsBatteryGroupMapper emsBatteryGroupMapper; + @Autowired + private EmsEmsDataMapper emsEmsDataMapper; @Autowired private EmsCoolingAlarmDataMapper emsCoolingAlarmDataMapper; @@ -201,10 +185,41 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i dhDataProcess(siteId, deviceId, jsonData, dataUpdateTime); } else if (deviceId.contains(SiteDevice.ZSLQ.name())) { coolingDataProcess(siteId, deviceId, jsonData, dataUpdateTime); + } else if (deviceId.contains(SiteDevice.EMS.name())) { + emsDataProcess(siteId, deviceId, jsonData, dataUpdateTime); } } } + private void emsDataProcess(String siteId, String deviceId, String jsonData, Date dataUpdateTime) { + //EMS + Map obj = JSON.parseObject(jsonData, new TypeReference>() { + }); + // 点位匹配数据 + List pointMatchList = devicePointMatchDataProcessor.getDevicePointMatch(siteId, deviceId, DeviceMatchTable.EMS.getCode()); + if (CollectionUtils.isEmpty(pointMatchList)) { + log.info("未找到匹配的点位数据,无法处理EMS数据,siteId: " + siteId + ",deviceId: " + deviceId); + return; + } + Map> pointEnumMatchMap = devicePointMatchDataProcessor.getPointEnumMatchMap(siteId, DeviceMatchTable.EMS.getCode()); + + EmsEmsData emsData = new EmsEmsData(); + + saveDeviceData(pointMatchList, obj, emsData, pointEnumMatchMap); + + emsData.setDataUpdateTime(dataUpdateTime); + emsData.setCreateBy("system"); + emsData.setCreateTime(DateUtils.getNowDate()); + emsData.setUpdateBy("system"); + emsData.setUpdateTime(DateUtils.getNowDate()); + emsData.setSiteId(siteId); + emsData.setDeviceId(deviceId); + + emsEmsDataMapper.insertEmsEmsData(emsData); + + redisCache.setCacheObject(RedisKeyConstants.EMS + siteId + "_" + deviceId, emsData); + } + private void coolingDataProcess(String siteId, String deviceId, String jsonData, Date dataUpdateTime) { //中水冷却 Map obj = JSON.parseObject(jsonData, new TypeReference>() { 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 a8a55ca..c3ecfd2 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 @@ -53,6 +53,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { private EmsAmmeterDataMapper emsAmmeterDataMapper; @Autowired private EmsDevicesSettingMapper emsDevicesSettingMapper; + @Autowired + private EmsPointMatchMapper emsPointMatchMapper; @Autowired private RedisCache redisCache; @@ -413,6 +415,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { List pcsDetailInfoVoList = new ArrayList<>(); if (!StringUtils.isEmpty(siteId)) { + // 告警设备个数 + int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, DeviceCategory.PCS.getCode()); // 获取该设备下所有pcs的id List> pcsIds = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.PCS.getCode()); @@ -431,8 +435,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { List pcsBranchInfoList = new ArrayList<>(); processBranchDataInfo(siteId,pcsId,pcsBranchInfoList); pcsDetailInfoVo.setPcsBranchInfoList(pcsBranchInfoList); - // 报警个数 - int alarmNum = emsAlarmRecordsMapper.getDeviceAlarmNum(siteId,pcsId); +// // 报警个数 +// int alarmNum = emsAlarmRecordsMapper.getDeviceAlarmNum(siteId,pcsId); pcsDetailInfoVo.setAlarmNum(alarmNum); pcsDetailInfoVoList.add(pcsDetailInfoVo); @@ -459,6 +463,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { public List getBMSOverView(String siteId) { List bmsOverViewVoList = new ArrayList<>(); + // 告警设备个数 + int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, DeviceCategory.STACK.getCode()); // 获取所有电池堆 if (!StringUtils.isEmpty(siteId)) { List> stackIds = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.STACK.getCode()); @@ -477,6 +483,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService { batteryDataLists = getBMSClusterListInfo(siteId,stackId,null); bmsOverViewVo.setBatteryDataList(batteryDataLists); } + bmsOverViewVo.setAlarmNum(alarmNum); bmsOverViewVoList.add(bmsOverViewVo); } } @@ -515,6 +522,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { public List getBMSBatteryCluster(String siteId) { List bmsBatteryClusterVoList = new ArrayList<>(); + // 告警设备个数 + int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, DeviceCategory.CLUSTER.getCode()); if (!StringUtils.isEmpty(siteId)) { // 获取所有设备下的电池簇id List> clusterIds = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.CLUSTER.getCode()); @@ -533,6 +542,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService { dealWithBatteryClusterData(clusterData,clusterDataList); bmsBatteryClusterVo.setBatteryDataList(clusterDataList); } + bmsBatteryClusterVo.setAlarmNum(alarmNum); bmsBatteryClusterVoList.add(bmsBatteryClusterVo); } } @@ -574,6 +584,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { public List getCoolingDataList(String siteId) { List emsCoolingDataList = new ArrayList<>(); + // 告警设备个数 + int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, DeviceCategory.COOLING.getCode()); List> deviceIds = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.COOLING.getCode()); for (Map deviceId : deviceIds) { CoolingDataViewVo dataViewVo = new CoolingDataViewVo(); @@ -583,6 +595,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService { EmsCoolingData coolingData = redisCache.getCacheObject(RedisKeyConstants.COOLING + siteId + "_" + coolingId); if (coolingData != null) { BeanUtils.copyProperties(coolingData, dataViewVo); + dataViewVo.setAlarmNum(alarmNum); } emsCoolingDataList.add(dataViewVo); @@ -664,7 +677,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { if (ammeterIdList == null || ammeterIdList.isEmpty()) { return ammeterResponse; } - + // 告警设备个数 + int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, DeviceCategory.AMMETER.getCode()); for (Map ammeterDevice : ammeterIdList) { String ammeterId = ammeterDevice.get("id").toString(); if (!ammeterDeviceIds.contains(ammeterId)) { @@ -678,6 +692,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService { ammeterDataVo.setDeviceId(ammeterDevice.get("id").toString()); ammeterDataVo.setEmsCommunicationStatus(ammeterDevice.get("communicationStatus") == null? "" : ammeterDevice.get("communicationStatus").toString()); + ammeterDataVo.setAlarmNum(alarmNum); // 设置表数据 dealAmmeterData(ammeterData,ammeterDataVo); ammeterResponse.add(ammeterDataVo); @@ -757,6 +772,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { public List getDhDataList(String siteId) { List emsDhDataList = new ArrayList<>(); + // 告警设备个数 + int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, DeviceCategory.DH.getCode()); List> dhDeviceList = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.DH.getCode()); for (Map dhDevice : dhDeviceList) { DhDataVo dhDataVo = new DhDataVo(); @@ -767,7 +784,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService { if (dhData != null) { BeanUtils.copyProperties(dhData, dhDataVo); } - + dhDataVo.setAlarmNum(alarmNum); emsDhDataList.add(dhDataVo); } return emsDhDataList; @@ -783,6 +800,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { List emsXfDataList = new ArrayList<>(); List> xfDeviceList = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.XF.getCode()); + // 告警设备个数 + int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, DeviceCategory.XF.getCode()); for (Map xfDevice : xfDeviceList) { XfDataVo xfDataVo = new XfDataVo(); xfDataVo.setDeviceName(xfDevice.get("deviceName").toString()); @@ -792,6 +811,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService { if (xfData != null) { BeanUtils.copyProperties(xfData, xfDataVo); xfDataVo.setDataUpdateTime(xfData.getDataTimestamp()); + xfDataVo.setAlarmNum(alarmNum); } xfDataVo.setEmsCommunicationStatus(xfDevice.get("communicationStatus") == null ? "" : xfDevice.get("communicationStatus").toString()); emsXfDataList.add(xfDataVo); @@ -799,6 +819,28 @@ public class SingleSiteServiceImpl implements ISingleSiteService { return emsXfDataList; } + @Override + public List getEmsDataList(String siteId) { + List emsDataList = new ArrayList<>(); + + List> xfDeviceList = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.EMS.getCode()); + // 告警设备个数 + int alarmNum = emsPointMatchMapper.getDevicePointAlarmNum(siteId, DeviceCategory.EMS.getCode()); + for (Map emsDevice : xfDeviceList) { + EmsDataVo emsDataVo = new EmsDataVo(); + emsDataVo.setDeviceName(emsDevice.get("deviceName").toString()); + // 从redis取堆单个详细数据 + String emsDeviceId = emsDevice.get("id").toString(); + EmsEmsData emsData = redisCache.getCacheObject(RedisKeyConstants.EMS + siteId + "_" + emsDeviceId); + if (emsData != null) { + BeanUtils.copyProperties(emsData, emsDataVo); + emsDataVo.setAlarmNum(alarmNum); + } + emsDataList.add(emsDataVo); + } + return emsDataList; + } + /** * 单站监控-首页-获取重点数据 * @param requestVo diff --git a/ems-system/src/main/resources/mapper/ems/EmsEmsDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsEmsDataMapper.xml new file mode 100644 index 0000000..39506fe --- /dev/null +++ b/ems-system/src/main/resources/mapper/ems/EmsEmsDataMapper.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, data_update_time, ems_status, bms1_soc, bms2_soc, bms3_soc, bms4_soc, pcs1_yggl, pcs2_yggl, pcs3_yggl, pcs4_yggl, ems_yggl, site_id, device_id, create_by, create_time, update_by, update_time, remark from ems_ems_data + + + + + + + + insert into ems_ems_data + + data_update_time, + ems_status, + bms1_soc, + bms2_soc, + bms3_soc, + bms4_soc, + pcs1_yggl, + pcs2_yggl, + pcs3_yggl, + pcs4_yggl, + ems_yggl, + site_id, + device_id, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{dataUpdateTime}, + #{emsStatus}, + #{bms1Soc}, + #{bms2Soc}, + #{bms3Soc}, + #{bms4Soc}, + #{pcs1Yggl}, + #{pcs2Yggl}, + #{pcs3Yggl}, + #{pcs4Yggl}, + #{emsYggl}, + #{siteId}, + #{deviceId}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update ems_ems_data + + data_update_time = #{dataUpdateTime}, + ems_status = #{emsStatus}, + bms1_soc = #{bms1Soc}, + bms2_soc = #{bms2Soc}, + bms3_soc = #{bms3Soc}, + bms4_soc = #{bms4Soc}, + pcs1_yggl = #{pcs1Yggl}, + pcs2_yggl = #{pcs2Yggl}, + pcs3_yggl = #{pcs3Yggl}, + pcs4_yggl = #{pcs4Yggl}, + ems_yggl = #{emsYggl}, + site_id = #{siteId}, + device_id = #{deviceId}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from ems_ems_data where id = #{id} + + + + delete from ems_ems_data where id in + + #{id} + + + \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsPointMatchMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsPointMatchMapper.xml index 3219fa7..6eb771b 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsPointMatchMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsPointMatchMapper.xml @@ -518,5 +518,14 @@ and device_category = #{deviceCategory} + \ No newline at end of file