/// <summary> /// 根据条件分页获取列表 /// </summary> /// <param name="page">查询实体</param> /// <returns></returns> public async Task <PagedResultDto <TrainUserExperienceListOutputDto> > GetListByUser(GetTrainUserExperienceListInput input) { var users = new List <long>(); var organizeManager = Abp.AbpBootstrapper.Create <Abp.Modules.AbpModule>().IocManager.IocContainer.Resolve <WorkFlowOrganizationUnitsManager>(); var train = _trainRepository.GetAll().FirstOrDefault(x => x.Id == input.TrainId); var arr = train.JoinUser.Split(','); foreach (var item in arr) { var userId = Convert.ToInt64(item.Replace("u_", "")); var organUser = organizeManager.GetChargeLeader(userId); var lId = !string.IsNullOrEmpty(organUser) ? MemberPerfix.RemovePrefix(organUser).ToLong() : 0; if (lId == AbpSession.UserId.Value) { users.Add(userId); } } var query = from a in _repository.GetAll().Where(x => !x.IsDeleted && x.TrainId == input.TrainId && x.Type == TrainExperienceType.Train && users.Contains(x.UserId)) join b in _userRepository.GetAll() on a.UserId equals b.Id select new TrainUserExperienceListOutputDto() { Id = a.Id, UserId = a.UserId, UserName = b.Name, TrainId = a.TrainId, Experience = a.Experience, Approval = a.Approval, CreationTime = a.CreationTime }; var toalCount = await query.CountAsync(); var ret = await query.OrderByDescending(r => r.CreationTime).PageBy(input).ToListAsync(); return(new PagedResultDto <TrainUserExperienceListOutputDto>(toalCount, ret)); }
/// <summary> /// 根据条件分页获取列表 /// </summary> /// <param name="page">查询实体</param> /// <returns></returns> public async Task <PagedResultDto <TrainUserExperienceSumOutputDto> > GetList(GetTrainUserExperienceListInput input) { var train = _trainRepository.GetAll().FirstOrDefault(x => x.Id == input.TrainId); if (train == null) { throw new UserFriendlyException((int)ErrorCode.DataAccessErr, "该数据不存在。"); } var users = train.JoinUser.Split(',').ToArray().Select(x => Convert.ToInt64(x.Replace("u_", ""))); var query = from a in users join b in _userRepository.GetAll() on a equals b.Id let ex = _repository.GetAll().Where(x => !x.IsDeleted && x.TrainId == input.TrainId && x.UserId == a && x.Type == TrainExperienceType.Train).FirstOrDefault() select new TrainUserExperienceSumOutputDto() { Id = ex?.Id, UserId = a, UserName = b.Name, TrainId = input.TrainId, Experience = ex?.Experience, Approval = ex?.Approval, CreationTime = ex?.CreationTime, IsOver = ex != null }; var toalCount = query.Count(); var ret = query.OrderByDescending(x => x.IsOver).OrderByDescending(r => r.CreationTime).ToList(); return(new PagedResultDto <TrainUserExperienceSumOutputDto>(toalCount, ret)); }