diff --git a/New_College.Api/Controllers/HealthCheckController.cs b/New_College.Api/Controllers/HealthCheckController.cs index ff704f3..cd702e8 100644 --- a/New_College.Api/Controllers/HealthCheckController.cs +++ b/New_College.Api/Controllers/HealthCheckController.cs @@ -31,11 +31,11 @@ namespace New_College.Controllers /// /// /// - // [HttpPost] - // public Task Post() - //{ - // return t_EnrollmentPlane.Import(); - // } + [HttpPost] + public Task Post() + { + return t_EnrollmentPlane.Import(); + } } } \ No newline at end of file diff --git a/New_College.Api/New_College.Model.xml b/New_College.Api/New_College.Model.xml index 14ca684..19b6ce3 100644 --- a/New_College.Api/New_College.Model.xml +++ b/New_College.Api/New_College.Model.xml @@ -3319,6 +3319,11 @@ 是否双一流 0、否,1、是 + + + 选择科目 + + 录取概率传入 @@ -4854,6 +4859,16 @@ 长学校id + + + 最低录取分数 + + + + + 位次 + + diff --git a/New_College.IServices/IT_EnrollmentPlaneServices.cs b/New_College.IServices/IT_EnrollmentPlaneServices.cs index bc3aa54..44caeb6 100644 --- a/New_College.IServices/IT_EnrollmentPlaneServices.cs +++ b/New_College.IServices/IT_EnrollmentPlaneServices.cs @@ -13,7 +13,7 @@ namespace New_College.IServices /// public interface IT_EnrollmentPlaneServices : IBaseServices { - //Task Import(); + Task Import(); /// diff --git a/New_College.IServices/IT_EnrollmentPlanedescServices.cs b/New_College.IServices/IT_EnrollmentPlanedescServices.cs index c11f349..69ab07f 100644 --- a/New_College.IServices/IT_EnrollmentPlanedescServices.cs +++ b/New_College.IServices/IT_EnrollmentPlanedescServices.cs @@ -126,6 +126,11 @@ namespace New_College.IServices /// /// Task>> GetBatchByYearArea(YearAreaQuery query); - + + + + + + } } \ No newline at end of file diff --git a/New_College.Model/ViewModels/Query/RecommendUniversityQuery.cs b/New_College.Model/ViewModels/Query/RecommendUniversityQuery.cs index 376d680..f914d12 100644 --- a/New_College.Model/ViewModels/Query/RecommendUniversityQuery.cs +++ b/New_College.Model/ViewModels/Query/RecommendUniversityQuery.cs @@ -31,17 +31,22 @@ namespace New_College.Model.ViewModels /// /// 是否985 0、否,1、是 /// - public int Nhef { get; set; } + public int Nhef { get; set; } = -1; /// /// 是否211 0、否,1、是 /// - public int Sff { get; set; } + public int Sff { get; set; } = -1; /// /// 是否双一流 0、否,1、是 /// - public int Syl { get; set; } + public int Syl { get; set; } = -1; + /// + /// 选择科目 + /// + public string SubjectClaim { get; set; } + } /// diff --git a/New_College.Model/ViewModels/Result/UniversityResult.cs b/New_College.Model/ViewModels/Result/UniversityResult.cs index 468233a..1ef2957 100644 --- a/New_College.Model/ViewModels/Result/UniversityResult.cs +++ b/New_College.Model/ViewModels/Result/UniversityResult.cs @@ -101,6 +101,16 @@ namespace New_College.Model.ViewModels /// 长学校id /// public string LongSchoolId { get; set; } + + /// + /// 最低录取分数 + /// + public int ScoreLine { get; set; } + /// + /// 位次 + /// + public int Scorepostion { get; set; } + } /// diff --git a/New_College.Repository/BASE/IT_EnrollmentPlanedescRepository.cs b/New_College.Repository/BASE/IT_EnrollmentPlanedescRepository.cs index 5f9a296..2d23e17 100644 --- a/New_College.Repository/BASE/IT_EnrollmentPlanedescRepository.cs +++ b/New_College.Repository/BASE/IT_EnrollmentPlanedescRepository.cs @@ -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 /// public interface IT_EnrollmentPlanedescRepository : IBaseRepository { + + /// + /// 只能选大学 + /// + /// + /// + Task> GetRecommendUniversity(RecommendUniversityQuery query); } } \ No newline at end of file diff --git a/New_College.Repository/BASE/T_EnrollmentPlanedescRepository.cs b/New_College.Repository/BASE/T_EnrollmentPlanedescRepository.cs index c579987..aca9344 100644 --- a/New_College.Repository/BASE/T_EnrollmentPlanedescRepository.cs +++ b/New_College.Repository/BASE/T_EnrollmentPlanedescRepository.cs @@ -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 { - /// - /// T_EnrollmentPlanedescRepository - /// + /// + /// T_EnrollmentPlanedescRepository + /// public class T_EnrollmentPlanedescRepository : BaseRepository, 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; + + + } + + /// + /// 智能选大学 + /// + /// + /// + public async Task> GetRecommendUniversity(RecommendUniversityQuery query) + { + RefAsync 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((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() + { + data = recommendInfo, + page = query.PageIndex, + PageSize = query.PageSize, + dataCount = totalNumber, + pageCount = (int)Math.Ceiling(totalNumber / Convert.ToDecimal(query.PageSize)) + }; + } } } \ No newline at end of file diff --git a/New_College.Repository/New_College.Repository.csproj b/New_College.Repository/New_College.Repository.csproj index 4db3a5e..4fdeaa4 100644 --- a/New_College.Repository/New_College.Repository.csproj +++ b/New_College.Repository/New_College.Repository.csproj @@ -13,6 +13,7 @@ + diff --git a/New_College.Services/T_EnrollmentPlaneServices.cs b/New_College.Services/T_EnrollmentPlaneServices.cs index cc9c047..87a6119 100644 --- a/New_College.Services/T_EnrollmentPlaneServices.cs +++ b/New_College.Services/T_EnrollmentPlaneServices.cs @@ -22,12 +22,19 @@ namespace New_College.Services private readonly IBaseRepository _dal; private readonly IT_EnrollmentPlaneRepository planeRepository; - - public T_EnrollmentPlaneServices(IBaseRepository 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 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; } /// @@ -41,10 +48,69 @@ namespace New_College.Services return await this.planeRepository.GetEnrollmentPlans(request); } - //public Task Import() - //{ - // throw new NotImplementedException(); - //} + //2020 最低录取分数导入 + public async Task 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 list = new List() { }; + List adduniversity = new List() { }; + 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上海招生分数更新 ///// diff --git a/New_College.Services/T_EnrollmentPlanedescServices.cs b/New_College.Services/T_EnrollmentPlanedescServices.cs index f5b43e4..e706149 100644 --- a/New_College.Services/T_EnrollmentPlanedescServices.cs +++ b/New_College.Services/T_EnrollmentPlanedescServices.cs @@ -81,70 +81,93 @@ namespace New_College.Services /// public async Task> 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(); - 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() { }; - var collectionuniversity = await d_UniversityCollectionRepository.Query(x => x.CustomerId == query.CustomerId && x.IsDelete == false); - List list = new List() { }; - 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() - { - 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(); + //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() { }; + //var collectionuniversity = await d_UniversityCollectionRepository.Query(x => x.CustomerId == query.CustomerId && x.IsDelete == false); + //List list = new List() { }; + //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() + //{ + // data = list, + // dataCount = info.dataCount, + // page = info.page, + // pageCount = info.pageCount, + // PageSize = info.PageSize + //}; } ///