优化95值计算单位、实际流量保留两位小数
This commit is contained in:
+4
-4
@@ -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);
|
||||
|
||||
// 基于平均值的较大值确定推荐单位
|
||||
|
||||
+3
-3
@@ -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 ?
|
||||
|
||||
+6
-6
@@ -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<String, Function<InitialSwitchInfoDetails, ?>> 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 ?
|
||||
|
||||
+3
-3
@@ -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<String, Function<InitialSwitchInfoDetails, ?>> 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 ?
|
||||
|
||||
@@ -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":
|
||||
|
||||
+2
-2
@@ -232,12 +232,12 @@ public class InitialBandwidthTrafficServiceImpl implements IInitialBandwidthTraf
|
||||
Map<String, Function<InitialBandwidthTraffic, ?>> 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<String, Object> resultMap = EchartsDataUtils.buildEchartsData(list, InitialBandwidthTraffic::getCreateTime, extractors);
|
||||
resultMap.put("unit", unit);
|
||||
|
||||
+2
-2
@@ -156,12 +156,12 @@ public class InitialSwitchInfoServiceImpl implements IInitialSwitchInfoService
|
||||
Map<String, Function<InitialSwitchInfo, ?>> 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<String, Object> resultMap = EchartsDataUtils.buildEchartsData(list, InitialSwitchInfo::getCreateTime, extractors);
|
||||
resultMap.put("unit", unit);
|
||||
|
||||
+6
-2
@@ -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<InitialSwitchInfoTemp> 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);
|
||||
// 初始交换机数据入库
|
||||
|
||||
@@ -134,6 +134,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="clientId != null and clientId != ''"> and client_id = #{clientId}</if>
|
||||
<if test="name != null and name != ''"> and name = #{name}</if>
|
||||
</where>
|
||||
order by create_time desc
|
||||
limit 1
|
||||
</select>
|
||||
<select id="getNetTrafficList" parameterType="InitialBandwidthTraffic" resultMap="InitialBandwidthTrafficResult">
|
||||
|
||||
@@ -182,6 +182,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<select id="getCpuInfoByClientId" parameterType="String" resultMap="InitialCpuInfoResult">
|
||||
<include refid="selectInitialCpuInfoVo"/>
|
||||
where client_id = #{clientId}
|
||||
order by create_time desc
|
||||
limit 1
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -169,6 +169,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<select id="getDistDetailsMsgByClientId" parameterType="InitialDiskInfo" resultMap="InitialDiskInfoResult">
|
||||
<include refid="selectInitialDiskInfoVo"/>
|
||||
where client_id = #{clientId} and `name`= #{name}
|
||||
order by create_time desc
|
||||
limit 1
|
||||
</select>
|
||||
<select id="getAllDistName" parameterType="String" resultType="java.util.Map">
|
||||
|
||||
@@ -144,6 +144,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="clientId != null and clientId != ''"> and client_id = #{clientId}</if>
|
||||
<if test="mount != null and mount != ''"> and mount = #{mount}</if>
|
||||
</where>
|
||||
order by create_time desc
|
||||
limit 1
|
||||
</select>
|
||||
<select id="getAllMountName" parameterType="String" resultType="java.util.Map">
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
<if test="ifOutDiscards != null "> and if_out_discards = #{ifOutDiscards}</if>
|
||||
<if test="ifInErrors != null "> and if_in_errors = #{ifInErrors}</if>
|
||||
<if test="ifOutErrors != null "> and if_out_errors = #{ifOutErrors}</if>
|
||||
<if test="createTime != null "> and create_time = #{createTime}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user