コード例 #1
0
        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
            };
        }
コード例 #2
0
        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);
                }
            }
        }