From c68e972af70518aae934c209359c527ed3bd9aba Mon Sep 17 00:00:00 2001 From: "gao.zhiyuan" Date: Fri, 16 Dec 2022 09:04:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E5=BE=97=E8=AE=BE=E5=A4=87=E5=92=8C?= =?UTF-8?q?=E6=B5=8B=E7=82=B9=E7=9A=84=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/lib/schedule/alarms_push.js | 33 +++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/api/app/lib/schedule/alarms_push.js b/api/app/lib/schedule/alarms_push.js index f25e973..757202f 100644 --- a/api/app/lib/schedule/alarms_push.js +++ b/api/app/lib/schedule/alarms_push.js @@ -4,7 +4,7 @@ let isDev = false // isDev = true let proDebug = false -// proDebug = true +proDebug = true module.exports = function (app, opts) { const alarmsPush = app.fs.scheduleInit( @@ -681,7 +681,9 @@ module.exports = function (app, opts) { console.log(`pomsStrucFactorId:`, pomsStrucFactorId); } + let deviceIds = new Set() for (let d of dataAlarms) { + d = { ...d, stationId: d.id } /** 按监测因素筛选 且为测点告警 */ // if (pomsStrucFactorId && d.SourceTypeId == 2) { @@ -718,6 +720,11 @@ module.exports = function (app, opts) { apMergeDeVeAnxinProjectId_.some(pid => pid == (strucMap[d.StructureId] || {}).projectId) ) ) { + // SourceTypeId 0: 'DTU' / 1: '传感器' / 2: '测点' + + if (d.SourceTypeId != 2) { + deviceIds.push(d.SourceId) + } if (apMergeDeVeAlarms[d.StructureId]) { apMergeDeVeAlarms[d.StructureId].data_exception.push(d) } else { @@ -886,6 +893,16 @@ module.exports = function (app, opts) { } if (Object.keys(apMergeDeVeAlarms).length) { + + let deviceSensorRes = [] + if (deviceIds.size) { + const device4Search = [...deviceIds] + .map(id => "'" + id + "'") + deviceSensorRes = await clickHouse.anxinyun.query(` + SELECT iota_device_id, sensor FROM t_device_sensor WHERE iota_device_id IN (${device4Search.join(',')}, '-1') + `).toPromise() + } + let alarmTitle = dataAlarmTitle.concat( videoAlarmTitle.slice(2).map(v => { return { @@ -900,9 +917,21 @@ module.exports = function (app, opts) { let alarmData = [] for (let aKey in apMergeDeVeAlarms) { let curStrucAlarm = apMergeDeVeAlarms[aKey] + if (proDebug) { + console.log(`查得数据异常、视频异常合并の告警:`); + console.log(apMergeDeVeAlarms); + console.log(`相关设备及测点信息:`); + console.log(deviceSensorRes); + } for (let de of curStrucAlarm.data_exception) { + if (!de.id) { + let corSensor = deviceSensorRes.find(ds => ds.iota_device_id == de.SourceId) + if (corSensor) { + de.id = corSensor.sensor + } + } let corVideoException = curStrucAlarm.video_exception.filter(v => { - // ! de.id 是告警的关联查出来的测点的id + // ! de.id 是告警信息关联查出来的测点的id return v.station.some(vs => vs.id == de.id) }) if (!corVideoException.length) {