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