Beispiel #1
0
 /// <summary>
 /// 启动报警,向KPI_OverLimitRecord表中添加数据
 /// </summary>
 /// <param name="faultConfiguration">报警配置信息</param>
 /// <param name="alarmType">报警类型 1=超高限,2=超高高限,3=超更高</param>
 /// <param name="alarmTime">开始报警时间</param>
 /// <param name="maxValue">超标极值</param>
 /// <param name="standardValue">标准值</param>
 private void StartAlarm(OverLimitConfigEntity faultConfiguration, int alarmType,
                         DateTime alarmTime, double standardValue, double maxValue)
 {
     //Console.WriteLine(String.Format("测点{0}的报警类型是:{1}报警值是:{2}", faultConfiguration.TagDesc, alarmType, maxValue));
     try {
         KPI_OverLimitRecordEntity entity = new KPI_OverLimitRecordEntity();
         entity.AlarmID        = Guid.NewGuid() + "";
         entity.UnitID         = faultConfiguration.UnitID;
         entity.TagID          = faultConfiguration.TagName;
         entity.AlarmType      = alarmType;
         entity.AlarmStartTime = alarmTime;
         entity.StandardValue  = Convert.ToDecimal(standardValue);
         entity.Offset         = Convert.ToDecimal(maxValue - standardValue);
         entity.Duration       = 0;
         entity.AlarmValue     = Convert.ToDecimal(maxValue);
         String Period = "";
         String Shift  = "";
         GetShiftAndPeriod(faultConfiguration.UnitID, out Shift, out Period, alarmTime);
         entity.Shift  = Shift;
         entity.Period = Period;
         using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
             if (DataAccess.ExistsOverLimitRecord(entity))
             {
                 DataAccess.UpdateAlarmMaxValue(entity);
                 return;
             }
             DataAccess.AddOverLimitRecord(entity);
         }
     }
     catch (Exception ex) {
         m_Logger.InfoFormat("StartAlarm安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}",
                             ex.Message, ex.StackTrace);
         m_Logger.Error(ex.Message, ex);
     }
 }
        /// <summary>
        /// 更新超限报警记录数据
        /// </summary>
        /// <param name="item">超限报警记录实体</param>
        /// <returns>更新的数据行数</returns>
        public int UpdateOverLimitRecord(KPI_OverLimitRecordEntity item)
        {
            int    Result  = 0;
            String SqlText = @"IF EXISTS(SELECT TAGID FROM KPI_OverLimitRecord  Where (TagID=@TagID AND AlarmType=@AlarmType)  AND (AlarmEndTime IS NULL))
							  BEGIN
								Update KPI_OverLimitRecord Set AlarmEndTime=@AlarmEndTime,
																Duration=DATEDIFF(s,AlarmStartTime,@AlarmEndTime)  
																Where (TagID=@TagID AND AlarmType=@AlarmType)  AND (AlarmEndTime IS NULL)
							  END"                            ;

            IDbDataParameter[] parames = new SqlParameter[] {
                new SqlParameter("@AlarmEndTime", DbType.DateTime),
                new SqlParameter("@TagID", DbType.String),
                new SqlParameter("@AlarmType", DbType.String)
            };
            parames[0].Value = item.AlarmEndTime;
            parames[1].Value = item.TagID;
            parames[2].Value = item.AlarmType;
            //RelaInterface DB = DBAccess.GetRelation();
            try {
                Result = m_DB.ExecuteNonQuery(SqlText, parames);
            }
            catch (Exception ex) {
                throw ex;
            }
            return(Result);
        }
        /// <summary>
        /// 新增超限报警记录数据
        /// </summary>
        /// <param name="item">超限报警记录实体</param>
        /// <returns>新增的数据行数</returns>
        public int AddOverLimitRecord(KPI_OverLimitRecordEntity item)
        {
            int              Result              = 0;
            string           SqlText             = @"Insert KPI_OverLimitRecord (AlarmID,TagID,AlarmStartTime,AlarmEndTime,
								Duration,AlarmValue,StandardValue,Offset,AlarmType,Period,Shift,UnitID) 
								Values (@AlarmID,@TagID,@AlarmStartTime,@AlarmEndTime,@Duration,@AlarmValue,
								@StandardValue,@Offset,@AlarmType,@Period,@Shift,@UnitID) "                                ;
            IDbDataParameter AlarmIDParam        = new SqlParameter("@AlarmID", item.AlarmID);
            IDbDataParameter TagIDParam          = new SqlParameter("@TagID", item.TagID);
            IDbDataParameter AlarmStartTimeParam = new SqlParameter("@AlarmStartTime", item.AlarmStartTime);
            IDbDataParameter AlarmEndTimeParam   = new SqlParameter("@AlarmEndTime", DBNull.Value);
            IDbDataParameter DurationParam       = new SqlParameter("@Duration", DBNull.Value);
            IDbDataParameter AlarmValueParam     = new SqlParameter("@AlarmValue", item.AlarmValue);
            IDbDataParameter StandardValueParam  = new SqlParameter("@StandardValue", item.StandardValue);
            IDbDataParameter OffsetParam         = new SqlParameter("@Offset", item.Offset);
            IDbDataParameter AlarmTypeParam      = new SqlParameter("@AlarmType", item.AlarmType);
            IDbDataParameter PeriodParam         = new SqlParameter("@Period", item.Period);
            IDbDataParameter ShiftParam          = new SqlParameter("@Shift", item.Shift);
            IDbDataParameter UnitIDParam         = new SqlParameter("@UnitID", item.UnitID);

            //RelaInterface DB = DBAccess.GetRelation();
            try {
                Result = m_DB.ExecuteNonQuery(SqlText, AlarmIDParam, TagIDParam, AlarmStartTimeParam,
                                              AlarmEndTimeParam, DurationParam, AlarmValueParam, StandardValueParam, OffsetParam,
                                              AlarmTypeParam, PeriodParam, ShiftParam, UnitIDParam);
            }
            catch (Exception ex) {
                throw ex;
            }
            return(Result);
        }
