From e40102353e2b53025df9c03dc4027d0bf87b01c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?old=E6=98=93?= <156663459@qq.com> Date: Tue, 10 Oct 2023 13:09:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E7=9C=81=E4=BB=BD?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Front/VolunteerController.cs | 16 +- New_College.Api/New_College.Model.xml | 5 + New_College.Api/New_College.xml | 7 + .../IT_EnrollmentPlanedescServices.cs | 6 + New_College.Model/Models/D_PlanMajorDesc.cs | 5 + .../ViewModels/Result/VolunteerResult.cs | 11 +- .../BASE/IT_EnrollmentPlanedescRepository.cs | 7 + .../BASE/T_EnrollmentPlanedescRepository.cs | 161 ++++++++++++------ .../T_EnrollmentPlanedescServices.cs | 25 ++- 9 files changed, 184 insertions(+), 59 deletions(-) diff --git a/New_College.Api/Controllers/Front/VolunteerController.cs b/New_College.Api/Controllers/Front/VolunteerController.cs index e18a121..705287d 100644 --- a/New_College.Api/Controllers/Front/VolunteerController.cs +++ b/New_College.Api/Controllers/Front/VolunteerController.cs @@ -102,6 +102,20 @@ namespace New_College.Api.Controllers.Front return await t_EnrollmentPlanedescServices.GetEnrollmentCWBByPage(query); } + + + + /// + /// 冲稳保详情配合接口 + /// + /// + /// + [HttpPost] + public async Task>> GetUniversityMapItems([FromBody] CWBUniversityDetailQuery query) + { + return await t_EnrollmentPlanedescServices.GetUniversityMapItems(query); + } + /// /// 冲稳保详情 /// @@ -243,7 +257,7 @@ namespace New_College.Api.Controllers.Front { return await t_EnrollmentPlanedescServices.GetMajorPlanClaim(query); } - + /// /// 获取批次 diff --git a/New_College.Api/New_College.Model.xml b/New_College.Api/New_College.Model.xml index db968f1..e46d156 100644 --- a/New_College.Api/New_College.Model.xml +++ b/New_College.Api/New_College.Model.xml @@ -540,6 +540,11 @@ 院校名称 + + + 院校所在省份 + + 批次 diff --git a/New_College.Api/New_College.xml b/New_College.Api/New_College.xml index 7b8251a..928417a 100644 --- a/New_College.Api/New_College.xml +++ b/New_College.Api/New_College.xml @@ -676,6 +676,13 @@ + + + 冲稳保详情配合接口 + + + + 冲稳保详情 diff --git a/New_College.IServices/IT_EnrollmentPlanedescServices.cs b/New_College.IServices/IT_EnrollmentPlanedescServices.cs index 69ab07f..2593f6a 100644 --- a/New_College.IServices/IT_EnrollmentPlanedescServices.cs +++ b/New_College.IServices/IT_EnrollmentPlanedescServices.cs @@ -23,6 +23,12 @@ namespace New_College.IServices Task>> GetEnrollmentCWBByPage(CWBEnrollmentPlaneQuery query); + /// + /// + /// + /// + /// + Task>> GetUniversityMapItems(CWBUniversityDetailQuery query); /// /// 冲稳保详情 /// diff --git a/New_College.Model/Models/D_PlanMajorDesc.cs b/New_College.Model/Models/D_PlanMajorDesc.cs index 32515d1..9476594 100644 --- a/New_College.Model/Models/D_PlanMajorDesc.cs +++ b/New_College.Model/Models/D_PlanMajorDesc.cs @@ -22,6 +22,11 @@ namespace New_College.Model.Models public string UniversityName { get; set; } + /// + /// 院校所在省份 + /// + public string AreaName { get; set; } + /// ///批次 /// diff --git a/New_College.Model/ViewModels/Result/VolunteerResult.cs b/New_College.Model/ViewModels/Result/VolunteerResult.cs index cfb8769..9e60d85 100644 --- a/New_College.Model/ViewModels/Result/VolunteerResult.cs +++ b/New_College.Model/ViewModels/Result/VolunteerResult.cs @@ -43,6 +43,15 @@ namespace New_College.Model.ViewModels public string AscriptionName { get; set; } } + + + public class UniversityMapMajorItems + { + + public int UId { get; set; } + public List MIds { get; set; } + } + /// /// 志愿填报推荐一级 /// @@ -80,7 +89,7 @@ namespace New_College.Model.ViewModels ///// ///// 院校最低分 ///// - // public double? Score { get; set; } + // public double? Score { get; set; } ///// ///// 位次 diff --git a/New_College.Repository/BASE/IT_EnrollmentPlanedescRepository.cs b/New_College.Repository/BASE/IT_EnrollmentPlanedescRepository.cs index 21d76fa..0f514f3 100644 --- a/New_College.Repository/BASE/IT_EnrollmentPlanedescRepository.cs +++ b/New_College.Repository/BASE/IT_EnrollmentPlanedescRepository.cs @@ -2,6 +2,7 @@ using New_College.Model; using New_College.Model.Models; using New_College.Model.ViewModels; +using System.Collections.Generic; using System.Threading.Tasks; namespace New_College.IRepository @@ -20,6 +21,12 @@ namespace New_College.IRepository Task> GetRecommendUniversity(RecommendUniversityQuery query); + /// + /// 冲稳保配合接口 + /// + /// + /// + Task>> GetUniversityMapItems(CWBUniversityDetailQuery query); /// ///智能 冲稳保 diff --git a/New_College.Repository/BASE/T_EnrollmentPlanedescRepository.cs b/New_College.Repository/BASE/T_EnrollmentPlanedescRepository.cs index d31be10..ad4b84b 100644 --- a/New_College.Repository/BASE/T_EnrollmentPlanedescRepository.cs +++ b/New_College.Repository/BASE/T_EnrollmentPlanedescRepository.cs @@ -46,18 +46,15 @@ namespace New_College.Repository this._sysRegionRepository = sysRegionRepository; } - /// - /// 暂未实现 - /// - /// - /// - public async Task>> GetCWBUniversityDetail(CWBUniversityDetailQuery query) + + + + public async Task>> GetUniversityMapItems(CWBUniversityDetailQuery query) { - - var regionlist = this.Db.Queryable().Where(c => c.Level == 1).WhereIF(query.provinceIds != null && query.provinceIds.Any(), c => query.provinceIds.Contains(c.KeyId)).Select(c => c.RegionName).ToList(); + var response = new List(); RefAsync totalNumber = 0; + var regionlist = this.Db.Queryable().Where(c => c.Level == 1).WhereIF(query.provinceIds != null && query.provinceIds.Any(), c => SqlFunc.ContainsArray(query.provinceIds, c.KeyId)).Select(c => c.RegionName).ToList(); - // int planId = (await t_EnrollmentPlane.Query(e => e.Years == query.Year && e.Area_Id == query.AreaId)).FirstOrDefault().Id; var subjects = new string[] { }; string sbuOne = string.Empty; string sbuTwo = string.Empty; @@ -78,66 +75,128 @@ namespace New_College.Repository { //所选专业增加majorids筛选 //query.MajorIds - majoraslist = await this.d_Major.Query(x => x.IsDelete == false && query.MajorIds.Contains(x.Id)); + majoraslist = await this.d_Major.Query(x => x.IsDelete == false && SqlFunc.ContainsArray(query.MajorIds, x.Id)); + if (majoraslist.Count() <= 0) + // return new MessageModel>() { success = false, msg = "所选专业大类数据完善中..." }; + majornames = majoraslist.Select(x => x.MajorCode).ToList(); + } + var recommendInfo = await this.Db.Queryable() + .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.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 + }) + .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>() { response = response }; + } + + + + /// + /// 暂未实现 + /// + /// + /// + public async Task>> GetCWBUniversityDetail(CWBUniversityDetailQuery query) + { + RefAsync totalNumber = 0; + var regionlist = this.Db.Queryable().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(); + var majoraslist = new List(); + 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>() { success = false, msg = "所选专业大类数据完善中..." }; majornames = majoraslist.Select(x => x.MajorCode).ToList(); } - var testlist = new List() { 1, 2, 3 }; - var recommendInfo = await this.Db.Queryable((plans, universitys) => new object[] { JoinType.Left, plans.UId == universitys.Id, JoinType.Left }) - //.Where((plans, universitys) => plans.PlanId == planId && plans.BatchtypeId == query.BatchId) - // .WhereIF(query.areaIds != null && query.areaIds.Count() > 0, (plans, universitys) => query.areaIds.Contains(universitys.Area_Id)) - .WhereIF(regionlist.Any(), (plans, universitys) => regionlist.Contains(universitys.Area_Name)) - .WhereIF(query.Year > 0, (plans, universitys) => plans.Years == query.Year) - .WhereIF(!string.IsNullOrEmpty(query.Location), (plans, universitys) => plans.Location == query.Location) - .WhereIF(string.IsNullOrWhiteSpace(query.Type), (plans, universitys) => plans.LowScore > 0 && (plans.LowScore <= query.Score + 15)) - .WhereIF(query.Type == "冲", (plans, universitys) => plans.LowScore > 0 && (plans.LowScore <= query.Score + 15 && plans.LowScore > query.Score + 5)) - .WhereIF(query.Type == "稳", (plans, universitys) => plans.LowScore > 0 && (plans.LowScore <= query.Score + 5 && plans.LowScore > query.Score - 15)) - .WhereIF(query.Type == "保", (plans, universitys) => plans.LowScore > 0 && (plans.LowScore < query.Score - 15)) - .WhereIF(!string.IsNullOrWhiteSpace(query.SubjectClaim), (plans, universitys) => (plans.SelectSubject.Contains(sbuOne) || plans.SelectSubject.Contains(sbuTwo) || plans.SelectSubject.Contains(sbuTree))) - .WhereIF(majornames.Any() && majornames.Count() > 0, (plans, universitys) => majornames.Contains(plans.MajorCode)).GroupBy(plans => new + + + var recommendInfo = await this.Db.Queryable() + .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.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)).GroupBy(plans => new { // plans.Id, plans.UId, + plans.UniversityName // plans.LowScore, // plans.LowScoreRank }) - .Select((plans, universitys) => new UniversityEnrollmentPlanResult() + .Select(p => new UniversityEnrollmentPlanResult() { - AreaName = universitys.Area_Name, - UniversityId = plans.UId, - AscriptionName = universitys.AscriptionName, - Logo = universitys.Logo, - Nhef = universitys.Nhef, - Rank = universitys.Rank <= 0 ? "--" : universitys.Rank.ToString(), - UniversityName = universitys.Name, - Sff = universitys.Sff, - Syl = universitys.Syl, - planCount = SqlFunc.AggregateSum(plans.PlanCount),// plandesc.Where(x => x.UniversityId == item.Id).Select(x => x.Id).ToList() + // AreaName = universitys.Area_Name, + UniversityId = p.UId, + // AscriptionName = universitys.AscriptionName, + // Logo = universitys.Logo, + // Nhef = universitys.Nhef, + // Rank = universitys.Rank <= 0 ? "--" : universitys.Rank.ToString(), + UniversityName = p.UniversityName, - MjaorPlan = SqlFunc.AggregateCount(plans.UId), - Scoreline = SqlFunc.AggregateMin(plans.LowScore), - // PlanIds= String.Join(" ",plans.Id) + planCount = SqlFunc.AggregateSum(p.PlanCount),// plandesc.Where(x => x.UniversityId == item.Id).Select(x => x.Id).ToList() + //PlanIds= SqlFunc.Subqueryable().Where(s=>s.Id==p.Id).ToList(s => s.Id), + MjaorPlan = SqlFunc.AggregateCount(p.UId), + Scoreline = SqlFunc.AggregateMin(p.LowScore), - }) + + }).OrderBy(p => p.Scoreline, OrderByType.Desc) .ToPageListAsync(query.PageIndex, query.PageSize, totalNumber); - var plansinfo = await this.Db.Queryable((plans, universitys) => new object[] { JoinType.Left, plans.UId == universitys.Id, JoinType.Left }) - //.Where((plans, universitys) => plans.PlanId == planId && plans.BatchtypeId == query.BatchId) - .WhereIF(query.areaIds != null && query.areaIds.Count() > 0, (plans, universitys) => query.areaIds.Contains(universitys.Area_Id)) - .WhereIF(string.IsNullOrWhiteSpace(query.Type), (plans, universitys) => plans.LowScore > 0 && (plans.LowScore <= query.Score + 15)) - .WhereIF(query.Year > 0, (plans, universitys) => plans.Years == query.Year) - .WhereIF(!string.IsNullOrEmpty(query.Location), (plans, universitys) => plans.Location == query.Location) - .WhereIF(query.Type == "冲", (plans, universitys) => plans.LowScore > 0 && (plans.LowScore <= query.Score + 15 && plans.LowScore > query.Score + 5)) - .WhereIF(query.Type == "稳", (plans, universitys) => plans.LowScore > 0 && (plans.LowScore <= query.Score + 5 && plans.LowScore > query.Score - 15)) - .WhereIF(query.Type == "保", (plans, universitys) => plans.LowScore > 0 && (plans.LowScore < query.Score - 15)) - .WhereIF(!string.IsNullOrWhiteSpace(query.SubjectClaim), (plans, universitys) => (plans.SelectSubject.Contains(sbuOne) || plans.SelectSubject.Contains(sbuTwo) || plans.SelectSubject.Contains(sbuTree))) - .WhereIF(majornames.Any() && majornames.Count() > 0, (plans, universitys) => majornames.Contains(plans.MajorCode)).ToListAsync(); - + var universitylist = await d_University.Query(c => SqlFunc.ContainsArray(recommendInfo.Select(c => c.UniversityId).ToList(), c.Id)); recommendInfo.ForEach(a => { + a.AreaName = universitylist.FirstOrDefault(c => c.Id == a.UniversityId).Area_Name; + a.AscriptionName = universitylist.FirstOrDefault(c => c.Id == a.UniversityId).AscriptionName; + a.Logo = universitylist.FirstOrDefault(c => c.Id == a.UniversityId).Logo; + a.Nhef = universitylist.FirstOrDefault(c => c.Id == a.UniversityId).Nhef; + a.Rank = universitylist.FirstOrDefault(c => c.Id == a.UniversityId).Rank.ToString(); + a.Sff = universitylist.FirstOrDefault(c => c.Id == a.UniversityId).Sff; + a.Syl = universitylist.FirstOrDefault(c => c.Id == a.UniversityId).Syl; + a.AreaName = universitylist.FirstOrDefault(c => c.Id == a.UniversityId).Area_Name; + //a.PlanIds =new List() { 12123, 1212, 1212 }; - a.PlanIds = plansinfo.Where(c => c.UId == a.UniversityId).Select(c => c.Id).ToList(); a.Type = (a.Scoreline <= chongfirst && a.Scoreline > chongend) ? "冲" : (a.Scoreline <= chongend && a.Scoreline > wenend) ? "稳" : "保"; }); diff --git a/New_College.Services/T_EnrollmentPlanedescServices.cs b/New_College.Services/T_EnrollmentPlanedescServices.cs index cd79cb5..8037ff4 100644 --- a/New_College.Services/T_EnrollmentPlanedescServices.cs +++ b/New_College.Services/T_EnrollmentPlanedescServices.cs @@ -981,7 +981,7 @@ namespace New_College.Services .AndIF(query.Year > 0, w => w.Years == query.Year) .AndIF(!string.IsNullOrEmpty(query.AreaName), w => w.Location == query.AreaName) .And(x => x.LowScore <= (query.Score + 10) && x.LowScore > 0) - .AndIF(majornames.Any()&& majornames.Count()>0, x => majornames.Contains(x.Major)) + .AndIF(majornames.Any() && majornames.Count() > 0, x => majornames.Contains(x.Major)) .And(x => universityids.Contains(x.UId)) .ToExpression();//注意 这一句 不能少 var plandesc = await _PlanMajorDescRepository.Query(exp); @@ -1088,22 +1088,22 @@ namespace New_College.Services int tpyear = info.data.FirstOrDefault().Years; string tpname = info.data.FirstOrDefault().UniversityName; string location = info.data.FirstOrDefault().Location; - // var planmajorlist = await _PlanMajorDescRepository.Query(c => c.UniversityName == tpname && c.Years == tpyear - 1 && c.Location == location); + // var planmajorlist = await _PlanMajorDescRepository.Query(c => c.UniversityName == tpname && c.Years == tpyear - 1 && c.Location == location); List list = new List() { }; foreach (var item in info.data) { var newname = item.Major; var newmoney = string.IsNullOrWhiteSpace(item.Free) || item.Free == "0" || item.Free == "待定" ? "--" : item.Free; - // var newyear = string.IsNullOrWhiteSpace(item.AcademicYear) ? "--" : item.AcademicYear; - // var newyear = planmajorlist.FirstOrDefault().Years.ToString(); - // float scoreLine = planmajorlist.Where(c => c.UniversityName == item.UniversityName && c.Major == item.Major).Any() ? planmajorlist.Where(c => c.UniversityName == item.UniversityName && c.Major == item.Major).FirstOrDefault().LowScore : 0; + // var newyear = string.IsNullOrWhiteSpace(item.AcademicYear) ? "--" : item.AcademicYear; + // var newyear = planmajorlist.FirstOrDefault().Years.ToString(); + // float scoreLine = planmajorlist.Where(c => c.UniversityName == item.UniversityName && c.Major == item.Major).Any() ? planmajorlist.Where(c => c.UniversityName == item.UniversityName && c.Major == item.Major).FirstOrDefault().LowScore : 0; var count = list.Count(x => x.Name == newname && x.Money == newmoney && x.PlanNum == item.PlanCount && x.Scoreline == item.LowScore); if (count > 0) continue; list.Add(new PlanDescList() { Name = newname, - Year = (item.Years-1).ToString(), + Year = (item.Years - 1).ToString(), Money = newmoney, PlanNum = item.PlanCount, MajorId = item.Id, @@ -1253,6 +1253,19 @@ namespace New_College.Services }; } + + + + /// + /// 冲稳保详情配合接口 + /// + /// + /// + public async Task>> GetUniversityMapItems(CWBUniversityDetailQuery query) + { + return await this.t_EnrollmentPlanedesc.GetUniversityMapItems(query); + } + /// /// 冲稳保详情 ///