Пример #1
0
        /// <summary>
        /// Takes the OrderSummary Report as retrieved from the database and works out the
        /// total counts by job number and populates the JobCountSummary List data
        /// </summary>
        /// <param name="summary"></param>
        public void CalculateOrderCounts()
        {
            try
            {
                foreach (int j in JobNumbersProcessed)
                {
                    JobCountSummary jcs = new JobCountSummary {
                        JobNumber = j
                    };
                    List <InductionDownTime> jobevents = DowntimeEvents.Where(a => a.JobNumber == j).OrderBy(a => a.SmallDateTime).ToList();
                    var firstRecord = jobevents.FirstOrDefault();
                    var lastRecord  = jobevents.LastOrDefault();
                    if (firstRecord != null)
                    {
                        jcs.FirstEventDate = firstRecord.SmallDateTime.AddHours(-firstRecord.HoursDown).AddMinutes(-firstRecord.MinutesDown);
                    }
                    if (lastRecord != null)
                    {
                        jcs.LastEventDate = lastRecord.SmallDateTime;
                    }
                    if (firstRecord != null && lastRecord != null)
                    {
                        jcs.TotalPartCount = lastRecord.PartCount - firstRecord.PartCount;
                        jcs.TotalTimeSpan  = lastRecord.SmallDateTime - firstRecord.SmallDateTime;
                    }
                    jcs.TotalTimeSpanString = DateTimeUtils.ConvertTimeSpanToString(jcs.TotalTimeSpan);

                    foreach (InductionDownTime e in jobevents)
                    {
                        jcs.TotalDownTimeSpan += new TimeSpan(0, e.HoursDown, e.MinutesDown, 0, 0);
                    }

                    if (jcs.TotalDownTimeSpan.TotalMinutes > 0)
                    {
                        jcs.AvgPartsPerMinute    = jcs.TotalPartCount / jcs.TotalTimeSpan.TotalMinutes;
                        jcs.TotalPercentDowntime = jcs.TotalDownTimeSpan.TotalMinutes / jcs.TotalTimeSpan.TotalMinutes * 100;
                    }

                    jcs.TotalDownTimeSpanString = DateTimeUtils.ConvertTimeSpanToString(jcs.TotalDownTimeSpan);
                    JobCountSummaries.Add(jcs);
                }
            }
            catch (Exception ex)
            {
                Debug.Print(ex.Message);
            }

            JobCountSummaries = JobCountSummaries.OrderBy(a => a.FirstEventDate).ToList();
        }
Пример #2
0
        /// <summary>
        /// Takes the OrderSummary Report as retrieved from the database and populates
        /// Timespan objects with h/s records as retrieved.  It also converts the timespan
        /// To a readable string for reporting purposes in format 0d 0h 00mins
        /// </summary>
        public void CalculateTimeSpans()
        {
            foreach (ProcessCodeSummary s in ProcessCodeSummaries)
            {
                s.TimeSpanDown     = new TimeSpan(0, s.HoursDown, s.MinutesDown, 0, 0);
                TotalDownTimeSpan += s.TimeSpanDown;
                if (TotalTimeSpan.TotalMilliseconds > 0)
                {
                    s.PercentOfTime = (s.TimeSpanDown.TotalMilliseconds / TotalTimeSpan.TotalMilliseconds) * 100;
                }
                s.TimeSpanDownString = DateTimeUtils.ConvertTimeSpanToString(s.TimeSpanDown);
            }

            if (TotalTimeSpan.TotalMilliseconds > 0)
            {
                TotalPercentDowntime = (TotalDownTimeSpan.TotalMilliseconds / TotalTimeSpan.TotalMilliseconds) * 100;
            }

            TotalDownTimeSpanString = DateTimeUtils.ConvertTimeSpanToString(TotalDownTimeSpan);
            TotalTimeSpanString     = DateTimeUtils.ConvertTimeSpanToString(TotalTimeSpan);
        }