/** * 异常数据相关逻辑代理 */ import index from '@/utils/exception_common_function/index.js' function findPeriod(dataList, exceptionCheck, specilOption) { let start, last = undefined let isException = false const res = [] dataList.forEach((e) => { // 判断前后相邻两个数据的时间点是否超过15分钟 if (last && !isException) { if (typeof specilOption === 'function' && specilOption(last, e)) { res.push([last.lst, e.lst]) } } if (typeof exceptionCheck === 'function' && exceptionCheck(e)) { if (!isException) { start = e isException = true } } else { if (isException) { res.push([start.lst, last.lst]) isException = false } } last = e }) return res } export default { /** * 获取数据的异常时段数组 * @param {*} beginTime * @param {*} endTime * @param {*} dataList * @param {*} exceptionType * @returns */ getExceptionArea(beginTime, endTime, dataList, exceptionType) { if (dataList.length == 0) { return [] } const d1 = dataList[0].lst const d2 = dataList[dataList.length - 1].lst switch (exceptionType) { // 有效率异常 case '8': // 统计数据缺失时段和数据标识不为N的时段 return findPeriod( dataList, (data) => { return data.flag != 'N' }, (last, data) => { return index.diffFiftyMinutesNum(last.lst, data.lst) > 1 } ) //单日超标次数临界异常 case '6': return findPeriod(dataList, (data) => { return data.dustValue > 1 }) //数据超低 //超标 //数据长时段无波动 //量级突变 //临近超标异常 //变化趋势异常 case '1': case '2': case '3': case '4': case '5': case '7': return [[d1, d2]] //数据缺失异常 case '0': return [[beginTime, endTime]] } } }