/// <summary> /// 创建新的报警记录对象 /// </summary> /// <param name="dev">设备信息</param> /// <param name="msite">测量位置信息</param> /// <param name="signal">振动信号信息</param> /// <param name="signalAlmSet">振动信号报警设置信息</param> /// <param name="samplingData">采集时间</param> /// <param name="value">采集数据值</param> /// <returns></returns> private DevAlmRecord CreatNewVibrationAlmRecord(Device dev, MeasureSite msite, VibSingal signal, SignalAlmSet signalAlmSet, DateTime samplingTime, float?value) { try { DevAlmRecord nRecord = new DevAlmRecord(); //GetMonitorTree getMonitorTree = new GetMonitorTree(wgRepository, deviceRepository, monitorTreeRepository); nRecord.DevID = dev.DevID; nRecord.DevName = dev.DevName; nRecord.DevNO = dev.DevNO.ToString(); nRecord.MSiteID = msite.MSiteID; string measureSiteName = string.Empty; var measureSiteType = cacheDICT.GetInstance().GetCacheType <MeasureSiteType>(p => p.ID == msite.MSiteName).FirstOrDefault(); //空判断 王颖辉 2016-08-30 if (measureSiteType != null) { measureSiteName = measureSiteType.Name; } nRecord.MSiteName = measureSiteName; nRecord.SingalID = signal.SingalID; string singalName = string.Empty; var vibratingSingalType = cacheDICT.GetInstance().GetCacheType <VibratingSingalType>(p => p.ID == signal.SingalType).FirstOrDefault(); if (vibratingSingalType != null) { singalName = vibratingSingalType.Name; } nRecord.SingalName = singalName; nRecord.SingalAlmID = signalAlmSet.SingalAlmID; string eigenValueName = string.Empty; var eigenValueType = cacheDICT.GetInstance().GetCacheType <EigenValueType>(p => p.ID == signalAlmSet.ValueType).FirstOrDefault(); if (eigenValueType != null) { eigenValueName = eigenValueType.Name; } nRecord.SingalValue = eigenValueName; nRecord.MSAlmID = (int)EnumAlarmRecordType.DeviceVibration; nRecord.AlmStatus = signalAlmSet.Status; nRecord.SamplingValue = value; nRecord.WarningValue = signalAlmSet.WarnValue; nRecord.DangerValue = signalAlmSet.AlmValue; nRecord.BDate = samplingTime; nRecord.EDate = samplingTime; nRecord.LatestStartTime = samplingTime; nRecord.MonitorTreeID = string.Empty;//getMonitorTree.ConvertMonitorTreeIDString(dev.DevID, null); nRecord.Content = string.Format("{0}{1}{2}{3}{4}", nRecord.DevName, nRecord.MSiteName, nRecord.SingalName, nRecord.SingalValue, ConvertStatusToString(signalAlmSet.Status)); return(nRecord); } catch (Exception ex) { LogHelper.WriteLog(ex); return(null); } }
public string GetDevAlmRecord(int id) { string result = string.Empty; DevAlmRecord almRecord = devAlmRecordRepository.GetByKey(id); if (almRecord != null) { Alarm alarm = GetDevAlmRecord(almRecord); if (alarm != null) { result = Json.Stringify(alarm); } } return(result); }
/// <summary> /// 创建新的报警记录对象 /// </summary> /// <param name="dev">设备信息</param> /// <param name="msite">测量位置信息</param> /// <param name="msiteAlmSite">设备温度告警设置</param> /// <param name="samplingTime">采集时间</param> /// <param name="value">采集值</param> /// <returns></returns> private DevAlmRecord CreatNewTempAlmRecord(Device dev, MeasureSite msite, TempeDeviceSetMSiteAlm msiteAlmSite, DateTime samplingTime, float value) { try { DevAlmRecord nRecord = new DevAlmRecord(); //GetMonitorTree getMonitorTree = new GetMonitorTree(wgRepository, deviceRepository, monitorTreeRepository); nRecord.DevID = dev.DevID; nRecord.DevName = dev.DevName; nRecord.DevNO = dev.DevNO.ToString(); nRecord.MSiteID = msite.MSiteID; string measureSiteName = string.Empty; var measureSiteType = cacheDICT.GetInstance().GetCacheType <MeasureSiteType>(p => p.ID == msite.MSiteName).FirstOrDefault(); //空判断 王颖辉 2016-08-30 if (measureSiteType != null) { measureSiteName = measureSiteType.Name; } nRecord.MSiteName = measureSiteName; nRecord.MSAlmID = (int)EnumAlarmRecordType.DeviceTemperature; nRecord.AlmStatus = msiteAlmSite.Status; nRecord.SamplingValue = value; nRecord.WarningValue = msiteAlmSite.WarnValue; nRecord.DangerValue = msiteAlmSite.AlmValue; nRecord.BDate = samplingTime; nRecord.EDate = samplingTime; nRecord.LatestStartTime = samplingTime; nRecord.MonitorTreeID = string.Empty; //getMonitorTree.ConvertMonitorTreeIDString(dev.DevID, null); nRecord.Content = string.Format("{0}{1}{2}{3}", nRecord.DevName, nRecord.MSiteName, "设备温度", ConvertStatusToString(msiteAlmSite.Status)); return(nRecord); } catch (Exception ex) { LogHelper.WriteLog(ex); return(null); } }
private Alarm GetDevAlmRecord(DevAlmRecord record) { Alarm alarm = null; MeasureSite site = measureSiteRepository.GetByKey(record.MSiteID); Device device = deviceRepository.GetByKey(record.DevID); switch (record.MSAlmID) { case 1: //振动信号报警 VibSingal signal = vibSignalRepository.GetByKey(record.SingalID); //过滤掉位移,LQ振动信号的报警记录 List <string> selectedVibsignalNames = new List <string> { "加速度", "速度", "包络" }; //取得佳讯需要的振动信号类型ID List <int> selectedTypeIDList = vibratingSingalTypeRepository.GetDatas <VibratingSingalType> (t => selectedVibsignalNames.Contains(t.Name), true).Select(t => t.ID).ToList(); if (signal != null && signal.DAQStyle == 1 && selectedTypeIDList.Contains(signal.SingalType)) { if (site != null && device != null) { alarm = getdata.GetVibrateionAlarm(record, signal, site, device); } } break; case 2: //设备温度 if (site != null && device != null) { alarm = getdata.GetDevTempAlarm(record, site, device); } break; case 3: break; case 4: break; case 5: break; case 6: break; case 8: //趋势报警推送 //趋势报警,慧萌新增报警类型,报警内容格式暂时不确定,暂定和之前一致 //如果是临时测量定义 或者 LQ 不推送 //VibSingal signalForThrend = DBServices.GetInstance().VibSingalProxy.GetByKey(record.SingalID); //过滤掉位移,LQ振动信号的报警记录 //List<string> selectedVibsignalNamesForThrend = new List<string> { "加速度", "速度", "包络" }; //取得佳讯需要的振动信号类型ID //List<int> selectedTypeIDListForThrend = DBServices.GetInstance().VibratingSingalTypeProxy.GetDatas<VibratingSingalType> // (t => selectedVibsignalNamesForThrend.Contains(t.Name), true).Select(t => t.ID).ToList(); //if (signalForThrend != null && signalForThrend.DAQStyle == 1 && selectedTypeIDListForThrend.Contains(signalForThrend.SingalType)) //{ //if (site != null && device != null) // { // alarm = getData.GetThrendAlarm(record, signalForThrend, site, device); //} // } break; } return(alarm); }
/// <summary> /// 设备振动报警管理 /// </summary> /// <param name="param"></param> public void DevVibAlmRecordManager(DeviceVibtationAlarmParameter param) { try { if (param.HisDataValue == null) { return; } DevAlmRecord oRecord = null; DevAlmRecord nRecord = null; //是否使用最后一次更新时间 List <DevAlmRecord> almList = devAlmRecordRepository .GetDatas <DevAlmRecord>(obj => obj.SingalAlmID == param.AlmSet.SingalAlmID && obj.MSAlmID == (int)EnumAlarmRecordType.DeviceVibration && obj.BDate == obj.EDate, false) .ToList(); //如果有数据,获取第一条 if (almList != null && almList.Count > 0) { oRecord = almList.FirstOrDefault(); //不为空时,操作 王颖辉 2016-10-12 if (oRecord != null) { //处理有数据情况 #region 数据处理 if (param.AlmSet.Status == (int)EnumAlarmStatus.Normal) { //报警结束 oRecord.EDate = param.SamplingTime; //更新最后一次时间 王颖辉 2016-08-12 oRecord.LatestStartTime = param.SamplingTime; } else { if (param.AlmSet.Status == oRecord.AlmStatus) { //报警持续 oRecord.SamplingValue = param.HisDataValue; oRecord.WarningValue = param.AlmSet.WarnValue; oRecord.DangerValue = param.AlmSet.AlmValue; oRecord.LatestStartTime = param.SamplingTime; } else { //原报警结束 oRecord.EDate = param.SamplingTime; //更新最后一次时间 王颖辉 2016-08-12 oRecord.LatestStartTime = param.SamplingTime; //新增报警 nRecord = CreatNewVibrationAlmRecord(param.Dev, param.MSite, param.Signal, param.AlmSet, param.SamplingTime, param.HisDataValue); } } #endregion } } else { //报警则添加数据 if (param.AlmSet.Status != (int)EnumAlarmStatus.Normal) { //新增报警 nRecord = CreatNewVibrationAlmRecord(param.Dev, param.MSite, param.Signal, param.AlmSet, param.SamplingTime, param.HisDataValue); } } #region 更新数据,如果为空,则说表状态正常 王颖辉 2016-08-12 //更新数据,如果为空,则说表状态正常 王颖辉 2016-08-12 if (oRecord != null) { //更新原有报警 devAlmRecordRepository.Update(oRecord); } #endregion if (nRecord != null) { //添加新的报警 devAlmRecordRepository.AddNew(nRecord); } } catch (Exception ex) { throw ex; } }
/// <summary> /// 设备温度报警管理 /// </summary> /// <param name="param"></param> public void DevTemperatureAlmRecordManager(DeviceTemperatureAlarmParameter param) { try { if (param.HisDataValue == null) { return; } DevAlmRecord oRecord = null; DevAlmRecord nRecord = null; List <DevAlmRecord> almList = devAlmRecordRepository .GetDatas <DevAlmRecord>(obj => obj.MSiteID == param.MSite.MSiteID && obj.MSAlmID == (int)EnumAlarmRecordType.DeviceTemperature && obj.BDate == obj.EDate, false) .ToList(); if (almList != null && almList.Count > 0) { oRecord = almList.FirstOrDefault(); } if (oRecord == null) { if (param.MSiteAlmSet.Status != (int)EnumAlarmStatus.Normal) { //新增报警 nRecord = CreatNewTempAlmRecord(param.Dev, param.MSite, param.MSiteAlmSet, param.SamplingTime, (float)param.HisDataValue); } } else { if (param.MSiteAlmSet.Status == (int)EnumAlarmStatus.Normal) { //报警结束 oRecord.EDate = param.SamplingTime; } else { if (param.MSiteAlmSet.Status == oRecord.AlmStatus) { //报警持续 oRecord.SamplingValue = param.HisDataValue; oRecord.WarningValue = param.MSiteAlmSet.WarnValue; oRecord.DangerValue = param.MSiteAlmSet.AlmValue; oRecord.LatestStartTime = param.SamplingTime; } else { //原报警结束 oRecord.EDate = param.SamplingTime; //新增报警 nRecord = CreatNewTempAlmRecord(param.Dev, param.MSite, param.MSiteAlmSet, param.SamplingTime, (float)param.HisDataValue); } } } if (oRecord != null) { //更新原有报警 devAlmRecordRepository.Update(oRecord); } if (nRecord != null) { //添加新的报警 devAlmRecordRepository.AddNew(nRecord); } } catch (Exception ex) { LogHelper.WriteLog(ex); throw ex; } }