private ReqRpt018DataBase GetEntityByDayRange(string EqpID, DateTime firstDay, DateTime lastDay) { ReqRpt018DataBase entity = new ReqRpt018DataBase(); using (RPTContext db = new RPTContext()) { var list = db.EQP_UPm_018.Where(w => w.EqpID == EqpID && DbFunctions.TruncateTime(w.Date) >= firstDay && DbFunctions.TruncateTime(w.Date) <= lastDay).ToList(); double pr = list.Sum(s => s.PRDMin); double ns = list.Sum(s => s.NSTMin); double sb = list.Sum(s => s.SBYMin); double sd = list.Sum(s => s.SDTMin); double ud = list.Sum(s => s.UDTMin); double en = list.Sum(s => s.ENGMin); double ot = pr + sb + sd + ud + en; double ut = pr + sb; double pdtest = list.Sum(s => s.PRDTestMin); double pm = list.Sum(s => s.PMMin); if (ot + ns > 0) { entity.UPm = ot == 0 ? 0 : (pr + sb) / ot; entity.UUm = ut == 0 ? 0 : pr / ut; entity.SD = ot == 0 ? 0 : sd / ot; entity.UD = ot == 0 ? 0 : ud / ot; entity.PRDHour = pr / 60; entity.SBYHour = sb / 60; entity.SDTHour = sd / 60; entity.UDTHour = ud / 60; entity.NSTHour = ns / 60; entity.ENGHour = en / 60; entity.PRDTestHour = pdtest / 60; entity.PMHour = pm / 60; } return(entity); } }
private void GetEntitiesByType() { if (Type == "date" || (Type == "frame" && Frame == "date")) { foreach (string id in EqpIDs) { ReqRpt018TableEntity entity = new ReqRpt018TableEntity(); entity.EqpID = id; foreach (string date in Dates) { DateTime dt = DateTime.ParseExact(date, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); ReqRpt018DataBase data = GetEntityByDayRange(id, dt, dt); data.Date = date; entity.Datas.Add(data); } entities.Add(entity); } } if (Type == "week" || (Type == "frame" && Frame == "week")) { foreach (string id in EqpIDs) { ReqRpt018TableEntity entity = new ReqRpt018TableEntity(); entity.EqpID = id; foreach (string date in Dates) { int year = Convert.ToInt16(date.Substring(0, 4)); int week = Convert.ToInt16(date.Substring(6)); Tuple <DateTime, DateTime> dts = GetFirstEndDayOfWeek(year, week, System.Globalization.CultureInfo.GetCultureInfo("zh-cn")); DateTime sdt = dts.Item1; DateTime edt = dts.Item2; ReqRpt018DataBase data = GetEntityByDayRange(id, sdt, edt); data.Date = date; entity.Datas.Add(data); } entities.Add(entity); } } if (Type == "month" || (Type == "frame" && Frame == "month")) { foreach (string id in EqpIDs) { ReqRpt018TableEntity entity = new ReqRpt018TableEntity(); entity.EqpID = id; foreach (string date in Dates) { DateTime sdt = Convert.ToDateTime(date.Replace('-', '/') + "/01"); DateTime edt = sdt.AddMonths(1).AddDays(-1); ReqRpt018DataBase data = GetEntityByDayRange(id, sdt, edt); data.Date = date; entity.Datas.Add(data); } entities.Add(entity); } } }