예제 #1
0
        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);
        }
예제 #2
0
        private double SALongCount(string tags, double alarmDuration)
        {
            //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)
             *                                      where p.Duration >= alarmDuration
             *                                      select p.Duration).Sum();
             *              Durations.Add(Duration);
             *      }
             * }
             * foreach (int? duration in Durations) {
             *      if (duration.HasValue) Result += duration.Value / alarmDuration;
             * }*/
            List <KPI_OverLimitRecordEntity> OverRecords;

            using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
                foreach (String TagID in Tags)
                {
                    if (!IsCalcShift)
                    {
                        OverRecords = DataAccess.GetOverLimitRecords(BeginTime, EndTime, TagID);
                        Count       = (from p in OverRecords
                                       where p.Duration >= alarmDuration
                                       select p.Duration).Count();
                        Counts.Add(Count);
                    }
                    if (IsCalcShift)
                    {
                        OverRecords = DataAccess.GetShiftOverLimitRecords(BeginTime, EndTime, TagID);
                        Count       = (from p in OverRecords
                                       where p.Duration >= alarmDuration
                                       select p.Duration).Count();
                        Counts.Add(Count);
                    }
                }
            }
            return(Counts.Sum());
        }
예제 #3
0
파일: ExpDone.cs 프로젝트: jht1983/SISKPI
        private object GetAlarmCount(String tags, double alarmDuration)
        {
            String[]    Tags      = tags.Split(',');
            List <int?> Durations = new List <int?>();
            double      Duration  = 0.0f;//指标超限时长(单位:秒)

            using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
                foreach (String TagID in Tags)
                {
                    Durations.Add(DataAccess.GetOverLimitRecords(BeginTime, EndTime, TagID).Sum(p => p.Duration));
                }
            }
            if (Durations.Count > 0)
            {
                Duration = Durations.Max().Value;
            }
            return(Math.Ceiling(Duration / alarmDuration));
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }