From cc4b73de63844edcf49e5997a74f02533f84a8cb Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Sat, 28 Feb 2026 14:38:02 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=97=A0=E6=95=88=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mappers/ex/MonitoringPointCategoryMapperExt.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryMapperExt.xml index 26edaf6..96b6ea4 100644 --- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryMapperExt.xml +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryMapperExt.xml @@ -24,6 +24,7 @@ mpc.company_id, mpc.thumbnail_normal_base64, mpc.thumbnail_alarm_base64, + mpc.thumbnail_dis_base64, mpc.class_name AS `name` FROM basic_asset_class_big mpc From 111d6f8affd426aa58d724e581d698aee42ac3e5 Mon Sep 17 00:00:00 2001 From: "zhczyx@163.com" Date: Sat, 28 Feb 2026 14:38:36 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=BC=80=E5=90=AF=E6=A5=BC=E5=AE=87?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=87=8C=E7=9A=84=E6=97=A0=E6=95=88=E7=B1=BB?= =?UTF-8?q?=E5=88=AB=E5=88=A4=E5=AE=9A=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=97=A0?= =?UTF-8?q?=E6=95=88=E5=9B=BE=E7=89=87=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mappers/ex/MonitoringPointCategoryGroupMapperExt.xml | 2 +- .../resources/mappers/ex/MonitoringPointCategoryMapperExt.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryGroupMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryGroupMapperExt.xml index f7d00bf..f5f8838 100644 --- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryGroupMapperExt.xml +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryGroupMapperExt.xml @@ -67,7 +67,7 @@ mpc.company_id, mpc.thumbnail_normal_base64, mpc.thumbnail_alarm_base64, - mpc.thumbnail_dis_base64, + mpc.`name`, mpc.remark FROM diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryMapperExt.xml index 26edaf6..96b6ea4 100644 --- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryMapperExt.xml +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/MonitoringPointCategoryMapperExt.xml @@ -24,6 +24,7 @@ mpc.company_id, mpc.thumbnail_normal_base64, mpc.thumbnail_alarm_base64, + mpc.thumbnail_dis_base64, mpc.class_name AS `name` FROM basic_asset_class_big mpc From cab19659c068862c9c2ed2dac666a70e295c5d38 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Sat, 28 Feb 2026 15:02:15 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E5=88=86=E7=B1=BBbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/OverviewServiceImpl.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) 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 fd5363d..c0f302c 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 @@ -95,6 +95,12 @@ public class OverviewServiceImpl implements OverviewService { MonitoringPointCategorySearchParams categorySearchParam = new MonitoringPointCategorySearchParams(); categorySearchParam.setCompanyIdList(List.of(companyId)); List categoryList = monitoringPointCategoryMapperExt.getListPage(categorySearchParam); + + List allCategoryIds = categoryList.stream() + .map(MonitoringPointCategoryPageVO::getMonitoringPointCategoryId) + .filter(Objects::nonNull) + .toList(); + //所有楼宇的监测点分类 Map allCategoryParamMap = new HashMap<>(); allCategoryParamMap.put("companyId", companyId); @@ -113,16 +119,17 @@ public class OverviewServiceImpl implements OverviewService { )); 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); - }); + for (OverviewVO building : buildingInfoList) { + Long buildingId = building.getBuildingId(); + Set existingIds = existingCategoryMap.getOrDefault(buildingId, Collections.emptySet()); + List missingIds = new ArrayList<>(); + for (Long categoryId : allCategoryIds) { + if (!existingIds.contains(categoryId)) { + missingIds.add(categoryId); + } + } + notExistingCategoryMap.put(buildingId, missingIds); + } return notExistingCategoryMap; } From d3dbe13ca07746eb8e511bf50770a5ad47d66aae Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Sun, 1 Mar 2026 12:34:30 +0800 Subject: [PATCH 4/7] =?UTF-8?q?redis=E5=8F=96latestValueBO=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeviceDataBaStatusServiceImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java index 1547679..eeeb799 100644 --- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java +++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java @@ -196,11 +196,20 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService List yCommon = new ArrayList<>(); //** 获取昨日最新数据 **// + String redisKey = Constants.REDIS_BA_STATUS_LATEST_VALUE + DateUtil.getYesterdayInJapan(); + + boolean cacheExist = redisUtil.existsKey(redisKey); + Object cacheLastValue = redisUtil.HGet(redisKey, lineDataSearchParams.getDeviceId().toLowerCase()); if (null != cacheLastValue) { try { - LatestValueBO latestValueBO = objectMapper.readValue(JSONObject.toJSONString(cacheLastValue), LatestValueBO.class); + String value = cacheLastValue.toString(); + // 如果是被双引号包住的 JSON(双层 JSON) + if (value.startsWith("\"")) { + value = objectMapper.readValue(value, String.class); + } + LatestValueBO latestValueBO = objectMapper.readValue(value, LatestValueBO.class); String dateFormatted = Instant.ofEpochMilli(latestValueBO.getUpdateTs()) .atZone(Constants.ZONE_TOKYO) .format(Constants.FORMATTER_YMDHMS); From 04c65653b68813dd56ddff73a857b42c4468ad83 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Sun, 1 Mar 2026 22:41:10 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../back/service/impl/DeviceDataBaStatusServiceImpl.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java index eeeb799..6f87cd2 100644 --- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java +++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java @@ -196,11 +196,7 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService List yCommon = new ArrayList<>(); //** 获取昨日最新数据 **// - String redisKey = Constants.REDIS_BA_STATUS_LATEST_VALUE + DateUtil.getYesterdayInJapan(); - - boolean cacheExist = redisUtil.existsKey(redisKey); - Object cacheLastValue = redisUtil.HGet(redisKey, lineDataSearchParams.getDeviceId().toLowerCase()); if (null != cacheLastValue) { try { From 2f9e6e4a3b72877bd20626fa2b252a0a78ef0be2 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Wed, 4 Mar 2026 09:52:10 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=94=B6=E8=97=8F=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=85=A8=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mappers/ex/FavoritedDeviceMapperExt.xml | 4 +++- .../src/main/resources/mappers/ex/OverviewInfoMapperExt.xml | 2 +- .../dashboard/back/service/impl/OverviewServiceImpl.java | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/FavoritedDeviceMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/FavoritedDeviceMapperExt.xml index 6ea7168..c0b6462 100644 --- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/FavoritedDeviceMapperExt.xml +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/FavoritedDeviceMapperExt.xml @@ -20,7 +20,9 @@ WHERE dinfo.flag != 1 AND basic_monitoring_asset.flag != 1 AND basic_space.flag != 1 AND basic_floor.flag != 1 AND basic_building.flag != 1 - AND basic_building.building_id = #{buildingId} + + AND basic_building.building_id = #{buildingId} + AND dinfo.company_id IN #{item} and ty.device_category_id in 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 index a6d2fcd..47bb0d8 100644 --- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml @@ -26,7 +26,7 @@ WHERE bbuilding.company_id = #{companyId} AND bbuilding.flag = 0 AND basic_floor.flag = 0 AND basic_space.flag = 0 - AND basic_monitoring_asset.flag = 0 AND dinfo.flag = 0 AND basic_asset_class_big.flag = 0 + AND basic_monitoring_asset.flag = 0 AND dinfo.flag = 0 AND ah.confirm_status = 0 AND ah.handle_status = 1 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 c0f302c..565b72c 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 @@ -196,6 +196,7 @@ public class OverviewServiceImpl implements OverviewService { // 分组监测点分类 List categoryAlarms = buildingInfos.stream() + .filter(dto -> dto.getMonitoringPointCategoryId() != null) .collect(Collectors.groupingBy(OverviewInfo::getMonitoringPointCategoryId)) .entrySet() .stream() From edd1b08bf17844f89a04e0172376a66ec293ffb7 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Wed, 4 Mar 2026 10:26:32 +0800 Subject: [PATCH 7/7] =?UTF-8?q?getTopCompanyId=E6=AD=BB=E5=BE=AA=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/config/DataSourceInterceptor.java | 64 ++++++++++++------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/config/DataSourceInterceptor.java b/dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/config/DataSourceInterceptor.java index 372bc72..d94a2d6 100644 --- a/dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/config/DataSourceInterceptor.java +++ b/dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/config/DataSourceInterceptor.java @@ -13,10 +13,7 @@ import com.dongjian.dashboard.back.common.Constants; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.concurrent.atomic.AtomicLong; @@ -56,25 +53,46 @@ public class DataSourceInterceptor implements HandlerInterceptor { } public long getTopCompanyId(String companyId) { - - String sql="SELECT " - + " bcom.id, bcom.parent_id parentId" - + " FROM data_center_aeon_admin.basic_company bcom " - + " WHERE bcom.flag != 1 and bcom.id = " + companyId; - - AtomicLong parentId = new AtomicLong(0); - AtomicLong id = new AtomicLong(0); - jdbcTemplate.query(sql,rs -> { - parentId.set(rs.getLong("parentId")); - id.set(rs.getLong("id")); - }); - //Recursive logic - if (1 == parentId.get() || -1 == parentId.get()) { - return id.get(); - } else { - return getTopCompanyId(parentId.get()+""); - } - } + + if (StringUtils.isBlank(companyId)) { + throw new IllegalArgumentException("companyId不能为空"); + } + + return getTopCompanyIdInternal(Long.parseLong(companyId), new HashSet<>()); + } + + private long getTopCompanyIdInternal(Long companyId, Set visited) { + + // 防止循环引用 + if (!visited.add(companyId)) { + throw new IllegalStateException("检测到公司父子结构循环,companyId=" + companyId); + } + + String sql = """ + SELECT id, parent_id + FROM data_center_aeon_admin.basic_company + WHERE flag != 1 AND id = ? + """; + + List> result = jdbcTemplate.queryForList(sql, companyId); + + if (result.isEmpty()) { + throw new IllegalStateException("公司不存在,companyId=" + companyId); + } + + Map row = result.get(0); + + Long parentId = row.get("parent_id") == null + ? null + : ((Number) row.get("parent_id")).longValue(); + + // 顶级企业 + if (parentId == null || parentId == 1 || parentId == -1) { + return companyId; + } + + return getTopCompanyIdInternal(parentId, visited); + } /** * 获取所有的一级企业