| import { _HttpClient } from '@delon/theme'; | 
| import { Injectable } from '@angular/core'; | 
| import { environment } from '@env/environment'; | 
| import { Observable } from 'rxjs/Observable'; | 
| import { ResultBean } from '@business/entity/grid'; | 
| import { AlarmConfig, AlarmConfigValue, AlarmSensorLevel, AlarmMode } from '@business/entity/data'; | 
|   | 
| @Injectable() | 
| export class AlarmConfigService { | 
|   private urls = { | 
|     getByOid: environment.SERVER_BASH_URL + 'alarm-config/get-by-oid', | 
|     save: environment.SERVER_BASH_URL + 'alarm-config/add-or-modify', | 
|   }; | 
|   constructor( private http: _HttpClient) { | 
|       | 
|   } | 
|   public generateAlarmConfig(sensors: {sensorKey: string} [], alarmConfig?: AlarmConfig): AlarmConfig { | 
|         const _alarmConfig: AlarmConfig = alarmConfig == null || alarmConfig.value == null ? {value: { | 
|             alarmLevels: null, | 
|             alarmMode: null | 
|         }} : alarmConfig; | 
|         let alarmLevels = _alarmConfig.value.alarmLevels; | 
|         alarmLevels = alarmLevels == null ? {} : alarmLevels; | 
|         sensors.forEach( | 
|           sensor => { | 
|                 const key = sensor.sensorKey; | 
|                 alarmLevels[key]  =  | 
|                 alarmLevels[key] == null ? | 
|                 { | 
|                   enable: false, | 
|                   increment: [0, 0, 0], | 
|                   degressEnable: false, | 
|                   degression:  [0, 0, 0] | 
|                 } : alarmLevels[key]; | 
|              } | 
|          ); | 
|          _alarmConfig.value.alarmLevels = alarmLevels; | 
|          // 报警方式 | 
|          let alarmMode = _alarmConfig.value.alarmMode; | 
|          alarmMode = alarmMode == null ? { | 
|           enable: false, | 
|           level1: null, | 
|           level2: null, | 
|           level3: null | 
|         } : alarmMode; | 
|         _alarmConfig.value.alarmMode = alarmMode; | 
|         return _alarmConfig; | 
|   } | 
|   public getByOid(oid: number): Observable<ResultBean<AlarmConfig>> { | 
|      return this.http.get(this.urls.getByOid, {organizationId: oid}); | 
|   } | 
|   public save(data: any): Observable<ResultBean<any>> { | 
|     return this.http.post(this.urls.save, data); | 
|   } | 
| } |