Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }