import Window from '../core/Window' import DBService from '../db/DBService' import logger from '../logger/Logger' import DateUtil from '../util/DateUtil' import BaseEvent from '../core/BaseEvent' // 监听每小时计算连通率事件 export default class HourlyConnectRateEvent extends BaseEvent { async callback(window: Window) { try { let begin = window.getBegin() let date = DateUtil.getDate(begin) let hour = DateUtil.getHour(begin) let result = window.getResult() let data: string[][] = [] for (const deviceId in result) { let country2Count = result[deviceId] for (const country in country2Count) { let metric = country2Count[country] data.push([date, hour, deviceId, country, metric["total"], metric["fail"], JSON.stringify(metric["errors"])]) } } if (data.length !=0) { let sql = "INSERT INTO hourly_miner_country_connect_rate(date, hour, deviceId, country, total, fail, errors) VALUES ?" let dbService = new DBService() let { err } = await dbService.insert(sql, [data]) if (err) { logger.info(err) } } logger.info(`插入每小时国家到矿机的连通数据 ${data.length}`) } catch (error) { logger.info(error) } } }