PCS抽数逻辑

This commit is contained in:
2025-06-24 17:04:59 +08:00
parent 7134bc03f8
commit 7b64e193fc
11 changed files with 801 additions and 12 deletions

View File

@ -0,0 +1,149 @@
package com.xzzn.ems.domain;
import java.math.BigDecimal;
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_branch_data
*
* @author xzzn
* @date 2025-06-24
*/
public class EmsPcsBranchData extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 放电状态 */
@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;
/** 支路id */
@Excel(name = "支路id")
private Long branchId;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
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;
}
public void setBranchId(Long branchId)
{
this.branchId = branchId;
}
public Long getBranchId()
{
return branchId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.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())
.append("branchId", getBranchId())
.toString();
}
}

View File

@ -138,6 +138,10 @@ public class EmsPcsData extends BaseEntity
@Excel(name = "")
private int dateDay;
/** 通信状态 */
@Excel(name = "通信状态")
private String communicationStatus;
public void setId(Long id)
{
this.id = id;
@ -434,6 +438,16 @@ public class EmsPcsData extends BaseEntity
this.dateDay = dateDay;
}
public void setCommunicationStatus(String communicationStatus)
{
this.communicationStatus = communicationStatus;
}
public String getCommunicationStatus()
{
return communicationStatus;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@ -472,6 +486,8 @@ public class EmsPcsData extends BaseEntity
.append("deviceId", getDeviceId())
.append("dateMonth", getDateMonth())
.append("dateDay", getDateDay())
.append("communicationStatus", getCommunicationStatus())
.toString();
}
}

View File

@ -0,0 +1,91 @@
package com.xzzn.ems.domain.vo;
import java.math.BigDecimal;
/**
* PCS支路数据
*
* @author xzzn
* @date 2025-06-24
*/
public class PcsBranchInfo
{
private static final long serialVersionUID = 1L;
/** 放电状态 */
private String dischargeStatus;
/** 直流功率 (kW) */
private BigDecimal dcPower;
/** 直流电压 (V) */
private BigDecimal dcVoltage;
/** 直流电流 (A) */
private BigDecimal dcCurrent;
/** 站点id */
private Long siteId;
/** 设备唯一标识符 */
private Long deviceId;
/** 支路id */
private Long branchId;
public String getDischargeStatus() {
return dischargeStatus;
}
public void setDischargeStatus(String dischargeStatus) {
this.dischargeStatus = dischargeStatus;
}
public BigDecimal getDcPower() {
return dcPower;
}
public void setDcPower(BigDecimal dcPower) {
this.dcPower = dcPower;
}
public BigDecimal getDcVoltage() {
return dcVoltage;
}
public void setDcVoltage(BigDecimal dcVoltage) {
this.dcVoltage = dcVoltage;
}
public BigDecimal getDcCurrent() {
return dcCurrent;
}
public void setDcCurrent(BigDecimal dcCurrent) {
this.dcCurrent = dcCurrent;
}
public Long getSiteId() {
return siteId;
}
public void setSiteId(Long siteId) {
this.siteId = siteId;
}
public Long getDeviceId() {
return deviceId;
}
public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
}
public Long getBranchId() {
return branchId;
}
public void setBranchId(Long branchId) {
this.branchId = branchId;
}
}

View File

