From 184905917eb84939b778ab8b32b3ea569f97ab30 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Fri, 30 Jan 2026 11:18:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A5=BC=E5=AE=87=E4=B8=8B=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E7=9A=84=E7=9B=91=E8=A7=86=E7=82=B9=E5=88=86?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ex/DeviceRawdataRealtimeMapperExt.java | 3 - .../back/dao/ex/OverviewInfoMapperExt.java | 19 +++++ .../ex/DeviceRawdataRealtimeMapperExt.xml | 47 ----------- .../mappers/ex/OverviewInfoMapperExt.xml | 77 +++++++++++++++++++ .../back/vo/data/OverviewCategoryVO.java | 23 ++++++ .../dashboard/back/vo/data/OverviewVO.java | 3 + .../service/impl/OverviewServiceImpl.java | 69 ++++++++++++++--- 7 files changed, 182 insertions(+), 59 deletions(-) create mode 100644 dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/OverviewInfoMapperExt.java create mode 100644 dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml create mode 100644 dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewCategoryVO.java diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceRawdataRealtimeMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceRawdataRealtimeMapperExt.java index 55a4b64..fb68699 100644 --- a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceRawdataRealtimeMapperExt.java +++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceRawdataRealtimeMapperExt.java @@ -11,7 +11,4 @@ import java.util.Map; @Mapper public interface DeviceRawdataRealtimeMapperExt extends DeviceRawdataRealtimeMapper { - List getOverviewInfo(Map paramMap); - - List getBuildingInfo(Map buildingMap); } diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/OverviewInfoMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/OverviewInfoMapperExt.java new file mode 100644 index 0000000..e27ef49 --- /dev/null +++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/OverviewInfoMapperExt.java @@ -0,0 +1,19 @@ +package com.dongjian.dashboard.back.dao.ex; + +import com.dongjian.dashboard.back.vo.data.OverviewCategoryVO; +import com.dongjian.dashboard.back.vo.data.OverviewInfo; +import com.dongjian.dashboard.back.vo.data.OverviewVO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface OverviewInfoMapperExt { + + List getOverviewInfo(Map paramMap); + + List getBuildingInfo(Map buildingMap); + + List getExistingCategoryList(Map allCategoryParamMap); +} diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceRawdataRealtimeMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceRawdataRealtimeMapperExt.xml index f9abf7b..09ae341 100644 --- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceRawdataRealtimeMapperExt.xml +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceRawdataRealtimeMapperExt.xml @@ -2,52 +2,5 @@ - - - - \ No newline at end of file diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml new file mode 100644 index 0000000..301329f --- /dev/null +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewCategoryVO.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewCategoryVO.java new file mode 100644 index 0000000..105aa32 --- /dev/null +++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewCategoryVO.java @@ -0,0 +1,23 @@ +package com.dongjian.dashboard.back.vo.data; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class OverviewCategoryVO { + + private Long buildingId; + + private String buildingName; + + private String deviceId; + + private Long monitoringPointCategoryId; + + private String monitoringPointCategoryName; + + +} diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewVO.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewVO.java index 8b12751..29d72da 100644 --- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewVO.java +++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/OverviewVO.java @@ -33,6 +33,9 @@ public class OverviewVO { @Schema(description = "今天告警数量",example = "1111") private Integer alarmCountToday = 0; + @Schema(description = "楼宇下设备没有的监视点分类",example = "[]") + private List missingMonitoringPointCategoryList = new ArrayList<>(); + @Schema(description = "监视点分类告警数量",example = "1111") private List monitoringPointCategoryAlarmList = new ArrayList<>(); diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java index 1751122..d95107e 100644 --- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java +++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java @@ -1,18 +1,19 @@ package com.dongjian.dashboard.back.service.impl; import com.dongjian.dashboard.back.common.Constants; -import com.dongjian.dashboard.back.common.language.msg.MsgLanguageChange; import com.dongjian.dashboard.back.common.response.ResponseCode; import com.dongjian.dashboard.back.common.response.SimpleDataResponse; import com.dongjian.dashboard.back.dao.ex.DashboardNotificationMapperExt; -import com.dongjian.dashboard.back.dao.ex.DeviceRawdataRealtimeMapperExt; -import com.dongjian.dashboard.back.model.DashboardNotification; -import com.dongjian.dashboard.back.model.DashboardNotificationExample; +import com.dongjian.dashboard.back.dao.ex.MonitoringPointCategoryMapperExt; +import com.dongjian.dashboard.back.dao.ex.OverviewInfoMapperExt; +import com.dongjian.dashboard.back.dto.monitoringpointcategory.MonitoringPointCategorySearchParams; import com.dongjian.dashboard.back.service.OverviewService; import com.dongjian.dashboard.back.service.common.CommonOpt; import com.dongjian.dashboard.back.vo.dashboardnotification.DashboardNotificationPageVO; +import com.dongjian.dashboard.back.vo.data.OverviewCategoryVO; import com.dongjian.dashboard.back.vo.data.OverviewInfo; import com.dongjian.dashboard.back.vo.data.OverviewVO; +import com.dongjian.dashboard.back.vo.monitoringpointcategory.MonitoringPointCategoryPageVO; import com.dongjian.dashboard.back.weather.JpMeshHourlyForecasts; import com.dongjian.dashboard.back.weather.QueryWeather; import com.fasterxml.jackson.databind.ObjectMapper; @@ -47,11 +48,11 @@ public class OverviewServiceImpl implements OverviewService { @Autowired - private DeviceRawdataRealtimeMapperExt deviceRawdataRealtimeMapperExt; + private OverviewInfoMapperExt overviewInfoMapperExt; @Autowired private DashboardNotificationMapperExt dashboardNotificationMapperExt; - @Autowired - private MsgLanguageChange msgLanguageChange; + @Autowired + private MonitoringPointCategoryMapperExt monitoringPointCategoryMapperExt; @Autowired private CommonOpt commonOpt; @@ -61,21 +62,71 @@ public class OverviewServiceImpl implements OverviewService { buildingMap.put("companyId", companyId); buildingMap.put("bindBuildingIdList", commonOpt.getBindBuildingIdList(userId)); - List buildingInfoList = deviceRawdataRealtimeMapperExt.getBuildingInfo(buildingMap); + List buildingInfoList = overviewInfoMapperExt.getBuildingInfo(buildingMap); if (CollectionUtils.isNotEmpty(buildingInfoList)){ Map paramMap = new HashMap<>(); paramMap.put("companyId", companyId); paramMap.put("categoryIdList", Constants.CATEGORY_MAP.get(Constants.CATEGORY_ALARM)); - List alarmInfoList = deviceRawdataRealtimeMapperExt.getOverviewInfo(paramMap); + List alarmInfoList = overviewInfoMapperExt.getOverviewInfo(paramMap); List overviewVOList = convert(alarmInfoList, utcOffset); mergeOverviewList(buildingInfoList, overviewVOList); + + // 查找楼宇没有的监测点分类 + Map> notExistingCategoryMap = handleMissingMonitoringPointCategory(companyId, buildingInfoList); + mergeMissingMonitoringPointCategory(buildingInfoList, notExistingCategoryMap); } return SimpleDataResponse.success(buildingInfoList); } + private void mergeMissingMonitoringPointCategory(List buildingInfoList, Map> notExistingCategoryMap) { + buildingInfoList.forEach(building -> { + List missingCategoryIds = notExistingCategoryMap.get(building.getBuildingId()); + if (missingCategoryIds != null && !missingCategoryIds.isEmpty()) { + building.setMissingMonitoringPointCategoryList(missingCategoryIds); + } + }); + } + + private Map> handleMissingMonitoringPointCategory(Long companyId, List buildingInfoList) { + //全部分类 + MonitoringPointCategorySearchParams categorySearchParam = new MonitoringPointCategorySearchParams(); + categorySearchParam.setCompanyIdList(List.of(companyId)); + List categoryList = monitoringPointCategoryMapperExt.getListPage(categorySearchParam); + //所有楼宇的监测点分类 + Map allCategoryParamMap = new HashMap<>(); + allCategoryParamMap.put("companyId", companyId); + allCategoryParamMap.put("categoryIdList", Constants.ALL_CATEGORY_IDS); + List existingCategoryList = overviewInfoMapperExt.getExistingCategoryList(allCategoryParamMap); + + Map> existingCategoryMap = + existingCategoryList.stream() + .filter(e -> e.getBuildingId() != null && e.getMonitoringPointCategoryId() != null) + .collect(Collectors.groupingBy( + OverviewCategoryVO::getBuildingId, + Collectors.mapping( + OverviewCategoryVO::getMonitoringPointCategoryId, + Collectors.toSet() + ) + )); + + Map> notExistingCategoryMap = new HashMap<>(); + existingCategoryMap.forEach((buildingId, existingCategoryIds) -> { + List missingCategoryIds = + categoryList.stream() + .map(MonitoringPointCategoryPageVO::getMonitoringPointCategoryId) + .filter(Objects::nonNull) + .filter(id -> !existingCategoryIds.contains(id)) + .collect(Collectors.toList()); + + notExistingCategoryMap.put(buildingId, missingCategoryIds); + }); + + return notExistingCategoryMap; + } + public static void mergeOverviewList(List buildingInfoList, List overviewVOList) { // 构建 buildingId 到 OverviewVO 的映射表 Map overviewMap = overviewVOList.stream()