From 180986ba161d4d00eb97b9bc0ec9c75373b99b62 Mon Sep 17 00:00:00 2001 From: gaoyutao Date: Fri, 30 Jan 2026 21:21:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A3=81=E7=9B=98NPE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/handler/MessageHandler.java | 30 ++++++++++++------- .../impl/InitialDiskInfoServiceImpl.java | 6 +++- .../mapper/rocketmq/InitialDiskInfoMapper.xml | 4 +-- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java index 9688fac..8f7cd8e 100644 --- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java +++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/handler/MessageHandler.java @@ -240,11 +240,16 @@ public class MessageHandler { String province = locationInfo.get("province"); // 过滤本地省份和空值 - if (province != null && operator != null - && (!localProvince.equals(province) || !localIsp.equals(operator))) { - String key = province + operator; // 根据图片格式,省份和运营商之间没有空格 - double currentCount = v4StatMap.getOrDefault(key, 0.0); - v4StatMap.put(key, currentCount + tcpdumpVo.getCount()); + if (province != null && operator != null) { + // 标准化运营商名称 + String stdLocalIsp = localIsp != null ? localIsp.replace("中国", "") : ""; + String stdOperator = operator.replace("中国", ""); + // 省不一样或者省一样但运营商不一样 + if (!localProvince.equals(province) || !stdLocalIsp.equals(stdOperator)) { + String key = province + operator; // 根据图片格式,省份和运营商之间没有空格 + double currentCount = v4StatMap.getOrDefault(key, 0.0); + v4StatMap.put(key, currentCount + tcpdumpVo.getCount()); + } } } } @@ -280,11 +285,16 @@ public class MessageHandler { String province = locationInfo.get("province"); // 过滤本地省份和空值 - if (province != null && operator != null - && (!localProvince.equals(province) || !localIsp.equals(operator))) { - String key = province + operator; // 根据图片格式,省份和运营商之间没有空格 - double currentCount = v6StatMap.getOrDefault(key, 0.0); - v6StatMap.put(key, currentCount + tcpdumpVo.getCount()); + if (province != null && operator != null) { + // 标准化运营商名称 + String stdLocalIsp = localIsp != null ? localIsp.replace("中国", "") : ""; + String stdOperator = operator.replace("中国", ""); + // 省不一样或者省一样但运营商不一样 + if (!localProvince.equals(province) || !stdLocalIsp.equals(stdOperator)) { + String key = province + operator; // 根据图片格式,省份和运营商之间没有空格 + double currentCount = v6StatMap.getOrDefault(key, 0.0); + v6StatMap.put(key, currentCount + tcpdumpVo.getCount()); + } } } } diff --git a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialDiskInfoServiceImpl.java b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialDiskInfoServiceImpl.java index 04312bb..22358c9 100644 --- a/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialDiskInfoServiceImpl.java +++ b/tongran-rocketmq/src/main/java/com/tongran/rocketmq/service/impl/InitialDiskInfoServiceImpl.java @@ -279,7 +279,11 @@ public class InitialDiskInfoServiceImpl implements IInitialDiskInfoService if(list != null && !list.isEmpty()){ Long totalUsedSpace = 0L; for (InitialDiskInfo diskInfo : list) { - totalUsedSpace += diskInfo.getUsedSpace(); + // 处理 null 值 + Long usedSpace = diskInfo.getUsedSpace(); + if (usedSpace != null) { + totalUsedSpace += usedSpace; + } } Long avgUsedSpace = totalUsedSpace/list.size(); unit = SpeedUtils.determineUnitByValue(avgUsedSpace); diff --git a/tongran-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml b/tongran-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml index da54384..c5d0878 100644 --- a/tongran-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml +++ b/tongran-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml @@ -214,7 +214,7 @@ group by name