From fe1763386aac1e2c12263a1ce7e0d195a2caf1d8 Mon Sep 17 00:00:00 2001 From: gaoyutao Date: Tue, 4 Nov 2025 13:46:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=9695=E5=80=BC=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=E3=80=81=E5=AE=9E=E9=99=85=E6=B5=81=E9=87=8F?= =?UTF-8?q?=E4=BF=9D=E7=95=99=E4=B8=A4=E4=BD=8D=E5=B0=8F=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/common/core/utils/SpeedUtils.java | 8 ++-- .../EpsInitialTrafficDataServiceImpl.java | 6 +-- .../impl/EpsTaskStatisticsServiceImpl.java | 12 ++--- .../InitialSwitchInfoDetailsServiceImpl.java | 6 +-- .../com/ruoyi/system/util/CalculateUtil.java | 48 ++++++++++--------- .../InitialBandwidthTrafficServiceImpl.java | 4 +- .../impl/InitialSwitchInfoServiceImpl.java | 4 +- .../ProcessSwitchCollectDataService.java | 8 +++- .../InitialBandwidthTrafficMapper.xml | 1 + .../mapper/rocketmq/InitialCpuInfoMapper.xml | 1 + .../mapper/rocketmq/InitialDiskInfoMapper.xml | 1 + .../rocketmq/InitialMountPointInfoMapper.xml | 1 + .../rocketmq/InitialSwitchInfoTempMapper.xml | 1 + 13 files changed, 56 insertions(+), 45 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpeedUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpeedUtils.java index 0e83652..b4466d4 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpeedUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpeedUtils.java @@ -95,8 +95,8 @@ public class SpeedUtils { totalOutSpeedBit = totalOutSpeedBit.add(outSpeedBit); // 转换为Gb并更新最大值 - BigDecimal inSpeedGb = inSpeedBit.divide(GB_DIVISOR, 0, RoundingMode.HALF_UP); - BigDecimal outSpeedGb = outSpeedBit.divide(GB_DIVISOR, 0, RoundingMode.HALF_UP); + BigDecimal inSpeedGb = inSpeedBit.divide(GB_DIVISOR, 2, RoundingMode.HALF_UP); + BigDecimal outSpeedGb = outSpeedBit.divide(GB_DIVISOR, 2, RoundingMode.HALF_UP); maxInSpeedGb = maxInSpeedGb.max(inSpeedGb); maxOutSpeedGb = maxOutSpeedGb.max(outSpeedGb); @@ -111,9 +111,9 @@ public class SpeedUtils { // 计算Gb平均值 BigDecimal size = new BigDecimal(list.size()); - BigDecimal avgInSpeedGb = totalInSpeedBit.divide(GB_DIVISOR, 0, RoundingMode.HALF_UP) + BigDecimal avgInSpeedGb = totalInSpeedBit.divide(GB_DIVISOR, 2, RoundingMode.HALF_UP) .divide(size, 2, RoundingMode.HALF_UP); - BigDecimal avgOutSpeedGb = totalOutSpeedBit.divide(GB_DIVISOR, 0, RoundingMode.HALF_UP) + BigDecimal avgOutSpeedGb = totalOutSpeedBit.divide(GB_DIVISOR, 2, RoundingMode.HALF_UP) .divide(size, 2, RoundingMode.HALF_UP); // 基于平均值的较大值确定推荐单位 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsInitialTrafficDataServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsInitialTrafficDataServiceImpl.java index 0af2c77..6e1702a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsInitialTrafficDataServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsInitialTrafficDataServiceImpl.java @@ -416,7 +416,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe total = total.add(outSpeed); } } - return total.setScale(0, RoundingMode.HALF_UP); + return total.setScale(2, RoundingMode.HALF_UP); } /** @@ -601,11 +601,11 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe extractors.put("netOutSpeedData", info -> info != null && info.getOutSpeed() != null ? - new BigDecimal(info.getOutSpeed()).divide(divisor, 0, RoundingMode.HALF_UP) : + new BigDecimal(info.getOutSpeed()).divide(divisor, 2, RoundingMode.HALF_UP) : 0); extractors.put("netMachineFlowData", info -> info != null && info.getMachineFlow() != null ? - new BigDecimal(info.getMachineFlow()).divide(divisor, 0, RoundingMode.HALF_UP) : + new BigDecimal(info.getMachineFlow()).divide(divisor, 2, RoundingMode.HALF_UP) : 0); extractors.put("percentile95", info -> info != null && info.getPercentile95() != null ? diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsTaskStatisticsServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsTaskStatisticsServiceImpl.java index cd0ffa4..217a0e5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsTaskStatisticsServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EpsTaskStatisticsServiceImpl.java @@ -204,7 +204,7 @@ public class EpsTaskStatisticsServiceImpl implements IEpsTaskStatisticsService EpsTaskStatistics updateData = new EpsTaskStatistics(); updateData.setId(epsTaskStatistics.getId()); updateData.setTaskStatus("2"); - updateData.setPercentile95(percentile95.setScale(0, RoundingMode.HALF_UP)); + updateData.setPercentile95(percentile95.setScale(2, RoundingMode.HALF_UP)); updateData.setUpdateTime(DateUtils.getNowDate()); epsTaskStatisticsMapper.updateEpsTaskStatistics(updateData); } @@ -232,7 +232,7 @@ public class EpsTaskStatisticsServiceImpl implements IEpsTaskStatisticsService EpsTaskStatistics updateData = new EpsTaskStatistics(); updateData.setId(epsTaskStatistics.getId()); updateData.setTaskStatus("2"); - updateData.setPercentile95(percentile95.setScale(0, RoundingMode.HALF_UP)); + updateData.setPercentile95(percentile95.setScale(2, RoundingMode.HALF_UP)); updateData.setUpdateTime(DateUtils.getNowDate()); epsTaskStatisticsMapper.updateEpsTaskStatistics(updateData); } @@ -262,7 +262,7 @@ public class EpsTaskStatisticsServiceImpl implements IEpsTaskStatisticsService ? epsNodeBandwidth.getStartTime() : epsNodeBandwidth.getMonthTime()); } // 月均日95值 - BigDecimal avgMonthly = sum95Daily.divide(BigDecimal.valueOf(daysInMonth), 0, RoundingMode.HALF_UP); + BigDecimal avgMonthly = sum95Daily.divide(BigDecimal.valueOf(daysInMonth), 2, RoundingMode.HALF_UP); // 保存计算结果 EpsTaskStatistics updateData = new EpsTaskStatistics(); updateData.setId(epsTaskStatistics.getId()); @@ -506,7 +506,7 @@ public class EpsTaskStatisticsServiceImpl implements IEpsTaskStatisticsService extractors.put("netOutSpeedData", info -> info != null && info.getOutSpeed() != null ? - new BigDecimal(info.getOutSpeed()).divide(divisor, 0, RoundingMode.HALF_UP) : + new BigDecimal(info.getOutSpeed()).divide(divisor, 2, RoundingMode.HALF_UP) : 0); extractors.put("percentile95", info -> info != null && info.getPercentile95() != null ? @@ -534,12 +534,12 @@ public class EpsTaskStatisticsServiceImpl implements IEpsTaskStatisticsService Map> extractors = new LinkedHashMap<>(); extractors.put("netInSpeedData", info -> info != null && info.getInSpeed() != null ? - info.getInSpeed().divide(divisor, 0, RoundingMode.HALF_UP) : + info.getInSpeed().divide(divisor, 2, RoundingMode.HALF_UP) : 0); extractors.put("netOutSpeedData", info -> info != null && info.getOutSpeed() != null ? - info.getOutSpeed().divide(divisor, 0, RoundingMode.HALF_UP) : + info.getOutSpeed().divide(divisor, 2, RoundingMode.HALF_UP) : 0); extractors.put("percentile95", info -> info != null && info.getPercentile95() != null ? diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InitialSwitchInfoDetailsServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InitialSwitchInfoDetailsServiceImpl.java index 40d1912..fb5cb78 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InitialSwitchInfoDetailsServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/InitialSwitchInfoDetailsServiceImpl.java @@ -470,7 +470,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe total = total.add(inSpeed); } } - return total.setScale(0, RoundingMode.HALF_UP); + return total.setScale(2, RoundingMode.HALF_UP); } @@ -926,12 +926,12 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe Map> extractors = new LinkedHashMap<>(); extractors.put("netInSpeedData", info -> info != null && info.getInSpeed() != null ? - info.getInSpeed().divide(divisor, 0, RoundingMode.HALF_UP) : + info.getInSpeed().divide(divisor, 2, RoundingMode.HALF_UP) : 0); extractors.put("netOutSpeedData", info -> info != null && info.getOutSpeed() != null ? - info.getOutSpeed().divide(divisor, 0, RoundingMode.HALF_UP) : + info.getOutSpeed().divide(divisor, 2, RoundingMode.HALF_UP) : 0); extractors.put("percentile95", info -> info != null && info.getPercentile95() != null ? diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/CalculateUtil.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/CalculateUtil.java index 2cd1fd0..1fecceb 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/CalculateUtil.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/CalculateUtil.java @@ -40,41 +40,42 @@ public class CalculateUtil { throw new UnsupportedOperationException("Unknown mode: " + mode); } } - // 1000进制换算(最小单位为bit) + // 1000进制换算(最小单位为Mbit) private static BigDecimal convertWithDecimalCoefficients(BigDecimal value, String unit) { switch (unit) { - case "B/S": // bit per second - return value.divide(new BigDecimal("1000000000"), 2, RoundingMode.HALF_UP); // 10^9 - case "KB/S": // Kilobit per second - return value.divide(new BigDecimal("1000000"), 2, RoundingMode.HALF_UP); // 10^6 - case "MB/S": // Megabit per second - return value.divide(new BigDecimal("1000"), 2, RoundingMode.HALF_UP); // 10^3 - case "GB/S": // Gigabit per second - return value.setScale(2, RoundingMode.HALF_UP); // 10^0 - case "TB/S": // Terabit per second - return value.multiply(new BigDecimal("1000")) // 10^3 + case "B/S": // 从bit/s转换为Mbit/s + return value.divide(new BigDecimal("1000000"), 2, RoundingMode.HALF_UP); // 10^6 + case "KB/S": // 从Kbit/s转换为Mbit/s + return value.divide(new BigDecimal("1000"), 2, RoundingMode.HALF_UP); // 10^3 + case "MB/S": // Mbit/s (基础单位) + return value.setScale(2, RoundingMode.HALF_UP); // 10^0 + case "GB/S": // 从Gbit/s转换为Mbit/s + return value.multiply(new BigDecimal("1000")) // 10^3 + .setScale(2, RoundingMode.HALF_UP); + case "TB/S": // 从Tbit/s转换为Mbit/s + return value.multiply(new BigDecimal("1000000")) // 10^6 .setScale(2, RoundingMode.HALF_UP); default: throw new IllegalArgumentException("Unsupported DECIMAL unit: " + unit); } } - // 1024进制换算(最小单位为bit) + // 1024进制换算(最小单位为Mbit) private static BigDecimal convertWithBinaryCoefficients(BigDecimal value, String unit) { BigDecimal base1024 = new BigDecimal(1024); BigDecimal base1048576 = base1024.multiply(base1024); // 1024^2 = 1048576 - BigDecimal base1073741824 = base1048576.multiply(base1024); // 1024^3 = 1073741824 switch (unit) { - case "B/S": // bit per second - return value.divide(base1073741824, 2, RoundingMode.HALF_UP); // 1024^3 - case "KB/S": // Kilobit per second - return value.divide(base1048576, 2, RoundingMode.HALF_UP); // 1024^2 - case "MB/S": // Megabit per second - return value.divide(base1024, 2, RoundingMode.HALF_UP); // 1024^1 - case "GB/S": // Gigabit per second - return value.setScale(2, RoundingMode.HALF_UP); // 1024^0 - case "TB/S": // Terabit per second - return value.multiply(base1024) // 1024^1 + case "B/S": // 从bit/s转换为Mbit/s + return value.divide(base1048576, 2, RoundingMode.HALF_UP); // 1024^2 + case "KB/S": // 从Kbit/s转换为Mbit/s + return value.divide(base1024, 2, RoundingMode.HALF_UP); // 1024^1 + case "MB/S": // Mbit/s (基础单位) + return value.setScale(2, RoundingMode.HALF_UP); // 1024^0 + case "GB/S": // 从Gbit/s转换为Mbit/s + return value.multiply(base1024) // 1024^1 + .setScale(2, RoundingMode.HALF_UP); + case "TB/S": // 从Tbit/s转换为Mbit/s + return value.multiply(base1048576) // 1024^2 .setScale(2, RoundingMode.HALF_UP); default: throw new IllegalArgumentException("Unsupported BINARY unit: " + unit); @@ -154,6 +155,7 @@ public class CalculateUtil { switch (bandwidthType) { case "1": case "3": + case "8": case "5": // 日带宽 return "1"; case "2": diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialBandwidthTrafficServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialBandwidthTrafficServiceImpl.java index 435d70e..dbb324e 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialBandwidthTrafficServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialBandwidthTrafficServiceImpl.java @@ -232,12 +232,12 @@ public class InitialBandwidthTrafficServiceImpl implements IInitialBandwidthTraf Map> extractors = new LinkedHashMap<>(); extractors.put("netInSpeedData", info -> info != null && info.getInSpeed() != null ? - new BigDecimal(info.getInSpeed()).divide(divisor, 0, RoundingMode.HALF_UP) : + new BigDecimal(info.getInSpeed()).divide(divisor, 2, RoundingMode.HALF_UP) : 0); extractors.put("netOutSpeedData", info -> info != null && info.getOutSpeed() != null ? - new BigDecimal(info.getOutSpeed()).divide(divisor, 0, RoundingMode.HALF_UP) : + new BigDecimal(info.getOutSpeed()).divide(divisor, 2, RoundingMode.HALF_UP) : 0); Map resultMap = EchartsDataUtils.buildEchartsData(list, InitialBandwidthTraffic::getCreateTime, extractors); resultMap.put("unit", unit); diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialSwitchInfoServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialSwitchInfoServiceImpl.java index 831fe09..e4f4248 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialSwitchInfoServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/InitialSwitchInfoServiceImpl.java @@ -156,12 +156,12 @@ public class InitialSwitchInfoServiceImpl implements IInitialSwitchInfoService Map> extractors = new LinkedHashMap<>(); extractors.put("netInSpeedData", info -> info != null && info.getInSpeed() != null ? - info.getInSpeed().divide(divisor, 0, RoundingMode.HALF_UP) : + info.getInSpeed().divide(divisor, 2, RoundingMode.HALF_UP) : 0); extractors.put("netOutSpeedData", info -> info != null && info.getOutSpeed() != null ? - info.getOutSpeed().divide(divisor, 0, RoundingMode.HALF_UP) : + info.getOutSpeed().divide(divisor, 2, RoundingMode.HALF_UP) : 0); Map resultMap = EchartsDataUtils.buildEchartsData(list, InitialSwitchInfo::getCreateTime, extractors); resultMap.put("unit", unit); diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/service/ProcessSwitchCollectDataService.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/service/ProcessSwitchCollectDataService.java index e20aabb..3fa1ef1 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/service/ProcessSwitchCollectDataService.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/service/ProcessSwitchCollectDataService.java @@ -157,8 +157,12 @@ public class ProcessSwitchCollectDataService { long millis = timestamp * 1000; Date createTime = new Date(millis / 1000 * 1000); // 去除毫秒 String timeStr = DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",createTime); + // 创建比timestamp少5分钟的时间 + long fiveMinutesEarlier = millis - (5 * 60 * 1000); // 减去5分钟的毫秒数 + Date fiveMinutesEarlierDate = new Date(fiveMinutesEarlier / 1000 * 1000); // 同样去除毫秒 // 查询临时表信息,计算实际流量值 InitialSwitchInfoTemp temp = new InitialSwitchInfoTemp(); + temp.setCreateTime(fiveMinutesEarlierDate); temp.setClientId(clientId); List tempList = initialSwitchInfoTempService.selectInitialSwitchInfoTempList(temp); if(!tempList.isEmpty()){ @@ -197,6 +201,8 @@ public class ProcessSwitchCollectDataService { } } }); + // 清空临时表对应switch信息 + initialSwitchInfoTempService.truncateSwitchInfoTemp(clientId); }else{ switchInfos.forEach(switchInfo -> { switchInfo.setClientId(clientId); @@ -204,8 +210,6 @@ public class ProcessSwitchCollectDataService { switchInfo.setSwitchIp(switchDataVo.getSwitchIp()); }); } - // 清空临时表对应switch信息 - initialSwitchInfoTempService.truncateSwitchInfoTemp(clientId); // 临时表 用来计算inSpeed outSeppd initialSwitchInfoTempService.batchInsertInitialSwitchInfoTemp(switchInfos); // 初始交换机数据入库 diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialBandwidthTrafficMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialBandwidthTrafficMapper.xml index 46664d7..2b0de9f 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialBandwidthTrafficMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialBandwidthTrafficMapper.xml @@ -134,6 +134,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and client_id = #{clientId} and name = #{name} + order by create_time desc limit 1 where client_id = #{clientId} + order by create_time desc limit 1 \ No newline at end of file diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml index f8fbec9..7d469c5 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/InitialDiskInfoMapper.xml @@ -169,6 +169,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"