/// <summary> /// 基于评审实例的操作 /// </summary> /// <returns></returns> public async Task <ActionResult> ReviewInstance() { var review = await GetCurrentReview(); if (review == null || review.CurrentReviewRound == null || review.CurrentReviewRound.ReviewStatus != Reviews.ReviewStatus.Reviewing) { return(RedirectToAction("Index")); } var appConfiguration = _env.GetAppConfiguration(); var loginInfo = await _sessionAppService.GetCurrentLoginInformations(); ViewData["softTitle"] = appConfiguration["System:SoftTitle"]; ViewData["reviewInstance"] = review; List <ReviewProject> reviewProjects = review.ReviewProjects; var sourceProjectIds = review.CurrentReviewRound.SourceProjectIDs.Split(',').Select(o => int.Parse(o)); reviewProjects = reviewProjects.Where(o => sourceProjectIds.Contains(o.Id)).ToList(); List <Project> projects; if (review.CurrentReviewRound.ReviewMethod != Reviews.ReviewMethod.Vote) { //非投票类型的评审需要移除当前专家回避的项目 reviewProjects = reviewProjects.Where(o => !o.IsAvoidedByExpert(AbpSession.UserId.Value)).ToList(); } //获取所有待评审项目 projects = await ProjectRepository.GetAllIncluding(o => o.Prize, o => o.DesignOrganization).Include(o => o.PrizeSubMajor).ThenInclude(o => o.Major).Where(o => reviewProjects.Select(r => r.Id).Contains(o.Id)).ToListAsync(); //暂存的数据 List <ProjectReviewDetail> projectReviewDetails = new List <ProjectReviewDetail>(); var expertReviewDetail = review.CurrentReviewRound.ExpertReviewDetails.SingleOrDefault(o => o.ExpertID == AbpSession.UserId.Value); if (expertReviewDetail != null) { projectReviewDetails = expertReviewDetail.ProjectReviewDetails; } ViewData["ReviewProjects"] = reviewProjects; ViewData["ReviewProjectDtos"] = await ProjectAppService.ProjectToReviewProjectDtos(reviewProjects); ViewData["Projects"] = projects; ViewData["ProjectReviewDetails"] = projectReviewDetails; return(View(loginInfo)); }
/// <summary> /// 评选活动详情 /// </summary> /// <param name="data"></param> /// <returns></returns> public async Task <IActionResult> ReviewEdit(int data) { var matchInstance = await GetCurrentMatchInstance(); var review = await ReviewRepository.GetAllIncluding(o => o.ReviewRounds).SingleOrDefaultAsync(o => o.Id == data); //获取对应的专家 var expertIds = review.ReviewExperts.Select(o => o.Id); var expertUsers = await UserRepository.GetAll() .Include(o => o.Organization) .Include(o => o.Specialities) .Where(o => expertIds.Contains(o.Id)).ToListAsync(); //Logger.Error("Before ExpertTransform:" + DateTime.Now.ToLongTimeString()); var specialities = await SpecialityRepository.GetAllListAsync(); var reviewExpertDtos = expertUsers.Select(o => new ReviewExpertDto { Id = o.Id, Name = o.Name, OrganizationDisplayName = o.Organization?.DisplayName, Specialities = o.Specialities.Select(s => specialities.Single(sp => sp.Id == s.SpecialityId).Name).ToList() }); //var reviewExpertDtos = await UserAppService.UserToReviewExpertDtos(expertUsers,matchInstance.MatchId); //Logger.Error("After ExpertTransform:" + DateTime.Now.ToLongTimeString()); ViewBag.Experts = reviewExpertDtos; //获取对应的项目 var reviewProjects = review.ReviewProjects.OrderBy(o => o.Sort).ToList(); //Logger.Error("Before ProjectTransform:" + DateTime.Now.ToLongTimeString()); Logger.Error("0:" + DateTime.Now.ToString("HH:mm:ss:fff")); ViewBag.Projects = await ProjectAppService.ProjectToReviewProjectDtos(reviewProjects); //Logger.Error("After ProjectTransform:" + DateTime.Now.ToLongTimeString()); ViewData["MatchInstance"] = matchInstance; return(View(review)); }