feat:mos和cct时间轴补0数据
This commit is contained in:
@@ -399,7 +399,8 @@ async function fetchMosData(neId: string) {
|
||||
console.log('MOS数据响应:', res)
|
||||
|
||||
if (res.code === 1 && Array.isArray(res.data)) {
|
||||
mosData.value = res.data
|
||||
// 使用24小时数据补全功能
|
||||
mosData.value = generate24HourTimeSeries(res.data, 'mosAvg')
|
||||
console.log('MOS数据加载完成:', mosData.value)
|
||||
|
||||
// 更新MOS图表
|
||||
@@ -440,7 +441,8 @@ async function fetchCctData(neId: string) {
|
||||
console.log('CCT数据响应:', res)
|
||||
|
||||
if (res.code === 1 && Array.isArray(res.data)) {
|
||||
cctData.value = res.data
|
||||
// 使用24小时数据补全功能
|
||||
cctData.value = generate24HourTimeSeries(res.data, 'cctAvg')
|
||||
console.log('CCT数据加载完成:', cctData.value)
|
||||
|
||||
// 更新CCT图表
|
||||
@@ -2123,6 +2125,55 @@ function calculateMosCctTimeDifference(latestData: any, previousData: any) {
|
||||
}
|
||||
}
|
||||
|
||||
// 生成24小时完整时间序列数据(用于MOS/CCT数据补全)
|
||||
function generate24HourTimeSeries(rawData: any[], dataField: string) {
|
||||
if (!rawData || rawData.length === 0) {
|
||||
// 如果没有数据,返回24个0值
|
||||
return Array.from({ length: 24 }, (_, i) => ({
|
||||
timeGroup: Math.floor(Date.now() / 1000) - (23 - i) * 3600,
|
||||
[dataField]: 0
|
||||
}))
|
||||
}
|
||||
|
||||
// 获取当前时间(秒级时间戳)
|
||||
const now = Math.floor(Date.now() / 1000)
|
||||
|
||||
// 生成过去24小时的完整时间点(每小时一个点)
|
||||
const timePoints = Array.from({ length: 24 }, (_, i) => {
|
||||
const hourTimestamp = now - (23 - i) * 3600
|
||||
return {
|
||||
timestamp: hourTimestamp,
|
||||
hourStart: Math.floor(hourTimestamp / 3600) * 3600 // 整点时间
|
||||
}
|
||||
})
|
||||
|
||||
// 将原始数据按时间分组
|
||||
const dataMap = new Map()
|
||||
rawData.forEach(item => {
|
||||
const timeGroup = Number(item.timeGroup) || 0
|
||||
const hourStart = Math.floor(timeGroup / 3600) * 3600
|
||||
dataMap.set(hourStart, item)
|
||||
})
|
||||
|
||||
// 补全24小时数据
|
||||
const completeData = timePoints.map(({ hourStart }) => {
|
||||
const existingData = dataMap.get(hourStart)
|
||||
if (existingData) {
|
||||
return {
|
||||
timeGroup: hourStart,
|
||||
[dataField]: Number(existingData[dataField]) || 0
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
timeGroup: hourStart,
|
||||
[dataField]: 0
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
return completeData
|
||||
}
|
||||
|
||||
// 辅助函数:从数据中计算MO值
|
||||
function calculateMOValueFromData(kpiEvent: any) {
|
||||
const scscf05 = Number(kpiEvent['SCSCF.05']) || 0
|
||||
|
||||
Reference in New Issue
Block a user