408 lines
25 KiB
C#
408 lines
25 KiB
C#
using LinqKit;
|
|
using New_College.Common;
|
|
using New_College.Common.Helper;
|
|
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 NPOI.OpenXmlFormats.Dml.Diagram;
|
|
using NPOI.SS.Formula.Functions;
|
|
using Serilog;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Linq.Expressions;
|
|
using System.Numerics;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace New_College.Repository
|
|
{
|
|
/// <summary>
|
|
/// T_EnrollmentPlanedescRepository
|
|
/// </summary>
|
|
public class T_EnrollmentPlanedescRepository : BaseRepository<T_EnrollmentPlanedesc>, IT_EnrollmentPlanedescRepository
|
|
{
|
|
private readonly IV_CustomerInfoRepository v_CustomerInfo;
|
|
private readonly IT_EnrollmentPlaneRepository t_EnrollmentPlane;
|
|
private readonly ID_MajorRepository d_Major;
|
|
private readonly ID_PlanMajorDescRepository planMajorDesc;
|
|
private readonly ID_PlanMajorScoreLineRepository planMajorScoreLine;
|
|
private readonly ID_UniversityRepository d_University;
|
|
private readonly ISysRegionRepository _sysRegionRepository;
|
|
private readonly IT_TbSNeedDataInfoRepository t_TbSNeedDataInfo;
|
|
public T_EnrollmentPlanedescRepository(IUnitOfWork unitOfWork,
|
|
IV_CustomerInfoRepository _CustomerInfoRepository,
|
|
IT_EnrollmentPlaneRepository t_EnrollmentPlaneRepository,
|
|
ID_MajorRepository d_MajorRepository,
|
|
ID_PlanMajorDescRepository planMajorDesc,
|
|
ID_PlanMajorScoreLineRepository planMajorScoreLine,
|
|
ID_UniversityRepository d_University,
|
|
ISysRegionRepository sysRegionRepository,
|
|
IT_TbSNeedDataInfoRepository tbSNeedDataInfo) : base(unitOfWork)
|
|
{
|
|
this.v_CustomerInfo = _CustomerInfoRepository;
|
|
this.t_EnrollmentPlane = t_EnrollmentPlaneRepository;
|
|
this.d_Major = d_MajorRepository;
|
|
this.planMajorDesc = planMajorDesc;
|
|
this.planMajorScoreLine = planMajorScoreLine;
|
|
this.d_University = d_University;
|
|
this._sysRegionRepository = sysRegionRepository;
|
|
this.t_TbSNeedDataInfo = tbSNeedDataInfo;
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<MessageModel<List<UniversityMapMajorItems>>> GetUniversityMapItems(CWBUniversityDetailQuery query)
|
|
{
|
|
query.Year = query.Year > 2024 ? 2024 : query.Year;
|
|
var response = new List<UniversityMapMajorItems>();
|
|
RefAsync<int> totalNumber = 0;
|
|
var regionlist = this.Db.Queryable<SysRegion>().Where(c => c.Level == 1).WhereIF(query.provinceIds != null && query.provinceIds.Any(), c => SqlFunc.ContainsArray(query.provinceIds, c.KeyId)).Select(c => c.RegionName).ToList();
|
|
|
|
var subjects = new string[] { };
|
|
string sbuOne = string.Empty;
|
|
string sbuTwo = string.Empty;
|
|
string sbuTree = string.Empty;
|
|
float chongfirst = query.Score + 15;
|
|
float chongend = query.Score + 5;
|
|
float wenend = query.Score - 15;
|
|
if (!string.IsNullOrWhiteSpace(query.SubjectClaim))
|
|
{
|
|
subjects = query.SubjectClaim.Split(",");
|
|
sbuOne = subjects[0];
|
|
sbuTwo = subjects[1];
|
|
sbuTree = subjects[2];
|
|
}
|
|
var majornames = new List<string>();
|
|
var majoraslist = new List<D_Major>();
|
|
if (query.MajorIds != null && query.MajorIds.Count > 0)
|
|
{
|
|
//所选专业增加majorids筛选
|
|
//query.MajorIds
|
|
majoraslist = await this.d_Major.Query(x => x.IsDelete == false && SqlFunc.ContainsArray(query.MajorIds, x.Id));
|
|
if (majoraslist.Count() <= 0)
|
|
// return new MessageModel<PageModel<UniversityEnrollmentPlanResult>>() { success = false, msg = "所选专业大类数据完善中..." };
|
|
majornames = majoraslist.Select(x => x.MajorCode).ToList();
|
|
}
|
|
|
|
|
|
|
|
var recommandinfo = await this.Db.Queryable<T_TbSNeedDataInfo>()
|
|
.WhereIF(regionlist.Any(), p => SqlFunc.ContainsArray(regionlist, p.Province))
|
|
//.WhereIF(query.Year > 0, p => p.Years == query.Year)
|
|
.WhereIF(!string.IsNullOrEmpty(query.Location), p => p.Location == query.Location)
|
|
// .WhereIF(!string.IsNullOrEmpty(query.BatchName), p => p.BatchName == query.BatchName)
|
|
.WhereIF(string.IsNullOrWhiteSpace(query.Type), p => int.Parse(p._23Score) > 0 && (int.Parse(p._23Score) <= query.Score + 15))
|
|
.WhereIF(query.Type == "冲", p => int.Parse(p._23Score) > 0 && (int.Parse(p._23Score) <= query.Score + 15 && int.Parse(p._23Score) > query.Score + 5))
|
|
.WhereIF(query.Type == "稳", p => int.Parse(p._23Score) > 0 && (int.Parse(p._23Score) <= query.Score + 5 && int.Parse(p._23Score) > query.Score - 15))
|
|
.WhereIF(query.Type == "保", p => int.Parse(p._23Score) > 0 && (int.Parse(p._23Score) < query.Score - 15))
|
|
.WhereIF(!string.IsNullOrWhiteSpace(query.SubjectClaim), p => (SqlFunc.Contains(p._23subject, sbuOne) || SqlFunc.Contains(p._23subject, sbuTwo) || SqlFunc.Contains(p._23subject, sbuTree)))
|
|
.WhereIF(majornames.Any() && majornames.Count() > 0, p => SqlFunc.ContainsArray(majornames, p.MajorCode))
|
|
//.WhereIF(query.UniversityIds.Any() && query.UniversityIds.Count() > 0, p => SqlFunc.ContainsArray(query.UniversityIds, p.UId))
|
|
.Select(p => new UniversityEnrollmentPlanResult()
|
|
{
|
|
// UniversityId = p.UId,
|
|
//PlanId = p.Id,
|
|
// Scoreline = p.LowScore
|
|
})
|
|
.ToListAsync();
|
|
// var recommendInfo = await this.Db.Queryable<D_PlanMajorDesc>()
|
|
// .WhereIF(regionlist.Any(), p => SqlFunc.ContainsArray(regionlist, p.AreaName))
|
|
//.WhereIF(query.Year > 0, p => p.Years == query.Year)
|
|
//.WhereIF(!string.IsNullOrEmpty(query.Location), p => p.Location == query.Location)
|
|
//.WhereIF(!string.IsNullOrEmpty(query.BatchName), p => p.BatchName == query.BatchName)
|
|
//.WhereIF(string.IsNullOrWhiteSpace(query.Type), p => p.LowScore > 0 && (p.LowScore <= query.Score + 15))
|
|
//.WhereIF(query.Type == "冲", p => p.LowScore > 0 && (p.LowScore <= query.Score + 15 && p.LowScore > query.Score + 5))
|
|
//.WhereIF(query.Type == "稳", p => p.LowScore > 0 && (p.LowScore <= query.Score + 5 && p.LowScore > query.Score - 15))
|
|
//.WhereIF(query.Type == "保", p => p.LowScore > 0 && (p.LowScore < query.Score - 15))
|
|
//.WhereIF(!string.IsNullOrWhiteSpace(query.SubjectClaim), p => (SqlFunc.Contains(p.SelectSubject, sbuOne) || SqlFunc.Contains(p.SelectSubject, sbuTwo) || SqlFunc.Contains(p.SelectSubject, sbuTree)))
|
|
//.WhereIF(majornames.Any() && majornames.Count() > 0, p => SqlFunc.ContainsArray(majornames, p.MajorCode))
|
|
// .WhereIF(query.UniversityIds.Any() && query.UniversityIds.Count() > 0, p => SqlFunc.ContainsArray(query.UniversityIds, p.UId))
|
|
//.Select(p => new UniversityEnrollmentPlanResult()
|
|
//{
|
|
// UniversityId = p.UId,
|
|
// PlanId = p.Id,
|
|
// // Scoreline = p.LowScore
|
|
//})
|
|
//.ToListAsync();
|
|
// var universitylist = recommendInfo.Select(c => c.UniversityId).Distinct().ToList();
|
|
// universitylist.ForEach(a =>
|
|
// {
|
|
// response.Add(new UniversityMapMajorItems()
|
|
// {
|
|
// UId = a,
|
|
// MIds = recommendInfo.Where(e => e.UniversityId == a).Select(c => c.PlanId).ToList()
|
|
// });
|
|
// });
|
|
return new MessageModel<List<UniversityMapMajorItems>>() { response = response };
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// CWB
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<MessageModel<PageModel<UniversityEnrollmentPlanResult>>> GetCWBUniversityDetail(CWBUniversityDetailQuery query)
|
|
{
|
|
query.Year = query.Year > 2024 ? 2024 : query.Year;
|
|
RefAsync<int> totalNumber = 0;
|
|
if (query.provinceIds == null)
|
|
{
|
|
query.provinceIds = new List<int>() { 0 };
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(query.SubjectClaim))
|
|
{
|
|
return new MessageModel<PageModel<UniversityEnrollmentPlanResult>>()
|
|
{
|
|
msg = "选科参数必填",
|
|
success = false
|
|
};
|
|
}
|
|
|
|
var subjecttype = query.SubjectClaim.Length == 2 ? query.SubjectClaim : "综合";
|
|
query.SubjectClaim = query.SubjectClaim.Length == 2 ? (query.SubjectClaim == "理科" ? "物,化,生" : "政,史,地") : query.SubjectClaim;
|
|
var regionlist = this.Db.Queryable<SysRegion>().Where(c => c.Level == 1).WhereIF(query.provinceIds != null && query.provinceIds.Any(), c => SqlFunc.ContainsArray(query.provinceIds, c.KeyId)).Select(c => c.RegionName).ToList();
|
|
|
|
var claim = new string[] { };
|
|
string sbuOne = string.Empty;
|
|
string sbuTwo = string.Empty;
|
|
string sbuTree = string.Empty;
|
|
float chongfirst = query.Score + 15;
|
|
float chongend = query.Score + 5;
|
|
float wenend = query.Score - 15;
|
|
var claim01 = "";
|
|
var claim02 = "";
|
|
var claim03 = "";
|
|
if (!string.IsNullOrWhiteSpace(query.SubjectClaim))
|
|
{
|
|
claim = query.SubjectClaim.Split(",");
|
|
claim01 = claim[0];
|
|
claim02 = claim[1];
|
|
claim03 = claim[2];
|
|
}
|
|
var majornames = new List<string>();
|
|
var majoraslist = new List<D_Major>();
|
|
if (query.MajorIds != null && query.MajorIds.Count > 0)
|
|
{
|
|
//所选专业增加majorids筛选
|
|
//query.MajorIds
|
|
majoraslist = await this.d_Major.Query(x => x.IsDelete == false && SqlFunc.ContainsArray(query.MajorIds, x.Id));
|
|
if (majoraslist.Count() <= 0)
|
|
return new MessageModel<PageModel<UniversityEnrollmentPlanResult>>() { success = false, msg = "所选专业大类数据完善中..." };
|
|
majornames = majoraslist.Select(x => x.MajorName).ToList();
|
|
}
|
|
StringBuilder sqlstr = new StringBuilder();
|
|
sqlstr.AppendFormat("SELECT * from T_TbSNeedDataInfo where SubjectType='{0}' ", subjecttype);
|
|
|
|
if (regionlist.Any())
|
|
{
|
|
sqlstr.AppendFormat(" and Province in ('{0}')", string.Join("','", regionlist));
|
|
}
|
|
//if (query.Year > 0)
|
|
//{
|
|
// sqlstr.AppendFormat("and Years={0}", query.Year);
|
|
//}
|
|
if (!string.IsNullOrEmpty(query.Location))
|
|
{
|
|
sqlstr.AppendFormat(" and Location='{0}'", query.Location);
|
|
}
|
|
if (string.IsNullOrEmpty(query.Type))
|
|
{
|
|
sqlstr.AppendFormat(" and (_23Score BETWEEN {0} and {1})", query.Score - 60, query.Score + 15);
|
|
}
|
|
|
|
if (query.Type == "冲")
|
|
{
|
|
sqlstr.AppendFormat(" and (_23Score BETWEEN {0} and {1})", query.Score, query.Score + 15);
|
|
}
|
|
if (query.Type == "稳")
|
|
{
|
|
sqlstr.AppendFormat(" and (_23Score BETWEEN {0} and {1})", query.Score - 26, query.Score - 1);
|
|
}
|
|
if (query.Type == "保")
|
|
{
|
|
sqlstr.AppendFormat(" and (_23Score BETWEEN {0} and {1})", query.Score - 60, query.Score - 26);
|
|
}
|
|
if (majornames.Any() && majornames.Count() > 0)
|
|
{
|
|
sqlstr.Append(" and (");
|
|
int orcount = 0;
|
|
majornames.ForEach(a =>
|
|
{
|
|
orcount++;
|
|
if (orcount == majornames.Count)
|
|
{
|
|
sqlstr.AppendFormat(" MajorName like '%{0}%' ", a);
|
|
}
|
|
else
|
|
{
|
|
sqlstr.AppendFormat(" MajorName like '%{0}%' or", a);
|
|
}
|
|
|
|
});
|
|
sqlstr.Append(") ");
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(query.SubjectClaim))
|
|
{
|
|
sqlstr.AppendFormat(" and (_23subject like'%{0}%' or _23subject like'%{1}%' or _23subject like'%{2}%' or _23subject like'%{3}%' )", claim01, claim02, claim03, "不限");
|
|
}
|
|
if (query.BatchName == "普通类二段" || query.BatchName.Contains("专科"))
|
|
{
|
|
sqlstr.AppendLine(" or _23Score <=0 and EducationCategory='专科' order by _23ScoreLine ");
|
|
}
|
|
else
|
|
{
|
|
sqlstr.Append("and _23ScoreLine>0 order by _23ScoreLine ");
|
|
}
|
|
var recommendInfo = await this.Db.SqlQueryable<TbSNeedDataInfoViewDto>(sqlstr.ToString()).ToListAsync();
|
|
|
|
|
|
var universitylist = recommendInfo.GroupBy(g => g.UniversityName).Select(c => new UniversityEnrollmentPlanResult() { UniversityName = c.Key }).ToList();
|
|
var universitytemps = (await d_University.Query(c => SqlFunc.ContainsArray(recommendInfo.Select(c => c.UniversityName).ToList(), c.Name))).Select(c => new
|
|
D_University()
|
|
{ Id = c.Id, Logo = c.Logo, Name = c.Name }).ToList();
|
|
|
|
|
|
//var ulist = universitylist.Select(s => new UniversityEnrollmentPlanResult()
|
|
//{
|
|
// Logo = universitytemps.FirstOrDefault(e => e.Name == s.UniversityName) != null ? universitytemps.FirstOrDefault(e => e.Name == s.UniversityName).Logo : "",
|
|
// UniversityId = universitytemps.FirstOrDefault(e => e.Name == s.UniversityName) != null ? universitytemps.FirstOrDefault(e => e.Name == s.UniversityName).Id : 0,
|
|
// AreaName = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).Province : " ",
|
|
// UniversityCode = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).EnrollmentCode : "",
|
|
// Rank = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).UniversityRank : " ",
|
|
// _985 = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? (recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).LnstitutionalLevel != null ? (recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).LnstitutionalLevel.Contains("985") ? "是" : "否") : "否") : "否",
|
|
// _211 = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? (recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).LnstitutionalLevel != null ? (recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).LnstitutionalLevel.Contains("211") ? "是" : "否") : "否") : "否",
|
|
// _SYL = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? (recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).LnstitutionalLevel != null ? (recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).LnstitutionalLevel.Contains("双一流") ? "是" : "否") : "否") : "否",
|
|
// SchoolScoreline = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? int.Parse(recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName)._23SchoolScoreLine) : 0,
|
|
// SchoolLowScore = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? int.Parse(recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName)._23SchoolScore) : 0,
|
|
// Type = MajorPlanScoreTool.GetPlanScore(int.Parse(recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName)._23Score), (int)query.Score) == 2 ? "冲" : MajorPlanScoreTool.GetPlanScore(int.Parse(recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName)._23Score), (int)query.Score) == 1 ? "稳" : "保",//冲稳保院校
|
|
// Percentage = MajorPlanScoreTool.GetPlanPercentage(int.Parse(recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName)._23Score), (int)query.Score),
|
|
// AscriptionName = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).Ownership : " ",
|
|
// CityName = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName).City : " ",
|
|
// MjaorPlan = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? recommendInfo.Where(e => e.UniversityName == s.UniversityName).Count() : 0,
|
|
// planCount = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? recommendInfo.Where(e => e.UniversityName == s.UniversityName).Sum(m => int.Parse(m._23Count)) : 0,
|
|
// PlanIds = recommendInfo.Any(e => e.UniversityName == s.UniversityName) ? (recommendInfo.Where(e => e.UniversityName == s.UniversityName).Select(c => c.ID).ToList()) : null,
|
|
// UniversityName = s.UniversityName,
|
|
|
|
//}).OrderByDescending(t => t.Type).OrderBy(t => t.SchoolScoreline).Skip(query.PageSize * (query.PageIndex - 1)).Take(query.PageSize).ToList();
|
|
var ulist = new List<UniversityEnrollmentPlanResult>();
|
|
universitylist.ForEach(s =>
|
|
{
|
|
if (recommendInfo.Any(e => e.UniversityName == s.UniversityName) && universitytemps.FirstOrDefault(e => e.Name == s.UniversityName) != null)
|
|
{
|
|
var recommendFirstModel = recommendInfo.FirstOrDefault(e => e.UniversityName == s.UniversityName);
|
|
ulist.Add(new UniversityEnrollmentPlanResult()
|
|
{
|
|
Logo = universitytemps.FirstOrDefault(e => e.Name == s.UniversityName).Logo,
|
|
UniversityId = universitytemps.FirstOrDefault(e => e.Name == s.UniversityName).Id,
|
|
AreaName = recommendFirstModel.Province,
|
|
UniversityCode = recommendFirstModel.EnrollmentCode,
|
|
Rank = recommendFirstModel.UniversityRank,
|
|
_985 = (recommendFirstModel.LnstitutionalLevel != null ? (recommendFirstModel.LnstitutionalLevel.Contains("985") ? "是" : "否") : "否"),
|
|
_211 = (recommendFirstModel.LnstitutionalLevel != null ? (recommendFirstModel.LnstitutionalLevel.Contains("211") ? "是" : "否") : "否"),
|
|
_SYL = (recommendFirstModel.LnstitutionalLevel != null ? (recommendFirstModel.LnstitutionalLevel.Contains("双一流") ? "是" : "否") : "否"),
|
|
SchoolScoreline = int.Parse(recommendFirstModel._23SchoolScoreLine),
|
|
SchoolLowScore = int.Parse(recommendFirstModel._23SchoolScore),
|
|
Type = MajorPlanScoreTool.GetPlanScore(int.Parse(recommendFirstModel._23Score), (int)query.Score) == 2 ? "冲" : MajorPlanScoreTool.GetPlanScore(int.Parse(recommendFirstModel._23Score), (int)query.Score) == 1 ? "稳" : "保",//冲稳保院校
|
|
Percentage = MajorPlanScoreTool.GetPlanPercentage(int.Parse(recommendFirstModel._23Score), (int)query.Score),
|
|
AscriptionName = recommendFirstModel.Ownership,
|
|
CityName = recommendFirstModel.City,
|
|
MjaorPlan = recommendInfo.Where(e => e.UniversityName == s.UniversityName).Count(),
|
|
planCount = recommendInfo.Where(e => e.UniversityName == s.UniversityName).Sum(m => m._plancount),
|
|
PlanIds = recommendInfo.Where(e => e.UniversityName == s.UniversityName).Select(c => c.ID).ToList(),
|
|
UniversityName = s.UniversityName
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
return new MessageModel<PageModel<UniversityEnrollmentPlanResult>>()
|
|
{
|
|
success = true,
|
|
msg = "获取成功",
|
|
response = new PageModel<UniversityEnrollmentPlanResult>()
|
|
{
|
|
data = ulist.OrderByDescending(t => t.Type).Skip(query.PageSize * (query.PageIndex - 1)).Take(query.PageSize).ToList(),
|
|
dataCount = universitylist.Count,
|
|
page = query.PageIndex,
|
|
PageSize = query.PageSize,
|
|
pageCount = (int)Math.Ceiling(universitylist.Count / Convert.ToDecimal(query.PageSize))
|
|
}
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 智能选大学
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<PageModel<UniversityResult>> GetRecommendUniversity(RecommendUniversityQuery query)
|
|
{
|
|
var subjecttype = query.SubjectClaim.Length == 2 ? query.SubjectClaim : "综合";
|
|
query.SubjectClaim = query.SubjectClaim.Length == 2 ? (query.SubjectClaim == "理科" ? "物,化,生" : "政,史,地") : query.SubjectClaim;
|
|
RefAsync<int> totalNumber = 0;
|
|
var maxscore = query.Score + 15;
|
|
var minscore = query.Score - 60;
|
|
query.Year = query.Year > 2024 ? 2024 : query.Year;
|
|
//var custome = (await this.v_CustomerInfo.QueryById(query.CustomerId));
|
|
// int planId = (await t_EnrollmentPlane.Query(e => e.Years == custome.Year && e.Area_Id == custome.AreaId)).FirstOrDefault().Id;
|
|
//}
|
|
query.PageSize = query.PageSize < 100 ? 200 : query.PageSize;
|
|
var recommendInfo = await this.Db.Queryable<D_QualificationLine, D_University>((plans, universitys) => new object[] { JoinType.Left, plans.UId == universitys.Id })
|
|
.Where((plans, universitys) => plans.Location == query.Location)
|
|
.Where((plans, universitys) => plans.SubjectType == subjecttype)
|
|
.Where((plans, universitys) => plans.Years == query.Year)
|
|
.WhereIF(query.SubjectLevel.HasValue, (plans, universitys) => universitys.Subject_Level == query.SubjectLevel)
|
|
.WhereIF(query.Type >= 0, (plans, universitys) => universitys.Type == query.Type)
|
|
.WhereIF(query.Nhef >= 0, (plans, universitys) => universitys.Nhef == query.Nhef)
|
|
.WhereIF(query.Sff >= 0, (plans, universitys) => universitys.Sff == query.Sff)
|
|
.WhereIF(query.Syl >= 0, (plans, universitys) => universitys.Syl == query.Syl)
|
|
.WhereIF(query.Nature > 0, (plans, universitys) => universitys.Nature == query.Nature)
|
|
.WhereIF(!string.IsNullOrWhiteSpace(query.AreaName) && query.AreaName != "选择省份", (plans, universitys) => universitys.Area_Name == query.AreaName)
|
|
.WhereIF(maxscore > 10, (plans, universitys) => plans.LowScore <= maxscore)
|
|
.WhereIF(minscore > 0, (plans, universitys) => plans.LowScore > minscore)
|
|
.WhereIF(query.Ranking > 0, (plans, universitys) => plans.LowScoreRank >= query.Ranking)
|
|
// .Where(!string.IsNullOrWhiteSpace(query.SubjectClaim), (plans, universitys) => (plans.SubjectType.Contains(sbuOne) || plans.SelectSubject.Contains(sbuTwo) || plans.SelectSubject.Contains(sbuTree)))
|
|
.OrderBy((plans, universitys) => plans.LowScoreRank, OrderByType.Asc)
|
|
.Select((plans, universitys) => new UniversityResult()
|
|
{
|
|
Id = universitys.Id,
|
|
Name = universitys.Name,
|
|
Nature = universitys.Nature,
|
|
AscriptionName = universitys.AscriptionName,
|
|
SubjectLevel = universitys.Subject_Level,
|
|
AreaName = universitys.Area_Name,
|
|
Logo = universitys.Logo,
|
|
Syl = universitys.Syl == 1 ? true : false,
|
|
Nhef = universitys.Nhef == 1 ? true : false,
|
|
Sff = universitys.Sff == 1 ? true : false,
|
|
UniversityType = universitys.Type,
|
|
Scorepostion = plans.LowScoreRank,
|
|
ScoreLine = plans.LowScore,
|
|
Years = plans.Years
|
|
})
|
|
.ToPageListAsync(query.PageIndex, query.PageSize, totalNumber);
|
|
recommendInfo.Where(e => e.Id > 0).ToList().ForEach(recommendInfo =>
|
|
{
|
|
recommendInfo.Percentage = MajorPlanScoreTool.GetPlanPercentage((int)recommendInfo.ScoreLine, query.Score);
|
|
});
|
|
return new PageModel<UniversityResult>()
|
|
{
|
|
data = recommendInfo.Where(e => e.Id > 0).OrderBy(o => o.Percentage).ToList(),
|
|
page = query.PageIndex,
|
|
PageSize = query.PageSize,
|
|
dataCount = totalNumber,
|
|
pageCount = (int)Math.Ceiling(totalNumber / Convert.ToDecimal(query.PageSize))
|
|
};
|
|
|
|
}
|
|
}
|
|
} |