--调整智能选大学功能模块代码已完善 --按分数选择--

develop
易大师 2021-06-29 15:11:24 +08:00
parent 37de04305c
commit 585fbcdd02
11 changed files with 292 additions and 82 deletions

View File

@ -31,11 +31,11 @@ namespace New_College.Controllers
///
/// </summary>
/// <returns></returns>
// [HttpPost]
// public Task<bool> Post()
//{
// return t_EnrollmentPlane.Import();
// }
[HttpPost]
public Task<bool> Post()
{
return t_EnrollmentPlane.Import();
}
}
}

View File

@ -3319,6 +3319,11 @@
是否双一流 0、否1、是
</summary>
</member>
<member name="P:New_College.Model.ViewModels.RecommendUniversityQuery.SubjectClaim">
<summary>
选择科目
</summary>
</member>
<member name="T:New_College.Model.ViewModels.UniversityProbabilityQuery">
<summary>
录取概率传入
@ -4854,6 +4859,16 @@
长学校id
</summary>
</member>
<member name="P:New_College.Model.ViewModels.UniversityResult.ScoreLine">
<summary>
最低录取分数
</summary>
</member>
<member name="P:New_College.Model.ViewModels.UniversityResult.Scorepostion">
<summary>
位次
</summary>
</member>
<member name="T:New_College.Model.ViewModels.UniversityDetailResponse">
<summary>

View File

@ -13,7 +13,7 @@ namespace New_College.IServices
/// </summary>
public interface IT_EnrollmentPlaneServices : IBaseServices<T_EnrollmentPlane>
{
//Task<bool> Import();
Task<bool> Import();
/// <summary>

View File

@ -126,6 +126,11 @@ namespace New_College.IServices
/// <param name="query"></param>
/// <returns></returns>
Task<MessageModel<List<IdNameResult>>> GetBatchByYearArea(YearAreaQuery query);
}
}

View File

@ -31,17 +31,22 @@ namespace New_College.Model.ViewModels
/// <summary>
/// 是否985 0、否1、是
/// </summary>
public int Nhef { get; set; }
public int Nhef { get; set; } = -1;
/// <summary>
/// 是否211 0、否1、是
/// </summary>
public int Sff { get; set; }
public int Sff { get; set; } = -1;
/// <summary>
/// 是否双一流 0、否1、是
/// </summary>
public int Syl { get; set; }
public int Syl { get; set; } = -1;
/// <summary>
/// 选择科目
/// </summary>
public string SubjectClaim { get; set; }
}
/// <summary>

View File

@ -101,6 +101,16 @@ namespace New_College.Model.ViewModels
/// 长学校id
/// </summary>
public string LongSchoolId { get; set; }
/// <summary>
/// 最低录取分数
/// </summary>
public int ScoreLine { get; set; }
/// <summary>
/// 位次
/// </summary>
public int Scorepostion { get; set; }
}
/// <summary>

View File

@ -1,5 +1,8 @@
using New_College.IRepository.Base;
using New_College.Model;
using New_College.Model.Models;
using New_College.Model.ViewModels;
using System.Threading.Tasks;
namespace New_College.IRepository
{
@ -8,5 +11,12 @@ namespace New_College.IRepository
/// </summary>
public interface IT_EnrollmentPlanedescRepository : IBaseRepository<T_EnrollmentPlanedesc>
{
/// <summary>
/// 只能选大学
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
Task<PageModel<UniversityResult>> GetRecommendUniversity(RecommendUniversityQuery query);
}
}

View File

