diff --git a/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsHomePageController.java b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsHomePageController.java new file mode 100644 index 0000000..93d386f --- /dev/null +++ b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsHomePageController.java @@ -0,0 +1,43 @@ +package com.xzzn.web.controller.ems; + +import com.xzzn.common.core.controller.BaseController; +import com.xzzn.common.core.domain.AjaxResult; +import com.xzzn.ems.service.IEmsSiteService; +import com.xzzn.ems.service.IHomePageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * + * 站点信息 + * + */ +@RestController +@RequestMapping("/ems/homePage") +public class EmsHomePageController extends BaseController{ + + @Autowired + private IHomePageService homePageService; + @Autowired + private IEmsSiteService emsSiteService; + + /** + * 首页看板数据 + */ + @GetMapping("/dataList") + public AjaxResult list() + { + return success(homePageService.getSiteVo()); + } + + /** + * 获取所有站点 + */ + @GetMapping("/getAllSites") + public AjaxResult getAllSites() + { + return success(emsSiteService.getAllSites()); + } + + +} 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 new file mode 100644 index 0000000..22ef4d2 --- /dev/null +++ b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteMonitorController.java @@ -0,0 +1,29 @@ +package com.xzzn.web.controller.ems; + +import com.xzzn.common.core.controller.BaseController; +import com.xzzn.common.core.domain.AjaxResult; +import com.xzzn.ems.service.ISingleSiteService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * + * 单站监控 + * + */ +@RestController +@RequestMapping("/ems/siteMonitor") +public class EmsSiteMonitorController extends BaseController{ + + @Autowired + private ISingleSiteService iSingleSiteService; + + /** + * 获取单站首页数据 + */ + @GetMapping("/homeView") + public AjaxResult getSingleSiteViewInfo(@RequestParam Long siteId) + { + return success(iSingleSiteService.getSiteMonitorDataVo(siteId)); + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmRecords.java b/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmRecords.java new file mode 100644 index 0000000..f9a673b --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/EmsAlarmRecords.java @@ -0,0 +1,181 @@ +package com.xzzn.ems.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xzzn.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.xzzn.common.annotation.Excel; + +/** + * 告警记录对象 ems_alarm_records + * + * @author xzzn + * @date 2025-06-17 + */ +public class EmsAlarmRecords extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** */ + private Long id; + + /** 设备类型 */ + @Excel(name = "设备类型") + private String deviceType; + + /** 告警等级 */ + @Excel(name = "告警等级") + private String alarmLevel; + + /** 告警内容 */ + @Excel(name = "告警内容") + private String alarmContent; + + /** 告警发生时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "告警发生时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date alarmStartTime; + + /** 告警结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "告警结束时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date alarmEndTime; + + /** 状态 */ + @Excel(name = "状态") + private String status; + + /** 站点id */ + @Excel(name = "站点id") + private Long siteId; + + /** 设备唯一标识符 */ + @Excel(name = "设备唯一标识符") + private Long deviceId; + + /** 设备名称,用于标识设备 */ + @Excel(name = "设备名称,用于标识设备") + private String deviceName; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setDeviceType(String deviceType) + { + this.deviceType = deviceType; + } + + public String getDeviceType() + { + return deviceType; + } + + public void setAlarmLevel(String alarmLevel) + { + this.alarmLevel = alarmLevel; + } + + public String getAlarmLevel() + { + return alarmLevel; + } + + public void setAlarmContent(String alarmContent) + { + this.alarmContent = alarmContent; + } + + public String getAlarmContent() + { + return alarmContent; + } + + public void setAlarmStartTime(Date alarmStartTime) + { + this.alarmStartTime = alarmStartTime; + } + + public Date getAlarmStartTime() + { + return alarmStartTime; + } + + public void setAlarmEndTime(Date alarmEndTime) + { + this.alarmEndTime = alarmEndTime; + } + + public Date getAlarmEndTime() + { + return alarmEndTime; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + + public void setSiteId(Long siteId) + { + this.siteId = siteId; + } + + public Long getSiteId() + { + return siteId; + } + + public void setDeviceId(Long deviceId) + { + this.deviceId = deviceId; + } + + public Long getDeviceId() + { + return deviceId; + } + + public void setDeviceName(String deviceName) + { + this.deviceName = deviceName; + } + + public String getDeviceName() + { + return deviceName; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("deviceType", getDeviceType()) + .append("alarmLevel", getAlarmLevel()) + .append("alarmContent", getAlarmContent()) + .append("alarmStartTime", getAlarmStartTime()) + .append("alarmEndTime", getAlarmEndTime()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("siteId", getSiteId()) + .append("deviceId", getDeviceId()) + .append("deviceName", getDeviceName()) + .toString(); + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/EmsPcsData.java b/ems-system/src/main/java/com/xzzn/ems/domain/EmsPcsData.java new file mode 100644 index 0000000..fec0c4d --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/EmsPcsData.java @@ -0,0 +1,451 @@ +package com.xzzn.ems.domain; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xzzn.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.xzzn.common.annotation.Excel; + +/** + * PCS数据对象 ems_pcs_data + * + * @author xzzn + * @date 2025-06-17 + */ +public class EmsPcsData extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** */ + private Long id; + + /** 数据更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "数据更新时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date dataUpdateTime; + + /** 工作状态 */ + @Excel(name = "工作状态") + private String workStatus; + + /** 并网状态 */ + @Excel(name = "并网状态") + private String gridStatus; + + /** 设备状态 */ + @Excel(name = "设备状态") + private String deviceStatus; + + /** 控制模式 */ + @Excel(name = "控制模式") + private String controlMode; + + /** 总交流有功电率 (kW) */ + @Excel(name = "总交流有功电率 (kW)") + private BigDecimal totalActivePower; + + /** 当天交流充电量 (kWh) */ + @Excel(name = "当天交流充电量 (kWh)") + private BigDecimal dailyAcChargeEnergy; + + /** A相电压 (V) */ + @Excel(name = "A相电压 (V)") + private BigDecimal aPhaseVoltage; + + /** A相电流 (A) */ + @Excel(name = "A相电流 (A)") + private BigDecimal aPhaseCurrent; + + /** 总交流无功电率 (kVar) */ + @Excel(name = "总交流无功电率 (kVar)") + private BigDecimal totalReactivePower; + + /** 当天交流放电量 (kWh) */ + @Excel(name = "当天交流放电量 (kWh)") + private BigDecimal dailyAcDischargeEnergy; + + /** B相电压 (V) */ + @Excel(name = "B相电压 (V)") + private BigDecimal bPhaseVoltage; + + /** B相电流 (A) */ + @Excel(name = "B相电流 (A)") + private BigDecimal bPhaseCurrent; + + /** 总交流视在功率 (kVA) */ + @Excel(name = "总交流视在功率 (kVA)") + private BigDecimal totalApparentPower; + + /** PCS模块温度 (℃) */ + @Excel(name = "PCS模块温度 (℃)") + private BigDecimal pcsModuleTemperature; + + /** C相电压 (V) */ + @Excel(name = "C相电压 (V)") + private BigDecimal cPhaseVoltage; + + /** C相电流 (A) */ + @Excel(name = "C相电流 (A)") + private BigDecimal cPhaseCurrent; + + /** 总交流功率因数 */ + @Excel(name = "总交流功率因数") + private BigDecimal totalPowerFactor; + + /** PCS环境温度 (℃) */ + @Excel(name = "PCS环境温度 (℃)") + private BigDecimal pcsEnvironmentTemperature; + + /** 交流频率 (Hz) */ + @Excel(name = "交流频率 (Hz)") + private BigDecimal acFrequency; + + /** 支路状态 */ + @Excel(name = "支路状态") + private String branchStatus; + + /** 放电状态 */ + @Excel(name = "放电状态") + private String dischargeStatus; + + /** 直流功率 (kW) */ + @Excel(name = "直流功率 (kW)") + private BigDecimal dcPower; + + /** 直流电压 (V) */ + @Excel(name = "直流电压 (V)") + private BigDecimal dcVoltage; + + /** 直流电流 (A) */ + @Excel(name = "直流电流 (A)") + private BigDecimal dcCurrent; + + /** 站点id */ + @Excel(name = "站点id") + private Long siteId; + + /** 设备唯一标识符 */ + @Excel(name = "设备唯一标识符") + private Long 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 setWorkStatus(String workStatus) + { + this.workStatus = workStatus; + } + + public String getWorkStatus() + { + return workStatus; + } + + public void setGridStatus(String gridStatus) + { + this.gridStatus = gridStatus; + } + + public String getGridStatus() + { + return gridStatus; + } + + public void setDeviceStatus(String deviceStatus) + { + this.deviceStatus = deviceStatus; + } + + public String getDeviceStatus() + { + return deviceStatus; + } + + public void setControlMode(String controlMode) + { + this.controlMode = controlMode; + } + + public String getControlMode() + { + return controlMode; + } + + public void setTotalActivePower(BigDecimal totalActivePower) + { + this.totalActivePower = totalActivePower; + } + + public BigDecimal getTotalActivePower() + { + return totalActivePower; + } + + public void setDailyAcChargeEnergy(BigDecimal dailyAcChargeEnergy) + { + this.dailyAcChargeEnergy = dailyAcChargeEnergy; + } + + public BigDecimal getDailyAcChargeEnergy() + { + return dailyAcChargeEnergy; + } + + public void setaPhaseVoltage(BigDecimal aPhaseVoltage) + { + this.aPhaseVoltage = aPhaseVoltage; + } + + public BigDecimal getaPhaseVoltage() + { + return aPhaseVoltage; + } + + public void setaPhaseCurrent(BigDecimal aPhaseCurrent) + { + this.aPhaseCurrent = aPhaseCurrent; + } + + public BigDecimal getaPhaseCurrent() + { + return aPhaseCurrent; + } + + public void setTotalReactivePower(BigDecimal totalReactivePower) + { + this.totalReactivePower = totalReactivePower; + } + + public BigDecimal getTotalReactivePower() + { + return totalReactivePower; + } + + public void setDailyAcDischargeEnergy(BigDecimal dailyAcDischargeEnergy) + { + this.dailyAcDischargeEnergy = dailyAcDischargeEnergy; + } + + public BigDecimal getDailyAcDischargeEnergy() + { + return dailyAcDischargeEnergy; + } + + public void setbPhaseVoltage(BigDecimal bPhaseVoltage) + { + this.bPhaseVoltage = bPhaseVoltage; + } + + public BigDecimal getbPhaseVoltage() + { + return bPhaseVoltage; + } + + public void setbPhaseCurrent(BigDecimal bPhaseCurrent) + { + this.bPhaseCurrent = bPhaseCurrent; + } + + public BigDecimal getbPhaseCurrent() + { + return bPhaseCurrent; + } + + public void setTotalApparentPower(BigDecimal totalApparentPower) + { + this.totalApparentPower = totalApparentPower; + } + + public BigDecimal getTotalApparentPower() + { + return totalApparentPower; + } + + public void setPcsModuleTemperature(BigDecimal pcsModuleTemperature) + { + this.pcsModuleTemperature = pcsModuleTemperature; + } + + public BigDecimal getPcsModuleTemperature() + { + return pcsModuleTemperature; + } + + public void setcPhaseVoltage(BigDecimal cPhaseVoltage) + { + this.cPhaseVoltage = cPhaseVoltage; + } + + public BigDecimal getcPhaseVoltage() + { + return cPhaseVoltage; + } + + public void setcPhaseCurrent(BigDecimal cPhaseCurrent) + { + this.cPhaseCurrent = cPhaseCurrent; + } + + public BigDecimal getcPhaseCurrent() + { + return cPhaseCurrent; + } + + public void setTotalPowerFactor(BigDecimal totalPowerFactor) + { + this.totalPowerFactor = totalPowerFactor; + } + + public BigDecimal getTotalPowerFactor() + { + return totalPowerFactor; + } + + public void setPcsEnvironmentTemperature(BigDecimal pcsEnvironmentTemperature) + { + this.pcsEnvironmentTemperature = pcsEnvironmentTemperature; + } + + public BigDecimal getPcsEnvironmentTemperature() + { + return pcsEnvironmentTemperature; + } + + public void setAcFrequency(BigDecimal acFrequency) + { + this.acFrequency = acFrequency; + } + + public BigDecimal getAcFrequency() + { + return acFrequency; + } + + public void setBranchStatus(String branchStatus) + { + this.branchStatus = branchStatus; + } + + public String getBranchStatus() + { + return branchStatus; + } + + public void setDischargeStatus(String dischargeStatus) + { + this.dischargeStatus = dischargeStatus; + } + + public String getDischargeStatus() + { + return dischargeStatus; + } + + public void setDcPower(BigDecimal dcPower) + { + this.dcPower = dcPower; + } + + public BigDecimal getDcPower() + { + return dcPower; + } + + public void setDcVoltage(BigDecimal dcVoltage) + { + this.dcVoltage = dcVoltage; + } + + public BigDecimal getDcVoltage() + { + return dcVoltage; + } + + public void setDcCurrent(BigDecimal dcCurrent) + { + this.dcCurrent = dcCurrent; + } + + public BigDecimal getDcCurrent() + { + return dcCurrent; + } + + public void setSiteId(Long siteId) + { + this.siteId = siteId; + } + + public Long getSiteId() + { + return siteId; + } + + public void setDeviceId(Long deviceId) + { + this.deviceId = deviceId; + } + + public Long getDeviceId() + { + return deviceId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("dataUpdateTime", getDataUpdateTime()) + .append("workStatus", getWorkStatus()) + .append("gridStatus", getGridStatus()) + .append("deviceStatus", getDeviceStatus()) + .append("controlMode", getControlMode()) + .append("totalActivePower", getTotalActivePower()) + .append("dailyAcChargeEnergy", getDailyAcChargeEnergy()) + .append("aPhaseVoltage", getaPhaseVoltage()) + .append("aPhaseCurrent", getaPhaseCurrent()) + .append("totalReactivePower", getTotalReactivePower()) + .append("dailyAcDischargeEnergy", getDailyAcDischargeEnergy()) + .append("bPhaseVoltage", getbPhaseVoltage()) + .append("bPhaseCurrent", getbPhaseCurrent()) + .append("totalApparentPower", getTotalApparentPower()) + .append("pcsModuleTemperature", getPcsModuleTemperature()) + .append("cPhaseVoltage", getcPhaseVoltage()) + .append("cPhaseCurrent", getcPhaseCurrent()) + .append("totalPowerFactor", getTotalPowerFactor()) + .append("pcsEnvironmentTemperature", getPcsEnvironmentTemperature()) + .append("acFrequency", getAcFrequency()) + .append("branchStatus", getBranchStatus()) + .append("dischargeStatus", getDischargeStatus()) + .append("dcPower", getDcPower()) + .append("dcVoltage", getDcVoltage()) + .append("dcCurrent", getDcCurrent()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("siteId", getSiteId()) + .append("deviceId", getDeviceId()) + .toString(); + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/EmsSite.java b/ems-system/src/main/java/com/xzzn/ems/domain/EmsSite.java new file mode 100644 index 0000000..b789a2b --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/EmsSite.java @@ -0,0 +1,57 @@ +package com.xzzn.ems.domain; + +import com.xzzn.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.xzzn.common.annotation.Excel; + +/** + * 站点对象 site + * + * @author xzzn + * @date 2025-06-16 + */ +public class EmsSite extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 自增主键 */ + private Long id; + + /** 站点名称 */ + @Excel(name = "站点名称") + private String siteName; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setSiteName(String siteName) + { + this.siteName = siteName; + } + + public String getSiteName() + { + return siteName; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("siteName", getSiteName()) + .append("remark", getRemark()) + .append("createBy", getCreateBy()) + .append("updateBy", getUpdateBy()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} 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 new file mode 100644 index 0000000..e68c14d --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorDataVo.java @@ -0,0 +1,48 @@ +package com.xzzn.ems.domain.vo; + +import java.math.BigDecimal; + +/** + * 单站监控首页-能量流转数据 + * + */ +public class SiteMonitorDataVo { + /** + * 日期 + */ + private String ammeterDate; + + /** + * 放电量 + */ + private BigDecimal disChargedCap; + + /** + * 充电量 + */ + private BigDecimal chargedCap; + + public String getAmmeterDate() { + return ammeterDate; + } + + public void setAmmeterDate(String ammeterDate) { + this.ammeterDate = ammeterDate; + } + + public BigDecimal getDisChargedCap() { + return disChargedCap; + } + + public void setDisChargedCap(BigDecimal disChargedCap) { + this.disChargedCap = disChargedCap; + } + + public BigDecimal getChargedCap() { + return chargedCap; + } + + public void setChargedCap(BigDecimal chargedCap) { + this.chargedCap = chargedCap; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorHomeAlarmVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorHomeAlarmVo.java new file mode 100644 index 0000000..f8f29e3 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorHomeAlarmVo.java @@ -0,0 +1,46 @@ +package com.xzzn.ems.domain.vo; + +/** + * 单站监控首页告警数据 + * + */ +public class SiteMonitorHomeAlarmVo { + /** + * 告警名称 + */ + private String deviceName; + + /** + * 状态 + */ + private int status; + + /** + * 告警内容 + */ + private String alarmContent; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getAlarmContent() { + return alarmContent; + } + + public void setAlarmContent(String alarmContent) { + this.alarmContent = alarmContent; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorHomeVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorHomeVo.java new file mode 100644 index 0000000..0c8b748 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorHomeVo.java @@ -0,0 +1,142 @@ +package com.xzzn.ems.domain.vo; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 单站监控首页数据 + * + */ +public class SiteMonitorHomeVo { + + + /** + * 今日充电量 + */ + private BigDecimal dayChargedCap; + + /** + * 今日放电量 + */ + private BigDecimal dayDisChargedCap; + + /** + * 总充电量 + */ + private BigDecimal totalChargedCap; + + /** + * 总放电量 + */ + private BigDecimal totalDischargedCap; + + /** + * 告警集合 + */ + private List siteMonitorHomeAlarmVo; + + /** + * 电网实时功率 + */ + private BigDecimal gridNrtPower; + + /** + * 储能实时功率-暂空 + */ + private BigDecimal energyStorageNrtPower; + + /** + * 储能可用电量 + */ + private BigDecimal energyStorageAvailElec; + + /** + * 负载实时功率-暂空 + */ + private BigDecimal loadNrtPower; + + /** + * 能量流转数据 + */ + private List siteMonitorDataVo; + + public BigDecimal getDayChargedCap() { + return dayChargedCap; + } + + public void setDayChargedCap(BigDecimal dayChargedCap) { + this.dayChargedCap = dayChargedCap; + } + + public BigDecimal getDayDisChargedCap() { + return dayDisChargedCap; + } + + public void setDayDisChargedCap(BigDecimal dayDisChargedCap) { + this.dayDisChargedCap = dayDisChargedCap; + } + + 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 List getSiteMonitorHomeAlarmVo() { + return siteMonitorHomeAlarmVo; + } + + public void setSiteMonitorHomeAlarmVo(List siteMonitorHomeAlarmVo) { + this.siteMonitorHomeAlarmVo = siteMonitorHomeAlarmVo; + } + + public BigDecimal getGridNrtPower() { + return gridNrtPower; + } + + public void setGridNrtPower(BigDecimal gridNrtPower) { + this.gridNrtPower = gridNrtPower; + } + + public BigDecimal getEnergyStorageNrtPower() { + return energyStorageNrtPower; + } + + public void setEnergyStorageNrtPower(BigDecimal energyStorageNrtPower) { + this.energyStorageNrtPower = energyStorageNrtPower; + } + + public BigDecimal getEnergyStorageAvailElec() { + return energyStorageAvailElec; + } + + public void setEnergyStorageAvailElec(BigDecimal energyStorageAvailElec) { + this.energyStorageAvailElec = energyStorageAvailElec; + } + + public BigDecimal getLoadNrtPower() { + return loadNrtPower; + } + + public void setLoadNrtPower(BigDecimal loadNrtPower) { + this.loadNrtPower = loadNrtPower; + } + + public List getSiteMonitorDataVo() { + return siteMonitorDataVo; + } + + public void setSiteMonitorDataVo(List siteMonitorDataVo) { + this.siteMonitorDataVo = siteMonitorDataVo; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteVo.java new file mode 100644 index 0000000..03ac4ce --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteVo.java @@ -0,0 +1,85 @@ +package com.xzzn.ems.domain.vo; + +import java.math.BigDecimal; + +/** + * 首页看板数据 + * + */ +public class SiteVo { + /** + * 站点总数(座) + */ + private int siteNum; + + /** + * 装机功率(MW) + */ + private BigDecimal installedPower; + + /** + * 装机容量(MW) + */ + private BigDecimal installedCap; + + /** + * 总充电量(MWH) + */ + private BigDecimal totalChargedCap; + + /** + * 总放电量(MWH) + */ + private BigDecimal totalDischargedCap; + + public int getSiteNum() { + return siteNum; + } + + public void setSiteNum(int siteNum) { + this.siteNum = siteNum; + } + + public BigDecimal getTotalDischargedCap() { + return totalDischargedCap; + } + + public void setTotalDischargedCap(BigDecimal totalDischargedCap) { + this.totalDischargedCap = totalDischargedCap; + } + + public BigDecimal getTotalChargedCap() { + return totalChargedCap; + } + + public void setTotalChargedCap(BigDecimal totalChargedCap) { + this.totalChargedCap = totalChargedCap; + } + + public BigDecimal getInstalledCap() { + return installedCap; + } + + public void setInstalledCap(BigDecimal installedCap) { + this.installedCap = installedCap; + } + + public BigDecimal getInstalledPower() { + return installedPower; + } + + public void setInstalledPower(BigDecimal installedPower) { + this.installedPower = installedPower; + } + + @Override + public String toString() { + return "SiteVo{" + + "siteNum=" + siteNum + + ", installedPower=" + installedPower + + ", installedCap=" + installedCap + + ", totalChargedCap=" + totalChargedCap + + ", totalDischargedCap=" + totalDischargedCap + + '}'; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmRecordsMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmRecordsMapper.java new file mode 100644 index 0000000..a0a434e --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAlarmRecordsMapper.java @@ -0,0 +1,68 @@ +package com.xzzn.ems.mapper; + +import java.util.List; +import com.xzzn.ems.domain.EmsAlarmRecords; +import com.xzzn.ems.domain.vo.SiteMonitorHomeAlarmVo; + +/** + * 告警记录Mapper接口 + * + * @author xzzn + * @date 2025-06-17 + */ +public interface EmsAlarmRecordsMapper +{ + /** + * 查询告警记录 + * + * @param id 告警记录主键 + * @return 告警记录 + */ + public EmsAlarmRecords selectEmsAlarmRecordsById(Long id); + + /** + * 查询告警记录列表 + * + * @param emsAlarmRecords 告警记录 + * @return 告警记录集合 + */ + public List selectEmsAlarmRecordsList(EmsAlarmRecords emsAlarmRecords); + + /** + * 新增告警记录 + * + * @param emsAlarmRecords 告警记录 + * @return 结果 + */ + public int insertEmsAlarmRecords(EmsAlarmRecords emsAlarmRecords); + + /** + * 修改告警记录 + * + * @param emsAlarmRecords 告警记录 + * @return 结果 + */ + public int updateEmsAlarmRecords(EmsAlarmRecords emsAlarmRecords); + + /** + * 删除告警记录 + * + * @param id 告警记录主键 + * @return 结果 + */ + public int deleteEmsAlarmRecordsById(Long id); + + /** + * 批量删除告警记录 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteEmsAlarmRecordsByIds(Long[] ids); + + /** + * 根据站点id获取告警记录 + * + */ + public List getAlarmRecordsBySiteId(Long 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 new file mode 100644 index 0000000..da8b9ce --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsDataMapper.java @@ -0,0 +1,77 @@ +package com.xzzn.ems.mapper; + +import java.math.BigDecimal; +import java.util.List; +import com.xzzn.ems.domain.EmsPcsData; +import com.xzzn.ems.domain.vo.SiteMonitorDataVo; + +/** + * PCS数据Mapper接口 + * + * @author xzzn + * @date 2025-06-17 + */ +public interface EmsPcsDataMapper +{ + /** + * 查询PCS数据 + * + * @param id PCS数据主键 + * @return PCS数据 + */ + public EmsPcsData selectEmsPcsDataById(Long id); + + /** + * 查询PCS数据列表 + * + * @param emsPcsData PCS数据 + * @return PCS数据集合 + */ + public List selectEmsPcsDataList(EmsPcsData emsPcsData); + + /** + * 新增PCS数据 + * + * @param emsPcsData PCS数据 + * @return 结果 + */ + public int insertEmsPcsData(EmsPcsData emsPcsData); + + /** + * 修改PCS数据 + * + * @param emsPcsData PCS数据 + * @return 结果 + */ + public int updateEmsPcsData(EmsPcsData emsPcsData); + + /** + * 删除PCS数据 + * + * @param id PCS数据主键 + * @return 结果 + */ + public int deleteEmsPcsDataById(Long id); + + /** + * 批量删除PCS数据 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteEmsPcsDataByIds(Long[] ids); + + /** + * 根据site_id获取日期对应的充放电数据 + * @param siteId + * @return + */ + public List getPcsDataBySiteId(Long siteId); + + /** + * 根据站点获取电网实时功率=sum(总交流有功电率) + * @param siteId + * @return + */ + public BigDecimal getGridNrtPower(Long siteId); +} diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsSiteMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsSiteMapper.java new file mode 100644 index 0000000..431c065 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsSiteMapper.java @@ -0,0 +1,60 @@ +package com.xzzn.ems.mapper; + +import java.util.List; +import com.xzzn.ems.domain.EmsSite; + +/** + * 站点Mapper接口 + * + * @author xzzn + * @date 2025-06-16 + */ +public interface EmsSiteMapper +{ + /** + * 查询站点 + * + * @param id 站点主键 + * @return 站点 + */ + public EmsSite selectSiteById(Long id); + + /** + * 查询站点列表 + * + * @return 站点集合 + */ + public List selectSiteList(); + + /** + * 新增站点 + * + * @param site 站点 + * @return 结果 + */ + public int insertSite(EmsSite site); + + /** + * 修改站点 + * + * @param site 站点 + * @return 结果 + */ + public int updateSite(EmsSite site); + + /** + * 删除站点 + * + * @param id 站点主键 + * @return 结果 + */ + public int deleteSiteById(Long id); + + /** + * 批量删除站点 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSiteByIds(Long[] ids); +} diff --git a/ems-system/src/main/java/com/xzzn/ems/service/IEmsSiteService.java b/ems-system/src/main/java/com/xzzn/ems/service/IEmsSiteService.java new file mode 100644 index 0000000..ed04426 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/service/IEmsSiteService.java @@ -0,0 +1,18 @@ +package com.xzzn.ems.service; + + +import com.xzzn.ems.domain.EmsSite; + +import java.util.List; + +/** + * 站点信息 服务层 + * + */ +public interface IEmsSiteService +{ + + public List getAllSites(); + + +} diff --git a/ems-system/src/main/java/com/xzzn/ems/service/IHomePageService.java b/ems-system/src/main/java/com/xzzn/ems/service/IHomePageService.java new file mode 100644 index 0000000..1285115 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/service/IHomePageService.java @@ -0,0 +1,15 @@ +package com.xzzn.ems.service; + +import com.xzzn.ems.domain.vo.SiteVo; + +/** + * 站点信息 服务层 + * + */ +public interface IHomePageService +{ + + public SiteVo getSiteVo(); + + +} 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 new file mode 100644 index 0000000..32a90bd --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/service/ISingleSiteService.java @@ -0,0 +1,15 @@ +package com.xzzn.ems.service; + +import com.xzzn.ems.domain.vo.SiteMonitorHomeVo; + +/** + * 单点监控 服务层 + * + */ +public interface ISingleSiteService +{ + + public SiteMonitorHomeVo getSiteMonitorDataVo(Long siteId); + + +} diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsSiteServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsSiteServiceImpl.java new file mode 100644 index 0000000..69c4d4d --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsSiteServiceImpl.java @@ -0,0 +1,27 @@ +package com.xzzn.ems.service.impl; + +import com.xzzn.ems.domain.EmsSite; +import com.xzzn.ems.mapper.EmsSiteMapper; +import com.xzzn.ems.service.IEmsSiteService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 站点信息 服务层实现 + * + */ +@Service +public class EmsSiteServiceImpl implements IEmsSiteService +{ + + @Autowired + private EmsSiteMapper emsSiteMapper; + + @Override + public List getAllSites() { + return emsSiteMapper.selectSiteList(); + } + +} 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 new file mode 100644 index 0000000..8f4b471 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/HomePageServiceImpl.java @@ -0,0 +1,29 @@ +package com.xzzn.ems.service.impl; + +import com.xzzn.ems.domain.vo.SiteVo; +import com.xzzn.ems.service.IEmsSiteService; +import com.xzzn.ems.service.IHomePageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 站点信息 服务层实现 + * + */ +@Service +public class HomePageServiceImpl implements IHomePageService +{ + + @Autowired + private IEmsSiteService emsSiteService; + + @Override + public SiteVo getSiteVo() { + SiteVo siteVo = new SiteVo(); + siteVo.setSiteNum(emsSiteService.getAllSites().size()); + if (siteVo.getSiteNum() > 0){ + //设置其他参数 + } + return siteVo; + } +} 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 new file mode 100644 index 0000000..ee20eb1 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java @@ -0,0 +1,68 @@ +package com.xzzn.ems.service.impl; + +import com.xzzn.common.utils.DateUtils; +import com.xzzn.ems.domain.vo.SiteMonitorDataVo; +import com.xzzn.ems.domain.vo.SiteMonitorHomeAlarmVo; +import com.xzzn.ems.domain.vo.SiteMonitorHomeVo; +import com.xzzn.ems.mapper.EmsAlarmRecordsMapper; +import com.xzzn.ems.mapper.EmsPcsDataMapper; +import com.xzzn.ems.service.ISingleSiteService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 单点监控 服务层实现 + */ +@Service +public class SingleSiteServiceImpl implements ISingleSiteService { + + @Autowired + private EmsPcsDataMapper emsPcsDataMapper; + @Autowired + private EmsAlarmRecordsMapper emsAlarmRecordsMapper; + + @Override + public SiteMonitorHomeVo getSiteMonitorDataVo(Long siteId) { + SiteMonitorHomeVo siteMonitorHomeVo = new SiteMonitorHomeVo(); + + if (siteId != null) { + // 实时告警数据 名称+状态+告警内容 + List siteMonitorHomeAlarmVo = emsAlarmRecordsMapper.getAlarmRecordsBySiteId(siteId); + siteMonitorHomeVo.setSiteMonitorHomeAlarmVo(siteMonitorHomeAlarmVo); + // 能量数据 + List siteMonitorDataVoList = emsPcsDataMapper.getPcsDataBySiteId(siteId); + if (!siteMonitorDataVoList.isEmpty()) { + BigDecimal totalChargeCap = new BigDecimal(0); + BigDecimal totalDisChargeCap = new BigDecimal(0); + for (SiteMonitorDataVo sitePcsData : siteMonitorDataVoList) { + // 总充电量 + totalChargeCap = totalChargeCap.add(sitePcsData.getChargedCap()); + // 总放电量 + totalDisChargeCap = totalDisChargeCap.add(sitePcsData.getDisChargedCap()); + // 获取当天的充电量+放电量 + Date today = DateUtils.getNowDate(); + Date pcsDate = DateUtils.parseDate(sitePcsData.getAmmeterDate()); + if( DateUtils.differentDaysByMillisecond(today,pcsDate) ==0){ + siteMonitorHomeVo.setDayChargedCap(sitePcsData.getChargedCap()); + siteMonitorHomeVo.setDayDisChargedCap(sitePcsData.getDisChargedCap()); + } + } + siteMonitorHomeVo.setTotalChargedCap(totalChargeCap); + siteMonitorHomeVo.setTotalDischargedCap(totalDisChargeCap); + // 储能可用电量 + BigDecimal energyStorageAvailElec = siteMonitorHomeVo.getTotalDischargedCap().subtract(siteMonitorHomeVo.getTotalChargedCap()); + siteMonitorHomeVo.setEnergyStorageAvailElec(energyStorageAvailElec); + } + siteMonitorHomeVo.setSiteMonitorDataVo(siteMonitorDataVoList); + // 电网实时功率 + siteMonitorHomeVo.setGridNrtPower(emsPcsDataMapper.getGridNrtPower(siteId)); + } + + return siteMonitorHomeVo; + } + +} diff --git a/ems-system/src/main/resources/mapper/ems/EmsAlarmRecordsMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAlarmRecordsMapper.xml new file mode 100644 index 0000000..c7b8522 --- /dev/null +++ b/ems-system/src/main/resources/mapper/ems/EmsAlarmRecordsMapper.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + select id, device_type, alarm_level, alarm_content, alarm_start_time, alarm_end_time, status, create_by, create_time, update_by, update_time, remark, site_id, device_id, device_name from ems_alarm_records + + + + + + + + insert into ems_alarm_records + + device_type, + alarm_level, + alarm_content, + alarm_start_time, + alarm_end_time, + status, + create_by, + create_time, + update_by, + update_time, + remark, + site_id, + device_id, + device_name, + + + #{deviceType}, + #{alarmLevel}, + #{alarmContent}, + #{alarmStartTime}, + #{alarmEndTime}, + #{status}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{siteId}, + #{deviceId}, + #{deviceName}, + + + + + update ems_alarm_records + + device_type = #{deviceType}, + alarm_level = #{alarmLevel}, + alarm_content = #{alarmContent}, + alarm_start_time = #{alarmStartTime}, + alarm_end_time = #{alarmEndTime}, + status = #{status}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + site_id = #{siteId}, + device_id = #{deviceId}, + device_name = #{deviceName}, + + where id = #{id} + + + + delete from ems_alarm_records where id = #{id} + + + + delete from ems_alarm_records where id in + + #{id} + + + + + \ 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 new file mode 100644 index 0000000..342254b --- /dev/null +++ b/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, data_update_time, work_status, grid_status, device_status, control_mode, total_active_power, daily_ac_charge_energy, a_phase_voltage, a_phase_current, total_reactive_power, daily_ac_discharge_energy, b_phase_voltage, b_phase_current, total_apparent_power, pcs_module_temperature, c_phase_voltage, c_phase_current, total_power_factor, pcs_environment_temperature, ac_frequency, branch_status, discharge_status, dc_power, dc_voltage, dc_current, create_by, create_time, update_by, update_time, remark, site_id, device_id from ems_pcs_data + + + + + + + + insert into ems_pcs_data + + data_update_time, + work_status, + grid_status, + device_status, + control_mode, + total_active_power, + daily_ac_charge_energy, + a_phase_voltage, + a_phase_current, + total_reactive_power, + daily_ac_discharge_energy, + b_phase_voltage, + b_phase_current, + total_apparent_power, + pcs_module_temperature, + c_phase_voltage, + c_phase_current, + total_power_factor, + pcs_environment_temperature, + ac_frequency, + branch_status, + discharge_status, + dc_power, + dc_voltage, + dc_current, + create_by, + create_time, + update_by, + update_time, + remark, + site_id, + device_id, + + + #{dataUpdateTime}, + #{workStatus}, + #{gridStatus}, + #{deviceStatus}, + #{controlMode}, + #{totalActivePower}, + #{dailyAcChargeEnergy}, + #{aPhaseVoltage}, + #{aPhaseCurrent}, + #{totalReactivePower}, + #{dailyAcDischargeEnergy}, + #{bPhaseVoltage}, + #{bPhaseCurrent}, + #{totalApparentPower}, + #{pcsModuleTemperature}, + #{cPhaseVoltage}, + #{cPhaseCurrent}, + #{totalPowerFactor}, + #{pcsEnvironmentTemperature}, + #{acFrequency}, + #{branchStatus}, + #{dischargeStatus}, + #{dcPower}, + #{dcVoltage}, + #{dcCurrent}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{siteId}, + #{deviceId}, + + + + + update ems_pcs_data + + data_update_time = #{dataUpdateTime}, + work_status = #{workStatus}, + grid_status = #{gridStatus}, + device_status = #{deviceStatus}, + control_mode = #{controlMode}, + total_active_power = #{totalActivePower}, + daily_ac_charge_energy = #{dailyAcChargeEnergy}, + a_phase_voltage = #{aPhaseVoltage}, + a_phase_current = #{aPhaseCurrent}, + total_reactive_power = #{totalReactivePower}, + daily_ac_discharge_energy = #{dailyAcDischargeEnergy}, + b_phase_voltage = #{bPhaseVoltage}, + b_phase_current = #{bPhaseCurrent}, + total_apparent_power = #{totalApparentPower}, + pcs_module_temperature = #{pcsModuleTemperature}, + c_phase_voltage = #{cPhaseVoltage}, + c_phase_current = #{cPhaseCurrent}, + total_power_factor = #{totalPowerFactor}, + pcs_environment_temperature = #{pcsEnvironmentTemperature}, + ac_frequency = #{acFrequency}, + branch_status = #{branchStatus}, + discharge_status = #{dischargeStatus}, + dc_power = #{dcPower}, + dc_voltage = #{dcVoltage}, + dc_current = #{dcCurrent}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + site_id = #{siteId}, + device_id = #{deviceId}, + + where id = #{id} + + + + delete from ems_pcs_data where id = #{id} + + + + delete from ems_pcs_data where id in + + #{id} + + + + + + + + \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsSiteMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsSiteMapper.xml new file mode 100644 index 0000000..16bd903 --- /dev/null +++ b/ems-system/src/main/resources/mapper/ems/EmsSiteMapper.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + select id, site_name, remark, create_by, update_by, create_time, update_time from ems_site_setting + + + + + + + + insert into ems_site_setting + + site_name, + remark, + create_by, + update_by, + create_time, + update_time, + + + #{siteName}, + #{remark}, + #{createBy}, + #{updateBy}, + #{createTime}, + #{updateTime}, + + + + + update ems_site_setting + + site_name = #{siteName}, + remark = #{remark}, + create_by = #{createBy}, + update_by = #{updateBy}, + create_time = #{createTime}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from ems_site_setting where id = #{id} + + + + delete from ems_site_setting where id in + + #{id} + + + \ No newline at end of file