diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/PowerStatisListVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PowerStatisListVo.java index f7a6b1c..dfe5702 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/PowerStatisListVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/PowerStatisListVo.java @@ -31,6 +31,8 @@ public class PowerStatisListVo { */ private BigDecimal pvPower; + public PowerStatisListVo() {} + public PowerStatisListVo(String statisDate, BigDecimal gridPower, BigDecimal storagePower, BigDecimal pvPower) { this.statisDate = statisDate; this.gridPower = gridPower; diff --git a/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackPointVo.java b/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackPointVo.java index d0aa382..b2e5cf8 100644 --- a/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackPointVo.java +++ b/ems-system/src/main/java/com/xzzn/ems/domain/vo/StackPointVo.java @@ -6,6 +6,7 @@ import java.math.BigDecimal; * 单站监控-首页-电池堆点位数据 */ public class StackPointVo{ + private String statisDate; /** SOC */ private BigDecimal avgSoc; 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 3593730..649c04e 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 @@ -1,9 +1,18 @@ package com.xzzn.ems.mapper; +import com.xzzn.ems.domain.EmsAmmeterData; +import com.xzzn.ems.domain.vo.AmmeterStatisListVo; +import com.xzzn.ems.domain.vo.DateSearchRequest; +import com.xzzn.ems.domain.vo.MonthlyTimeRange; +import com.xzzn.ems.domain.vo.PowerStatisListVo; +import com.xzzn.ems.domain.vo.SiteMonitorDataVo; +import com.xzzn.ems.domain.vo.StatisAmmeterDateRequest; +import com.xzzn.ems.domain.vo.TimePointQuery; +import com.xzzn.ems.domain.vo.TimePointValue; + import java.util.Date; import java.util.List; -import com.xzzn.ems.domain.EmsAmmeterData; -import com.xzzn.ems.domain.vo.*; + import org.apache.ibatis.annotations.Param; /** @@ -99,4 +108,6 @@ public interface EmsAmmeterDataMapper List selectDailyAmmeterData(@Param("siteId") String siteId, @Param("startTime") String startTime, @Param("endTime") String endTime); + + List getPowerDataByMinute(DateSearchRequest requestVo); } 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 a658c40..41ee060 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 @@ -1,12 +1,17 @@ package com.xzzn.ems.mapper; +import com.xzzn.ems.domain.EmsBatteryCluster; +import com.xzzn.ems.domain.vo.BMSBatteryDataList; +import com.xzzn.ems.domain.vo.BatteryAveTempVo; +import com.xzzn.ems.domain.vo.ClusterStatisListVo; +import com.xzzn.ems.domain.vo.DateSearchRequest; +import com.xzzn.ems.domain.vo.StatisClusterDateRequest; + import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; -import com.xzzn.ems.domain.EmsBatteryCluster; -import com.xzzn.ems.domain.vo.*; import org.apache.ibatis.annotations.Param; /** @@ -83,4 +88,6 @@ public interface EmsBatteryClusterMapper public List> getAvgTempByHour(DateSearchRequest requestVo); public List> getAvgTempByDay(DateSearchRequest requestVo); public List> getAvgTempByMonth(DateSearchRequest requestVo); + + List> getAvgTempByMinute(DateSearchRequest requestVo); } diff --git a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsBatteryStackMapper.java b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsBatteryStackMapper.java index 81b048a..29601e1 100644 --- a/ems-system/src/main/java/com/xzzn/ems/mapper/EmsBatteryStackMapper.java +++ b/ems-system/src/main/java/com/xzzn/ems/mapper/EmsBatteryStackMapper.java @@ -1,9 +1,15 @@ package com.xzzn.ems.mapper; +import com.xzzn.ems.domain.EmsBatteryStack; +import com.xzzn.ems.domain.vo.BatteryAveSOCVo; +import com.xzzn.ems.domain.vo.BatteryAveTempVo; +import com.xzzn.ems.domain.vo.DateSearchRequest; +import com.xzzn.ems.domain.vo.StackPointVo; +import com.xzzn.ems.domain.vo.StackStatisListVo; + import java.util.Date; import java.util.List; -import com.xzzn.ems.domain.EmsBatteryStack; -import com.xzzn.ems.domain.vo.*; + import org.apache.ibatis.annotations.Param; /** @@ -85,4 +91,6 @@ public interface EmsBatteryStackMapper public List getAveSocList(@Param("siteId") String siteId, @Param("startDate") Date startDate, @Param("endDate") Date endDate); // 实时运行-DDS平均温度 public List getBatteryAveTempList(@Param("siteId")String siteId, @Param("startDate")Date yesterday, @Param("endDate") Date today); + + List getStackPointByMinute(DateSearchRequest requestVo); } 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 fc22bff..22d4514 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 @@ -4,7 +4,6 @@ import com.xzzn.common.constant.RedisKeyConstants; import com.xzzn.common.core.redis.RedisCache; import com.xzzn.common.enums.AmmeterCategory; import com.xzzn.common.enums.DeviceCategory; -import com.xzzn.common.enums.SiteEnum; import com.xzzn.common.utils.DateUtils; import com.xzzn.common.utils.StringUtils; import com.xzzn.ems.domain.EmsAmmeterData; @@ -936,7 +935,8 @@ public class SingleSiteServiceImpl implements ISingleSiteService { List responseList = new ArrayList<>(); List powerList = new ArrayList<>();//功率数据 List stackList = new ArrayList<>();//电池堆数据 - List> fxAvgTempList = new ArrayList<>(); +// List> fxAvgTempList = new ArrayList<>(); + List> avgTempList = new ArrayList<>(); // 默认时间-7天 dealRequestTime(requestVo); @@ -944,40 +944,54 @@ public class SingleSiteServiceImpl implements ISingleSiteService { Date endDate = requestVo.getEndDate(); List timeList = new ArrayList<>(); - // 开始日期和结束日期同一天,展示 0-24 小时数据 +// // 开始日期和结束日期同一天,展示 0-24 小时数据 +// if (DateUtils.isSameDay(startDate, endDate)){ +// endDate = DateUtils.addDays(endDate, 1); +// requestVo.setEndDate(endDate); +// powerList = emsAmmeterDataMapper.getPowerDataByHour(requestVo);//功率数据 +// stackList = emsBatteryStackMapper.getStackPointByHour(requestVo);//电池堆数据 +// if (SiteEnum.FX.getCode().equals(requestVo.getSiteId())){ +// fxAvgTempList = emsBatteryClusterMapper.getAvgTempByHour(requestVo); +// } +// avgTempList = emsBatteryClusterMapper.getAvgTempByHour(requestVo);//电池簇数据 +// } + // 开始日期和结束日期同一天,展示每5分钟一个点数据 if (DateUtils.isSameDay(startDate, endDate)){ endDate = DateUtils.addDays(endDate, 1); requestVo.setEndDate(endDate); - powerList = emsAmmeterDataMapper.getPowerDataByHour(requestVo);//功率数据 - stackList = emsBatteryStackMapper.getStackPointByHour(requestVo);//电池堆数据 - if (SiteEnum.FX.getCode().equals(requestVo.getSiteId())){ - fxAvgTempList = emsBatteryClusterMapper.getAvgTempByHour(requestVo); - } - } else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 1 + powerList = emsAmmeterDataMapper.getPowerDataByMinute(requestVo);//功率数据 + stackList = emsBatteryStackMapper.getStackPointByMinute(requestVo);//电池堆数据 + avgTempList = emsBatteryClusterMapper.getAvgTempByMinute(requestVo);//电池簇数据 + } + else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 1 && DateUtils.differentDaysByMillisecond(endDate, startDate) < 30){ endDate = DateUtils.addDays(endDate, 1); requestVo.setEndDate(endDate); // 开始日期-结束日期大于 1 天,小于30 天,按天展示数据 powerList = emsAmmeterDataMapper.getPowerDataByDay(requestVo);//功率数据 stackList = emsBatteryStackMapper.getStackPointByDay(requestVo);//电池堆数据 - if (SiteEnum.FX.getCode().equals(requestVo.getSiteId())){ - fxAvgTempList = emsBatteryClusterMapper.getAvgTempByDay(requestVo); - } +// if (SiteEnum.FX.getCode().equals(requestVo.getSiteId())){ +// fxAvgTempList = emsBatteryClusterMapper.getAvgTempByDay(requestVo); +// } + avgTempList = emsBatteryClusterMapper.getAvgTempByDay(requestVo);//电池簇数据 } else if (DateUtils.differentDaysByMillisecond(endDate, startDate) >= 30){ endDate = DateUtils.addDays(endDate, 1); requestVo.setEndDate(endDate); // 开始日期-结束日期大于 1 个月,按月展示数据 powerList = emsAmmeterDataMapper.getPowerDataByMonth(requestVo);//功率数据 stackList = emsBatteryStackMapper.getStackPointByMonth(requestVo);//电池堆数据 - if (SiteEnum.FX.getCode().equals(requestVo.getSiteId())){ - fxAvgTempList = emsBatteryClusterMapper.getAvgTempByMonth(requestVo); - } +// if (SiteEnum.FX.getCode().equals(requestVo.getSiteId())){ +// fxAvgTempList = emsBatteryClusterMapper.getAvgTempByMonth(requestVo); +// } + avgTempList = emsBatteryClusterMapper.getAvgTempByMonth(requestVo);//电池簇数据 } - // 如果奉贤数据:电池平均温度单独取值。将其塞入stackList里面 - if (SiteEnum.FX.getCode().equals(requestVo.getSiteId())){ - processFXXTempData(stackList,fxAvgTempList); - } +// // 如果奉贤数据:电池平均温度单独取值。将其塞入stackList里面 +// if (SiteEnum.FX.getCode().equals(requestVo.getSiteId())){ +// processFXXTempData(stackList,fxAvgTempList); +// } + // 优先从电池堆取,电池堆没有的话再从电池簇取 + processTempData(stackList, avgTempList); // 数据转换为Map Map powerMap = powerList.stream() @@ -1027,17 +1041,49 @@ public class SingleSiteServiceImpl implements ISingleSiteService { BigDecimal pvPower = pointDataResponse.getPvPower() == null ? BigDecimal.ZERO : pointDataResponse.getPvPower(); BigDecimal loadPower = new BigDecimal(0); - // 电动所:负荷功率=电网功率+光伏功率-储能功率 - // 奉贤:负荷功率=电网功率-储能功率; - if (SiteEnum.DDS.getCode().equals(siteId)){ - loadPower = gridPower.add(pvPower).subtract(storagePower); - pointDataResponse.setLoadPower(loadPower); - } else if (SiteEnum.FX.getCode().equals(siteId)){ - // 奉贤:负荷功率=电网功率-储能功率; - loadPower = gridPower.subtract(storagePower); - pointDataResponse.setLoadPower(loadPower); +// // 电动所:负荷功率=电网功率+光伏功率-储能功率 +// // 奉贤:负荷功率=电网功率-储能功率; +// if (SiteEnum.DDS.getCode().equals(siteId)){ +// loadPower = gridPower.add(pvPower).subtract(storagePower); +// pointDataResponse.setLoadPower(loadPower); +// } else if (SiteEnum.FX.getCode().equals(siteId)){ +// // 奉贤:负荷功率=电网功率-储能功率; +// loadPower = gridPower.subtract(storagePower); +// pointDataResponse.setLoadPower(loadPower); +// } + // 负荷功率=电网功率+光伏功率-储能功率 + loadPower = gridPower.add(pvPower).subtract(storagePower); + pointDataResponse.setLoadPower(loadPower); + } + } + + private void processTempData(List stackList, List> avgTempList) { + if (stackList == null || avgTempList == null) { + return; + } + + + Map avgTempMap = avgTempList.stream() + .filter(subMap -> subMap != null && !subMap.isEmpty()) + .filter(subMap -> subMap.containsKey("statisDate") && subMap.containsKey("avgTemp")) + .collect(Collectors.toMap( + subMap -> String.valueOf(subMap.get("statisDate")), + subMap -> (BigDecimal)subMap.get("avgTemp"), + (existingValue, newValue) -> newValue, + HashMap::new + )); + + for (StackPointVo stackPointVo : stackList) { + if (stackPointVo.getAvgTemp() != null) { + continue; + } + // 从map中获取temp + BigDecimal mapTemp = (avgTempMap != null) ? avgTempMap.get(stackPointVo.getStatisDate()) : null; + if (mapTemp != null) { + stackPointVo.setAvgTemp(mapTemp); } } + } private void processFXXTempData(List stackList, List> fxAvgTempList) { diff --git a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml index 966cb00..4f3edcf 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsAmmeterDataMapper.xml @@ -1141,4 +1141,24 @@ dataTime ) temp + \ 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 d1e2464..0eced41 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryClusterMapper.xml @@ -428,4 +428,23 @@ GROUP BY statisDate ORDER BY statisDate + + \ No newline at end of file diff --git a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml index 647deaf..2313431 100644 --- a/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml +++ b/ems-system/src/main/resources/mapper/ems/EmsBatteryStackMapper.xml @@ -509,6 +509,27 @@ ORDER BY statisDate + +