@ -1,17 +1,92 @@
using New_College.IRepository;
using LinqKit;
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;
using System.Linq;
using System.Threading.Tasks;
namespace New_College.Repository
{
/// <summary>
/// T_EnrollmentPlanedescRepository
/// </summary>
/// <summary>
/// T_EnrollmentPlanedescRepository
/// </summary>
public class T_EnrollmentPlanedescRepository : BaseRepository<T_EnrollmentPlanedesc>, IT_EnrollmentPlanedescRepository
{
public T_EnrollmentPlanedescRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
private readonly IV_CustomerInfoRepository v_CustomerInfo;
private readonly IT_EnrollmentPlaneRepository t_EnrollmentPlane;
public T_EnrollmentPlanedescRepository(IUnitOfWork unitOfWork, IV_CustomerInfoRepository _CustomerInfoRepository, IT_EnrollmentPlaneRepository t_EnrollmentPlaneRepository) : base(unitOfWork)
{
this.v_CustomerInfo = _CustomerInfoRepository;
this.t_EnrollmentPlane = t_EnrollmentPlaneRepository;
}
/// <summary>
/// 智能选大学
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public async Task<PageModel<UniversityResult>> GetRecommendUniversity(RecommendUniversityQuery query)
{
RefAsync<int> totalNumber = 0;
var maxscore = query.Score + 10;
var minscore = query.Score - 10;
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;
var subjects = new string[] { };
string sbuOne = string.Empty;
string sbuTwo = string.Empty;
string sbuTree = string.Empty;
if (!string.IsNullOrWhiteSpace(query.SubjectClaim))
{
subjects = query.SubjectClaim.Split(",");
sbuOne = subjects[0];
sbuTwo = subjects[1];
sbuTree = subjects[2];
}
var recommendInfo = await this.Db.Queryable<T_EnrollmentPlanedesc, D_University>((plans, universitys) => new object[] { JoinType.Left, plans.UniversityId == universitys.Id })
.Where((plans, universitys) => plans.PlanId == planId)
.WhereIF(query.SubjectLevel >= 0, (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.Contains(query.AreaName))
.WhereIF(maxscore > 10, (plans, universitys) => plans.Scoreline <= maxscore)
.WhereIF(minscore > 0, (plans, universitys) => plans.Scoreline > minscore)
.WhereIF(!string.IsNullOrWhiteSpace(query.SubjectClaim), (plans, universitys) => (plans.Subjectclaim.Contains(sbuOne) || plans.Subjectclaim.Contains(sbuTwo) || plans.Subjectclaim.Contains(sbuTree)))
.OrderBy((plans, universitys) => plans.Scoreline, OrderByType.Desc)
.Select((plans, universitys) => new UniversityResult()
{
Id = plans.Id,
Name = universitys.Name,
Nature = universitys.Nature,
AscriptionName = universitys.AscriptionName,
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
})
.ToPageListAsync(query.PageIndex, query.PageSize, totalNumber);
return new PageModel<UniversityResult>()
{
data = recommendInfo,
page = query.PageIndex,
PageSize = query.PageSize,
dataCount = totalNumber,
pageCount = (int)Math.Ceiling(totalNumber / Convert.ToDecimal(query.PageSize))
};
}
}
}

View File

@ -13,6 +13,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="LinqKit" Version="1.1.17" />
<PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.1.0" />
</ItemGroup>

View File

@ -22,12 +22,19 @@ namespace New_College.Services
private readonly IBaseRepository<T_EnrollmentPlane> _dal;
private readonly IT_EnrollmentPlaneRepository planeRepository;
public T_EnrollmentPlaneServices(IBaseRepository<T_EnrollmentPlane> dal, IT_EnrollmentPlaneRepository t_EnrollmentPlaneRepository)
private readonly ID_UniversityRepository d_University;
private readonly ID_MajorRepository d_Major;
private readonly IT_EnrollmentBatchRepository t_EnrollmentBatch;
private readonly IT_EnrollmentPlanedescRepository t_EnrollmentPlanedesc;
public T_EnrollmentPlaneServices(IBaseRepository<T_EnrollmentPlane> dal, IT_EnrollmentPlaneRepository t_EnrollmentPlaneRepository, ID_UniversityRepository d_UniversityRepository, ID_MajorRepository d_MajorRepository, IT_EnrollmentBatchRepository t_EnrollmentBatchRepository, IT_EnrollmentPlanedescRepository t_EnrollmentPlanedescRepository)
{
this._dal = dal;
base.BaseDal = dal;
this.planeRepository = t_EnrollmentPlaneRepository;
this.d_University = d_UniversityRepository;
this.d_Major = d_MajorRepository;
this.t_EnrollmentBatch = t_EnrollmentBatchRepository;
this.t_EnrollmentPlanedesc = t_EnrollmentPlanedescRepository;
}
/// <summary>
@ -41,10 +48,69 @@ namespace New_College.Services
return await this.planeRepository.GetEnrollmentPlans(request);
}
//public Task<bool> Import()
//{
// throw new NotImplementedException();
//}
//2020 最低录取分数导入
public async Task<bool> Import()
{
var dataSet = ExcelUtil.ReadExcelToDataSet("D:\\一草一木\\山东2020年招生录取数据.xlsx");
if (dataSet.Tables.Count > 0)
{
var universitylist = await this.d_University.Query(x => x.IsDelete == false);
var majorlist = await this.d_Major.Query(x => x.IsDelete == false);
var batchlist = await this.t_EnrollmentBatch.Query(x => x.IsDelete == false);
var planinfo =
await this.t_EnrollmentPlanedesc.Query(e => e.PlanId == 7);
List<T_EnrollmentPlanedesc> list = new List<T_EnrollmentPlanedesc>() { };
List<string> adduniversity = new List<string>() { };
foreach (DataRow dr in dataSet.Tables[0].Rows)
{
string schoolname = dr["院校名称"].ToString();
string area = dr["省份"].ToString();
string major = dr["专业"].ToString();
string batch = dr["批次"].ToString();
string lowerscore = dr["最低分"].ToString();
string lowerlevel = dr["最低位次"].ToString();
var universityid = universitylist.Where(x => x.Name == schoolname).Select(x => x.Id).FirstOrDefault();
if (universityid <= 0)
{
//记录学校 并添加
adduniversity.Add(schoolname);
continue;
}
var batchid = batchlist.Where(x => x.Batch_name == batch).Select(x => x.Id).FirstOrDefault();
var remake = "";
if (major.Contains("("))
{
int indexs = major.IndexOf("(");
remake = major.Substring(indexs);
major = major.Substring(0, indexs);
}
var majorid = majorlist.Where(x => x.Name == major).Select(x => x.Id).FirstOrDefault();
var planinfomodel = planinfo.Where(e => e.UniversityId == universityid && e.MajorId == majorid && e.BatchtypeId == batchid);
if (planinfomodel.Any())
{
var models = planinfomodel.FirstOrDefault();
models.scorepostion = Convert.ToInt32(lowerlevel);
models.Scoreline = Convert.ToInt32(lowerscore);
bool kk = await this.t_EnrollmentPlanedesc.Update(models);
}
}
// var cc = adduniversity;
// var count = await this.t_EnrollmentPlanedesc.Add(list);
}
return true;
}
#region 2019上海招生分数更新
///// <summary>

