84 lines
3.5 KiB
C#
84 lines
3.5 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// D_PlanMajorDescProRepository
|
|
/// </summary>
|
|
public class D_PlanMajorDescProRepository : BaseRepository<D_PlanMajorDescPro>, ID_PlanMajorDescProRepository
|
|
{
|
|
public D_PlanMajorDescProRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
|
|
{
|
|
|
|
}
|
|
|
|
public async Task<PageModel<UniversityPlanProView>> GetUniversityPlanPro(UniversityProViewQuery request)
|
|
{
|
|
RefAsync<int> totalCount = 0;
|
|
var pageresult = new PageModel<UniversityPlanProView>();
|
|
request.Year = request.Year > DateTime.Now.Year - 1 ? DateTime.Now.Year - 1 : request.Year;
|
|
var pagelist = await this.Db.Queryable<D_PlanMajorDescPro>().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;
|
|
}
|
|
}
|
|
} |