/// <summary> /// 更新速度振动信号特征值报警状态 /// </summary> /// <param name="signalAlmSet">振动信号特征值告警设置</param> /// <param name="dev">设备信息</param> /// <param name="site">测量位置信息</param> /// <param name="vibsingal">振动信号信息</param> /// <param name="samplingData">采集时间</param> private void UpdateVibratingSingalAlarmVel(SignalAlmSet signalAlmSet, Device dev, MeasureSite site, VibSingal vibsingal, DateTime samplingTime, float?hisDataValue) { DeviceVibtationAlarmParameter devVibtationAlarmParam = new DeviceVibtationAlarmParameter() { AlmSet = signalAlmSet, Dev = dev, MSite = site, Signal = vibsingal, SamplingTime = samplingTime, HisDataValue = hisDataValue }; deviceVibrationAlarm.DevVibAlmRecordManager(devVibtationAlarmParam); }
/// <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; } }