Browse Source

EM推送

dev
CODE 2 years ago
parent
commit
a0e280a81d
  1. 104
      api/app/lib/schedule/alarms_push.js

104
api/app/lib/schedule/alarms_push.js

@ -15,7 +15,7 @@ module.exports = function (app, opts) {
// interval: '12 0 0 0 */1 *',
immediate: isDev,
proRun: !isDev,
// proRun: true
// disabled: true
},
async () => {
try {
@ -140,11 +140,6 @@ module.exports = function (app, opts) {
}
}
console.log('corPomsProject', corPomsProject);
console.log('pepProjectName_', pepProjectName_);
console.log('pepProject_name', pepProject_name);
const anxinProjectId = [...curAnxinProjectId]
// 查当前 poms 下的结构物 并把不包含的去掉
// 可能有结构物已解绑
@ -198,8 +193,6 @@ module.exports = function (app, opts) {
})
})
console.log('strucListRes', strucListRes);
let strucThingId = []
let strucMap = {}
let searchStrucIds = strucListRes.map(s => {
@ -505,10 +498,6 @@ module.exports = function (app, opts) {
if (c.alarmSubType) dataAlarmSubType = dataAlarmSubType.concat(c.alarmSubType['device_exception'])
}
console.log('dataAlarmGroupOption', dataAlarmGroupOption);
console.log('searchStrucIds', searchStrucIds);
// 查数据告警 三警合一
if (dataAlarmGroupOption.length && searchStrucIds.length) {
dataAlarmGroupOption.push(-1)
@ -742,7 +731,6 @@ module.exports = function (app, opts) {
k: 'factor',
// f: (d) => {
// // d.factor.join('<b/>')
// // console.log(21211231131,d.factor);
// let data = []
// d.factor.map(f => data.push(f.name + '(' + f.breakData + '/' + f.sum + ')'))
// return data.join('<br/>')
@ -890,10 +878,10 @@ module.exports = function (app, opts) {
let dataAlarmG45 = [];
let deviceStatistic = new Set()
let dataAlarmDetails = []
if (proDebug) {
console.log(`查得数据告警 ${dataAlarms.length}`);
console.log(dataAlarms);
}
pLog(`查得数据告警 ${dataAlarms.length}`);
pLog(dataAlarms);
if (dataAlarms.length) {
const alarmIds = dataAlarms
.map(ar => "'" + ar.AlarmId + "'")
@ -904,12 +892,8 @@ module.exports = function (app, opts) {
AND AlarmState = 0
`).toPromise()
}
if (proDebug) {
console.log(`查得数据告警详情数据 ${dataAlarmDetails.length}`);
}
if (proDebug) {
console.log(`pomsStrucFactorId:`, pomsStrucFactorId);
}
pLog(`查得数据告警详情数据 ${dataAlarmDetails.length}`);
let deviceIds = new Set()
for (let d of dataAlarms) {
@ -1163,7 +1147,7 @@ module.exports = function (app, opts) {
LEFT JOIN t_device_sensor
ON t_device_sensor.sensor = t_sensor.id
WHERE
t_sensor.structure IN (${[...dataAlarmG1StructureId]})
t_sensor.structure IN (${[...dataAlarmG1StructureId]},)
AND
t_sensor.factor IN (${factorId.join(',')})
`
@ -1180,7 +1164,8 @@ module.exports = function (app, opts) {
alarms.StartTime AS StartTime,
alarms.SourceName AS SourceName,
alarms.AlarmCode AS AlarmCode,
alarms.SourceTypeId AS SourceTypeId
alarms.SourceTypeId AS SourceTypeId,
alarms.StructureId AS StructureId
FROM
alarms
WHERE
@ -1193,11 +1178,14 @@ module.exports = function (app, opts) {
).toPromise() || []
// 为设备分配自己产生的告警数据
let matchedAlarmIds = []
// 这一步能被分配的告警应该也能最终体现在邮件中
equipment.map(f => {
f.alarmDatas = []
alarmDatas.map(r => {
if (r.sourceId == f.iotaDeviceId) {
f.alarmDatas.push({ ...r })
matchedAlarmIds.push(r.alarmId)
}
})
})
@ -1238,9 +1226,60 @@ module.exports = function (app, opts) {
})
}
// console.log('数据组合', JSON.stringify(pepProject_name));
pLog('数据组合' + JSON.stringify(pepProject_name))
// 上面的代码自内而外构建数据
// 下面的逻辑自外向内!!!
// 处理那些没有被匹配到的告警信息
// 将设备没有绑定到测点的告警也推出去
for (let a of alarmDatas) {
if (!matchedAlarmIds.includes(a.alarmId)) {
let curStruc = strucMap[a.StructureId]
if (curStruc) {
// curStruc 可以推出 告警属于哪个 project -> pomsProject
let curProject = pepProject_name.filter(p => p.anxinProjectId && p.anxinProjectId.includes(curStruc.projectId));
for (let cp of curProject) {
// cp.projects 是结构物信息
let curStruc = cp.projects.find(cpp => cpp.id == a.StructureId)
if (!curStruc) {
console.error(`没有查到结构物信息:${a.StructureId}?!不应该不应该!`);
} else {
// let emptyFactor = { id: -1 }
let emptyFactor = curStruc.factor.find(f => f.id == -1)
if (!emptyFactor) {
curStruc.factor.push({
id: -1,
devices: [{
alarmDatas: [
{ ...a }
],
iotaDeviceId: a.sourceId,
name: a.SourceName,
structureId: a.StructureId,
}]
})
} else {
let curDevice = emptyFactor.devices.find(d => d.iotaDeviceId == a.sourceId)
if (!curDevice) {
emptyFactor.devices.push({
alarmDatas: [
{ ...a }
],
iotaDeviceId: a.sourceId,
name: a.SourceName,
structureId: a.StructureId,
})
} else {
curDevice.alarmDatas.push({ ...a })
}
}
}
}
}
}
}
pepProject_name.forEach(h => {
let rowspan1 = 0
if (h.projects.length) {
@ -1301,7 +1340,7 @@ module.exports = function (app, opts) {
h.rowspan = rowspan1
})
dataAlarmG1 = pepProject_name.filter(b => b.projects && b.projects.length > 0) || []
dataAlarmG1 = pepProject_name //.filter(b => b.projects && b.projects.length > 0) || []
}
@ -1359,7 +1398,7 @@ module.exports = function (app, opts) {
break;
case 'factor':
if (showOne3 && showOne4) {
tableData += `<th rowspan=${f.rowspan}>${(f['name'] + '(' + f.problem + '/' + f.devicesLength + ')') || ''}</th>`
tableData += `<th rowspan=${f.rowspan}>${((f['name'] || '--') + '(' + f.problem + '/' + f.devicesLength + ')') || ''}</th>`
}
break;
case 'SourceName':
@ -1405,7 +1444,6 @@ module.exports = function (app, opts) {
alarmHtml += `<tr><td colspan="${alarmTitleArr.length}" style="background-color:#ffff00">` + tableTitlePrefix + '</td></tr>'
alarmHtml += alarmHtmlTitle
alarmHtml += alarmContent
console.log('表格结果', alarmContent);
alarmHtml += '</table><br/>'
return alarmHtml
@ -1525,9 +1563,7 @@ module.exports = function (app, opts) {
})
}
if (proDebug) {
console.log('ifEmailSend:', ifEmailSend);
}
pLog(`ifEmailSend:${ifEmailSend}`);
if (ifEmailSend) {
// 查接收人的信息
@ -1551,9 +1587,7 @@ module.exports = function (app, opts) {
emails = ['1650192445@qq.com']
// emails = ['wen.lele@free-sun.com.cn']
}
if (proDebug) {
console.log('emails', emails);
}
if (emails.length) {
pLog(`推送给${emails.length}`);
pLog(moment().format())

Loading…
Cancel
Save