运维服务中台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.4 KiB

2 years ago
'use strict';
async function list (ctx) {
try {
const { models } = ctx.fs.dc;
const { clickHouse } = ctx.app.fs
const { utils: { judgeSuper, anxinStrucIdRange } } = ctx.app.fs
const { database: anxinyun } = clickHouse.anxinyun.opts.config
const { pepProjectId, groupId, sustainTimeStart, sustainTimeEnd } = ctx.query
2 years ago
const isSuper = judgeSuper(ctx)
let anxinStrucIds = null
if (!isSuper || pepProjectId) {
anxinStrucIds = await anxinStrucIdRange({ ctx, pepProjectId })
}
let whereOption = []
if (anxinStrucIds) {
whereOption.push(`${anxinyun}.t_structure.id IN (${anxinStrucIds.join(",")})`)
}
if (groupId) {
whereOption.push(`${anxinyun}.t_alarm_code.alarm_group=${groupId}`)
}
if (groupUnitId) {
whereOption.push(`${anxinyun}.t_alarm_code.alarm_group=${groupId}`)
}
if (sustainTimeStart && sustainTimeEnd) {
whereOption.push(``)
}
const alarmRes = await clickHouse.dataAlarm.query(`
SELECT
AlarmId, SourceName,
${anxinyun}.t_structure.name AS StructureName, StructureId,
${anxinyun}.t_alarm_code.name AS AlarmCodeDescribe
FROM
alarms
LEFT JOIN ${anxinyun}.t_structure
ON ${anxinyun}.t_structure.id = alarms.StructureId
LEFT JOIN ${anxinyun}.t_alarm_code
ON ${anxinyun}.t_alarm_code.code = alarms.AlarmTypeCode
${whereOption.length ? 'WHERE ' + whereOption.join(' AND ') : ''}
`).toPromise();
ctx.status = 200;
ctx.body = []
2 years ago
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: error`);
ctx.status = 400;
ctx.body = {
message: typeof error == 'string' ? error : undefined
}
}
}
async function detail (ctx) {
try {
const { models } = ctx.fs.dc;
const { clickHouse } = ctx.app.fs
const { alarmId } = ctx.query
const detailRes = await clickHouse.dataAlarm.query(`
SELECT * FROM alarm_details WHERE AlarmId = '${alarmId}' ORDER BY Time ASC
`).toPromise()
ctx.status = 200;
ctx.body = detailRes
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: error`);
ctx.status = 400;
ctx.body = {
message: typeof error == 'string' ? error : undefined
}
}
}
2 years ago
module.exports = {
list,
detail
2 years ago
};