Beispiel #4
0
 /// <summary>
 /// 解除报警,更新KPI_OverLimitRecord表中数据
 /// </summary>
 /// <param name="faultConfiguration">报警配置信息</param>
 /// <param name="alarmType">报警类型 1=超高限,2=超高高限,3=超更高;</param>
 /// <param name="alarmTime">解除报警时间</param>
 private void StopAlarm(OverLimitConfigEntity faultConfiguration, int alarmType, DateTime alarmTime)
 {
     try {
         KPI_OverLimitRecordEntity entity = new KPI_OverLimitRecordEntity();
         entity.TagID          = faultConfiguration.TagName;
         entity.AlarmStartTime = alarmTime;
         entity.AlarmType      = alarmType;
         using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
             DataAccess.UpdateOverLimitRecord(entity);
         }
     }
     catch (Exception ex) {
         LogUtil.LogMessage(string.Format("安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}",
                                          ex.Message, ex.StackTrace));
     }
 }
Beispiel #5
0
 /// <summary>
 /// 解除报警,更新KPI_OverLimitRecord表中数据
 /// </summary>
 /// <param name="faultConfiguration">报警配置信息</param>
 /// <param name="alarmType">报警类型 1=超高限,2=超高高限,3=超更高;</param>
 /// <param name="alarmTime">解除报警时间</param>
 private void StopAlarm(OverLimitConfigEntity faultConfiguration, int alarmType, DateTime alarmTime)
 {
     try {
         KPI_OverLimitRecordEntity entity = new KPI_OverLimitRecordEntity();
         entity.TagID        = faultConfiguration.TagName;
         entity.AlarmEndTime = alarmTime;
         entity.AlarmType    = alarmType;
         using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
             DataAccess.UpdateOverLimitRecord(entity);
         }
     }
     catch (Exception ex) {
         m_Logger.InfoFormat("StopAlarm安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}",
                             ex.Message, ex.StackTrace);
         m_Logger.Error(ex.Message, ex);
     }
 }
        public bool ExistsOverLimitRecord(KPI_OverLimitRecordEntity item)
        {
            bool             Result         = false;
            string           SqlText        = @"SELECT TagID FROM KPI_OverLimitRecord
							   WHERE (TagID=@TagID AND AlarmType=@AlarmType)  AND (AlarmEndTime IS NULL)"                            ;
            IDbDataParameter TagIDParam     = new SqlParameter("@TagID", item.TagID);
            IDbDataParameter AlarmTypeParam = new SqlParameter("@AlarmType", item.AlarmType);

            //RelaInterface DB = DBAccess.GetRelation();
            try {
                Object obj = m_DB.ExecuteScalar(SqlText, TagIDParam, AlarmTypeParam);
                Result = obj != null;
            }
            catch (Exception ex) {
                throw ex;
            }
            return(Result);
        }
