using New_College.IServices; using New_College.Model.Models; using New_College.Services.BASE; using New_College.IRepository.Base; using System.Threading.Tasks; using New_College.Model.ViewModels; using New_College.Model; using SqlSugar; using System.Linq.Expressions; using System; using System.Linq; using New_College.Common; namespace New_College.Services { /// /// 填报数据整合 /// public class D_PlanMajorDescServices : BaseServices, ID_PlanMajorDescServices { private readonly IBaseRepository _dal; public D_PlanMajorDescServices(IBaseRepository dal) { this._dal = dal; base.BaseDal = dal; } /// /// /// /// /// public async Task> GetAIGoList(OneSubmitGoRequest request) { var pagemodel = new PageModel(); int startscore = request.Score - 15; int endscore = request.Score + 15; Expression> expression = Expressionable.Create() .And(c => c.IsDelete == false) .And(c => c.Location == request.Location) .AndIF(!string.IsNullOrWhiteSpace(request.Major), c => SqlFunc.Contains(request.Major, c.Major)) .AndIF(!string.IsNullOrWhiteSpace(request.SubjectClaim), c => SqlFunc.Contains(request.SubjectClaim, c.SelectSubject)) .AndIF(!string.IsNullOrWhiteSpace(request.BatchName), c => c.BatchName.Equals(request.BatchName)) .AndIF(!string.IsNullOrWhiteSpace(request.Province), c => SqlFunc.Contains(request.Province, c.AreaName)) .And(c => c.Years == request.Year) .AndIF(!string.IsNullOrWhiteSpace(request.SchoolType), c => c.SchoolType == request.SchoolType) .AndIF(request.Score > 0 && (request.EndScore <= endscore && request.StartScore >= startscore), c => SqlFunc.Between(c.LowScore, startscore, endscore)) .AndIF(request.EndScore > endscore || request.StartScore < startscore, c => SqlFunc.Between(c.LowScore, request.StartScore, request.EndScore)) .AndIF(request.Syl.HasValue && request.Syl == 1, c => c._SYL == "是") .AndIF(request._211.HasValue && request._211 == 1, c => c._211 == "是") .AndIF(request._985.HasValue && request._985 == 1, c => c._985 == "是") .AndIF(!string.IsNullOrWhiteSpace(request.Ownership), c => c.Ownership == request.Ownership) .AndIF(!string.IsNullOrWhiteSpace(request.Nature), c => c.Nature == request.Nature) //.AndIF(request. > 0, c => SqlFunc.Between(c.LowScore, request.Score, request.Score)) 位次区间 .ToExpression(); var query = await _dal.QueryPage(expression, request.PageIndex, request.PageSize, " LowScoreRank desc "); var majorarry = query.data.Select(c => c.Major).Distinct().ToArray(); var universityarry = query.data.Select(c => c.UId).Distinct().ToArray();// Expression> expression2 = Expressionable.Create() .And(c => c.IsDelete == false) .And(c => c.Location == request.Location) .AndIF(!string.IsNullOrWhiteSpace(request.Major), c => SqlFunc.Contains(request.Major, c.Major)) // .AndIF(!string.IsNullOrWhiteSpace(request.SubjectClaim), c => SqlFunc.Contains(request.SubjectClaim, c.SelectSubject)) //此条件不带 .AndIF(!string.IsNullOrWhiteSpace(request.BatchName), c => c.BatchName == request.BatchName.Trim()) .AndIF(!string.IsNullOrWhiteSpace(request.Province), c => SqlFunc.Contains(request.Province, c.AreaName)) .AndIF(!string.IsNullOrWhiteSpace(request.SchoolType), c => c.SchoolType == request.SchoolType) .AndIF(request.Syl.HasValue && request.Syl == 1, c => c._SYL == "是") .AndIF(request._211.HasValue && request._211 == 1, c => c._211 == "是") .AndIF(request._985.HasValue && request._985 == 1, c => c._985 == "是") .AndIF(!string.IsNullOrWhiteSpace(request.Ownership), c => c.Ownership == request.Ownership) .AndIF(!string.IsNullOrWhiteSpace(request.Nature), c => c.Nature == request.Nature) .AndIF(majorarry.Any(), c => SqlFunc.ContainsArray(majorarry, c.Major)) .AndIF(universityarry.Any(), c => SqlFunc.ContainsArray(universityarry, c.UId)) //.AndIF(request. > 0, c => SqlFunc.Between(c.LowScore, request.Score, request.Score)) 位次区间 .ToExpression(); var list = (await _dal.Query(expression2)).Select(c => new D_PlanMajorDesc() { Major = c.Major, MajorCode = c.MajorCode, UniversityName = c.UniversityName, UId = c.UId, Years = c.Years, LowScore = c.LowScore, LowScoreRank = c.LowScoreRank, PlanCount = c.PlanCount, // AcademicYear = c.Years.ToString() }).ToList(); var responselist = query.data.Select(c => new OneSubmitGoResponse() { AreaName = c.AreaName, fee = c.Free, Major = c.Major, MajorGroup = c.MajorGroup, MajorRemark = c.Remark, planCount = c.PlanCount, Rank = c.Rank, _985 = c._985, _211 = c._211, _SYL = c._SYL, UniversityId = c.UId, UniversityName = c.UniversityName, SubjectClam = c.SelectSubject, Type = MajorPlanScoreTool.GetPlanScore(c.LowScore, request.Score),//还缺冲稳保 PlanId = c.Id, UniversityCode = c.EnrollmentCode, MajorCode = c.MajorCode, LowScoreRank = c.LowScoreRank, PlanItems = list.Where(e => e.UId == c.UId && e.Major.Equals(c.Major)).Select(s => new PlanItem() { PlanCount = s.PlanCount, RankLine = s.LowScoreRank, Scoreline = s.LowScore, Year = s.Years.ToString() }).OrderByDescending(k => k.Year).ToList() }).OrderByDescending(c => c.Type).OrderBy(c => c.LowScoreRank).ToList(); return new PageModel() { data = responselist, dataCount = query.dataCount, page = query.page, pageCount = query.pageCount, PageSize = query.PageSize }; } /// /// 一键填报招生计划展示 /// /// /// public async Task> GetPlanMajorList(OneSubmitGoRequest request) { var pagemodel = new PageModel(); Expression> expression = Expressionable.Create() .And(c => c.IsDelete == false) .And(c => c.Location == request.Location) .AndIF(!string.IsNullOrWhiteSpace(request.Major), c => SqlFunc.Contains(request.Major, c.Major)) .AndIF(!string.IsNullOrWhiteSpace(request.SubjectClaim), c => SqlFunc.Contains(request.SubjectClaim, c.SelectSubject)) .AndIF(!string.IsNullOrWhiteSpace(request.BatchName), c => c.BatchName.Equals(request.BatchName)) .AndIF(!string.IsNullOrWhiteSpace(request.Province), c => SqlFunc.Contains(request.Province, c.AreaName)) .And(c => c.Years == request.Year) .AndIF(!string.IsNullOrWhiteSpace(request.SchoolType), c => c.SchoolType == request.SchoolType) .AndIF(request.Score > 0, c => SqlFunc.Between(c.LowScore, request.Score - 15, request.Score + 15)) .AndIF(request.Syl.HasValue && request.Syl == 1, c => c._SYL == "是") .AndIF(request._211.HasValue && request._211 == 1, c => c._211 == "是") .AndIF(request._985.HasValue && request._985 == 1, c => c._985 == "是") .AndIF(!string.IsNullOrWhiteSpace(request.Ownership), c => c.Ownership == request.Ownership) .AndIF(!string.IsNullOrWhiteSpace(request.Nature), c => c.Nature == request.Nature) //.AndIF(request. > 0, c => SqlFunc.Between(c.LowScore, request.Score, request.Score)) 位次区间 .ToExpression(); var query = await _dal.QueryPage(expression, request.PageIndex, request.PageSize, " LowScoreRank desc "); var majorarry = query.data.Select(c => c.Major).Distinct().ToArray(); var universityarry = query.data.Select(c => c.UId).Distinct().ToArray();// Expression> expression2 = Expressionable.Create() .And(c => c.IsDelete == false) .And(c => c.Location == request.Location) .AndIF(!string.IsNullOrWhiteSpace(request.Major), c => SqlFunc.Contains(request.Major, c.Major)) // .AndIF(!string.IsNullOrWhiteSpace(request.SubjectClaim), c => SqlFunc.Contains(request.SubjectClaim, c.SelectSubject)) //此条件不带 .AndIF(!string.IsNullOrWhiteSpace(request.BatchName), c => c.BatchName == request.BatchName.Trim()) .AndIF(!string.IsNullOrWhiteSpace(request.Province), c => SqlFunc.Contains(request.Province, c.AreaName)) .AndIF(!string.IsNullOrWhiteSpace(request.SchoolType), c => c.SchoolType == request.SchoolType) .AndIF(request.Syl.HasValue && request.Syl == 1, c => c._SYL == "是") .AndIF(request._211.HasValue && request._211 == 1, c => c._211 == "是") .AndIF(request._985.HasValue && request._985 == 1, c => c._985 == "是") .AndIF(!string.IsNullOrWhiteSpace(request.Ownership), c => c.Ownership == request.Ownership) .AndIF(!string.IsNullOrWhiteSpace(request.Nature), c => c.Nature == request.Nature) .AndIF(majorarry.Any(), c => SqlFunc.ContainsArray(majorarry, c.Major)) .AndIF(universityarry.Any(), c => SqlFunc.ContainsArray(universityarry, c.UId)) //.AndIF(request. > 0, c => SqlFunc.Between(c.LowScore, request.Score, request.Score)) 位次区间 .ToExpression(); var list = (await _dal.Query(expression2)).Select(c => new D_PlanMajorDesc() { Major = c.Major, MajorCode = c.MajorCode, UniversityName = c.UniversityName, UId = c.UId, Years = c.Years, LowScore = c.LowScore, LowScoreRank = c.LowScoreRank, PlanCount = c.PlanCount, // AcademicYear = c.Years.ToString() }).ToList(); var responselist = query.data.Select(c => new OneSubmitGoResponse() { AreaName = c.AreaName, fee = c.Free, Major = c.Major, MajorGroup = c.MajorGroup, MajorRemark = c.Remark, planCount = c.PlanCount, Rank = c.Rank, _985 = c._985, _211 = c._211, _SYL = c._SYL, UniversityId = c.UId, UniversityName = c.UniversityName, SubjectClam = c.SelectSubject, Type = MajorPlanScoreTool.GetPlanScore(c.LowScore, request.Score),//还缺冲稳保 PlanId = c.Id, UniversityCode = c.EnrollmentCode, MajorCode = c.MajorCode, LowScoreRank = c.LowScoreRank, PlanItems = list.Where(e => e.UId == c.UId && e.Major.Equals(c.Major)).Select(s => new PlanItem() { PlanCount = s.PlanCount, RankLine = s.LowScoreRank, Scoreline = s.LowScore, Year = s.Years.ToString() }).OrderByDescending(k => k.Year).ToList() }).OrderByDescending(c => c.Type).OrderBy(c => c.LowScoreRank).ToList(); return new PageModel() { data = responselist, dataCount = query.dataCount, page = query.page, pageCount = query.pageCount, PageSize = query.PageSize }; } } }