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.
192 lines
7.0 KiB
192 lines
7.0 KiB
|
|
const moment = require('moment');
|
|
|
|
async function getStructures (ctx) {
|
|
try {
|
|
const { models } = ctx.fs.dc;
|
|
const { clickHouse } = ctx.app.fs
|
|
const { pomsProjectId } = ctx.query
|
|
let bindRes=[]
|
|
//选择全局就是查询所有项目下的结构物,有选择项目就只查询对应项目的结构物
|
|
if(pomsProjectId){
|
|
bindRes = await models.ProjectCorrelation.findAll({where:{id:{ $in: pomsProjectId.split(',') }}})
|
|
}else{
|
|
bindRes = await models.ProjectCorrelation.findAll()
|
|
}
|
|
let anxinProjectIds = new Set()
|
|
for (let b of bindRes) {
|
|
if (b.anxinProjectId.length) {
|
|
for (let aid of b.anxinProjectId) {
|
|
anxinProjectIds.add(aid)
|
|
}
|
|
}
|
|
}
|
|
let undelStrucRes=[]
|
|
// if (bindRes) {
|
|
// undelStrucRes = anxinProjectIds.size ?
|
|
// await clickHouse.anxinyun.query(
|
|
// `
|
|
// SELECT
|
|
// t_structure.id AS strucId,
|
|
// t_structure.name AS strucName
|
|
// 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)
|
|
// AND t_structure.external_platform is not null
|
|
// ORDER BY strucId
|
|
// `
|
|
// ).toPromise() :
|
|
// []
|
|
// }
|
|
undelStrucRes.push({strucId:4036,strucName:'象山港大桥'})
|
|
undelStrucRes.push({strucId:1,strucName:'象山港大'})
|
|
ctx.status = 200;
|
|
ctx.body = undelStrucRes
|
|
} catch (error) {
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: error`);
|
|
ctx.status = 400;
|
|
ctx.body = {
|
|
message: typeof error == 'string' ? error : undefined
|
|
}
|
|
}
|
|
}
|
|
|
|
async function getFactors (ctx) {
|
|
try {
|
|
const { models } = ctx.fs.dc;
|
|
const { clickHouse } = ctx.app.fs
|
|
const { structId,cacl } = ctx.query
|
|
let list=[]
|
|
if(cacl){
|
|
const factorList=await clickHouse.alarmLocal.query(`select distinct SafetyFactorTypeId, SafetyFactorTypeName from sensors where PlatformStructureId =${structId}`).toPromise()
|
|
let fList=factorList.map(m=>m.SafetyFactorTypeId)
|
|
list=await clickHouse.alarmLocal.query(`select distinct FactorID, Name,Items,ItemNames from factors where FactorID in (${[...fList,-1].join(',')})`).toPromise()
|
|
}else{
|
|
list=await clickHouse.alarmLocal.query(`select distinct SafetyFactorTypeId, SafetyFactorTypeName from sensors where PlatformStructureId =${structId}`).toPromise()
|
|
}
|
|
ctx.body=list
|
|
ctx.status=200
|
|
}catch(error){
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: error`);
|
|
ctx.status = 400;
|
|
ctx.body = {
|
|
message: typeof error == 'string' ? error : undefined
|
|
}
|
|
}
|
|
}
|
|
//查询设备
|
|
async function getSensors (ctx) {
|
|
try {
|
|
const { models } = ctx.fs.dc;
|
|
const { clickHouse } = ctx.app.fs
|
|
const { structId,SafetyFactorTypeId } = ctx.query
|
|
const list=await clickHouse.alarmLocal.query(`
|
|
select distinct SensorId,SensorLocationDescription,Project
|
|
from sensors where PlatformStructureId =${structId}
|
|
and SafetyFactorTypeId=${SafetyFactorTypeId}`).toPromise()
|
|
ctx.body=list
|
|
ctx.status=200
|
|
}catch(error){
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: error`);
|
|
ctx.status = 400;
|
|
ctx.body = {
|
|
message: typeof error == 'string' ? error : undefined
|
|
}
|
|
}
|
|
}
|
|
//根据设备id和监测因素id查询监测数据
|
|
async function getMonitorData (ctx) {
|
|
try{
|
|
const { clickHouse } = ctx.app.fs
|
|
const { factorId,sensorId,startTime, endTime,limit,page } = ctx.query
|
|
const offset=page*limit
|
|
const factorsList=await clickHouse.alarmLocal.query(`SELECT FactorID,Items,ItemNames,ItemUnits FROM factors
|
|
WHERE FactorID=${factorId}
|
|
`).toPromise()||[]
|
|
const id=sensorId&&sensorId.replace('-',':')
|
|
const monitorData=await clickHouse.alarmLocal.query(`SELECT SensorId,CollectTime,Values FROM themes
|
|
WHERE SensorId in ('${id}')
|
|
AND CollectTime >= toDate('${startTime}')
|
|
AND CollectTime <= toDate('${endTime}')
|
|
LIMIT ${limit} OFFSET ${offset}
|
|
`).toPromise()||[]
|
|
console.log('vmonitorDatamonitorDatamonitorData',monitorData)
|
|
const sensor=await clickHouse.alarmLocal.query(`SELECT distinct SensorId,SensorLocationDescription FROM sensors WHERE ID='${id}'`).toPromise()
|
|
//监测项
|
|
let items={}
|
|
if(factorsList&&factorsList.length>0){
|
|
//因素解释
|
|
let factors=[]
|
|
//因素名词
|
|
let factorNames=[]
|
|
factorsList.map(item=>{
|
|
factors=item.ItemNames.split(',')
|
|
factorNames=item.Items.split(',')
|
|
factors.map(child=>{
|
|
factorNames.map(p=>{
|
|
items[p]={name:child,unit:item.ItemUnits}
|
|
})
|
|
})
|
|
})
|
|
}
|
|
//设备数据+数据
|
|
let sensors=[]
|
|
if(monitorData&&monitorData.length>0){
|
|
monitorData.map(data => {
|
|
const values = {};
|
|
Object.keys(items).forEach(key => {
|
|
const index = Object.keys(items).indexOf(key);
|
|
values[key] = data.Values[index];
|
|
});
|
|
sensors.push({ values, time: moment(data.CollectTime).format('YYYY-MM-DD HH:mm:ss') });
|
|
});
|
|
|
|
}
|
|
if(sensor&&sensor.length){
|
|
ctx.body={items,sensors:[{data:sensors,id:sensor[0].SensorId,name:sensor[0].SensorLocationDescription}]}
|
|
ctx.status=200
|
|
}else{
|
|
ctx.body={items,sensors:[]}
|
|
ctx.status=200
|
|
}
|
|
}catch(error){
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: error`);
|
|
ctx.status = 400;
|
|
ctx.body = {
|
|
message: typeof error == 'string' ? error : undefined
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
getStructures,getFactors,getSensors,getMonitorData
|
|
}
|