Beispiel #7
0
        /// <summary>
        /// 交接时关闭上一班报警
        /// </summary>
        /// <param name="faultConfiguration"></param>
        private void StopLastShiftAlarm(OverLimitConfigEntity faultConfiguration)
        {
            KPI_UnitEntity Entity = KPI_UnitDal.GetEntity(faultConfiguration.UnitID);

            if (Entity == null)
            {
                return;
            }
            String strWorkID        = Entity.WorkID;
            String strStartTime     = "";
            String strEndTime       = "";
            String Shift            = "";
            String Period           = "";
            String strCurrentMinute = DateTime.Now.ToString("yyyy-MM-dd HH:mm:00");

            KPI_WorkDal.GetShiftAndPeriod(strWorkID, strCurrentMinute,
                                          ref Shift, ref Period, ref strStartTime, ref strEndTime);
            DateTime ShiftStartTime = Convert.ToDateTime(strStartTime);
            DateTime CurrentTime    = DateTime.Now;
            TimeSpan Span           = CurrentTime - ShiftStartTime;
            double   TotalMinutes   = Span.TotalMinutes;

            if (TotalMinutes <= 10)
            {
                try {
                    using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
                        KPI_OverLimitRecordEntity entity = new KPI_OverLimitRecordEntity();
                        for (int i = 1; i < 4; i++)
                        {
                            entity.TagID          = faultConfiguration.TagName;
                            entity.AlarmStartTime = ShiftStartTime;
                            entity.AlarmType      = i;
                            DataAccess.UpdateOverLimitRecord(entity);
                        }
                    }
                }
                catch (Exception ex) {
                    m_Logger.InfoFormat("StopLastShiftAlarm安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}",
                                        ex.Message, ex.StackTrace);
                    m_Logger.Error(ex);
                }
            }
        }
        /// <summary>
        /// 更新报警时间段内最大值
        /// </summary>
        /// <param name="item"></param>
        public void UpdateAlarmMaxValue(KPI_OverLimitRecordEntity item)
        {
            String SqlText = @"Update KPI_OverLimitRecord Set AlarmValue=@AlarmValue,Offset= @AlarmValue - StandardValue 
								WHERE (TagID=@TagID AND AlarmType=@AlarmType) AND (AlarmEndTime IS NULL) AND (AlarmValue<@AlarmValue) "                                ;

            IDbDataParameter[] parames = new SqlParameter[] {
                new SqlParameter("@AlarmValue", DbType.Decimal),
                new SqlParameter("@TagID", DbType.String),
                new SqlParameter("@AlarmType", DbType.String)
            };
            parames[0].Value = item.AlarmValue;
            parames[1].Value = item.TagID;
            parames[2].Value = item.AlarmType;
            try {
                m_DB.ExecuteNonQuery(SqlText, parames);
            }
            catch (Exception ex) {
                throw ex;
            }
        }