diff --git a/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteConfigController.java b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteConfigController.java new file mode 100644 index 0000000..5b5e480 --- /dev/null +++ b/ems-admin/src/main/java/com/xzzn/web/controller/ems/EmsSiteConfigController.java @@ -0,0 +1,38 @@ +package com.xzzn.web.controller.ems; + +import com.xzzn.common.core.controller.BaseController; +import com.xzzn.common.core.page.TableDataInfo; +import com.xzzn.ems.domain.EmsSiteSetting; +import com.xzzn.ems.service.IEmsSiteService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * + * 站点配置 + * + */ +@RestController +@RequestMapping("/ems/siteConfig") +public class EmsSiteConfigController extends BaseController{ + + @Autowired + private IEmsSiteService iEmsSiteService; + + /** + * 获取站点列表 + */ + @GetMapping("/getSiteInfoList") + public TableDataInfo getSiteInfoList(@RequestParam String siteName, @RequestParam String startTime, @RequestParam String endTime) + { + startPage(); + List list = iEmsSiteService.getAllSiteInfoList(siteName,startTime,endTime); + return getDataTable(list); + } + +} 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 327d5bb..23b224b 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 @@ -114,7 +114,7 @@ public class EmsSiteMonitorController extends BaseController{ { startPage(); List list = iSingleSiteService.getClusterDataInfoList(clusterDeviceId,siteId); - return getDataTable(list); + return getDataTable2(list); } /** diff --git a/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java b/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java new file mode 100644 index 0000000..79cd77f --- /dev/null +++ b/ems-common/src/main/java/com/xzzn/common/constant/RedisKeyConstants.java @@ -0,0 +1,34 @@ +package com.xzzn.common.constant; + +/** + * 数据存储 Redis key 常量 + * + * @author xzzn + */ +public class RedisKeyConstants +{ + /** + * pcs数据 redis key + */ + public static final String PCS = "PCS_"; + + /** + * pcs branch数据 redis key + */ + public static final String BRANCH = "BRANCH_"; + + /** + * stack电池堆数据 redis key + */ + public static final String STACK = "STACK_"; + + /** + * cluster电池簇数据 redis key + */ + public static final String CLUSTER = "CLUSTER_"; + + /** + * battery单体电池数据 redis key + */ + public static final String BATTERY = "BATTERY_"; +} diff --git a/ems-common/src/main/java/com/xzzn/common/core/controller/BaseController.java b/ems-common/src/main/java/com/xzzn/common/core/controller/BaseController.java index c3f46a6..2eb7f8f 100644 --- a/ems-common/src/main/java/com/xzzn/common/core/controller/BaseController.java +++ b/ems-common/src/main/java/com/xzzn/common/core/controller/BaseController.java @@ -1,6 +1,8 @@ package com.xzzn.common.core.controller; import java.beans.PropertyEditorSupport; +import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.List; import org.slf4j.Logger; @@ -199,4 +201,35 @@ public class BaseController { return getLoginUser().getUsername(); } + + /** + * 手动处理分页 + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + protected TableDataInfo getDataTable2(List list) + { + List subList = new ArrayList<>(); + // 分页梳理 + PageDomain pageDomain = TableSupport.buildPageRequest(); + int pageNum = pageDomain.getPageNum(); + int pageSize = pageDomain.getPageSize(); + if (pageNum > 0 && pageSize > 0) { + // 计算分页起始和结束索引 + int startIndex = (pageNum - 1) * pageSize; + int endIndex = Math.min(startIndex + pageSize, list.size()); + // 防止越界 + if (startIndex >= list.size()) { + subList = Collections.emptyList(); + } + // 截取当前页数据 + subList = list.subList(startIndex, endIndex); + } + + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setMsg("查询成功"); + rspData.setRows(subList); + rspData.setTotal(list.size()); + return rspData; + } } diff --git a/ems-common/src/main/java/com/xzzn/common/core/redis/RedisCache.java b/ems-common/src/main/java/com/xzzn/common/core/redis/RedisCache.java index 3a55f42..eb9dfdf 100644 --- a/ems-common/src/main/java/com/xzzn/common/core/redis/RedisCache.java +++ b/ems-common/src/main/java/com/xzzn/common/core/redis/RedisCache.java @@ -265,4 +265,15 @@ public class RedisCache { return redisTemplate.keys(pattern); } + + /** + * 删除list + * + * @param key Redis键 + * @return 对象列表 + */ + public boolean deleteList(final String key) + { + return redisTemplate.delete(key); + } } diff --git a/ems-common/src/main/java/com/xzzn/common/enums/DeviceCategory.java b/ems-common/src/main/java/com/xzzn/common/enums/DeviceCategory.java new file mode 100644 index 0000000..aefa25a --- /dev/null +++ b/ems-common/src/main/java/com/xzzn/common/enums/DeviceCategory.java @@ -0,0 +1,35 @@ +package com.xzzn.common.enums; + +/** + * device-设备类别 + * + * @author xzzn + */ +public enum DeviceCategory +{ + PCS("PCS", "PCS设备"), + BRANCH("BRANCH", "PCS分支设备"), + STACK("STACK", "电池堆"), + CLUSTER("CLUSTER", "电池簇"), + BATTERY("BATTERY", "单体电池"), + AMMETER("AMMETER", "电表"); + + private final String code; + private final String info; + + DeviceCategory(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } +} diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/EmsDevicesSetting.java b/ems-system/src/main/java/com/xzzn/ems/domain/EmsDevicesSetting.java index 6522bed..0f174ca 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/EmsDevicesSetting.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/EmsDevicesSetting.java @@ -11,7 +11,7 @@ import com.xzzn.common.annotation.Excel; * Modbus设备配置对象 ems_devices_setting * * @author xzzn - * @date 2025-07-01 + * @date 2025-07-02 */ public class EmsDevicesSetting extends BaseEntity { @@ -98,6 +98,10 @@ public class EmsDevicesSetting extends BaseEntity @Excel(name = "上级设备id") private String parentId; + /** 设备类别,例如“STACK/CLUSTER/PCS等” */ + @Excel(name = "设备类别,例如“STACK/CLUSTER/PCS等”") + private String deviceCategory; + public void setId(Long id) { this.id = id; @@ -298,6 +302,16 @@ public class EmsDevicesSetting extends BaseEntity return parentId; } + public void setDeviceCategory(String deviceCategory) + { + this.deviceCategory = deviceCategory; + } + + public String getDeviceCategory() + { + return deviceCategory; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -321,6 +335,7 @@ public class EmsDevicesSetting extends BaseEntity .append("communicationStatus", getCommunicationStatus()) .append("deviceId", getDeviceId()) .append("parentId", getParentId()) + .append("deviceCategory", getDeviceCategory()) .toString(); } } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/EmsSiteSetting.java b/ems-system/src/main/java/com/xzzn/ems/domain/EmsSiteSetting.java index d70f537..9ef28ee 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/EmsSiteSetting.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/EmsSiteSetting.java @@ -30,8 +30,8 @@ public class EmsSiteSetting extends BaseEntity private String siteAddress; /** 运营时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "运营时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "运营时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date runningTime; /** 纬度 */ 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 0b84a35..8de0dda 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,51 +57,6 @@ 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() { @@ -239,124 +194,4 @@ 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/BMSOverViewVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSOverViewVo.java index d209cd7..3aac017 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSOverViewVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BMSOverViewVo.java @@ -22,34 +22,34 @@ public class BMSOverViewVo { private String emsCommunicationStatus; /** 电池堆总电压 (V) */ - private BigDecimal totalVoltage; + private BigDecimal stackVoltage; /** 可充电量 (kWh) */ - private BigDecimal chargeableCapacity; + private BigDecimal availableChargeCapacity; /** 累计充电量 (kWh) */ - private BigDecimal totalChargedCapacity; + private BigDecimal totalChargeCapacity; /** 电池堆总电流 (A) */ - private BigDecimal totalCurrent; + private BigDecimal stackCurrent; /** 可放电量 (kWh) */ - private BigDecimal dischargeableCapacity; + private BigDecimal availableDischargeCapacity; /** 累计放电量 (kWh) */ - private BigDecimal totalDischargedCapacity; + private BigDecimal totalDischargeCapacity; /** SOH (%) */ - private BigDecimal soh; + private BigDecimal stackSoh; /** 平均温度 (℃) */ - private BigDecimal averageTemperature; + private BigDecimal operatingTemp; /** 绝缘电阻 (Ω) */ - private BigDecimal insulationResistance; + private BigDecimal stackInsulationResistance; /** 当前SOC (%) */ - private BigDecimal currentSoc; + private BigDecimal stackSoc; /** 站点id */ private String siteId; @@ -91,92 +91,84 @@ public class BMSOverViewVo { this.emsCommunicationStatus = emsCommunicationStatus; } - public BigDecimal getTotalVoltage() { - return totalVoltage; + public BigDecimal getStackVoltage() { + return stackVoltage; } - public void setTotalVoltage(BigDecimal totalVoltage) { - this.totalVoltage = totalVoltage; + public void setStackVoltage(BigDecimal stackVoltage) { + this.stackVoltage = stackVoltage; } - public BigDecimal getChargeableCapacity() { - return chargeableCapacity; + public BigDecimal getAvailableChargeCapacity() { + return availableChargeCapacity; } - public void setChargeableCapacity(BigDecimal chargeableCapacity) { - this.chargeableCapacity = chargeableCapacity; + public void setAvailableChargeCapacity(BigDecimal availableChargeCapacity) { + this.availableChargeCapacity = availableChargeCapacity; } - public BigDecimal getTotalChargedCapacity() { - return totalChargedCapacity; + public BigDecimal getTotalChargeCapacity() { + return totalChargeCapacity; } - public void setTotalChargedCapacity(BigDecimal totalChargedCapacity) { - this.totalChargedCapacity = totalChargedCapacity; + public void setTotalChargeCapacity(BigDecimal totalChargeCapacity) { + this.totalChargeCapacity = totalChargeCapacity; } - public BigDecimal getTotalCurrent() { - return totalCurrent; + public BigDecimal getStackCurrent() { + return stackCurrent; } - public void setTotalCurrent(BigDecimal totalCurrent) { - this.totalCurrent = totalCurrent; + public void setStackCurrent(BigDecimal stackCurrent) { + this.stackCurrent = stackCurrent; } - public BigDecimal getDischargeableCapacity() { - return dischargeableCapacity; + public BigDecimal getAvailableDischargeCapacity() { + return availableDischargeCapacity; } - public void setDischargeableCapacity(BigDecimal dischargeableCapacity) { - this.dischargeableCapacity = dischargeableCapacity; + public void setAvailableDischargeCapacity(BigDecimal availableDischargeCapacity) { + this.availableDischargeCapacity = availableDischargeCapacity; } - public BigDecimal getTotalDischargedCapacity() { - return totalDischargedCapacity; + public BigDecimal getTotalDischargeCapacity() { + return totalDischargeCapacity; } - public void setTotalDischargedCapacity(BigDecimal totalDischargedCapacity) { - this.totalDischargedCapacity = totalDischargedCapacity; + public void setTotalDischargeCapacity(BigDecimal totalDischargeCapacity) { + this.totalDischargeCapacity = totalDischargeCapacity; } - public BigDecimal getSoh() { - return soh; + public BigDecimal getStackSoh() { + return stackSoh; } - public void setSoh(BigDecimal soh) { - this.soh = soh; + public void setStackSoh(BigDecimal stackSoh) { + this.stackSoh = stackSoh; } - public BigDecimal getAverageTemperature() { - return averageTemperature; + public BigDecimal getOperatingTemp() { + return operatingTemp; } - public void setAverageTemperature(BigDecimal averageTemperature) { - this.averageTemperature = averageTemperature; + public void setOperatingTemp(BigDecimal operatingTemp) { + this.operatingTemp = operatingTemp; } - public BigDecimal getInsulationResistance() { - return insulationResistance; + public BigDecimal getStackInsulationResistance() { + return stackInsulationResistance; } - public void setInsulationResistance(BigDecimal insulationResistance) { - this.insulationResistance = insulationResistance; + public void setStackInsulationResistance(BigDecimal stackInsulationResistance) { + this.stackInsulationResistance = stackInsulationResistance; } - public BigDecimal getCurrentSoc() { - return currentSoc; + public BigDecimal getStackSoc() { + return stackSoc; } - public void setCurrentSoc(BigDecimal currentSoc) { - this.currentSoc = currentSoc; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; + public void setStackSoc(BigDecimal stackSoc) { + this.stackSoc = stackSoc; } public String getSiteId() { @@ -187,6 +179,14 @@ public class BMSOverViewVo { this.siteId = siteId; } + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + public List getBatteryDataList() { return batteryDataList; } diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryDataStatsListVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryDataStatsListVo.java index ef0db2d..95cacf5 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryDataStatsListVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/BatteryDataStatsListVo.java @@ -1,5 +1,6 @@ package com.xzzn.ems.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import java.math.BigDecimal; import java.util.Date; @@ -23,8 +24,9 @@ public class BatteryDataStatsListVo { /** SOH (%) */ private BigDecimal soh; - - private Date updateTime; + + @JsonFormat(pattern = "yyyy-MM-dd") + private Date dataTimestamp; /** 簇号 */ private String clusterDeviceId; @@ -69,12 +71,12 @@ public class BatteryDataStatsListVo { this.soh = soh; } - public Date getUpdateTime() { - return updateTime; + public Date getDataTimestamp() { + return dataTimestamp; } - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; + public void setDataTimestamp(Date dataTimestamp) { + this.dataTimestamp = dataTimestamp; } public String getClusterDeviceId() { diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsBatteryClusterMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsBatteryClusterMapper.java index 8502f5e..aa6017e 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsBatteryClusterMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsBatteryClusterMapper.java @@ -2,7 +2,6 @@ package com.xzzn.ems.mapper; import java.util.List; import com.xzzn.ems.domain.EmsBatteryCluster; -import com.xzzn.ems.domain.vo.BMSBatteryClusterVo; import com.xzzn.ems.domain.vo.BMSBatteryDataList; import org.apache.ibatis.annotations.Param; @@ -62,13 +61,6 @@ public interface EmsBatteryClusterMapper */ public int deleteEmsBatteryClusterByIds(Long[] ids); - /** - * 根据site_id获取电池簇数据 - * @param siteId - * @return - */ - public List getBMSBatteryCluster(String siteId); - /** * 根据site_di和堆id获取簇数据和单体数据 * @param 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 d9f8a91..4d9ee15 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 @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; import com.xzzn.ems.domain.EmsDevicesSetting; +import org.apache.ibatis.annotations.Param; /** * Modbus设备配置Mapper接口 @@ -60,24 +61,25 @@ public interface EmsDevicesSettingMapper * @return 结果 */ public int deleteEmsDevicesSettingByIds(Long[] ids); - /** - * 根据site_id获取所有电池堆 - * @param siteId + * 根据父类设备id获取子设备id + * @param parentId * @return */ - public List> getAllStackInfoBySiteId(String siteId); - - /** - * 根据电池堆id获取所有电池簇 - * @param stackDeviceId - * @return - */ - public List> getAllClusterInfoByStackId(String stackDeviceId); + public List> getDeviceInfoByParentId(String parentId); /** * 获取该设备下的所有电表 * @param siteId * @return */ public List getAllBatteryDeviceBySiteId(String siteId); + + + /** + * 根据site_id和device_category获取指定设备信息 + * @param siteId + * @param deviceCategory + * @return + */ + public List> getDeviceInfosBySiteIdAndCategory(@Param("siteId")String siteId, @Param("deviceCategory")String deviceCategory); } diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsSiteSettingMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsSiteSettingMapper.java index 152726c..09bc548 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsSiteSettingMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsSiteSettingMapper.java @@ -3,6 +3,7 @@ package com.xzzn.ems.mapper; import java.util.List; import com.xzzn.ems.domain.EmsSiteSetting; import com.xzzn.ems.domain.vo.SiteTotalInfoVo; +import org.apache.ibatis.annotations.Param; /** * 站点Mapper接口 @@ -72,4 +73,14 @@ public interface EmsSiteSettingMapper * @return */ public EmsSiteSetting selectEmsSiteSettingBySiteId(String siteId); + + + /** + * 根据站点名称和投运时间获取站点列表 + * @param siteName + * @param startTime + * @param endTime + * @return + */ + public List getSiteInfoList(@Param("siteName")String siteName, @Param("startTime")String startTime, @Param("endTime")String endTime); } 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 ef3ee31..a463947 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 @@ -23,4 +23,5 @@ public interface IEmsSiteService public List> getAllClusterInfo(String stackDeviceId); + public List getAllSiteInfoList(String siteName, String startTime, String endTime); } 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 1519a79..9893d9f 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,5 +1,6 @@ package com.xzzn.ems.service.impl; +import com.xzzn.common.enums.DeviceCategory; import com.xzzn.ems.domain.EmsSiteSetting; import com.xzzn.ems.domain.vo.SiteTotalInfoVo; import com.xzzn.ems.mapper.EmsDevicesSettingMapper; @@ -41,17 +42,29 @@ public class EmsSiteServiceImpl implements IEmsSiteService */ @Override public List> getAllStackInfo(String siteId) { - return emsDevicesMapper.getAllStackInfoBySiteId(siteId); + return emsDevicesMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.STACK.getCode()); } /** - * 根据电池堆Id获取电池簇 - * @param stackDeviceId + * 根据父类设备id获取子设备id + * @param parentId * @return */ @Override - public List> getAllClusterInfo(String stackDeviceId) { - return emsDevicesMapper.getAllClusterInfoByStackId(stackDeviceId); + public List> getAllClusterInfo(String parentId) { + return emsDevicesMapper.getDeviceInfoByParentId(parentId); + } + + /** + * 获取站点列表 + * @param siteName + * @param startTime + * @param endTime + * @return + */ + @Override + public List getAllSiteInfoList(String siteName, String startTime, String endTime) { + return emsSiteMapper.getSiteInfoList(siteName,startTime,endTime); } } diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/FXXDataProcessServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/FXXDataProcessServiceImpl.java index 61ac5a1..2fe446f 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/FXXDataProcessServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/FXXDataProcessServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.TypeReference; +import com.xzzn.common.constant.RedisKeyConstants; import com.xzzn.common.core.redis.RedisCache; import com.xzzn.common.enums.*; import com.xzzn.common.utils.DateUtils; @@ -22,7 +23,7 @@ import java.util.*; @Service public class FXXDataProcessServiceImpl implements IFXXDataProcessService { private static final Log log = LogFactory.getLog(FXXDataProcessServiceImpl.class); - + private static final String SITE_ID = "021_FXX_01"; @Autowired private EmsBatteryClusterMapper emsBatteryClusterMapper; @@ -141,12 +142,12 @@ public class FXXDataProcessServiceImpl implements IFXXDataProcessService { dataStack.setCreateTime(DateUtils.getNowDate()); dataStack.setUpdateBy("system"); dataStack.setUpdateTime(DateUtils.getNowDate()); - dataStack.setSiteId("021_FXX_01"); + dataStack.setSiteId(SITE_ID); dataStack.setDeviceId(deviceId); emsBatteryStackMapper.insertEmsBatteryStack(dataStack); - redisCache.setCacheObject("STACK_021_FXX_01_"+deviceId, dataStack); + redisCache.setCacheObject(RedisKeyConstants.STACK + SITE_ID + "_" +deviceId, dataStack); } @@ -210,7 +211,7 @@ public class FXXDataProcessServiceImpl implements IFXXDataProcessService { data.setCreateTime(DateUtils.getNowDate()); data.setUpdateBy("system"); data.setUpdateTime(DateUtils.getNowDate()); - data.setSiteId("021_FXX_01"); + data.setSiteId(SITE_ID); data.setDeviceId(deviceId); data.setMaxCellVoltageId(StringUtils.getLong(obj.get("ZGDTDYDYD"))); data.setMinCellVoltageId(StringUtils.getLong(obj.get("ZDDTDYDYD"))); @@ -227,7 +228,7 @@ public class FXXDataProcessServiceImpl implements IFXXDataProcessService { } emsBatteryClusterMapper.insertEmsBatteryCluster(data); - redisCache.setCacheObject("CLUSTER_021_FXX_01_"+deviceId, data); + redisCache.setCacheObject(RedisKeyConstants.CLUSTER + SITE_ID + "_" +deviceId, data); } @@ -265,7 +266,7 @@ public class FXXDataProcessServiceImpl implements IFXXDataProcessService { batteryData.setDataTimestamp(new Date()); // ID字段 - batteryData.setSiteId("021_FXX_01"); + batteryData.setSiteId(SITE_ID); batteryData.setClusterDeviceId(deviceId); list.add(batteryData); @@ -273,7 +274,8 @@ public class FXXDataProcessServiceImpl implements IFXXDataProcessService { if (list.size() > 0 ) { emsBatteryDataMapper.insertEmsBatteryDataList(list); - redisCache.setCacheList("BATTERY_021_FXX_01_"+deviceId, list); + redisCache.deleteList(RedisKeyConstants.BATTERY + SITE_ID + "_" +deviceId); + redisCache.setCacheList(RedisKeyConstants.BATTERY + SITE_ID + "_" +deviceId, list); } } @@ -334,13 +336,13 @@ public class FXXDataProcessServiceImpl implements IFXXDataProcessService { pcsData.setCreateTime(DateUtils.getNowDate()); pcsData.setUpdateBy("system"); pcsData.setUpdateTime(DateUtils.getNowDate()); - pcsData.setSiteId("021_FXX_01"); + pcsData.setSiteId(SITE_ID); pcsData.setDeviceId(deviceId); pcsData.setDateMonth(DateUtils.getNowMonthLong()); pcsData.setDateDay(DateUtils.getNowDayLong()); emsPcsDataMapper.insertEmsPcsData(pcsData); - redisCache.setCacheObject("PCS_021_FXX_01_"+deviceId, pcsData); + redisCache.setCacheObject(RedisKeyConstants.PCS + SITE_ID + "_" +deviceId, pcsData); } @@ -386,7 +388,7 @@ public class FXXDataProcessServiceImpl implements IFXXDataProcessService { if (list.size() > 0 ) { emsPcsBranchDataMapper.insertPcsBranchDataList(list); - redisCache.setCacheObject("BRANCH_021_FXX_01_"+deviceId, list); + redisCache.setCacheObject(RedisKeyConstants.BRANCH + SITE_ID + "_" +deviceId, list); } 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 0d10ba9..0621ecc 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 @@ -1,19 +1,20 @@ package com.xzzn.ems.service.impl; +import com.xzzn.common.constant.RedisKeyConstants; +import com.xzzn.common.core.redis.RedisCache; +import com.xzzn.common.enums.DeviceCategory; 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.*; import com.xzzn.ems.domain.vo.*; import com.xzzn.ems.mapper.*; import com.xzzn.ems.service.ISingleSiteService; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; /** * 单点监控 服务层实现 @@ -46,6 +47,9 @@ public class SingleSiteServiceImpl implements ISingleSiteService { @Autowired private EmsDevicesSettingMapper emsDevicesSettingMapper; + @Autowired + private RedisCache redisCache; + @Override public SiteMonitorHomeVo getSiteMonitorDataVo(String siteId) { SiteMonitorHomeVo siteMonitorHomeVo = new SiteMonitorHomeVo(); @@ -137,39 +141,66 @@ public class SingleSiteServiceImpl implements ISingleSiteService { List pcsDetailInfoVoList = new ArrayList<>(); if (!StringUtils.isEmpty(siteId)) { - // 获取pcs最新数据 - pcsDetailInfoVoList = emsPcsDataMapper.getPcsDetailInfoBySiteId(siteId); - if (!CollectionUtils.isEmpty(pcsDetailInfoVoList)) { - for (PcsDetailInfoVo pcsDetailInfoVo : pcsDetailInfoVoList) { - String deviceId = pcsDetailInfoVo.getDeviceId(); - // 获取支路最新数据 - if (!StringUtils.isEmpty(deviceId)) { - List pcsBranchInfoList = emsPcsBranchDataMapper.getPcsBranchInfoList(siteId, deviceId); - pcsDetailInfoVo.setPcsBranchInfoList(pcsBranchInfoList); - } + // 获取该设备下所有pcs的id + List> pcsIds = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.PCS.getCode()); + + for (Map pcsDevice : pcsIds) { + PcsDetailInfoVo pcsDetailInfoVo = new PcsDetailInfoVo(); + pcsDetailInfoVo.setDeviceName(pcsDevice.get("deviceName").toString()); + pcsDetailInfoVo.setCommunicationStatus(pcsDevice.get("communicationStatus").toString()); + // 从redis取pcs单个详细数据 + String pcsId = pcsDevice.get("id").toString(); + EmsPcsData pcsData = redisCache.getCacheObject(RedisKeyConstants.PCS +siteId+"_"+pcsId); + if (pcsData != null) { + BeanUtils.copyProperties(pcsData, pcsDetailInfoVo); } + // 支路信息数据 + List pcsBranchInfoList = new ArrayList<>(); + processBranchDataInfo(siteId,pcsId,pcsBranchInfoList); + pcsDetailInfoVo.setPcsBranchInfoList(pcsBranchInfoList); + + pcsDetailInfoVoList.add(pcsDetailInfoVo); } } return pcsDetailInfoVoList; } + private void processBranchDataInfo(String siteId, String pcsId, List pcsBranchInfoList) { + if (!StringUtils.isEmpty(pcsId)) { + List pcsBranchData = redisCache.getCacheObject(RedisKeyConstants.BRANCH +siteId+"_"+pcsId); + if (pcsBranchData != null) { + for(EmsPcsBranchData emsPcsBranchData : pcsBranchData) { + PcsBranchInfo pcsBranchInfo = new PcsBranchInfo(); + BeanUtils.copyProperties(emsPcsBranchData, pcsBranchInfo); + pcsBranchInfoList.add(pcsBranchInfo); + } + } + } + } + // 获取BMS总览数据 @Override public List getBMSOverView(String siteId) { List bmsOverViewVoList = new ArrayList<>(); + // 获取所有电池堆 if (!StringUtils.isEmpty(siteId)) { - // 获取电池堆list - bmsOverViewVoList = emsBatteryStackMapper.selectEmsBatteryStackBySiteId(siteId); - if (!CollectionUtils.isEmpty(bmsOverViewVoList)) { - for (BMSOverViewVo bmsOverViewVo : bmsOverViewVoList) { - // 获取单体电池数据 - String stackDeviceId = bmsOverViewVo.getDeviceId(); - if (!StringUtils.isEmpty(stackDeviceId)) { - List batteryDataList = emsBatteryClusterMapper.getBmsBatteryData(siteId,stackDeviceId); - bmsOverViewVo.setBatteryDataList(batteryDataList); - } + List> stackIds = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.STACK.getCode()); + for (Map stackDevice : stackIds) { + BMSOverViewVo bmsOverViewVo = new BMSOverViewVo(); + bmsOverViewVo.setDeviceName(stackDevice.get("deviceName").toString()); + // 从redis取堆单个详细数据 + String stackId = stackDevice.get("id").toString(); + EmsBatteryStack stackData = redisCache.getCacheObject(RedisKeyConstants.STACK +siteId+"_"+stackId); + if (stackData != null) { + BeanUtils.copyProperties(stackData, bmsOverViewVo); } + // 列表数据 + if (!StringUtils.isEmpty(stackId)) { + List batteryDataList = emsBatteryClusterMapper.getBmsBatteryData(siteId,stackId); + bmsOverViewVo.setBatteryDataList(batteryDataList); + } + bmsOverViewVoList.add(bmsOverViewVo); } } return bmsOverViewVoList; @@ -181,50 +212,58 @@ public class SingleSiteServiceImpl implements ISingleSiteService { List bmsBatteryClusterVoList = new ArrayList<>(); if (!StringUtils.isEmpty(siteId)) { - bmsBatteryClusterVoList = emsBatteryClusterMapper.getBMSBatteryCluster(siteId); - if (!CollectionUtils.isEmpty(bmsBatteryClusterVoList)) { - for (BMSBatteryClusterVo bmsBatteryClusterVo : bmsBatteryClusterVoList) { - - String clusterDeviceId = bmsBatteryClusterVo.getDeviceId(); + // 获取所有设备下的电池簇id + List> clusterIds = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.CLUSTER.getCode()); + for (Map clusterDevice : clusterIds) { + BMSBatteryClusterVo bmsBatteryClusterVo = new BMSBatteryClusterVo(); + bmsBatteryClusterVo.setDeviceName(clusterDevice.get("deviceName").toString()); + // 从redis取单个簇详细数据 + String clusterId = clusterDevice.get("id").toString(); + EmsBatteryCluster clusterData = redisCache.getCacheObject(RedisKeyConstants.CLUSTER +siteId+"_"+clusterId); + if (clusterData != null) { + BeanUtils.copyProperties(clusterData, bmsBatteryClusterVo); + // 处理单体电池数据-平均/最大/最小 List clusterDataList = new ArrayList<>(); - if (!StringUtils.isEmpty(clusterDeviceId)) { - // 获取单体电池数据-平均/最大/最小 - //BatteryClusterDataDetailVo batteryClusterDataDetailVo = emsBatteryDataMapper.getBatteryDataByClusterId(siteId,clusterDeviceId); - // 处理数据 - 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()); - - clusterDataList.add(voltageData); - clusterDataList.add(tempData); - clusterDataList.add(socData); - bmsBatteryClusterVo.setBatteryDataList(clusterDataList); - } + dealWithBatteryClusterData(clusterData,clusterDataList); + bmsBatteryClusterVo.setBatteryDataList(clusterDataList); } + + bmsBatteryClusterVoList.add(bmsBatteryClusterVo); } } return bmsBatteryClusterVoList; } + private void dealWithBatteryClusterData(EmsBatteryCluster clusterData, List clusterDataList) { + BMSBatteryClusterDataList voltageData = new BMSBatteryClusterDataList(); + BMSBatteryClusterDataList tempData = new BMSBatteryClusterDataList(); + BMSBatteryClusterDataList socData = new BMSBatteryClusterDataList(); + + // 设值 + voltageData.setDataName(CLUSTER_DATA_VOLTAGE); + voltageData.setAvgData(clusterData.getAvgCellVoltage()); + voltageData.setMaxData(clusterData.getMaxCellVoltage()); + voltageData.setMaxDataID(clusterData.getMaxCellVoltageId().toString()); + voltageData.setMinData(clusterData.getMinCellVoltage()); + voltageData.setMinDataID(clusterData.getMinCellVoltageId().toString()); + tempData.setDataName(CLUSTER_DATA_TEP); + tempData.setAvgData(clusterData.getAvgCellTemp()); + tempData.setMaxData(clusterData.getMaxCellTemp()); + tempData.setMaxDataID(clusterData.getMaxCellTempId().toString()); + tempData.setMinData(clusterData.getMinCellTemp()); + tempData.setMinDataID(clusterData.getMinCellTempId().toString()); + socData.setDataName(CLUSTER_DATA_SOC); + socData.setAvgData(clusterData.getCurrentSoc()); + socData.setMaxData(clusterData.getMaxCellSoc()); + socData.setMaxDataID(clusterData.getMaxCellSocId().toString()); + socData.setMinData(clusterData.getMinCellSoc()); + socData.setMinDataID(clusterData.getMinCellSocId().toString()); + + clusterDataList.add(voltageData); + clusterDataList.add(tempData); + clusterDataList.add(socData); + } + // 获取液冷设备参数 @Override public List getCoolingDataList(String siteId) { @@ -237,14 +276,33 @@ public class SingleSiteServiceImpl implements ISingleSiteService { /** - * 根据电池堆获取单体柱状数据 + * 根据电池堆获取单体电池数据 * @param clusterDeviceId * @return */ @Override public List getClusterDataInfoList(String clusterDeviceId,String siteId) { List batteryDataStatsListVo = new ArrayList<>(); - batteryDataStatsListVo = emsBatteryDataMapper.getAllBatteryDataByClusterId(clusterDeviceId,siteId); + List> clusterIds = new ArrayList<>(); + if (StringUtils.isEmpty(clusterDeviceId)) { + clusterIds = emsDevicesSettingMapper.getDeviceInfosBySiteIdAndCategory(siteId, DeviceCategory.CLUSTER.getCode()); + } else { + Map map = new HashMap<>(); + map.put("id", clusterDeviceId); + clusterIds.add(map); + } + for (Map clusterDevice : clusterIds) { + // 从redis取单个簇详细数据 + String clusterId = clusterDevice.get("id").toString(); + List batteryDataList = redisCache.getCacheList(RedisKeyConstants.BATTERY + siteId + "_" + clusterId); + if (batteryDataList != null) { + for (EmsBatteryData batteryData : batteryDataList) { + BatteryDataStatsListVo batteryDataStatsVo = new BatteryDataStatsListVo(); + BeanUtils.copyProperties(batteryData, batteryDataStatsVo); + batteryDataStatsListVo.add(batteryDataStatsVo); + } + } + } return batteryDataStatsListVo; } diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml index 1c4844f..637a727 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml @@ -309,33 +309,6 @@ - - @@ -53,6 +54,7 @@ and communication_status = #{communicationStatus} and device_id = #{deviceId} and parent_id = #{parentId} + and device_category = #{deviceCategory} @@ -83,6 +85,7 @@ communication_status, device_id, parent_id, + device_category, #{deviceName}, @@ -104,6 +107,7 @@ #{communicationStatus}, #{deviceId}, #{parentId}, + #{deviceCategory}, @@ -129,6 +133,7 @@ communication_status = #{communicationStatus}, device_id = #{deviceId}, parent_id = #{parentId}, + device_category = #{deviceCategory}, where id = #{id} @@ -150,8 +155,8 @@ select distinct eb.device_id from ems_battery_stack eb where eb.site_id = #{siteId}) - + select distinct t.device_id as id,t.device_name as deviceName from ems_devices_setting t where t.parent_id = #{parentId} + + + + \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsSiteSettingMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsSiteSettingMapper.xml index 186c39d..9c03318 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsSiteSettingMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsSiteSettingMapper.xml @@ -120,4 +120,16 @@ where site_id = #{siteId} + + \ No newline at end of file