/// <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(); }
/// <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); }