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 d664700..91fbdd1 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 @@ -108,6 +108,15 @@ public class EmsSiteMonitorController extends BaseController{ @GetMapping("/getClusterDataInfoList") public AjaxResult getClusterDataInfoList(@RequestParam Long clusterDeviceId) { - return success(iEmsSiteService.getClusterDataInfoList(clusterDeviceId)); + return success(iSingleSiteService.getClusterDataInfoList(clusterDeviceId)); + } + + /** + * 电表数据 + */ + @GetMapping("/getAmmeterDataList") + public AjaxResult getAmmeterDataList(@RequestParam Long siteId) + { + return success(iSingleSiteService.getAmmeterDataList(siteId)); } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/EmsAmmeterData.java b/ems-system/src/main/java/com/xzzn/ems/domain/EmsAmmeterData.java new file mode 100644 index 0000000..a110ce9 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/EmsAmmeterData.java @@ -0,0 +1,166 @@ +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; + +/** + * 总数据对象 ems_ammeter_data + * + * @author xzzn + * @date 2025-06-27 + */ +public class EmsAmmeterData 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; + + /** 类别 */ + @Excel(name = "类别") + private String category; + + /** 总 (kWh) */ + @Excel(name = "总 (kWh)") + private BigDecimal totalKwh; + + /** 峰 (kWh) */ + @Excel(name = "峰 (kWh)") + private BigDecimal peakKwh; + + /** 平 (kWh) */ + @Excel(name = "平 (kWh)") + private BigDecimal flatKwh; + + /** 谷 (kWh) */ + @Excel(name = "谷 (kWh)") + private BigDecimal valleyKwh; + + /** 站点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 setCategory(String category) + { + this.category = category; + } + + public String getCategory() + { + return category; + } + + public void setTotalKwh(BigDecimal totalKwh) + { + this.totalKwh = totalKwh; + } + + public BigDecimal getTotalKwh() + { + return totalKwh; + } + + public void setPeakKwh(BigDecimal peakKwh) + { + this.peakKwh = peakKwh; + } + + public BigDecimal getPeakKwh() + { + return peakKwh; + } + + public void setFlatKwh(BigDecimal flatKwh) + { + this.flatKwh = flatKwh; + } + + public BigDecimal getFlatKwh() + { + return flatKwh; + } + + public void setValleyKwh(BigDecimal valleyKwh) + { + this.valleyKwh = valleyKwh; + } + + public BigDecimal getValleyKwh() + { + return valleyKwh; + } + + 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("category", getCategory()) + .append("totalKwh", getTotalKwh()) + .append("peakKwh", getPeakKwh()) + .append("flatKwh", getFlatKwh()) + .append("valleyKwh", getValleyKwh()) + .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/vo/AmmeterDataDetailInfo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataDetailInfo.java new file mode 100644 index 0000000..6f15ca1 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataDetailInfo.java @@ -0,0 +1,98 @@ +package com.xzzn.ems.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 总表详细数据 + */ +public class AmmeterDataDetailInfo +{ + /** 类别 */ + private String category; + + /** 总 (kWh) */ + private BigDecimal totalKwh; + + /** 尖 (kWh) */ + private BigDecimal sharpKwh; + + /** 峰 (kWh) */ + private BigDecimal peakKwh; + + /** 平 (kWh) */ + private BigDecimal flatKwh; + + /** 谷 (kWh) */ + private BigDecimal valleyKwh; + + /** 总表设备Id */ + private Long deviceId; + + /** 数据更新时间 */ + private Date updateTime; + + public BigDecimal getValleyKwh() { + return valleyKwh; + } + + public void setValleyKwh(BigDecimal valleyKwh) { + this.valleyKwh = valleyKwh; + } + + public BigDecimal getFlatKwh() { + return flatKwh; + } + + public void setFlatKwh(BigDecimal flatKwh) { + this.flatKwh = flatKwh; + } + + public BigDecimal getPeakKwh() { + return peakKwh; + } + + public void setPeakKwh(BigDecimal peakKwh) { + this.peakKwh = peakKwh; + } + + public BigDecimal getSharpKwh() { + return sharpKwh; + } + + public void setSharpKwh(BigDecimal sharpKwh) { + this.sharpKwh = sharpKwh; + } + + public BigDecimal getTotalKwh() { + return totalKwh; + } + + public void setTotalKwh(BigDecimal totalKwh) { + this.totalKwh = totalKwh; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public Long getDeviceId() { + return deviceId; + } + + public void setDeviceId(Long 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/AmmeterDataVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataVo.java new file mode 100644 index 0000000..5993239 --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataVo.java @@ -0,0 +1,45 @@ +package com.xzzn.ems.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; +import java.util.List; + +/** + * 电表数据 + */ +public class AmmeterDataVo { + + /** 通信状态 */ + private String emsCommunicationStatus; + + /** 数据更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date dataUpdateTime; + + private List ammeterDataDetailInfos; + + 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 getAmmeterDataDetailInfos() { + return ammeterDataDetailInfos; + } + + public void setAmmeterDataDetailInfos(List ammeterDataDetailInfos) { + this.ammeterDataDetailInfos = ammeterDataDetailInfos; + } +} 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 new file mode 100644 index 0000000..2cf34aa --- /dev/null +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAmmeterDataMapper.java @@ -0,0 +1,69 @@ +package com.xzzn.ems.mapper; + +import java.util.List; +import com.xzzn.ems.domain.EmsAmmeterData; +import com.xzzn.ems.domain.vo.AmmeterDataDetailInfo; + +/** + * 总数据Mapper接口 + * + * @author xzzn + * @date 2025-06-27 + */ +public interface EmsAmmeterDataMapper +{ + /** + * 查询总数据 + * + * @param id 总数据主键 + * @return 总数据 + */ + public EmsAmmeterData selectEmsAmmeterDataById(Long id); + + /** + * 查询总数据列表 + * + * @param emsAmmeterData 总数据 + * @return 总数据集合 + */ + public List selectEmsAmmeterDataList(EmsAmmeterData emsAmmeterData); + + /** + * 新增总数据 + * + * @param emsAmmeterData 总数据 + * @return 结果 + */ + public int insertEmsAmmeterData(EmsAmmeterData emsAmmeterData); + + /** + * 修改总数据 + * + * @param emsAmmeterData 总数据 + * @return 结果 + */ + public int updateEmsAmmeterData(EmsAmmeterData emsAmmeterData); + + /** + * 删除总数据 + * + * @param id 总数据主键 + * @return 结果 + */ + public int deleteEmsAmmeterDataById(Long id); + + /** + * 批量删除总数据 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteEmsAmmeterDataByIds(Long[] ids); + + /** + * 获取总表详细数据 + * @param siteId + * @return + */ + public List getAmmeterDetailInfo(Long siteId); +} diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDevicesSettingMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDevicesSettingMapper.java index 5a7f172..8002a45 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDevicesSettingMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsDevicesSettingMapper.java @@ -74,4 +74,11 @@ public interface EmsDevicesSettingMapper * @return */ public List> getAllClusterInfoByStackId(Long stackDeviceId); + + /** + * 获取设备通信状态 + * @param deviceId + * @return + */ + public Map getDeviceStatus(Long deviceId); } 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 index eff7a91..8bdd27b 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/IEmsSiteService.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/IEmsSiteService.java @@ -1,7 +1,6 @@ package com.xzzn.ems.service; import com.xzzn.ems.domain.EmsSiteSetting; -import com.xzzn.ems.domain.vo.BatteryDataStatsListVo; import com.xzzn.ems.domain.vo.SiteTotalInfoVo; import java.util.List; @@ -23,5 +22,5 @@ public interface IEmsSiteService public List> getAllClusterInfo(Long stackDeviceId); - public BatteryDataStatsListVo getClusterDataInfoList(Long clusterDeviceId); + } 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 b0a3221..a871b3e 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 @@ -26,4 +26,8 @@ public interface ISingleSiteService public List getBMSBatteryCluster(Long siteId); public List getCoolingDataList(Long siteId); + + public BatteryDataStatsListVo getClusterDataInfoList(Long clusterDeviceId); + + public List getAmmeterDataList(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 index ba12178..98a2282 100644 --- 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 @@ -1,7 +1,6 @@ package com.xzzn.ems.service.impl; import com.xzzn.ems.domain.EmsSiteSetting; -import com.xzzn.ems.domain.vo.BatteryDataStatsListVo; import com.xzzn.ems.domain.vo.SiteTotalInfoVo; import com.xzzn.ems.mapper.EmsDevicesSettingMapper; import com.xzzn.ems.mapper.EmsSiteSettingMapper; @@ -45,18 +44,14 @@ public class EmsSiteServiceImpl implements IEmsSiteService return emsDevicesMapper.getAllStackInfoBySiteId(siteId); } + /** + * 根据电池堆Id获取电池簇 + * @param stackDeviceId + * @return + */ @Override public List> getAllClusterInfo(Long stackDeviceId) { return emsDevicesMapper.getAllClusterInfoByStackId(stackDeviceId); } - /** - * 根据电池堆获取单体柱状数据 - * @param clusterDeviceId - * @return - */ - @Override - public BatteryDataStatsListVo getClusterDataInfoList(Long clusterDeviceId) { - return null; - } } 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 922c81e..9c9fd63 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 @@ -11,7 +11,6 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -41,6 +40,10 @@ public class SingleSiteServiceImpl implements ISingleSiteService { private EmsPcsBranchDataMapper emsPcsBranchDataMapper; @Autowired private EmsCoolingDataMapper emsCoolingDataMapper; + @Autowired + private EmsAmmeterDataMapper emsAmmeterDataMapper; + @Autowired + private EmsDevicesSettingMapper emsDevicesSettingMapper; @Override public SiteMonitorHomeVo getSiteMonitorDataVo(Long siteId) { @@ -258,4 +261,40 @@ public class SingleSiteServiceImpl implements ISingleSiteService { return emsCoolingDataList; } + + /** + * 根据电池堆获取单体柱状数据 + * @param clusterDeviceId + * @return + */ + @Override + public BatteryDataStatsListVo getClusterDataInfoList(Long clusterDeviceId) { + return null; + } + + /** + * 电表数据信息 + * @param siteId + * @return + */ + @Override + public List getAmmeterDataList(Long siteId) { + List ammeterDataVos = new ArrayList<>(); + AmmeterDataVo ammeterDataVo = new AmmeterDataVo(); + if (siteId != null) { + List ammeterDataDetailInfos = emsAmmeterDataMapper.getAmmeterDetailInfo(siteId); + ammeterDataVo.setAmmeterDataDetailInfos(ammeterDataDetailInfos); + if (!CollectionUtils.isEmpty(ammeterDataDetailInfos)) { + // 获取通信状态 + Long deviceId = ammeterDataDetailInfos.get(0).getDeviceId(); + Map map = emsDevicesSettingMapper.getDeviceStatus(deviceId); + ammeterDataVo.setEmsCommunicationStatus(map.get("communication_status").toString()); + // 数据更新时间 + ammeterDataVo.setDataUpdateTime(ammeterDataDetailInfos.get(0).getUpdateTime()); + } + } + ammeterDataVos.add(ammeterDataVo); + return ammeterDataVos; + } + } diff --git a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml new file mode 100644 index 0000000..1e91afe --- /dev/null +++ b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, data_update_time, category, total_kwh, peak_kwh, flat_kwh, valley_kwh, create_by, create_time, update_by, update_time, remark, site_id, device_id from ems_ammeter_data + + + + + + + + insert into ems_ammeter_data + + data_update_time, + category, + total_kwh, + peak_kwh, + flat_kwh, + valley_kwh, + create_by, + create_time, + update_by, + update_time, + remark, + site_id, + device_id, + + + #{dataUpdateTime}, + #{category}, + #{totalKwh}, + #{peakKwh}, + #{flatKwh}, + #{valleyKwh}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{siteId}, + #{deviceId}, + + + + + update ems_ammeter_data + + data_update_time = #{dataUpdateTime}, + category = #{category}, + total_kwh = #{totalKwh}, + peak_kwh = #{peakKwh}, + flat_kwh = #{flatKwh}, + valley_kwh = #{valleyKwh}, + 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_ammeter_data where id = #{id} + + + + delete from ems_ammeter_data where id in + + #{id} + + + + \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml index a9f4f03..39598d2 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml @@ -145,4 +145,10 @@ from ems_devices_setting where id in (select distinct eb.device_id from ems_battery_cluster eb where eb.stack_device_id = #{stackDeviceId}) + + \ No newline at end of file