예제 #1
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #5
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;
            }
        }
예제 #6
0
        /// <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;
            }
        }