public void TestGetData() { GetStatusList(); GetModelList(); var testModel = ReqRpt018Models.Where(w => w.EqpID == "TC-PLS-01"); var model = testModel.First(); Entity = new EQP_UPm_018Entity() { EqpID = model.EqpID, EqpType = ReqRpt018EqpStatusEntities.Where(w => w.EQP_ID == model.EqpID).FirstOrDefault().EQP_Type, Date = model.SomeDay, PRDMin = model.PRDTimeSpan, SBYMin = model.SBYTimeSpan, SDTMin = model.SDTTimeSpan, UDTMin = model.UDTTimeSpan, ENGMin = model.ENGTimeSpan, NSTMin = model.NSTTimeSpan, PRDTestMin = model.PRDTestTimeSpan, PMMin = model.PMTimeSpan }; }
private void GetModelList() { DateTime firstTime = IsFirstRun ? ReqRpt018EqpStatusEntities.Min(p => p.Start_Time) : lastRecordTime; if (firstTime.TimeOfDay < SplitTimeOfDay) { firstTime = firstTime.Date.AddDays(-1) + SplitTimeOfDay; } else { firstTime = firstTime.Date + SplitTimeOfDay; } DateTime lastTime = firstTime.AddDays(1).AddHours(1); if (lastTime.TimeOfDay < SplitTimeOfDay) { lastTime = lastTime.Date + SplitTimeOfDay; } else { lastTime = lastTime.Date.AddDays(1) + SplitTimeOfDay; } int CountDay = (lastTime - firstTime).Days; var OpeList = ShareDataEntity.GetSingleEntity().FHOPEHSCatcher.GetEntities().EntityList; for (int i = 0; i < CountDay; i++) { var list = ReqRpt018EqpStatusEntities.Where(p => !(p.Start_Time > firstTime.AddDays(i + 1) || p.End_Time <= firstTime.AddDays(i))); var list2 = list.Select(s => new { s.EQP_ID, s.E10_State, DeltaTime = ((s.End_Time < firstTime.AddDays(i + 1) ? s.End_Time : firstTime.AddDays(i + 1)) - (s.Start_Time > firstTime.AddDays(i) ? s.Start_Time : firstTime.AddDays(i))).TotalMinutes }).GroupBy(a => new { a.EQP_ID, a.E10_State }).Select(g => new { Data = g.Key, AllSpan = g.Sum(item => item.DeltaTime) }); var list3 = list.Where(w => w.E10_State == "SDT"); var eqps = list2.Select(s => s.Data.EQP_ID).Distinct(); var list_ope = OpeList.Where(w => w.Claim_Time > firstTime.AddDays(i) && w.Claim_Time <= firstTime.AddDays(i + 1)); foreach (string str in eqps) { ReqRpt018Model model = new ReqRpt018Model(); List <string> pmCodes = new List <string>() { "4100", "4110", "4300", "4310" }; model.EqpID = str; model.PRDTimeSpan = list2.Any(p => p.Data.EQP_ID == str && p.Data.E10_State == "PRD") ? list2.Where(p => p.Data.EQP_ID == str && p.Data.E10_State == "PRD").FirstOrDefault().AllSpan : 0; model.SBYTimeSpan = list2.Any(p => p.Data.EQP_ID == str && p.Data.E10_State == "SBY") ? list2.Where(p => p.Data.EQP_ID == str && p.Data.E10_State == "SBY").FirstOrDefault().AllSpan : 0; model.NSTTimeSpan = list2.Any(p => p.Data.EQP_ID == str && p.Data.E10_State == "NST") ? list2.Where(p => p.Data.EQP_ID == str && p.Data.E10_State == "NST").FirstOrDefault().AllSpan : 0; model.SDTTimeSpan = list2.Any(p => p.Data.EQP_ID == str && p.Data.E10_State == "SDT") ? list2.Where(p => p.Data.EQP_ID == str && p.Data.E10_State == "SDT").FirstOrDefault().AllSpan : 0; model.ENGTimeSpan = list2.Any(p => p.Data.EQP_ID == str && p.Data.E10_State == "ENG") ? list2.Where(p => p.Data.EQP_ID == str && p.Data.E10_State == "ENG").FirstOrDefault().AllSpan : 0; model.UDTTimeSpan = list2.Any(p => p.Data.EQP_ID == str && p.Data.E10_State == "UDT") ? list2.Where(p => p.Data.EQP_ID == str && p.Data.E10_State == "UDT").FirstOrDefault().AllSpan : 0; model.SomeDay = firstTime.AddDays(i); model.PRDTestTimeSpan = list3.Any(p => p.EQP_ID == str && p.Eqp_State == "4600") ? list3.Where(p => p.EQP_ID == str && p.Eqp_State == "4600").Select(s => ((s.End_Time < firstTime.AddDays(i + 1) ? s.End_Time : firstTime.AddDays(i + 1)) - (s.Start_Time > firstTime.AddDays(i) ? s.Start_Time : firstTime.AddDays(i))).TotalMinutes).Sum() : 0; model.PMTimeSpan = list3.Any(p => p.EQP_ID == str && pmCodes.Contains(p.Eqp_State)) ? list3.Where(p => p.EQP_ID == str && pmCodes.Contains(p.Eqp_State)).Select(s => ((s.End_Time < firstTime.AddDays(i + 1) ? s.End_Time : firstTime.AddDays(i + 1)) - (s.Start_Time > firstTime.AddDays(i) ? s.Start_Time : firstTime.AddDays(i))).TotalMinutes).Sum() : 0; ReqRpt018Models.Add(model); ReqRpt020Model model020 = new ReqRpt020Model(); model020.EqpID = str; model020.PassQty = list_ope.Any(a => a.Eqp_ID == str) ? list_ope.Where(w => w.Eqp_ID == str).Sum(s => s.Cur_Wafer_QTY) : 0; model020.ReworkQty = list_ope.Any(a => a.Eqp_ID == str && a.Ope_Pass_Count > 1) ? list_ope.Where(w => w.Eqp_ID == str && w.Ope_Pass_Count > 1).Sum(s => s.Cur_Wafer_QTY) : 0; model020.EffMove = list_ope.Any(a => a.Eqp_ID == str && a.Ope_Pass_Count == 1) ? list_ope.Where(w => w.Eqp_ID == str && w.Ope_Pass_Count == 1).Sum(s => s.Cur_Wafer_QTY) : 0; model020.SomeDay = firstTime.AddDays(i); ReqRpt020Models.Add(model020); } } }