コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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;
            }
        }