View File

@ -81,70 +81,93 @@ namespace New_College.Services
/// <returns></returns>
public async Task<PageModel<UniversityResult>> GetRecommendUniversity(RecommendUniversityQuery query)
{
var maxscore = query.Score + 10;
var minscore = query.Score - 10;
var descnear = await _dal.QuerySql("select Scoreline,UniversityId from T_EnrollmentPlanedesc where IsDelete=0 and Scoreline<=" + maxscore + " and Scoreline>" + minscore + "");
var nearids = descnear.Select(x => x.UniversityId).Distinct().ToList();
var desc = await _dal.QuerySql("select Scoreline,UniversityId from T_EnrollmentPlanedesc where IsDelete=0 and Scoreline<=" + maxscore + " and Scoreline>180");
//降序求出所符合院校
var orderdesc = desc.OrderByDescending(x => x.Scoreline).Select(x => x.UniversityId).Distinct().ToList();
return await t_EnrollmentPlanedesc.GetRecommendUniversity(query);
//var maxscore = query.Score + 10;
//var minscore = query.Score - 10;
var wheres = PredicateBuilder.New<D_University>();
wheres = wheres.And(x => x.IsDelete == false && orderdesc.Contains(x.Id));
if (!string.IsNullOrEmpty(query.AreaName) && query.AreaName != "全国")
wheres = wheres.And(x => x.Area_Name.Contains(query.AreaName));
if (query.SubjectLevel < 2)
wheres = wheres.And(x => x.Subject_Level == query.SubjectLevel);
if (query.Type >= 0)
wheres = wheres.And(x => x.Type == query.Type);
if (query.Nhef < 2)
wheres = wheres.And(x => x.Nhef == query.Nhef);
if (query.Sff < 2)
wheres = wheres.And(x => x.Sff == query.Sff);
if (query.Syl < 2)
wheres = wheres.And(x => x.Syl == query.Syl);
if (query.Nature > 0)
wheres = wheres.And(x => x.Nature == query.Nature);
//var custome = (await this._CustomerInfoRepository.QueryById(query.CustomerId));
var info = await d_UniversityRepository.QueryPage(wheres, query.PageIndex, query.PageSize, "Rank Asc");
if (info.data.Count <= 0)
return new PageModel<UniversityResult>() { };
var collectionuniversity = await d_UniversityCollectionRepository.Query(x => x.CustomerId == query.CustomerId && x.IsDelete == false);
List<UniversityResult> list = new List<UniversityResult>() { };
foreach (var c in info.data)
{
string attribute = "";
if (c.Nhef == 1)
attribute += "985";
if (c.Sff == 1)
attribute += "211";
if (c.Syl == 1)
attribute += "双一流";
list.Add(new UniversityResult
{
Id = c.Id,
Name = c.Name,
Nature = c.Nature,
AscriptionName = c.AscriptionName,
AreaName = c.Area_Name,
Logo = c.Logo,
Syl = c.Syl == 1 ? true : false,
Nhef = c.Nhef == 1 ? true : false,
Sff = c.Sff == 1 ? true : false,
UniversityType = c.Type,
IsNearScore = nearids.Contains(c.Id),
IsContrast = collectionuniversity.Count(x => x.Type == 2 && x.UniversityId == c.Id) > 0
});
}
return new PageModel<UniversityResult>()
{
data = list,
dataCount = info.dataCount,
page = info.page,
pageCount = info.pageCount,
PageSize = info.PageSize
};
//int planId = (await t_EnrollmentPlaneRepository.Query(e => e.Years == custome.Year && e.Area_Id == custome.AreaId)).FirstOrDefault().Id;
//StringBuilder sb = new StringBuilder();
//sb.AppendFormat("select Scoreline,UniversityId from T_EnrollmentPlanedesc where IsDelete=0 and Scoreline<={0} and Scoreline>{1} and PlanId={2}", maxscore, minscore, planId);
//if (!string.IsNullOrWhiteSpace(query.SubjectClaim))
//{
// var sp = query.SubjectClaim.Split(",");
// sb.AppendFormat(" and ( ");
// for (var i = 0; i < sp.Length; i++)
// {
// sb.AppendFormat(" SubjectClaim in('{0}') or ", sp[i]);
// }
// sb.AppendFormat(") ");
// sb = sb.Replace("or )", ")");
//}
//var desc = await _dal.QuerySql(sb.ToString());
////降序求出所符合院校
//var orderdesc = desc.OrderByDescending(x => x.Scoreline).Select(x => x.UniversityId).Distinct().ToList();
//var nearids = desc.Select(x => x.UniversityId).Distinct().ToList();
//var wheres = PredicateBuilder.New<D_University>();
//wheres = wheres.And(x => x.IsDelete == false && orderdesc.Contains(x.Id));
//if (!string.IsNullOrEmpty(query.AreaName) && query.AreaName != "全国")
// wheres = wheres.And(x => x.Area_Name.Contains(query.AreaName));
//if (query.SubjectLevel < 2)
// wheres = wheres.And(x => x.Subject_Level == query.SubjectLevel);
//if (query.Type >= 0)
// wheres = wheres.And(x => x.Type == query.Type);
//if (query.Nhef < 2)
// wheres = wheres.And(x => x.Nhef == query.Nhef);
//if (query.Sff < 2)
// wheres = wheres.And(x => x.Sff == query.Sff);
//if (query.Syl < 2)
// wheres = wheres.And(x => x.Syl == query.Syl);
//if (query.Nature > 0)
// wheres = wheres.And(x => x.Nature == query.Nature);
//var info = await d_UniversityRepository.QueryPage(wheres, query.PageIndex, query.PageSize, "Rank Asc");
//if (info.data.Count <= 0)
// return new PageModel<UniversityResult>() { };
//var collectionuniversity = await d_UniversityCollectionRepository.Query(x => x.CustomerId == query.CustomerId && x.IsDelete == false);
//List<UniversityResult> list = new List<UniversityResult>() { };
//foreach (var c in info.data)
//{
// string attribute = "";
// if (c.Nhef == 1)
// attribute += "985";
// if (c.Sff == 1)
// attribute += "211";
// if (c.Syl == 1)
// attribute += "双一流";
// list.Add(new UniversityResult
// {
// Id = c.Id,
// Name = c.Name,
// Nature = c.Nature,
// AscriptionName = c.AscriptionName,
// AreaName = c.Area_Name,
// Logo = c.Logo,
// Syl = c.Syl == 1 ? true : false,
// Nhef = c.Nhef == 1 ? true : false,
// Sff = c.Sff == 1 ? true : false,
// UniversityType = c.Type,
// IsNearScore = nearids.Contains(c.Id),
// IsContrast = collectionuniversity.Count(x => x.Type == 2 && x.UniversityId == c.Id) > 0
// });
//}
//return new PageModel<UniversityResult>()
//{
// data = list,
// dataCount = info.dataCount,
// page = info.page,
// pageCount = info.pageCount,
// PageSize = info.PageSize
//};
}
/// <summary>