@ -0,0 +1,284 @@
package com.xzzn.ems.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xzzn.common.annotation.Excel;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 单个PCS详细数据
*
* @author xzzn
* @date 2025-06-24
*/
public class PcsDetailInfoVo implements Serializable {
private static final long serialVersionUID = 1L;
/** 通讯状态 */
private String communicationStatus;
/** 数据更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date dataUpdateTime;
/** 工作状态 */
private String workStatus;
/** 并网状态 */
private String gridStatus;
/** 设备状态 */
private String deviceStatus;
/** 控制模式 */
private String controlMode;
/** 总交流有功电率 (kW) */
private BigDecimal totalActivePower;
/** 当天交流充电量 (kWh) */
private BigDecimal dailyAcChargeEnergy;
/** A相电压 (V) */
private BigDecimal aPhaseVoltage;
/** A相电流 (A) */
private BigDecimal aPhaseCurrent;
/** 总交流无功电率 (kVar) */
private BigDecimal totalReactivePower;
/** 当天交流放电量 (kWh) */
@Excel(name = " (kWh)")
private BigDecimal dailyAcDischargeEnergy;
/** B相电压 (V) */
private BigDecimal bPhaseVoltage;
/** B相电流 (A) */
private BigDecimal bPhaseCurrent;
/** 总交流视在功率 (kVA) */
private BigDecimal totalApparentPower;
/** PCS模块温度 (℃) */
private BigDecimal pcsModuleTemperature;
/** C相电压 (V) */
private BigDecimal cPhaseVoltage;
/** C相电流 (A) */
private BigDecimal cPhaseCurrent;
/** 总交流功率因数 */
private BigDecimal totalPowerFactor;
/** PCS环境温度 (℃) */
private BigDecimal pcsEnvironmentTemperature;
/** 交流频率 (Hz) */
private BigDecimal acFrequency;
/** 站点id */
private Long siteId;
/** 设备唯一标识符 */
private Long deviceId;
private List<PcsBranchInfo> pcsBranchInfoList;
public Long getDeviceId() {
return deviceId;
}
public void setDeviceId(Long deviceId) {
this.deviceId = deviceId;
}
public Long getSiteId() {
return siteId;
}
public void setSiteId(Long siteId) {
this.siteId = siteId;
}
public BigDecimal getAcFrequency() {
return acFrequency;
}
public void setAcFrequency(BigDecimal acFrequency) {
this.acFrequency = acFrequency;
}
public BigDecimal getPcsEnvironmentTemperature() {
return pcsEnvironmentTemperature;
}
public void setPcsEnvironmentTemperature(BigDecimal pcsEnvironmentTemperature) {
this.pcsEnvironmentTemperature = pcsEnvironmentTemperature;
}
public BigDecimal getTotalPowerFactor() {
return totalPowerFactor;
}
public void setTotalPowerFactor(BigDecimal totalPowerFactor) {
this.totalPowerFactor = totalPowerFactor;
}
public BigDecimal getcPhaseCurrent() {
return cPhaseCurrent;
}
public void setcPhaseCurrent(BigDecimal cPhaseCurrent) {
this.cPhaseCurrent = cPhaseCurrent;
}
public BigDecimal getcPhaseVoltage() {
return cPhaseVoltage;
}
public void setcPhaseVoltage(BigDecimal cPhaseVoltage) {
this.cPhaseVoltage = cPhaseVoltage;
}
public BigDecimal getPcsModuleTemperature() {
return pcsModuleTemperature;
}
public void setPcsModuleTemperature(BigDecimal pcsModuleTemperature) {
this.pcsModuleTemperature = pcsModuleTemperature;
}
public BigDecimal getTotalApparentPower() {
return totalApparentPower;
}
public void setTotalApparentPower(BigDecimal totalApparentPower) {
this.totalApparentPower = totalApparentPower;
}
public BigDecimal getbPhaseCurrent() {
return bPhaseCurrent;
}
public void setbPhaseCurrent(BigDecimal bPhaseCurrent) {
this.bPhaseCurrent = bPhaseCurrent;
}
public BigDecimal getbPhaseVoltage() {
return bPhaseVoltage;
}
public void setbPhaseVoltage(BigDecimal bPhaseVoltage) {
this.bPhaseVoltage = bPhaseVoltage;
}
public BigDecimal getDailyAcDischargeEnergy() {
return dailyAcDischargeEnergy;
}
public void setDailyAcDischargeEnergy(BigDecimal dailyAcDischargeEnergy) {
this.dailyAcDischargeEnergy = dailyAcDischargeEnergy;
}
public BigDecimal getTotalReactivePower() {
return totalReactivePower;
}
public void setTotalReactivePower(BigDecimal totalReactivePower) {
this.totalReactivePower = totalReactivePower;
}
public BigDecimal getaPhaseCurrent() {
return aPhaseCurrent;
}
public void setaPhaseCurrent(BigDecimal aPhaseCurrent) {
this.aPhaseCurrent = aPhaseCurrent;
}
public BigDecimal getaPhaseVoltage() {
return aPhaseVoltage;
}
public void setaPhaseVoltage(BigDecimal aPhaseVoltage) {
this.aPhaseVoltage = aPhaseVoltage;
}
public BigDecimal getDailyAcChargeEnergy() {
return dailyAcChargeEnergy;
}
public void setDailyAcChargeEnergy(BigDecimal dailyAcChargeEnergy) {
this.dailyAcChargeEnergy = dailyAcChargeEnergy;
}
public BigDecimal getTotalActivePower() {
return totalActivePower;
}
public void setTotalActivePower(BigDecimal totalActivePower) {
this.totalActivePower = totalActivePower;
}
public String getControlMode() {
return controlMode;
}
public void setControlMode(String controlMode) {
this.controlMode = controlMode;
}
public String getDeviceStatus() {
return deviceStatus;
}
public void setDeviceStatus(String deviceStatus) {
this.deviceStatus = deviceStatus;
}
public String getGridStatus() {
return gridStatus;
}
public void setGridStatus(String gridStatus) {
this.gridStatus = gridStatus;
}
public String getWorkStatus() {
return workStatus;
}
public void setWorkStatus(String workStatus) {
this.workStatus = workStatus;
}
public Date getDataUpdateTime() {
return dataUpdateTime;
}
public void setDataUpdateTime(Date dataUpdateTime) {
this.dataUpdateTime = dataUpdateTime;
}
public List<PcsBranchInfo> getPcsBranchInfoList() {
return pcsBranchInfoList;
}
public String getCommunicationStatus() {
return communicationStatus;
}
public void setCommunicationStatus(String communicationStatus) {
this.communicationStatus = communicationStatus;
}
public void setPcsBranchInfoList(List<PcsBranchInfo> pcsBranchInfoList) {
this.pcsBranchInfoList = pcsBranchInfoList;
}
}

