From 49a3ce2c11c18ca8c92a1e15401378f253bbee1d Mon Sep 17 00:00:00 2001 From: dashixiong Date: Mon, 30 Jun 2025 09:46:31 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0mqtt=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ems-admin/src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ems-admin/src/main/resources/application.yml b/ems-admin/src/main/resources/application.yml index 9a02bd4..bd1addd 100644 --- a/ems-admin/src/main/resources/application.yml +++ b/ems-admin/src/main/resources/application.yml @@ -131,8 +131,8 @@ xss: mqtt: broker.url: tcp://122.51.194.184:1883 client.id: ems-cloud - username: admin - password: pass123 + username: dmbroker + password: Setri@64335270 connection-timeout: 15 keep-alive-interval: 30 automatic-reconnect: true \ No newline at end of file From cebd845af1430dc5ded2570b5ed27488f6f5d8fe Mon Sep 17 00:00:00 2001 From: mashili Date: Mon, 30 Jun 2025 13:11:05 +0800 Subject: [PATCH 2/4] =?UTF-8?q?sql=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ems/domain/vo/BMSBatteryClusterVo.java | 165 ++++++++++++++++++ .../ems/domain/vo/BMSBatteryDataList.java | 6 +- .../vo/SiteMonitorRunningHeadInfoVo.java | 13 ++ .../ems/mapper/EmsPcsBranchDataMapper.java | 2 +- .../com/xzzn/ems/mapper/EmsPcsDataMapper.java | 12 +- .../ems/service/impl/HomePageServiceImpl.java | 36 ++-- .../service/impl/SingleSiteServiceImpl.java | 101 ++++------- .../mapper/ems/EmsAmmeterDataMapper.xml | 15 +- .../mapper/ems/EmsBatteryClusterMapper.xml | 50 ++++-- .../mapper/ems/EmsBatteryDataMapper.xml | 4 +- .../mapper/ems/EmsBatteryStackMapper.xml | 27 +-- .../mapper/ems/EmsPcsBranchDataMapper.xml | 2 +- .../resources/mapper/ems/EmsPcsDataMapper.xml | 92 ++++++---- 13 files changed, 356 insertions(+), 169 deletions(-) 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 8de0dda..0b84a35 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 @@ -57,6 +57,51 @@ public class BMSBatteryClusterVo { /** 设备唯一标识符 */ private String deviceId; + /** 单体温度平均值 */ + private BigDecimal avgTemp; + + /** 单体温度最小值 */ + private BigDecimal minTemp; + + /** 单体温度最小值ID */ + private String minTempID; + + /** 单体温度最大值 */ + private BigDecimal maxTemp; + + /** 单体温度最大值ID */ + private String maxTempID; + + /** 单体电压平均值 */ + private BigDecimal avgVoltage; + + /** 单体电压最小值 */ + private BigDecimal minVoltage; + + /** 单体电压最小值ID */ + private String minVoltageID; + + /** 单体电压最大值 */ + private BigDecimal maxVoltage; + + /** 单体电压最大值ID */ + private String maxVoltageID; + + /** 单体Soc平均值 */ + private BigDecimal avgSoc; + + /** 单体Soc最小值 */ + private BigDecimal minSoc; + + /** 单体Soc最小值ID */ + private String minSocID; + + /** 单体Soc最大值 */ + private BigDecimal maxSoc; + + /** 单体Soc最大值ID */ + private String maxSocID; + private List batteryDataList; public String getDeviceName() { @@ -194,4 +239,124 @@ public class BMSBatteryClusterVo { public void setBatteryDataList(List batteryDataList) { this.batteryDataList = batteryDataList; } + + public String getMaxSocID() { + return maxSocID; + } + + public void setMaxSocID(String maxSocID) { + this.maxSocID = maxSocID; + } + + public BigDecimal getMaxSoc() { + return maxSoc; + } + + public void setMaxSoc(BigDecimal maxSoc) { + this.maxSoc = maxSoc; + } + + public String getMinSocID() { + return minSocID; + } + + public void setMinSocID(String minSocID) { + this.minSocID = minSocID; + } + + public BigDecimal getMinSoc() { + return minSoc; + } + + public void setMinSoc(BigDecimal minSoc) { + this.minSoc = minSoc; + } + + public BigDecimal getAvgSoc() { + return avgSoc; + } + + public void setAvgSoc(BigDecimal avgSoc) { + this.avgSoc = avgSoc; + } + + public String getMaxVoltageID() { + return maxVoltageID; + } + + public void setMaxVoltageID(String maxVoltageID) { + this.maxVoltageID = maxVoltageID; + } + + public BigDecimal getMaxVoltage() { + return maxVoltage; + } + + public void setMaxVoltage(BigDecimal maxVoltage) { + this.maxVoltage = maxVoltage; + } + + public String getMinVoltageID() { + return minVoltageID; + } + + public void setMinVoltageID(String minVoltageID) { + this.minVoltageID = minVoltageID; + } + + public BigDecimal getMinVoltage() { + return minVoltage; + } + + public void setMinVoltage(BigDecimal minVoltage) { + this.minVoltage = minVoltage; + } + + public BigDecimal getAvgVoltage() { + return avgVoltage; + } + + public void setAvgVoltage(BigDecimal avgVoltage) { + this.avgVoltage = avgVoltage; + } + + public String getMaxTempID() { + return maxTempID; + } + + public void setMaxTempID(String maxTempID) { + this.maxTempID = maxTempID; + } + + public BigDecimal getMaxTemp() { + return maxTemp; + } + + public void setMaxTemp(BigDecimal maxTemp) { + this.maxTemp = maxTemp; + } + + public String getMinTempID() { + return minTempID; + } + + public void setMinTempID(String minTempID) { + this.minTempID = minTempID; + } + + public BigDecimal getMinTemp() { + return minTemp; + } + + public void setMinTemp(BigDecimal minTemp) { + this.minTemp = minTemp; + } + + public BigDecimal getAvgTemp() { + return avgTemp; + } + + public void setAvgTemp(BigDecimal avgTemp) { + this.avgTemp = avgTemp; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSBatteryDataList.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSBatteryDataList.java index 394c921..f1c6bbb 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSBatteryDataList.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSBatteryDataList.java @@ -9,7 +9,7 @@ public class BMSBatteryDataList { /** * 簇号 */ - private Long clusterId; + private String clusterId; /** 簇电压 (V) */ private BigDecimal clusterVoltage; @@ -38,11 +38,11 @@ public class BMSBatteryDataList { /** 堆id */ private String stackDeviceId; - public Long getClusterId() { + public String getClusterId() { return clusterId; } - public void setClusterId(Long clusterId) { + public void setClusterId(String clusterId) { this.clusterId = clusterId; } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorRunningHeadInfoVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorRunningHeadInfoVo.java index 50583fe..068f75f 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorRunningHeadInfoVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/SiteMonitorRunningHeadInfoVo.java @@ -37,6 +37,11 @@ public class SiteMonitorRunningHeadInfoVo { */ private BigDecimal dayDisChargedCap; + /** + * 站点id + */ + private String siteId; + public BigDecimal getTotalActivePower() { return totalActivePower; } @@ -84,4 +89,12 @@ public class SiteMonitorRunningHeadInfoVo { public void setDayDisChargedCap(BigDecimal dayDisChargedCap) { this.dayDisChargedCap = dayDisChargedCap; } + + public String getSiteId() { + return siteId; + } + + public void setSiteId(String siteId) { + this.siteId = siteId; + } } diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsBranchDataMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsBranchDataMapper.java index ade3ca4..9c4b526 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsBranchDataMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsBranchDataMapper.java @@ -3,7 +3,7 @@ package com.xzzn.ems.mapper; import java.util.List; import com.xzzn.ems.domain.EmsPcsBranchData; import com.xzzn.ems.domain.vo.PcsBranchInfo; -import io.lettuce.core.dynamic.annotation.Param; +import org.apache.ibatis.annotations.Param; /** * pcs支路数据Mapper接口 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 index a0f7a00..c49ea50 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsDataMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsPcsDataMapper.java @@ -9,6 +9,7 @@ import com.xzzn.ems.domain.vo.ElectricIndexList; import com.xzzn.ems.domain.vo.PcsDetailInfoVo; import com.xzzn.ems.domain.vo.SiteMonitorDataVo; import com.xzzn.ems.domain.vo.SiteMonitorRunningHeadInfoVo; +import org.apache.ibatis.annotations.Param; /** * PCS数据Mapper接口 @@ -71,14 +72,7 @@ public interface EmsPcsDataMapper * @param siteId * @return */ - public List getPcsDataBySiteId(String siteId); - - /** - * 根据站点获取电网实时功率=sum(总交流有功电率) - * @param siteId - * @return - */ - public BigDecimal getGridNrtPower(String siteId); + public List getPcsDataBySiteId(@Param("siteId")String siteId, @Param("limitTime")int limitTime); /** * 根据站点获取设备监控的实时运行头信息 @@ -104,5 +98,5 @@ public interface EmsPcsDataMapper * 获取总充+总放 * @return */ - public Map getPcsTotalChargeData(); + public Map getPcsTotalChargeData(String siteId); } 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 index 2c79290..cc11227 100644 --- 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 @@ -22,6 +22,7 @@ import java.util.*; @Service public class HomePageServiceImpl implements IHomePageService { + private static final int LIMIT_TIME = 6; @Autowired private IEmsSiteService emsSiteService; @@ -37,10 +38,11 @@ public class HomePageServiceImpl implements IHomePageService SiteTotalInfoVo siteTotalInfoVo = new SiteTotalInfoVo(); siteTotalInfoVo = emsSiteService.getSiteTotalInfo(); // 获取总充+总放 - Map pcsMap = new HashMap<>(); - pcsMap = emsPcsDataMapper.getPcsTotalChargeData(); - siteTotalInfoVo.setTotalChargedCap(pcsMap.get("totalChargedCap")); - siteTotalInfoVo.setTotalDischargedCap(pcsMap.get("totalDischargedCap")); + Map pcsMap = emsPcsDataMapper.getPcsTotalChargeData(null); + if(pcsMap != null){ + siteTotalInfoVo.setTotalChargedCap(pcsMap.get("totalChargedCap")); + siteTotalInfoVo.setTotalDischargedCap(pcsMap.get("totalDischargedCap")); + } return siteTotalInfoVo; } @@ -52,7 +54,7 @@ public class HomePageServiceImpl implements IHomePageService if (!StringUtils.isEmpty(siteId)) { // 站点基本信息 EmsSiteSetting emsSite = emsSiteMapper.selectEmsSiteSettingBySiteId(siteId); - if (StringUtils.isNotEmpty(siteId)) { + if (emsSite != null) { // 装机功率+装机容量 singleSiteBaseInfo.setSiteName(emsSite.getSiteName()); singleSiteBaseInfo.setInstalledCap(emsSite.getInstallCapacity()); @@ -64,8 +66,14 @@ public class HomePageServiceImpl implements IHomePageService singleSiteBaseInfo.setSiteAddress(emsSite.getSiteAddress()); singleSiteBaseInfo.setRunningTime(emsSite.getRunningTime() == null ? null : DateUtils.parseDateToStr("yyyy-MM-dd",emsSite.getRunningTime()));//投运时间 + // 获取单站点的总充+总放 + Map pcsMap = emsPcsDataMapper.getPcsTotalChargeData(siteId); + if (pcsMap != null) { + singleSiteBaseInfo.setTotalChargedCap(pcsMap.get("totalChargedCap")); + singleSiteBaseInfo.setTotalDisChargedCap(pcsMap.get("totalDischargedCap")); + } // 七天放电数据统计 - List siteMonitorDataVoList = emsPcsDataMapper.getPcsDataBySiteId(siteId); + List siteMonitorDataVoList = emsPcsDataMapper.getPcsDataBySiteId(siteId,LIMIT_TIME); singleSiteBaseInfo.setSevenDayDisChargeStats(siteMonitorDataVoList); // 充放电基本数据处理 dealSitePCSDate(singleSiteBaseInfo,siteMonitorDataVoList); @@ -77,27 +85,15 @@ public class HomePageServiceImpl implements IHomePageService private void dealSitePCSDate(SingleSiteBaseInfo singleSiteBaseInfo, List siteMonitorDataVoList) { if (siteMonitorDataVoList != null && !siteMonitorDataVoList.isEmpty()) { - BigDecimal dayChargeCap = new BigDecimal(0); - BigDecimal dayDisChargeCap = new BigDecimal(0); - BigDecimal totalChargeCap = new BigDecimal(0); - BigDecimal totalDisChargeCap = new BigDecimal(0); for (SiteMonitorDataVo sitePcsData : siteMonitorDataVoList) { - // 总充电量 - totalChargeCap = totalChargeCap.add(sitePcsData.getChargedCap()); - // 总放电量 - totalDisChargeCap = totalDisChargeCap.add(sitePcsData.getDisChargedCap()); // 获取当天的充电量+放电量 String pcsDate = sitePcsData.getAmmeterDate(); boolean isToday= checkIsToday(pcsDate); if(isToday){ - dayChargeCap = dayChargeCap.add(sitePcsData.getChargedCap()); - dayDisChargeCap = dayDisChargeCap.add(sitePcsData.getDisChargedCap()); + singleSiteBaseInfo.setDayChargedCap(sitePcsData.getChargedCap()); + singleSiteBaseInfo.setDayDisChargedCap(sitePcsData.getDisChargedCap()); } } - singleSiteBaseInfo.setDayChargedCap(dayChargeCap); - singleSiteBaseInfo.setDayDisChargedCap(dayDisChargeCap); - singleSiteBaseInfo.setTotalChargedCap(totalChargeCap); - singleSiteBaseInfo.setTotalDisChargedCap(totalDisChargeCap); } } 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 6bdc653..51aefae 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 @@ -50,40 +50,33 @@ public class SingleSiteServiceImpl implements ISingleSiteService { SiteMonitorHomeVo siteMonitorHomeVo = new SiteMonitorHomeVo(); if (!StringUtils.isEmpty(siteId)) { + // 获取单站点的总充+总放+电网实时功率 + Map pcsMap = emsPcsDataMapper.getPcsTotalChargeData(siteId); + if (pcsMap != null) { + siteMonitorHomeVo.setTotalChargedCap(pcsMap.get("totalChargedCap")); + siteMonitorHomeVo.setTotalDischargedCap(pcsMap.get("totalDischargedCap")); + siteMonitorHomeVo.setGridNrtPower(pcsMap.get("gridNrtPower")); + } // 实时告警数据 名称+状态+告警内容 List siteMonitorHomeAlarmVo = emsAlarmRecordsMapper.getAlarmRecordsBySiteId(siteId); siteMonitorHomeVo.setSiteMonitorHomeAlarmVo(siteMonitorHomeAlarmVo); // 能量数据 - List siteMonitorDataVoList = emsPcsDataMapper.getPcsDataBySiteId(siteId); + List siteMonitorDataVoList = emsPcsDataMapper.getPcsDataBySiteId(siteId,6); if (!CollectionUtils.isEmpty(siteMonitorDataVoList)) { - BigDecimal dayChargeCap = new BigDecimal(0); - BigDecimal dayDisChargeCap = new BigDecimal(0); - BigDecimal totalChargeCap = new BigDecimal(0); - BigDecimal totalDisChargeCap = new BigDecimal(0); for (SiteMonitorDataVo sitePcsData : siteMonitorDataVoList) { - // 总充电量 - totalChargeCap = totalChargeCap.add(sitePcsData.getChargedCap()); - // 总放电量 - totalDisChargeCap = totalDisChargeCap.add(sitePcsData.getDisChargedCap()); // 获取当天的充电量+放电量 String pcsDate = sitePcsData.getAmmeterDate(); boolean isToday= checkIsToday(pcsDate); if(isToday){ - dayChargeCap = dayChargeCap.add(sitePcsData.getChargedCap()); - dayDisChargeCap = dayDisChargeCap.add(sitePcsData.getDisChargedCap()); + siteMonitorHomeVo.setDayChargedCap(sitePcsData.getChargedCap()); + siteMonitorHomeVo.setDayDisChargedCap(sitePcsData.getDisChargedCap()); } } - siteMonitorHomeVo.setDayChargedCap(dayChargeCap); - siteMonitorHomeVo.setDayDisChargedCap(dayDisChargeCap); - 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; @@ -172,8 +165,7 @@ public class SingleSiteServiceImpl implements ISingleSiteService { // 获取单体电池数据 String stackDeviceId = bmsOverViewVo.getDeviceId(); if (!StringUtils.isEmpty(stackDeviceId)) { - List batteryDataList = new ArrayList<>(); - batteryDataList = emsBatteryClusterMapper.getBmsBatteryData(siteId,stackDeviceId); + List batteryDataList = emsBatteryClusterMapper.getBmsBatteryData(siteId,stackDeviceId); bmsOverViewVo.setBatteryDataList(batteryDataList); } } @@ -196,53 +188,34 @@ public class SingleSiteServiceImpl implements ISingleSiteService { List clusterDataList = new ArrayList<>(); if (!StringUtils.isEmpty(clusterDeviceId)) { // 获取单体电池数据-平均/最大/最小 - BatteryClusterDataDetailVo batteryClusterDataDetailVo = emsBatteryDataMapper.getBatteryDataByClusterId(siteId,clusterDeviceId); + //BatteryClusterDataDetailVo batteryClusterDataDetailVo = emsBatteryDataMapper.getBatteryDataByClusterId(siteId,clusterDeviceId); // 处理数据 - if (batteryClusterDataDetailVo != null) { - BMSBatteryClusterDataList voltageData = new BMSBatteryClusterDataList(); - BMSBatteryClusterDataList tempData = new BMSBatteryClusterDataList(); - BMSBatteryClusterDataList socData = new BMSBatteryClusterDataList(); - // 设值 - voltageData.setDataName(CLUSTER_DATA_VOLTAGE); - voltageData.setAvgData(batteryClusterDataDetailVo.getAvgVoltage()); - voltageData.setMaxData(batteryClusterDataDetailVo.getMaxVoltage()); - voltageData.setMinData(batteryClusterDataDetailVo.getMinVoltage()); - tempData.setDataName(CLUSTER_DATA_TEP); - tempData.setAvgData(batteryClusterDataDetailVo.getAvgTemp()); - tempData.setMaxData(batteryClusterDataDetailVo.getMaxTemp()); - tempData.setMinData(batteryClusterDataDetailVo.getMinTemp()); - socData.setDataName(CLUSTER_DATA_SOC); - socData.setAvgData(batteryClusterDataDetailVo.getAvgSoc()); - socData.setMaxData(batteryClusterDataDetailVo.getMaxSoc()); - socData.setMinData(batteryClusterDataDetailVo.getMinSoc()); + BMSBatteryClusterDataList voltageData = new BMSBatteryClusterDataList(); + BMSBatteryClusterDataList tempData = new BMSBatteryClusterDataList(); + BMSBatteryClusterDataList socData = new BMSBatteryClusterDataList(); + // 设值 + voltageData.setDataName(CLUSTER_DATA_VOLTAGE); + voltageData.setAvgData(bmsBatteryClusterVo.getAvgVoltage()); + voltageData.setMaxData(bmsBatteryClusterVo.getMaxVoltage()); + voltageData.setMaxDataID(bmsBatteryClusterVo.getMaxVoltageID()); + voltageData.setMinData(bmsBatteryClusterVo.getMinVoltage()); + voltageData.setMinDataID(bmsBatteryClusterVo.getMinVoltageID()); + tempData.setDataName(CLUSTER_DATA_TEP); + tempData.setAvgData(bmsBatteryClusterVo.getAvgTemp()); + tempData.setMaxData(bmsBatteryClusterVo.getMaxTemp()); + tempData.setMaxDataID(bmsBatteryClusterVo.getMaxTempID()); + tempData.setMinData(bmsBatteryClusterVo.getMinTemp()); + tempData.setMinDataID(bmsBatteryClusterVo.getMinTempID()); + socData.setDataName(CLUSTER_DATA_SOC); + socData.setAvgData(bmsBatteryClusterVo.getAvgSoc()); + socData.setMaxData(bmsBatteryClusterVo.getMaxSoc()); + socData.setMaxDataID(bmsBatteryClusterVo.getMaxSocID()); + socData.setMinData(bmsBatteryClusterVo.getMinSoc()); + socData.setMinDataID(bmsBatteryClusterVo.getMinSocID()); - // 设置对应单体id - List> dataIdMapList = emsBatteryDataMapper.getDataIdsMap(batteryClusterDataDetailVo); - Map resultIdMap = new HashMap<>(); - if (!CollectionUtils.isEmpty(dataIdMapList)) { - resultIdMap = dataIdMapList.stream() - .filter(map -> map.containsKey("type") && map.containsKey("device_id")) // 过滤无效数据 - .filter(map -> map.get("type") instanceof String && map.get("device_id") instanceof Number) // 确保类型正确 - .collect(Collectors.toMap( - map -> (String) map.get("type"), // 键:type 字段 - map -> (String) map.get("device_id"), // 值:device_id 转为 int - (existing, replacement) -> existing // 处理键冲突的策略 - )); - - // 电压 - voltageData.setMaxDataID(resultIdMap.get("maxVoltageId")); - voltageData.setMaxDataID(resultIdMap.get("maxVoltageId")); - // 温度 - tempData.setMaxDataID(resultIdMap.get("maxTempId")); - tempData.setMinDataID(resultIdMap.get("minTempId")); - // soc - socData.setMaxDataID(resultIdMap.get("maxSocId")); - socData.setMinDataID(resultIdMap.get("minSocId")); - } - clusterDataList.add(voltageData); - clusterDataList.add(tempData); - clusterDataList.add(socData); - } + clusterDataList.add(voltageData); + clusterDataList.add(tempData); + clusterDataList.add(socData); bmsBatteryClusterVo.setBatteryDataList(clusterDataList); } } diff --git a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml index 63edc13..1d57f80 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml @@ -115,7 +115,7 @@ \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml index 31349cb..1c4844f 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml @@ -311,27 +311,45 @@ \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryDataMapper.xml index 08a0921..dc0b436 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryDataMapper.xml @@ -126,8 +126,8 @@ - select td.device_name as deviceName,tmp.work_status as workStatus, - tmp.pcs_communication_status as pcsCommunicationStatus,tmp.ems_communication_status as emsCommunicationStatus, - tmp.total_voltage as totalVoltage,tmp.chargeable_capacity as chargeableCapacity,tmp.total_charged_capacity as totalChargedCapacity, - tmp.total_current as totalCurrent,tmp.dischargeable_capacity as dischargeableCapacity,tmp.total_discharged_capacity as totalDischargedCapacity, - tmp.soh as soh,tmp.average_temperature as averageTemperature,tmp.insulation_resistance as insulationResistance, - tmp.current_soc as currentSoc,tmp.site_id as siteId,tmp.device_id as deviceId - from ems_battery_stack tmp left join ems_devices_setting td on tmp.device_id = td.device_id and tmp.site_id = td.site_id - where tmp.site_id = #{siteId} - and tmp.update_time = (select MAX(t.update_time) FROM ems_battery_stack t where t.site_id = tmp.site_id - and t.device_id = tmp.device_id) + SELECT td.device_name as deviceName,tmp.work_status as workStatus, + tmp.pcs_communication_status as pcsCommunicationStatus,tmp.ems_communication_status as emsCommunicationStatus, + tmp.total_voltage as totalVoltage,tmp.chargeable_capacity as chargeableCapacity, + tmp.total_charged_capacity as totalChargedCapacity, + tmp.total_current as totalCurrent,tmp.dischargeable_capacity as dischargeableCapacity, + tmp.total_discharged_capacity as totalDischargedCapacity, + tmp.soh as soh,tmp.average_temperature as averageTemperature,tmp.insulation_resistance as insulationResistance, + tmp.current_soc as currentSoc,tmp.site_id as siteId,tmp.device_id as deviceId + FROM ems_battery_stack tmp + left join ems_devices_setting td on tmp.device_id = td.device_id and tmp.site_id = td.site_id + INNER JOIN ( + SELECT p.site_id, p.device_id, MAX(p.update_time) AS max_update_time + FROM ems_battery_stack p + WHERE p.site_id = #{siteId} + GROUP BY p.site_id,p.device_id + ) latest on tmp.device_id = latest.device_id and tmp.update_time = latest.max_update_time + WHERE tmp.site_id = #{siteId} order by tmp.device_id \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsPcsBranchDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsPcsBranchDataMapper.xml index f9ec33c..7060ed3 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsPcsBranchDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsPcsBranchDataMapper.xml @@ -214,7 +214,7 @@ WHERE t.site_id = #{siteId} AND t.device_id = #{deviceId} ) tmp WHERE rn = 1 - ORDER BY tmp.branch_id; + ORDER BY tmp.branch_id diff --git a/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml index c3055cc..689968b 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsPcsDataMapper.xml @@ -279,45 +279,57 @@ - - - + select CONCAT(t.date_month,'/',t.date_day) as ammeterDate, + sum(t.daily_ac_charge_energy) as chargedCap, + sum(t.daily_ac_discharge_energy) as disChargedCap + from ( + SELECT p.site_id, p.device_id,p.date_month,p.date_day, MAX(p.data_update_time) AS max_update_time + FROM ems_pcs_data p + where p.site_id = #{siteId} and p.create_time >= CURDATE() - INTERVAL #{limitTime} DAY + GROUP BY p.site_id,p.device_id,p.date_month,p.date_day + ) latest inner join ems_pcs_data t ON latest.site_id = t.site_id + AND latest.device_id = t.device_id + AND latest.max_update_time = t.data_update_time + and latest.date_month = t.date_month + and latest.date_day = t.date_day + group by ammeterDate + order by ammeterDate desc; \ No newline at end of file From 337599d1c6086009d4d36d53a5e321c2491b0cc7 Mon Sep 17 00:00:00 2001 From: dashixiong Date: Mon, 30 Jun 2025 13:39:51 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/ems/EmsTicketMapper.xml | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 ems-system/src/main/resources/mapper/ems/EmsTicketMapper.xml diff --git a/ems-system/src/main/resources/mapper/ems/EmsTicketMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsTicketMapper.xml new file mode 100644 index 0000000..11e9061 --- /dev/null +++ b/ems-system/src/main/resources/mapper/ems/EmsTicketMapper.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + select id, ticket_no, user_id, title, content, images, status, create_time, complete_time, create_by, update_by, update_time, work_user_id from ems_ticket + + + + + + + + insert into ems_ticket + + ticket_no, + user_id, + title, + content, + images, + status, + create_time, + complete_time, + create_by, + update_by, + update_time, + work_user_id, + + + #{ticketNo}, + #{userId}, + #{title}, + #{content}, + #{images}, + #{status}, + #{createTime}, + #{completeTime}, + #{createBy}, + #{updateBy}, + #{updateTime}, + #{workUserId}, + + + + + update ems_ticket + + ticket_no = #{ticketNo}, + user_id = #{userId}, + title = #{title}, + content = #{content}, + images = #{images}, + status = #{status}, + create_time = #{createTime}, + complete_time = #{completeTime}, + create_by = #{createBy}, + update_by = #{updateBy}, + update_time = #{updateTime}, + work_user_id = #{workUserId}, + + where id = #{id} + + + + delete from ems_ticket where id = #{id} + + + + delete from ems_ticket where id in + + #{id} + + + \ No newline at end of file From fbab6ea63165a14b2b7e9e2ae00d6a5c9a8552e9 Mon Sep 17 00:00:00 2001 From: mashili Date: Mon, 30 Jun 2025 18:14:24 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E7=94=B5=E8=A1=A8=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ems/domain/vo/AmmeterDataDetailInfo.java | 2 +- .../com/xzzn/ems/domain/vo/AmmeterDataVo.java | 11 +++++++ .../xzzn/ems/mapper/EmsAmmeterDataMapper.java | 3 +- .../ems/mapper/EmsDevicesSettingMapper.java | 7 ++--- .../service/impl/SingleSiteServiceImpl.java | 29 ++++++++++++------- .../mapper/ems/EmsAmmeterDataMapper.xml | 8 ++--- .../mapper/ems/EmsDevicesSettingMapper.xml | 10 ++++--- 7 files changed, 45 insertions(+), 25 deletions(-) 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 index 6dfdff3..797ef63 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataDetailInfo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/AmmeterDataDetailInfo.java @@ -4,7 +4,7 @@ import java.math.BigDecimal; import java.util.Date; /** - * 总表详细数据 + * 电表详细数据 */ public class AmmeterDataDetailInfo { 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 5993239..119f4ab 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 @@ -10,6 +10,9 @@ import java.util.List; */ public class AmmeterDataVo { + /** 电表名称 */ + private String deviceName; + /** 通信状态 */ private String emsCommunicationStatus; @@ -19,6 +22,14 @@ public class AmmeterDataVo { private List ammeterDataDetailInfos; + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + public String getEmsCommunicationStatus() { return emsCommunicationStatus; } diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAmmeterDataMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAmmeterDataMapper.java index 7c1d4e6..b96b482 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAmmeterDataMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsAmmeterDataMapper.java @@ -3,6 +3,7 @@ package com.xzzn.ems.mapper; import java.util.List; import com.xzzn.ems.domain.EmsAmmeterData; import com.xzzn.ems.domain.vo.AmmeterDataDetailInfo; +import org.apache.ibatis.annotations.Param; /** * 总数据Mapper接口 @@ -65,5 +66,5 @@ public interface EmsAmmeterDataMapper * @param siteId * @return */ - public List getAmmeterDetailInfo(String siteId); + public List getAmmeterDetailInfo(@Param("siteId")String siteId,@Param("deviceId") String deviceId); } 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 a565438..d9f8a91 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,11 +74,10 @@ public interface EmsDevicesSettingMapper * @return */ public List> getAllClusterInfoByStackId(String stackDeviceId); - /** - * 获取设备通信状态 - * @param deviceId + * 获取该设备下的所有电表 + * @param siteId * @return */ - public Map getDeviceStatus(String deviceId); + public List getAllBatteryDeviceBySiteId(String siteId); } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/SingleSiteServiceImpl.java index 51aefae..9bcd459 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 @@ -3,6 +3,7 @@ package com.xzzn.ems.service.impl; import com.xzzn.common.utils.StringUtils; import com.xzzn.ems.domain.EmsBatteryData; import com.xzzn.ems.domain.EmsCoolingData; +import com.xzzn.ems.domain.EmsDevicesSetting; import com.xzzn.ems.domain.vo.*; import com.xzzn.ems.mapper.*; import com.xzzn.ems.service.ISingleSiteService; @@ -255,20 +256,26 @@ public class SingleSiteServiceImpl implements ISingleSiteService { @Override public List getAmmeterDataList(String siteId) { List ammeterDataVos = new ArrayList<>(); - AmmeterDataVo ammeterDataVo = new AmmeterDataVo(); + if (!StringUtils.isEmpty(siteId)) { - List ammeterDataDetailInfos = emsAmmeterDataMapper.getAmmeterDetailInfo(siteId); - ammeterDataVo.setAmmeterDataDetailInfos(ammeterDataDetailInfos); - if (!CollectionUtils.isEmpty(ammeterDataDetailInfos)) { - // 获取通信状态 - String deviceId = ammeterDataDetailInfos.get(0).getDeviceId(); - Map map = emsDevicesSettingMapper.getDeviceStatus(deviceId); - ammeterDataVo.setEmsCommunicationStatus(map.get("communication_status").toString()); - // 数据更新时间 - ammeterDataVo.setDataUpdateTime(ammeterDataDetailInfos.get(0).getUpdateTime()); + // 先获取所有电表设备 + List devicesList = emsDevicesSettingMapper.getAllBatteryDeviceBySiteId(siteId); + if (!CollectionUtils.isEmpty(devicesList)) { + for (EmsDevicesSetting devicesSetting : devicesList) { + AmmeterDataVo ammeterDataVo = new AmmeterDataVo(); + ammeterDataVo.setDeviceName(devicesSetting.getDeviceName()); + ammeterDataVo.setEmsCommunicationStatus(devicesSetting.getCommunicationStatus()); + String deviceId = devicesSetting.getDeviceId(); + // 获取类别数据 + List ammeterDataDetailInfos = emsAmmeterDataMapper.getAmmeterDetailInfo(siteId,deviceId); + ammeterDataVo.setAmmeterDataDetailInfos(ammeterDataDetailInfos); + // 数据更新时间 + ammeterDataVo.setDataUpdateTime(ammeterDataDetailInfos.get(0).getUpdateTime()); + + ammeterDataVos.add(ammeterDataVo); + } } } - 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 index 1d57f80..81f17fc 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml @@ -114,23 +114,23 @@ - SELECT t.category as category, t.total_kwh as totalKwh, t.sharp_kwh as sharpKwh, t.flat_kwh as flatKwh, t.peak_kwh as peakKwh, - t.valley_kwh as valleyKwh, t.device_id as deviceId, + t.valley_kwh as valleyKwh, Max(t.data_update_time) as updateTime FROM ems_ammeter_data t INNER JOIN ( SELECT p.site_id, p.device_id,p.category,MAX(p.data_update_time) AS max_update_time FROM ems_ammeter_data p - WHERE p.site_id = #{siteId} + WHERE p.site_id = #{siteId} and p.device_id = #{deviceId} GROUP BY p.site_id,p.device_id,p.category ) latest on t.device_id = latest.device_id and t.data_update_time = latest.max_update_time - WHERE t.site_id = #{siteId} + WHERE t.site_id = #{siteId} and t.device_id = #{deviceId} group by t.category,t.total_kwh,t.sharp_kwh,t.flat_kwh,t.peak_kwh,t.valley_kwh,t.device_id order by updateTime desc diff --git a/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml index 0df74f0..a74b748 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsDevicesSettingMapper.xml @@ -151,9 +151,11 @@ where device_id in (select distinct eb.device_id from ems_battery_cluster eb where eb.stack_device_id = #{stackDeviceId}) - + select distinct e.device_id as deviceId, + t.device_name as deviceName, + t.communication_status as communicationStatus + from ems_devices_setting t INNER JOIN ems_ammeter_data e on t.site_id = e.site_id and t.device_id = e.device_id + where t.site_id = #{siteId} \ No newline at end of file