优化图形分析根据可选时间补0逻辑、优化流量图形单位可选功能。
This commit is contained in:
+37
-3
@@ -52,7 +52,7 @@ public class EchartsDataUtils {
|
||||
return Math.round(microseconds / 1_000_000.0 * 100.0) / 100.0;
|
||||
}
|
||||
/**
|
||||
* 构建ECharts图表数据(带时间补全和0值填充)
|
||||
* 构建ECharts图表数据(带时间补全和特殊值处理)
|
||||
* @param list 原始数据列表
|
||||
* @param timeExtractor 时间字段提取函数
|
||||
* @param dataExtractors 数据提取器Map
|
||||
@@ -112,6 +112,9 @@ public class EchartsDataUtils {
|
||||
dataExtractors.keySet().forEach(name ->
|
||||
yData.put(name, new ArrayList<Object>()));
|
||||
|
||||
// 特殊处理:查找percentile95的固定值
|
||||
Object fixedPercentile95Value = findFixedValueForPercentile95(sortedList, dataExtractors);
|
||||
|
||||
for (Date time : fullTimeSeries) {
|
||||
// X轴数据
|
||||
xAxisData.add(parseDateToStr(time));
|
||||
@@ -126,11 +129,13 @@ public class EchartsDataUtils {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Object> seriesData = (List<Object>) yData.get(name);
|
||||
|
||||
if (item != null) {
|
||||
Object value = extractor.apply(item);
|
||||
seriesData.add(value != null ? value : 0);
|
||||
seriesData.add(value != null ? value : getDefaultValue(name, fixedPercentile95Value));
|
||||
} else {
|
||||
seriesData.add(0); // 补0
|
||||
// 数据补全
|
||||
seriesData.add(getDefaultValue(name, fixedPercentile95Value));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -147,6 +152,35 @@ public class EchartsDataUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找percentile95的固定值(第一个非零值)
|
||||
*/
|
||||
private static <T> Object findFixedValueForPercentile95(List<T> list, Map<String, Function<T, ?>> dataExtractors) {
|
||||
if (!dataExtractors.containsKey("percentile95")) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Function<T, ?> extractor = dataExtractors.get("percentile95");
|
||||
for (T item : list) {
|
||||
Object value = extractor.apply(item);
|
||||
if (value != null && !value.equals(0)) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据指标名称获取默认值
|
||||
*/
|
||||
private static Object getDefaultValue(String metricName, Object fixedPercentile95Value) {
|
||||
if ("percentile95".equals(metricName) && !fixedPercentile95Value.equals(0)) {
|
||||
return fixedPercentile95Value; // percentile95使用固定值
|
||||
} else {
|
||||
return 0; // 其他指标补0
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 字符串转日期
|
||||
*/
|
||||
|
||||
+5
-1
@@ -38,6 +38,10 @@ public class SpeedUtils {
|
||||
public BigDecimal getLastOutSpeedGb() { return lastOutSpeedGb; }
|
||||
public String getRecommendedUnit() { return recommendedUnit; }
|
||||
|
||||
public void setRecommendedUnit(String recommendedUnit) {
|
||||
this.recommendedUnit = recommendedUnit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format(
|
||||
@@ -65,7 +69,7 @@ public class SpeedUtils {
|
||||
BigDecimal.ZERO, BigDecimal.ZERO,
|
||||
BigDecimal.ZERO, BigDecimal.ZERO,
|
||||
BigDecimal.ZERO, BigDecimal.ZERO,
|
||||
"bit"
|
||||
"Kb"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -605,6 +605,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe
|
||||
String unit = result.getRecommendedUnit();
|
||||
if(epsInitialTrafficData.getUnit() != null){
|
||||
unit = epsInitialTrafficData.getUnit();
|
||||
result.setRecommendedUnit(unit);
|
||||
}
|
||||
BigDecimal divisor = SpeedUtils.getDivisor(unit);
|
||||
Map<String, Function<EpsInitialTrafficData, ?>> extractors = new LinkedHashMap<>();
|
||||
|
||||
+9
-1
@@ -769,6 +769,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
|
||||
EpsNodeBandwidth nodeBandwidth = epsNodeBandwidthList.get(0);
|
||||
percentile95 = nodeBandwidth.getBandwidthResult();
|
||||
}
|
||||
dailyQuery.setClientId(clientId);
|
||||
dailyQuery.setName(rmEpsTopologyManagement.getInterfaceName());
|
||||
Map<String, Object> resultMap = switchNetSpeedEcharts(dailyQuery, percentile95);
|
||||
// 查询端口备注信息
|
||||
@@ -868,6 +869,7 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
|
||||
EpsNodeBandwidth nodeBandwidth = epsNodeBandwidthList.get(0);
|
||||
percentile95 = nodeBandwidth.getBandwidthResult();
|
||||
}
|
||||
dailyQuery.setClientId(clientId);
|
||||
dailyQuery.setName(rmEpsTopologyManagement.getInterfaceName());
|
||||
Map<String, Object> resultMap = switchNetSpeedEcharts(dailyQuery, percentile95);
|
||||
// 查询端口备注信息
|
||||
@@ -923,12 +925,16 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
|
||||
*/
|
||||
public Map<String, Object> switchNetSpeedEcharts(InitialSwitchInfoDetails initialSwitchInfoDetails, BigDecimal percentile95) {
|
||||
List<InitialSwitchInfoDetails> list = initialSwitchInfoDetailsMapper.getswitchDetailList(initialSwitchInfoDetails);
|
||||
if(list == null){
|
||||
list = new ArrayList<>();
|
||||
}
|
||||
try {
|
||||
list.forEach(data -> data.setPercentile95(SpeedUtils.mbitToBit(percentile95)));
|
||||
SpeedUtils.SpeedResult result = SpeedUtils.calculateWithAverageBasedUnit(list, "inSpeed", "outSpeed");
|
||||
String unit = result.getRecommendedUnit();
|
||||
if(initialSwitchInfoDetails.getUnit() != null){
|
||||
unit = initialSwitchInfoDetails.getUnit();
|
||||
result.setRecommendedUnit(unit);
|
||||
}
|
||||
BigDecimal divisor = SpeedUtils.getDivisor(unit);
|
||||
Map<String, Function<InitialSwitchInfoDetails, ?>> extractors = new LinkedHashMap<>();
|
||||
@@ -945,7 +951,9 @@ public class InitialSwitchInfoDetailsServiceImpl implements IInitialSwitchInfoDe
|
||||
info != null && info.getPercentile95() != null ?
|
||||
info.getPercentile95().divide(divisor, 2, RoundingMode.HALF_UP) :
|
||||
0);
|
||||
Map<String, Object> resultMap = EchartsDataUtils.buildEchartsData(list, InitialSwitchInfoDetails::getCreateTime, extractors);
|
||||
Map<String, Object> resultMap = EchartsDataUtils.buildEchartsDataAutoPadding(
|
||||
list, InitialSwitchInfoDetails::getCreateTime, extractors,
|
||||
initialSwitchInfoDetails.getStartTime(), initialSwitchInfoDetails.getEndTime());
|
||||
resultMap.put("other", result);
|
||||
resultMap.put("95value", percentile95);
|
||||
return resultMap;
|
||||
|
||||
+8
-2
@@ -242,7 +242,10 @@ public class InitialBandwidthTrafficServiceImpl implements IInitialBandwidthTraf
|
||||
info != null && info.getOutSpeed() != null ?
|
||||
new BigDecimal(info.getOutSpeed()).divide(divisor, 2, RoundingMode.HALF_UP) :
|
||||
0);
|
||||
Map<String, Object> resultMap = EchartsDataUtils.buildEchartsData(list, InitialBandwidthTraffic::getCreateTime, extractors);
|
||||
Map<String, Object> resultMap = EchartsDataUtils.buildEchartsDataAutoPadding(
|
||||
list, InitialBandwidthTraffic::getCreateTime, extractors,
|
||||
initialBandwidthTraffic.getStartTime(), initialBandwidthTraffic.getEndTime()
|
||||
);
|
||||
resultMap.put("unit", unit);
|
||||
return resultMap;
|
||||
} catch (Exception e){
|
||||
@@ -271,7 +274,10 @@ public class InitialBandwidthTrafficServiceImpl implements IInitialBandwidthTraf
|
||||
extractors.put("inDroppedData", info -> info.getInDropped());
|
||||
extractors.put("outDroppedData", info -> info.getOutDropped());
|
||||
|
||||
return EchartsDataUtils.buildEchartsData(list, InitialBandwidthTraffic::getCreateTime, extractors);
|
||||
return EchartsDataUtils.buildEchartsDataAutoPadding(
|
||||
list, InitialBandwidthTraffic::getCreateTime, extractors,
|
||||
initialBandwidthTraffic.getStartTime(), initialBandwidthTraffic.getEndTime()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+16
-4
@@ -166,7 +166,10 @@ public class InitialSwitchInfoServiceImpl implements IInitialSwitchInfoService
|
||||
info != null && info.getOutSpeed() != null ?
|
||||
info.getOutSpeed().divide(divisor, 2, RoundingMode.HALF_UP) :
|
||||
0);
|
||||
Map<String, Object> resultMap = EchartsDataUtils.buildEchartsData(list, InitialSwitchInfo::getCreateTime, extractors);
|
||||
Map<String, Object> resultMap = EchartsDataUtils.buildEchartsDataAutoPadding(
|
||||
list, InitialSwitchInfo::getCreateTime, extractors,
|
||||
initialSwitchInfo.getStartTime(), initialSwitchInfo.getEndTime()
|
||||
);
|
||||
resultMap.put("unit", unit);
|
||||
return resultMap;
|
||||
} catch (Exception e){
|
||||
@@ -186,7 +189,10 @@ public class InitialSwitchInfoServiceImpl implements IInitialSwitchInfoService
|
||||
Map<String, Function<InitialSwitchInfo, ?>> extractors = new LinkedHashMap<>();
|
||||
extractors.put("netInDiscardsData", info -> info.getIfInDiscards());
|
||||
extractors.put("netOutDiscardsData", info -> info.getIfOutDiscards());
|
||||
return EchartsDataUtils.buildEchartsData(list, InitialSwitchInfo::getCreateTime, extractors);
|
||||
return EchartsDataUtils.buildEchartsDataAutoPadding(
|
||||
list, InitialSwitchInfo::getCreateTime, extractors,
|
||||
initialSwitchInfo.getStartTime(), initialSwitchInfo.getEndTime()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -200,7 +206,10 @@ public class InitialSwitchInfoServiceImpl implements IInitialSwitchInfoService
|
||||
Map<String, Function<InitialSwitchInfo, ?>> extractors = new LinkedHashMap<>();
|
||||
extractors.put("netInTotalData", info -> info.getInBytes().multiply(new BigDecimal(8)));
|
||||
extractors.put("netOutTotalData", info -> info.getOutBytes().multiply(new BigDecimal(8)));
|
||||
return EchartsDataUtils.buildEchartsData(list, InitialSwitchInfo::getCreateTime, extractors);
|
||||
return EchartsDataUtils.buildEchartsDataAutoPadding(
|
||||
list, InitialSwitchInfo::getCreateTime, extractors,
|
||||
initialSwitchInfo.getStartTime(), initialSwitchInfo.getEndTime()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -214,6 +223,9 @@ public class InitialSwitchInfoServiceImpl implements IInitialSwitchInfoService
|
||||
Map<String, Function<InitialSwitchInfo, ?>> extractors = new LinkedHashMap<>();
|
||||
extractors.put("netInErrDiscardsData", info -> info.getIfInErrors());
|
||||
extractors.put("netOutErrDiscardsData", info -> info.getIfOutErrors());
|
||||
return EchartsDataUtils.buildEchartsData(list, InitialSwitchInfo::getCreateTime, extractors);
|
||||
return EchartsDataUtils.buildEchartsDataAutoPadding(
|
||||
list, InitialSwitchInfo::getCreateTime, extractors,
|
||||
initialSwitchInfo.getStartTime(), initialSwitchInfo.getEndTime()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
<if test="defaultParams != null and defaultParams != ''"> and default_params = #{defaultParams}</if>
|
||||
<if test="taskName != null and taskName != ''"> and task_name like concat('%', #{taskName}, '%')</if>
|
||||
</where>
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectRmDeploymentPolicyById" parameterType="Long" resultMap="RmDeploymentPolicyResult">
|
||||
|
||||
Reference in New Issue
Block a user