'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 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 = [] } 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 } } } module.exports = { list, detail };