/// <summary> /// 扩展方法,计算项目列表projects的某年度year的两金压降工作月报,并填充viewmodel /// </summary> /// <param name="model"></param> /// <param name="projects"></param> public static async Task CalculatePerforms(this ProjectYearViewModel model, int year, IEnumerable <Project> projects, IProjectService projectService, IPerformService performService) { var projectIds = from p in projects select p.ProjectId; var performs = await performService.GetYearPerformsOfProjects(year, projectIds); var balances = await projectService.GetAnnualBalancesOfProjects(year - 1, projectIds); //取上一年的结转 model.Year = year; model.ProjectRowsDic.Clear(); foreach (var proj in projects) { model.ProjectRowsDic.Add(proj.ProjectId, YearRowViewModel.Create(proj, year, balances, performs)); } }
/// <summary> /// 利用相关的年度计划和历年结转,生成一个项目年度计划数据行的实例并返回 /// </summary> /// <param name="project"></param> /// <param name="plans"></param> /// <returns></returns> internal static YearRowViewModel Create(Project project, int year, IEnumerable <AnnualBalance> annualBalances, IEnumerable <Plan> plans) { var model = YearRowViewModel.Create(project, year, annualBalances); var projectPlans = from p in plans where p.ProjectId == project.ProjectId && p.Year == year select p; foreach (var plan in projectPlans) { model.MonthDataDic[plan.Month] = plan; } return(model); }