View File

@ -0,0 +1,71 @@
package com.xzzn.ems.mapper;
import java.util.List;
import com.xzzn.ems.domain.EmsPcsBranchData;
import com.xzzn.ems.domain.vo.PcsBranchInfo;
import org.apache.ibatis.annotations.Param;
/**
* pcs支路数据Mapper接口
*
* @author xzzn
* @date 2025-06-24
*/
public interface EmsPcsBranchDataMapper
{
/**
* 查询pcs支路数据
*
* @param id pcs支路数据主键
* @return pcs支路数据
*/
public EmsPcsBranchData selectEmsPcsBranchDataById(Long id);
/**
* 查询pcs支路数据列表
*
* @param emsPcsBranchData pcs支路数据
* @return pcs支路数据集合
*/
public List<EmsPcsBranchData> selectEmsPcsBranchDataList(EmsPcsBranchData emsPcsBranchData);
/**
* 新增pcs支路数据
*
* @param emsPcsBranchData pcs支路数据
* @return 结果
*/
public int insertEmsPcsBranchData(EmsPcsBranchData emsPcsBranchData);
/**
* 修改pcs支路数据
*
* @param emsPcsBranchData pcs支路数据
* @return 结果
*/
public int updateEmsPcsBranchData(EmsPcsBranchData emsPcsBranchData);
/**
* 删除pcs支路数据
*
* @param id pcs支路数据主键
* @return 结果
*/
public int deleteEmsPcsBranchDataById(Long id);
/**
* 批量删除pcs支路数据
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteEmsPcsBranchDataByIds(Long[] ids);
/**
* 根据site_id和device_id获取支路最新数据
* @param siteId
* @param deviceId
* @return
*/
public List<PcsBranchInfo> getPcsBranchInfoList(@Param("siteId")Long siteId, @Param("deviceId")Long deviceId);
}

