public string GetPreviousMachineStatus() { string res = ""; //string correctedDate = DateTime.Now.ToString("yyyy-MM-19"); string correctedDate = DateTime.Now.ToString("yyyy-MM-19"); DateTime correctedDate1 = Convert.ToDateTime(correctedDate); GetOEE objoee = OEE(correctedDate); res = JsonConvert.SerializeObject(objoee); return(res); }
public GetOEE OEE(string correctedDate) { GetOEE objoee = new GetOEE(); DateTime correctedDate1 = Convert.ToDateTime(correctedDate); double TotalOperatingTime = 0; double TotalDownTime = 0; double TotalAcceptedQty = 0; double TotalRejectedQty = 0; double TotalPerformanceFactor = 0; int MachineID = 1; double DayOperatingTime = 0; double DayDownTime = 0; double DayAcceptedQty = 0; double DayRejectedQty = 0; double DayPerformanceFactor = 0; insertManMacProd(MachineID, correctedDate1); var GetMainLossList = db.tbllossescodes.Where(m => m.LossCodesLevel == 1 && m.IsDeleted == 0 && m.MessageType != "SETUP").OrderBy(m => m.LossCodeID).ToList(); var prodplanchine = db.tbl_ProdManMachine.Where(m => m.MachineID == MachineID && m.CorrectedDate == correctedDate1.Date).ToList(); if (prodplanchine.Count > 0) { foreach (var ProdRow in prodplanchine) { TotalOperatingTime += (double)ProdRow.TotalOperatingTime; TotalDownTime += (double)ProdRow.TotalLoss + (double)ProdRow.TotalMinorLoss + (double)ProdRow.TotalSetup; //TotalAcceptedQty += ProdRow.tblworkorderentry.Yield_Qty; //TotalRejectedQty += ProdRow.tblworkorderentry.ScrapQty; //TotalPerformanceFactor += ProdRow.PerfromaceFactor; //int TotalQty = ProdRow.tblworkorderentry.Yield_Qty + ProdRow.tblworkorderentry.ScrapQty; //if (TotalQty == 0) // TotalQty = 1; List <IDLELosses> IdleLosslist = new List <IDLELosses>(); List <BreakdownLosses> brkdwnlosslist = new List <BreakdownLosses>(); List <Losses> losslist = new List <Losses>(); //foreach (var LossRow in GetMainLossList) //{ // var getWoLossList1 = db.tblmodes.Where(m => m.CorrectedDate == correctedDate1.Date && m.LossCodeID == LossRow.LossCodeID && m.IsCompleted==1 ).OrderBy(m=>new { m.ModeID,m.StartTime}).ToList(); var getmodes = db.tblmodes.Where(m => m.CorrectedDate == correctedDate1.Date && m.IsCompleted == 1 && m.ModeTypeEnd == 1 && m.IsPiWeb == 0).OrderBy(m => new { m.ModeID, m.StartTime }).ToList(); var TotalLossDuration = getmodes.Where(m => m.ModeType == "IDLE").Sum(m => m.DurationInSec).ToString(); decimal TotalLossDura = Convert.ToDecimal(TotalLossDuration); var getIdleLosses = getmodes.Where(m => m.ModeType == "IDLE").ToList(); var TotalBreakdownDuration = getmodes.Where(m => m.ModeType == "MNT").Sum(m => m.DurationInSec).ToString(); var getbrklosses = getmodes.Where(m => m.ModeType == "MNT").ToList(); if (getIdleLosses.Count > 0) { decimal LossDuration = 0; int count = 0; foreach (var row in getmodes) { IDLELosses objloss = new IDLELosses(); //var lossrow = ; if (row.LossCodeID != null) { count += 1; objloss.ID = count; objloss.LossID = row.LossCodeID; objloss.LossName = row.tbllossescode.LossCodeDesc; LossDuration = Convert.ToDecimal(row.DurationInSec); decimal percent = ((LossDuration) / (TotalLossDura)); objloss.LossPercent = (double)((LossDuration / TotalLossDura) * 100); IdleLosslist.Add(objloss); } } } if (getbrklosses.Count > 0) { int count = 0; decimal LossDuration = 0; foreach (var row in getbrklosses) { BreakdownLosses objloss = new BreakdownLosses(); if (row.LossCodeID != null) { count += 1; objloss.ID = count; objloss.LossID = row.tbllossescode.LossCodeID; objloss.LossName = row.tbllossescode.LossCodeDesc; LossDuration = Convert.ToDecimal(row.DurationInSec); decimal percent = ((LossDuration) / (TotalLossDura)); objloss.LossPercent = (double)((LossDuration / Convert.ToInt32(TotalLossDuration)) * 100); brkdwnlosslist.Add(objloss); } } } if (getmodes.Count > 0) { int count = 0; decimal LossDuration = 0; foreach (var row in getmodes) { Losses objloss = new Losses(); if (row.LossCodeID != null) { count += 1; objloss.ID = count; objloss.LossID = row.tbllossescode.LossCodeID; objloss.LossName = row.tbllossescode.LossCodeDesc; LossDuration = Convert.ToDecimal(row.DurationInSec); objloss.Duration = (double)((LossDuration / Convert.ToInt32(TotalLossDuration)) * 100); losslist.Add(objloss); } } } //} List <IDLELosses> IdleLosslistdist = new List <IDLELosses>(); List <BreakdownLosses> brkdwnlosslistdist = new List <BreakdownLosses>(); List <Losses> losslistdist = new List <Losses>(); var IdleLosslist1 = IdleLosslist.Select(m => new { m.LossName, m.LossID }).Distinct().ToList(); foreach (var row in IdleLosslist1) { var lossrow = IdleLosslist.Where(m => m.LossName == row.LossName).OrderByDescending(m => m.LossPercent).FirstOrDefault(); IdleLosslistdist.Add(lossrow); } var brkLosslist1 = brkdwnlosslist.Select(m => new { m.LossName, m.LossID }).Distinct().ToList(); foreach (var row in brkLosslist1) { var lossrow = brkdwnlosslist.Where(m => m.LossName == row.LossName).OrderByDescending(m => m.LossPercent).FirstOrDefault(); brkdwnlosslistdist.Add(lossrow); } var losslistdist1 = losslist.Select(m => new { m.LossName, m.LossID }).Distinct().ToList(); foreach (var row in losslistdist1) { var lossrow = losslist.Where(m => m.LossName == row.LossName).OrderByDescending(m => m.Duration).FirstOrDefault(); losslistdist.Add(lossrow); } #region Commented //IdleLosslist = IdleLosslist.OrderByDescending(m => m.LossPercent).Take(5).ToList(); //brkdwnlosslist = brkdwnlosslist.OrderBy(m => m.LossName).Distinct().ToList(); //brkdwnlosslist = brkdwnlosslist.OrderByDescending(m => m.LossPercent).Take(5).ToList(); //losslist = losslist.OrderBy(m => m.LossName).Distinct().ToList(); //losslist = losslist.OrderByDescending(m => m.Duration).Take(5).ToList(); #endregion objoee.TopIDLELosses = IdleLosslistdist.OrderByDescending(m => m.LossPercent).Take(5).ToList(); objoee.TopbrkdwnLosses = brkdwnlosslistdist.OrderByDescending(m => m.LossPercent).Take(5).ToList(); objoee.TopLosses = losslistdist.OrderByDescending(m => m.Duration).Take(5).ToList(); DayOperatingTime += (double)ProdRow.TotalOperatingTime; DayDownTime += (double)ProdRow.TotalLoss + (double)ProdRow.TotalMinorLoss; //DayAcceptedQty += ProdRow.tblworkorderentry.Yield_Qty; //DayRejectedQty += ProdRow.tblworkorderentry.ScrapQty; DayPerformanceFactor += ProdRow.PerfromaceFactor; } int TotQty = (int)(DayAcceptedQty + DayRejectedQty); if (TotQty == 0) { TotQty = 1; } double DayOpTime = DayOperatingTime; if (DayOperatingTime == 0) { DayOpTime = 1; } decimal DayAvailPercent = (decimal)Math.Round(DayOperatingTime / (24 * 1), 2); decimal DayPerformancePercent = (decimal)Math.Round(DayPerformanceFactor / DayOpTime, 2); decimal DayQualityPercent = (decimal)Math.Round((DayAcceptedQty / (TotQty)), 2); decimal DayOEEPercent = (decimal)Math.Round((double)(DayAvailPercent) * (double)(DayPerformancePercent) * (double)(DayQualityPercent), 2); objoee.Machinetimes = getModeTimings(MachineID, correctedDate1); if (DayOperatingTime == 0 && objoee.Machinetimes != null) { DayOperatingTime = (Double)objoee.Machinetimes.RunningTime; } DayAvailPercent = (decimal)Math.Round(DayOperatingTime / (24 * 1), 2); DayPerformancePercent = (decimal)Math.Round(DayPerformanceFactor / DayOpTime, 2); DayQualityPercent = (decimal)Math.Round((DayAcceptedQty / (TotQty)), 2); DayOEEPercent = (decimal)Math.Round((double)(DayAvailPercent) * (double)(DayPerformancePercent) * (double)(DayQualityPercent), 2); objoee.Availability = Convert.ToInt32(DayAvailPercent);// AvailabilityPercentage objoee.Quality = Convert.ToInt32(DayQualityPercent); objoee.Performance = Convert.ToInt32(DayPerformancePercent); objoee.OEE = Convert.ToInt32(DayOEEPercent); } objoee.Machinetimes = getModeTimings(MachineID, correctedDate1); return(objoee); }