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; 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> GetPlanMajorList(OneSubmitGoRequest request) { if (string.IsNullOrWhiteSpace(request.Location)) { return new PageModel() { }; } if (request.Year <= 0) { return new PageModel() { }; } 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, " order by LowScoreRank desc"); var majorarry = query.data.Select(c => c.Major).ToArray(); var universityarry = query.data.Select(c => c.UniversityName).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.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(query.data.Any(), c => SqlFunc.ContainsArray(majorarry, c.Major)) .AndIF(query.data.Any(), c => SqlFunc.ContainsArray(universityarry, c.UniversityName)) //.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, 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 = "冲",//还缺冲稳保 PlanId = c.Id, UniversityCode = c.EnrollmentCode, MajorCode = c.MajorCode, PlanItems = list.Where(e => e.UniversityName.Equals(c.UniversityName) && e.Major.Equals(c.Major) && e.MajorCode.Equals(c.MajorCode)).Select(s => new PlanItem() { PlanCount = s.PlanCount, RankLine = s.LowScoreRank, Scoreline = s.LowScore, Year = s.AcademicYear }).OrderByDescending(k => k.Year).ToList() }).ToList(); return new PageModel() { data = responselist, dataCount = query.dataCount, page = query.page, pageCount = query.pageCount, PageSize = query.PageSize }; } } }