using New_College.IRepository; using New_College.IRepository.UnitOfWork; using New_College.Model; using New_College.Model.Models; using New_College.Model.ViewModels; using New_College.Repository.Base; using SqlSugar; using System.Linq.Expressions; using System.Linq; using System; using System.Threading.Tasks; using MathNet.Numerics.Statistics.Mcmc; using System.Collections.Generic; namespace New_College.Repository { /// /// D_PlanMajorDescProRepository /// public class D_PlanMajorDescProRepository : BaseRepository, ID_PlanMajorDescProRepository { public D_PlanMajorDescProRepository(IUnitOfWork unitOfWork) : base(unitOfWork) { } public async Task> GetUniversityPlanPro(UniversityProViewQuery request) { RefAsync totalCount = 0; var pageresult = new PageModel(); var pagelist = await this.Db.Queryable().Where(c => c.Location == request.Location) .Where(c => c.Years == request.Year) .WhereIF(request.Sff.HasValue, c => c._211 == (request.Sff == 1 ? "是" : "否")) .WhereIF(request.Nhef.HasValue, c => c._985 == (request.Nhef == 1 ? "是" : "否")) .WhereIF(request.Syl.HasValue, c => c._SYL == (request.Syl == 1 ? "是" : "否")) .WhereIF(request.Nature != null && request.Nature.Any(), x => SqlFunc.ContainsArray(request.Nature, x.Nature)) .WhereIF(request.AreaName != null && request.AreaName.Any() && !request.AreaName.Contains("全国"), x => SqlFunc.ContainsArray(request.AreaName, x.AreaName)) .WhereIF(request.SubjectLevel.HasValue, c => c.EducationCategory == (request.SubjectLevel == 1 ? "本科" : "专科")) .WhereIF(!string.IsNullOrWhiteSpace(request.Name), c => SqlFunc.Contains(c.UniversityName, request.Name)).GroupBy(c => new { c.AreaName, c.UId, c.UniversityName, c.Nature, c._985, c._211, c._SYL, c.SchoolType, c.EducationCategory, c.Rank, c.Logo, c.Web }) .Select(c => new UniversityPlanProView() { AreaName = c.AreaName, ALLCount = SqlFunc.AggregateSum(c.PlanCount), MajorCount = SqlFunc.AggregateCount(c.UId), NewCount = SqlFunc.AggregateSum(c.NewCount), UId = c.UId, Name = c.UniversityName, Nature = c.Nature, _985 = c._985, _211 = c._211, _SYL = c._SYL, Logo = c.Logo, Web = c.Web, UniversityType = c.SchoolType, SubjectLevel = c.EducationCategory, Rank = string.IsNullOrEmpty(c.Rank) ? "--" : c.Rank }) .OrderBy(k => k.UId, OrderByType.Asc) .ToPageListAsync(request.PageIndex, request.PageSize, totalCount); pageresult.pageCount = (Math.Ceiling(totalCount.ObjToDecimal() / request.PageSize.ObjToDecimal())).ObjToInt(); pageresult.page = request.PageIndex; pageresult.data = pagelist; pageresult.dataCount = totalCount; pageresult.PageSize = request.PageSize; return pageresult; } } }