View File

@ -92,9 +92,9 @@ public interface EmsPcsDataMapper
public List<ElectricIndexList> getElectDataList();
/**
* 根据site_id获取pcs最新update的数据
* 根据site_id获取所有pcs最新update的数据
* @param siteId
* @return
*/
public EmsPcsData getPcsDetailInfoBySiteId(Long siteId);
public List<EmsPcsData> getPcsDetailInfoBySiteId(Long siteId);
}

View File

@ -1,8 +1,9 @@
package com.xzzn.ems.service;
import com.xzzn.ems.domain.EmsPcsData;
import com.xzzn.ems.domain.vo.*;
import java.util.List;
/**
* 单点监控 服务层
*
@ -17,7 +18,7 @@ public interface ISingleSiteService
public SiteMonitorRuningInfoVo getRunningGraph(Long siteId);
public EmsPcsData getPcsDetailInfo(Long siteId);
public List<PcsDetailInfoVo> getPcsDetailInfo(Long siteId);
public BMSOverViewVo getBMSOverView(Long siteId);

View File

@ -11,8 +11,10 @@ import com.xzzn.ems.mapper.*;
import com.xzzn.ems.service.ISingleSiteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
@ -32,6 +34,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
private EmsBatteryStackMapper emsBatteryStackMapper;
@Autowired
private EmsBatteryClusterMapper emsBatteryClusterMapper;
@Autowired
private EmsPcsBranchDataMapper emsPcsBranchDataMapper;
@Override
public SiteMonitorHomeVo getSiteMonitorDataVo(Long siteId) {
@ -43,7 +47,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
siteMonitorHomeVo.setSiteMonitorHomeAlarmVo(siteMonitorHomeAlarmVo);
// 能量数据
List<SiteMonitorDataVo> siteMonitorDataVoList = emsPcsDataMapper.getPcsDataBySiteId(siteId);
if (siteMonitorDataVoList != null && !siteMonitorDataVoList.isEmpty()) {
if (!CollectionUtils.isEmpty(siteMonitorDataVoList)) {
BigDecimal dayChargeCap = new BigDecimal(0);
BigDecimal dayDisChargeCap = new BigDecimal(0);
BigDecimal totalChargeCap = new BigDecimal(0);
@ -125,10 +129,31 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
return siteMonitorRuningInfoVo;
}
// 根据site_id获取pcs详细数据
// 根据site_id获取pcs详细数据+支路数据
@Override
public EmsPcsData getPcsDetailInfo(Long siteId) {
return emsPcsDataMapper.getPcsDetailInfoBySiteId(siteId);
public List<PcsDetailInfoVo> getPcsDetailInfo(Long siteId) {
List<PcsDetailInfoVo> pcsDetailInfoVoList = new ArrayList<>();
if (siteId != null) {
// 获取pcs最新数据
List<EmsPcsData> emsPcsDataList = emsPcsDataMapper.getPcsDetailInfoBySiteId(siteId);
if (!CollectionUtils.isEmpty(emsPcsDataList)) {
for (EmsPcsData sitePcsData : emsPcsDataList) {
// 赋值
PcsDetailInfoVo pcsDetailInfoVo = new PcsDetailInfoVo();
BeanUtils.copyProperties(sitePcsData, pcsDetailInfoVo);
Long deviceId = sitePcsData.getDeviceId();
// 获取支路最新数据
if (deviceId != null) {
List<PcsBranchInfo> pcsBranchInfoList = emsPcsBranchDataMapper.getPcsBranchInfoList(siteId, deviceId);
pcsDetailInfoVo.setPcsBranchInfoList(pcsBranchInfoList);
}
pcsDetailInfoVoList.add(pcsDetailInfoVo);
}
}
}
return pcsDetailInfoVoList;
}
// 获取BMS总览数据