diff --git a/api/app/lib/controllers/project/group.js b/api/app/lib/controllers/project/group.js index a74b160..d358602 100644 --- a/api/app/lib/controllers/project/group.js +++ b/api/app/lib/controllers/project/group.js @@ -204,7 +204,7 @@ async function groupStatistic (ctx) { for (let pg of progectGroupList) { let strucCount = 0 let maxOffLineTime = 0 - let todayAlarms=0 + let todayAlarms = 0 let anxinProjectCount = groupProjectRes.reduce((count, gp) => { if (pg.pomsProjectIds.some(id => gp.id == id)) { // 如果 pg 分组信息 存储的 pomsProjectIds 运维项目id 和 真正的 groupProjectRes 运维项目id 相等 @@ -215,10 +215,10 @@ async function groupStatistic (ctx) { strucRes.filter(s => gp.anxinProjectId.includes(s.projectId)) strucCount += strucIdArr_.length //所有结构物的告警 - const ss=alarmRes.filter(p=>strucIdArr_.some(q=>q.structure==p.StructureId)) - todayAlarms= ss.reduce((p,c)=>{ - return p+c.alarmCount - },0) + const ss = alarmRes.filter(p => strucIdArr_.some(q => q.structure == p.StructureId)) + todayAlarms = ss.reduce((p, c) => { + return p + c.alarmCount + }, 0) // for (let { dataValues: off } of deviceOffTimeRes) { if (strucIdArr_.some((s) => s.strucId == off.structure)) { @@ -272,20 +272,13 @@ async function groupStatisticOnline (ctx) { anxinProjectIds.add(pid) } - const strucIdRes = await clickHouse.anxinyun.query( - ` - SELECT * - FROM t_project_structure - WHERE project IN (${[...anxinProjectIds].join(',')}, -1) - ` - ).toPromise() // 统计安心云项目下的结构物 const strucRes = anxinProjectIds.length ? await clickHouse.anxinyun.query( ` SELECT t_project.id AS projectId, - t_structure.id AS strucId, - t_structure.name AS strucName, + t_structure.id AS id, + t_structure.name AS name, project_state FROM t_project @@ -318,16 +311,10 @@ async function groupStatisticOnline (ctx) { let strucIds = new Set() for (let struc of strucRes) { - strucIds.add(struc.strucId) + strucIds.add(struc.id) } let strucIdArr = Array.from(strucIds) - // const strucRes = strucIdArr.length ? await clickHouse.anxinyun.query( - // ` - // SELECT name, id FROM t_structure WHERE id IN (${[...strucIdArr].join(',')}); - // ` - // ).toPromise() : [] - // 查中断时间 const maxOfflineTimeRes = strucIdArr.length ? await models.StructureOff.findAll({ where: { @@ -373,7 +360,6 @@ async function groupStatisticOnline (ctx) { "size": 10000 } }) - console.log('es数据,', onlineRes.hits.hits.length, onlineRes.hits.hits) for (let struc of strucRes) { let curOnline = @@ -426,27 +412,50 @@ async function groupStatisticAlarm (ctx) { anxinProjectIds.add(pid) } - const strucIdRes = anxinProjectIds.size ? await clickHouse.anxinyun.query( - ` - SELECT * - FROM t_project_structure - WHERE project IN (${[...anxinProjectIds].join(',')}, -1) + // 统计安心云项目下的结构物 + const strucRes = anxinProjectIds.length ? await clickHouse.anxinyun.query( ` + SELECT + t_project.id AS projectId, + t_structure.id AS id, + t_structure.name AS name, + project_state + FROM + t_project + LEFT JOIN + t_project_structure + ON t_project_structure.project = t_project.id + LEFT JOIN + t_project_structuregroup + ON t_project_structuregroup.project = t_project.id + LEFT JOIN + t_structuregroup_structure + ON t_structuregroup_structure.structuregroup = t_project_structuregroup.structuregroup + LEFT JOIN + t_project_construction + ON t_project_construction.project = t_project.id + LEFT JOIN + t_structure_site + ON t_structure_site.siteid = t_project_construction.construction + RIGHT JOIN + t_structure + ON t_structure.id = t_project_structure.structure + OR t_structure.id = t_structuregroup_structure.structure + OR t_structure.id = t_structure_site.structid + WHERE + project_state != -1 + AND + t_project.id IN (${anxinProjectIds.join(',')},-1) + ` ).toPromise() : [] + let strucIds = new Set() - for (let struc of strucIdRes) { - strucIds.add(struc.structure) + for (let struc of strucRes) { + strucIds.add(struc.id) } let strucIdArr = Array.from(strucIds) - const strucRes = strucIdArr.length ? await clickHouse.anxinyun.query( - ` - SELECT name, id FROM t_structure WHERE id IN (${[...strucIdArr].join(',')}); - ` - ).toPromise() : [] - // 查一周内超阈值告警的个数 - // strucIdArr = [1] const alarmRes = strucIdArr.length ? await clickHouse.dataAlarm.query( ` SELECT StructureId,count(StructureId) AS alarmCount