|
|
@ -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.add(d.SourceId) |
|
|
|
} |
|
|
|
if (apMergeDeVeAlarms[d.StructureId]) { |
|
|
|
apMergeDeVeAlarms[d.StructureId].data_exception.push(d) |
|
|
|
} else { |
|
|
@ -886,6 +893,27 @@ module.exports = function (app, opts) { |
|
|
|
} |
|
|
|
|
|
|
|
if (Object.keys(apMergeDeVeAlarms).length) { |
|
|
|
if (proDebug) { |
|
|
|
console.log(`查得数据异常、视频异常合并の告警:`); |
|
|
|
console.log(apMergeDeVeAlarms); |
|
|
|
} |
|
|
|
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 |
|
|
|
${device4Search.length > 1 ? `IN (${device4Search.join(',')})` : `= ${device4Search[0]}`} |
|
|
|
|
|
|
|
`).toPromise()
|
|
|
|
} |
|
|
|
if (proDebug) { |
|
|
|
console.log(`相关设备及测点信息:`); |
|
|
|
console.log(deviceSensorRes); |
|
|
|
} |
|
|
|
let alarmTitle = dataAlarmTitle.concat( |
|
|
|
videoAlarmTitle.slice(2).map(v => { |
|
|
|
return { |
|
|
@ -900,9 +928,16 @@ module.exports = function (app, opts) { |
|
|
|
let alarmData = [] |
|
|
|
for (let aKey in apMergeDeVeAlarms) { |
|
|
|
let curStrucAlarm = apMergeDeVeAlarms[aKey] |
|
|
|
|
|
|
|
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) { |
|
|
|