/// <summary> /// 月度计划统计图 /// </summary> /// <param name="request"></param> /// <returns></returns> public MonthPlanReportModel GetMonthPlanReport(HomeRequest request) { var retData = new MonthPlanReportModel(); var monthList = GetPlanDataList(request); if (!monthList.Any()) { return(retData); } List <string> demandNumList = monthList.Select(p => p.DemandPlanCode).ToList(); var bpn = monthList.Where(p => p.BatchPlanNum != null).Select(p => p.BatchPlanNum).Distinct().ToList(); demandNumList.AddRange(bpn); var batchList = GetBatchNeedList(request, demandNumList); if (batchList.Any()) { monthList.ForEach(x => { var batchWeight = batchList.Where(p => p.DemandPlanCode == x.DemandPlanCode || p.DemandPlanCode == x.BatchPlanNum).Sum(p => p.TotalWeight); x.BatchWeight = batchWeight; }); } retData = GetMonthPlanLab(monthList); return(retData); }
private MonthPlanReportModel GetMonthPlanLab(List <PlanDataModel> monthList) { var retData = new MonthPlanReportModel(); if (!monthList.Any()) { return(retData); } retData.TotalCount = monthList.GroupBy(p => p.WorkAreaCode).Count(); //计划不足 retData.TooFewCount = monthList.Where(p => p.RetWeight < 0 && (p.RetWeight < -(p.TotalWeight * ((decimal)0.1)))).GroupBy(p => p.WorkAreaCode).Count(); //计划过多 retData.TooMuchCount = monthList.Where(p => p.BatchWeight > 0 && p.RetWeight > 0 && (p.RetWeight > (p.TotalWeight * ((decimal)0.1)))).GroupBy(p => p.WorkAreaCode).Count(); //计划合理 //retData.EqualCount = monthList.Count(p => p.RetWeight <= (p.TotalWeight * ((decimal)0.1)) || p.RetWeight >= -(p.TotalWeight * ((decimal)0.1))); //超时未提交 retData.OverTime = monthList.Where(p => p.InsertTime.Day > 19).GroupBy(p => p.WorkAreaCode).Count(); retData.pCode = monthList[0].BranchCode; return(retData); }