public override void DataBind() { using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) { String YearMonth = txtYearMonth.Text; String SpecialField = Request.Params["SpecialField"]; int Year, Month; Year = Convert.ToInt32(YearMonth.Substring(0, 4)); Month = Convert.ToInt32(YearMonth.Substring(5, 2)); DateTime StartDate = new DateTime(Year, Month, 1); DateTime EndDate = StartDate.AddMonths(1); //Repeater.DataSource = DataAccess.GetReliabilityTotals(StartDate, EndDate); } base.DataBind(); }
public override void DataBind() { using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) { DateTime StartDate = Convert.ToDateTime(txtStartDate.Text); DateTime EndDate = Convert.ToDateTime(txtEndDate.Text); int RecordCount = 0; String TageID = Request.Params["TagID"]; Repeater.DataSource = DataAccess.GetReliabilitys(Pager.CurrentPageIndex,Pager.PageSize, StartDate, EndDate, TageID,"",out RecordCount); Pager.RecordCount = RecordCount; } base.DataBind(); base.DataBind(); }
/// <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> protected void AddOrUpdateOverLimitRecordToDB(OverLimitConfigEntity faultConfiguration, int alarmType, DateTime alarmTime, double standardValue, double 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("AddOrUpdateOverLimitRecordToDB安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}", ex.Message, ex.StackTrace); m_Logger.Error(ex.Message, ex); } }
/// <summary> /// 解除报警,更新KPI_OverLimitRecord表中数据 /// </summary> /// <param name="faultConfiguration">报警配置信息</param> /// <param name="alarmType">报警类型 1=超高限,2=超高高限,3=超更高;</param> /// <param name="alarmTime">解除报警时间</param> protected void UpdateExistOverLimitRecordToDB(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("UpdateExistOverLimitRecordToDB安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}", ex.Message, ex.StackTrace); m_Logger.Error(ex.Message, ex); } }
private double SALongDurationByType(String tags, int alarmType, double alarmDuration) { double Result = 0.0f; String[] Tags = tags.Split(','); List<int?> Durations = new List<int?>(); int? Duration = 0; using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) { foreach (String TagID in Tags) { if (!IsCalcShift) { Duration = (from p in DataAccess.GetOverLimitRecords(BeginTime, EndTime, TagID, alarmType) where p.Duration >= alarmDuration select p.Duration).Sum(); Durations.Add(Duration); } if (IsCalcShift) { Duration = (from p in DataAccess.GetShiftOverLimitRecords(BeginTime, EndTime, TagID, alarmType) where p.Duration >= alarmDuration select p.Duration).Sum(); Durations.Add(Duration); } } } Result = Convert.ToDouble(Durations.Sum());//超限时长单位:秒 Result = Result / 60;//超限时长转换为分钟 return Result; }
private double SALongCountByType(string tags, double alarmDuration, int alarmType) { //double Result = 0.0f; String[] Tags = tags.Split(','); List<int> Counts = new List<int>(); int Count; /*List<int?> Durations = new List<int?>(); int? Duration = 0; using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) { foreach (String TagID in Tags) { Duration = (from p in DataAccess.GetOverLimitRecords(BeginTime, EndTime, TagID, alarmType) where p.Duration >= alarmDuration select p.Duration).Sum(); Durations.Add(Duration); } } foreach (int? duration in Durations) { if (duration.HasValue) Result += duration.Value / alarmDuration; }*/ using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) { foreach (String TagID in Tags) { if (!IsCalcShift) { Count = (from p in DataAccess.GetOverLimitRecords(BeginTime, EndTime, TagID, alarmType) where p.Duration >= alarmDuration select p.Duration).Count(); Counts.Add(Count); } if (IsCalcShift) { Count = (from p in DataAccess.GetShiftOverLimitRecords(BeginTime, EndTime, TagID, alarmType) where p.Duration >= alarmDuration select p.Duration).Count(); Counts.Add(Count); } } } return Counts.Sum(); }
private double SADurationByType(String tags, int alarmType) { double Result = 0.0f; String[] Tags = tags.Split(','); List<int?> Durations = new List<int?>(); using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) { foreach (String TagID in Tags) { if (!IsCalcShift) Durations.Add(DataAccess.GetOverLimitRecords(BeginTime, EndTime, TagID, alarmType).Sum(p => p.Duration)); if (IsCalcShift) Durations.Add(DataAccess.GetShiftOverLimitRecords(BeginTime, EndTime, TagID, alarmType).Sum(p => p.Duration)); } } Result = Convert.ToDouble(Durations.Sum());//超限时长单位:秒 Result = Math.Ceiling(Result / 60);//超限时长转换为分钟 return Result; }
private double SACountByType(string tags, int alarmType) { double Result = 0.0f; String[] Tags = tags.Split(','); List<int> Durations = new List<int>(); using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) { foreach (String TagID in Tags) { if (!IsCalcShift) Durations.Add(DataAccess.GetOverLimitRecords(BeginTime, EndTime, TagID, alarmType).Count()); if (IsCalcShift) Durations.Add(DataAccess.GetShiftOverLimitRecords(BeginTime, EndTime, TagID, alarmType).Count()); } } Result = Durations.Sum(); return Result; }
/// <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) { LogUtil.LogMessage(string.Format("安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}", ex.Message, ex.StackTrace)); } } }
/// <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)); } }
/// <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); entity.Shift = Shift; entity.Period = Period; using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) { if (DataAccess.ExistsOverLimitRecord(entity)) return; DataAccess.AddOverLimitRecord(entity); } } catch (Exception ex) { LogUtil.LogMessage(string.Format("安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}", ex.Message, ex.StackTrace)); } }