using New_College.IServices; using New_College.Model.Models; using New_College.Services.BASE; using New_College.IRepository.Base; using New_College.Model.ViewModels; using System.Threading.Tasks; using New_College.Model; using System.Collections.Generic; using New_College.IRepository; using System.Linq; using LinqKit; using System; using System.Text; using New_College.Repository; using New_College.Common; using Org.BouncyCastle.Asn1.Ocsp; using SqlSugar; using System.Linq.Expressions; using static New_College.Services.T_EnrollmentPlaneServices; using NPOI.SS.Formula.Functions; using System.Net.Http; namespace New_College.Services { public class T_EnrollmentPlanedescServices : BaseServices, IT_EnrollmentPlanedescServices { private readonly IBaseRepository _dal; private readonly ID_UniversityRepository d_UniversityRepository; private readonly IT_EnrollmentBatchRepository t_EnrollmentBatchRepository; private readonly IT_EnrollmentPlaneRepository t_EnrollmentPlaneRepository; private readonly ID_MajorRepository d_MajorRepository; private readonly ID_MajorClassRepository d_MajorClassRepository; private readonly ID_MajorCategoryRepository d_MajorCategoryRepository; private readonly IT_PlanMapTagRepository t_PlanMapTagRepository; private readonly IT_RegionScoreRepository t_RegionScoreRepository; private readonly IU_ProbabilityHistoryRepository u_ProbabilityHistoryRepository; private readonly IU_VolunteerTableRepository u_VolunteerTableRepository; private readonly IU_VolunteerTableDetailRepository u_VolunteerTableDetailRepository; private readonly IT_GearInfoRepository t_GearInfo; private readonly IT_EnrollmentPlanedescRepository t_EnrollmentPlanedesc; private readonly IV_CustomerInfoRepository _CustomerInfoRepository; private readonly ID_PlanMajorDescRepository _PlanMajorDescRepository; private readonly ID_PlanMajorScoreLineRepository _PlanMajorScoreLineRepository; private readonly ID_QualificationLineRepository _QualificationLineRepository; private readonly ID_ScoreLineRepository _ScoreLineRepository; private readonly IT_BatchlineRepository t_BatchlineRepository; private readonly IT_TbSNeedDataInfoRepository t_TbSNeedDataInfoRepository; private readonly ISysRegionRepository t_SysRegionRepository; public T_EnrollmentPlanedescServices(IBaseRepository dal , ID_UniversityRepository ID_UniversityRepository , IT_EnrollmentBatchRepository IT_EnrollmentBatchRepository , IT_EnrollmentPlaneRepository IT_EnrollmentPlaneRepository , ID_MajorRepository ID_MajorRepository , ID_MajorClassRepository ID_MajorClassRepository , ID_MajorCategoryRepository ID_MajorCategoryRepository , ID_MajorMapUniversityRepository ID_MajorMapUniversityRepository , IT_PlanMapTagRepository IT_PlanMapTagRepository , IT_RegionScoreRepository IT_RegionScoreRepository , IU_ProbabilityHistoryRepository IU_ProbabilityHistoryRepository , IU_VolunteerTableRepository IU_VolunteerTableRepository , IU_VolunteerTableDetailRepository IU_VolunteerTableDetailRepository , ID_UniversityCollectionRepository ID_UniversityCollectionRepository , IT_GearInfoRepository IT_GearInfoRepository, IT_EnrollmentPlanedescRepository t_EnrollmentPlanedescServices, IV_CustomerInfoRepository v_CustomerInfoRepository, ID_PlanMajorDescRepository planMajorDescRepository, ID_PlanMajorScoreLineRepository planMajorScoreLineRepository, ID_QualificationLineRepository qualificationLineRepository, ID_ScoreLineRepository scoreLineRepository, IT_BatchlineRepository batchlineRepository, IT_TbSNeedDataInfoRepository tbSNeedDataInfoRepository, ISysRegionRepository sysRegionRepository) { this._dal = dal; d_UniversityRepository = ID_UniversityRepository; t_EnrollmentBatchRepository = IT_EnrollmentBatchRepository; t_EnrollmentPlaneRepository = IT_EnrollmentPlaneRepository; d_MajorRepository = ID_MajorRepository; d_MajorClassRepository = ID_MajorClassRepository; d_MajorCategoryRepository = ID_MajorCategoryRepository; t_PlanMapTagRepository = IT_PlanMapTagRepository; t_RegionScoreRepository = IT_RegionScoreRepository; u_ProbabilityHistoryRepository = IU_ProbabilityHistoryRepository; u_VolunteerTableRepository = IU_VolunteerTableRepository; u_VolunteerTableDetailRepository = IU_VolunteerTableDetailRepository; t_GearInfo = IT_GearInfoRepository; base.BaseDal = dal; this.t_EnrollmentPlanedesc = t_EnrollmentPlanedescServices; this._CustomerInfoRepository = v_CustomerInfoRepository; _PlanMajorDescRepository = planMajorDescRepository; _PlanMajorScoreLineRepository = planMajorScoreLineRepository; _QualificationLineRepository = qualificationLineRepository; _ScoreLineRepository = scoreLineRepository; t_BatchlineRepository = batchlineRepository; t_TbSNeedDataInfoRepository = tbSNeedDataInfoRepository; t_SysRegionRepository = sysRegionRepository; } public List permut = new List(); /// /// 根据分数获取个性推荐学校 /// /// /// public async Task> GetRecommendUniversity(RecommendUniversityQuery query) { return await t_EnrollmentPlanedesc.GetRecommendUniversity(query); } public async Task SyncBatchInfo() { var provineInfo = await this.t_SysRegionRepository.Query(e => e.Level == 1 && !e.RegionCode.Contains("-")); string baseUrl = "https://static-data.ycymedu.com/batchitems/"; using var httpClient = new System.Net.Http.HttpClient(); var list = new List(); provineInfo.ForEach(p => { var years = new List() { "2024", "2023", "2022" }; years.ForEach(y => { string url = $"{baseUrl}{p.RegionCode}_{y}.json"; var response = httpClient.GetAsync(url).Result; if (response.IsSuccessStatusCode) { var jsons = response.Content.ReadAsStringAsync().Result; var jsonData = System.Text.Json.JsonSerializer.Deserialize(response.Content.ReadAsStringAsync().Result); if (jsonData?.code == 1) { var items = jsonData.data.list.Select(s => new T_EnrollmentBatch() { Id = s.subject_id, Batch_name = s.batch_name, Year = s.year, Type = s.subject_name, ScoreLine = s.score, AreaId = int.Parse(p.RegionCode), AreaName = p.RegionName, CreateTime = DateTime.Now, IsDelete = false, OrderSort = 0, Subjectlevel = 0, ModifyTime = DateTime.Now, }).ToList(); list.AddRange(items); } } }); }); list.ForEach(async c => { await this.t_EnrollmentBatchRepository.Add(c); }); } /// /// 霍兰德推荐学校专业 /// /// /// public async Task>> GetEnrollmentTagByPage(TagEnrollmentPlaneQuery query) { //学校到专业 专业到学校 var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Years == query.Year && w.Area_Id == query.AreaId); if (planinfo == null) return new MessageModel>() { success = false, msg = "所选省份年份的招生计划,正在完善中..." }; var planid = planinfo.FirstOrDefault().Id; if (string.IsNullOrWhiteSpace(query.Tag)) return new MessageModel>() { success = false, msg = "Tag传入为空..." }; var newTags = GetTag(query.Tag).Distinct().ToList(); var planmaptag = await t_PlanMapTagRepository.Query(x => x.IsDelete == false); List majorcolorlists = new List() { }; List majorlists = new List() { }; int i = 0; foreach (var item in newTags) { i++; majorlists.AddRange(planmaptag.Where(x => x.Tag.Contains(item)).Select(x => x.Name)); majorcolorlists.AddRange(planmaptag.Where(x => x.Tag.Contains(item)).Select(x => new majorlists() { MajorName = x.Name, TagColor = TagcolorName(i).ToString() })); } majorlists = majorlists.Distinct().ToList(); if (majorlists.Count <= 0) return new MessageModel>() { success = false, msg = "标签匹配招生计划专业为空..." }; var wheres = PredicateBuilder.New(); wheres.Start(x => x.IsDelete == false && x.PlanId == planid && majorlists.Contains(x.MajorName) && x.Scoreline <= query.Score && x.UniversityId > 0); if (query.AreaId != 821 && query.AreaId != 1047 && query.AreaId != 1965) { if (query.BatchId > 0) { wheres.And(x => x.BatchtypeId == query.BatchId); } } if (query.AreaId == 821) { if (query.SubjectClaim == "物") { var batch = await t_EnrollmentBatchRepository.Query(x => x.Year == query.Year && x.AreaName == query.AreaName && x.IsDelete == false && x.Type == "理科"); var batchids = batch.Select(x => x.Id).ToList(); wheres.And(x => batchids.Contains(x.BatchtypeId)); } else if (query.SubjectClaim == "史") { var batch = await t_EnrollmentBatchRepository.Query(x => x.Year == query.Year && x.AreaName == query.AreaName && x.IsDelete == false && x.Type == "文科"); var batchids = batch.Select(x => x.Id).ToList(); wheres.And(x => batchids.Contains(x.BatchtypeId)); } } else { if (!string.IsNullOrWhiteSpace(query.SubjectClaim)) { if (query.SubjectClaim.Contains(",")) { var cc = query.SubjectClaim.Split(","); if (cc.Length == 2) { var cc1 = cc[0]; var cc2 = cc[1]; wheres.And(x => (x.Subjectclaim.Contains("/") && x.Subjectclaim.Contains(cc1)) == true || (x.Subjectclaim.Contains(cc2) && x.Subjectclaim.Contains("/")) == true || (x.Subjectclaim.Contains(",") && x.Subjectclaim.Contains(query.SubjectClaim)) == true || (x.Subjectclaim.Contains(query.SubjectClaim)) == true); } else if (cc.Length == 3) { var cc1 = cc[0]; var cc2 = cc[1]; var cc3 = cc[2]; wheres.And(x => (x.Subjectclaim.Contains("/") && x.Subjectclaim.Contains(cc1)) == true || (x.Subjectclaim.Contains(cc2) && x.Subjectclaim.Contains("/")) == true || (x.Subjectclaim.Contains(cc3) && x.Subjectclaim.Contains("/")) == true || (x.Subjectclaim.Contains(",") && x.Subjectclaim.Contains(query.SubjectClaim)) == true || (x.Subjectclaim.Contains(query.SubjectClaim) == true)); } } else { wheres.And(x => x.Subjectclaim.Contains(query.SubjectClaim) && !x.Subjectclaim.Contains(",")); } } } var descinfo = await _dal.Query(wheres); if (descinfo.Count <= 0) return new MessageModel>() { success = false, msg = "该标签的对应招生计划为空..." }; //档位分数处理 自动锁定一个档位 DTOByTagQuery dTO = new DTOByTagQuery() { }; var newscore = Convert.ToDecimal(query.Score); var gearinfo = await t_GearInfo.Query(x => x.IsDelete == false && x.PlanId == planid && x.AreaId == query.AreaId); var newtagColor = ""; if (gearinfo.Count > 0) { var nowgearinfo = gearinfo.Where(x => x.GearMinScore <= newscore && x.GearMaxScore >= newscore).FirstOrDefault(); if (nowgearinfo != null) { decimal MaxScore = 0; decimal MinScore = 0; int sort = 0; decimal downMaxScore = 0; decimal downMinScore = 0; MaxScore = nowgearinfo.GearMaxScore; MinScore = nowgearinfo.GearMinScore; sort = nowgearinfo.OrderSort; //下个排序的档位分数 int Downsort = sort + 1; if (Downsort == 12) { downMaxScore = MinScore - 1; downMinScore = 0; } else { downMaxScore = gearinfo.Where(m => m.OrderSort == Downsort).Select(m => m.GearMaxScore).FirstOrDefault(); downMinScore = gearinfo.Where(m => m.OrderSort == Downsort).Select(m => m.GearMinScore).FirstOrDefault(); } dTO.OnMaxScore = MaxScore + 5; dTO.OnMinScore = MaxScore + 1; dTO.MaxScore = MaxScore; dTO.MinScore = MinScore; dTO.DownMaxScore = downMaxScore; dTO.DownMinScore = downMinScore; } else { newtagColor = "bao"; } } var universityids = descinfo.OrderByDescending(x => x.Scoreline).Select(x => x.UniversityId).ToList(); var universityinfo = new List(); if (!string.IsNullOrWhiteSpace(query.SearchAreaName) && query.SearchAreaName != "全国") { universityinfo = await d_UniversityRepository.Query(x => universityids.Contains(x.Id) && x.IsDelete == false && x.Area_Name == query.SearchAreaName, "Rank Asc"); if (universityinfo.Count <= 0) return new MessageModel>() { success = false, msg = "所选省份推荐院校数据为空" }; } else { universityinfo = await d_UniversityRepository.Query(x => universityids.Contains(x.Id) && x.IsDelete == false, "Rank Asc"); } if (query.SearchType == 1) { List list = new List() { }; foreach (var item in majorcolorlists) { var newdesc = descinfo.Where(x => x.MajorName == item.MajorName).ToList(); if (newdesc.Count > 0) { var newuniversityids = newdesc.Select(x => x.UniversityId).Distinct().ToList(); var newuniversityinfo = universityinfo.Where(x => newuniversityids.Contains(x.Id)); List nowInfo = new List() { }; foreach (var s in newuniversityinfo) { var tagColor = ""; if (newtagColor == "bao") { tagColor = "bao"; } else { var nowlowscore = newdesc.Where(x => x.UniversityId == s.Id && x.Scoreline > 0).OrderBy(x => x.Scoreline).Select(x => x.Scoreline).FirstOrDefault(); var nowScoreLine = Convert.ToDecimal(nowlowscore); if (dTO.OnMinScore != 0 && dTO.OnMaxScore != 0) { if (nowScoreLine >= dTO.OnMinScore && nowScoreLine <= dTO.OnMaxScore) { tagColor = "chong"; } else if (nowScoreLine >= dTO.MinScore && nowScoreLine <= dTO.MaxScore) { tagColor = "wen"; } else if (nowScoreLine < dTO.MinScore) { tagColor = "bao"; } } } nowInfo.Add(new OtherInfo() { Id = s.Id, Name = s.Name, Color = tagColor//此处是学校的颜色 }); } list.Add(new TagEnrollmentPlanResult() { Id = 0, Name = item.MajorName, Color = item.TagColor, Info = nowInfo.OrderByDescending(t => t.Color).ToList() }); } } var datalist = list.OrderBy(x => x.Color).ToList(); return new MessageModel>() { success = true, msg = "获取成功", response = datalist }; } else { List list = new List() { }; foreach (var item in universityinfo) { var newdesc = descinfo.Where(x => x.UniversityId == item.Id).ToList(); if (newdesc.Count > 0) { List otherlist = new List() { }; foreach (var s in newdesc) { var color = majorcolorlists.Where(x => x.MajorName == s.MajorName).Select(x => x.TagColor).FirstOrDefault(); if (string.IsNullOrWhiteSpace(color)) color = "d"; otherlist.Add(new OtherInfo() { Id = 0, Name = s.MajorName, Color = color }); } var newotherlist = otherlist.OrderBy(x => x.Color).ToList(); var tagColor = ""; if (newtagColor == "bao") { tagColor = "bao"; } else { var nowscore = newdesc.Where(x => x.Scoreline > 0).Select(x => x.Scoreline).FirstOrDefault(); var nowScoreLine = Convert.ToDecimal(nowscore); if (dTO.OnMinScore != 0 && dTO.OnMaxScore != 0) { if (nowScoreLine >= dTO.OnMinScore && nowScoreLine <= dTO.OnMaxScore) { tagColor = "chong"; } else if (nowScoreLine >= dTO.MinScore && nowScoreLine <= dTO.MaxScore) { tagColor = "wen"; } else if (nowScoreLine < dTO.MinScore) { tagColor = "bao"; } } } list.Add(new TagEnrollmentPlanResult() { Id = item.Id, Name = item.Name,//院校名称 Color = tagColor,//院校没有颜色 Info = newotherlist }); } } return new MessageModel>() { success = true, msg = "获取成功", response = list.OrderByDescending(x => x.Color).ToList() }; } } /// /// 设置标签的背景颜色 /// /// /// public EnumTagColor TagcolorName(int tag) { var tagcolor = new EnumTagColor(); switch (tag) { case 1: tagcolor = EnumTagColor.a; break; case 2: tagcolor = EnumTagColor.b; break; case 3: tagcolor = EnumTagColor.c; break; case 4: tagcolor = EnumTagColor.c; break; case 5: tagcolor = EnumTagColor.d; break; case 6: tagcolor = EnumTagColor.d; break; default: tagcolor = EnumTagColor.d; break; } return tagcolor; } /// /// 懒人模式 /// 办学性质 /// 高校级别 /// 专业ids /// /// /// public async Task>> GetEnrollmentLazyByPage(LazyEnrollmentPlaneQuery query) { query.Year = query.Year > 2024 ? 2024 : query.Year; if (query.Score <= 0) return new MessageModel>() { success = false, msg = "分数不能为0..." }; //var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Years == query.Year && w.Area_Id == query.AreaId); //if (planinfo == null) // return new MessageModel>() { success = false, msg = "所选省份年份的招生计划,正在完善中..." }; //通过传来的专业分类Id 筛选出所选择的专业的ids var majorclassinfo = await d_MajorClassRepository.Query(x => query.MajorIds.Contains(x.TradeId) && x.IsDelete == false); var CategoryClassids = majorclassinfo.Select(x => x.Id).ToList(); var major = await d_MajorRepository.Query(x => x.IsDelete == false && CategoryClassids.Contains(x.CategoryClass_Id)); //if (major.Count() <= 0) // return new MessageModel>() { success = false, msg = "请选择专业大类,或所选专业大类数据完善中..." }; var majornames = major.Select(x => x.MajorName).ToList(); //通过办学性质和高校级别筛选出学校的ids //string sql = ""; var natureBuilder = new List(); //stringBuilder.Append("SELECT Id FROM `D_University` where IsDelete=0 "); if (query.Nature != null && query.Nature.Count() > 0) { query.Nature.ForEach(c => { // 0、公办,1、民办,2中外合作,3 港澳台 switch (c) { case 0: natureBuilder.Add("公办"); break; case 1: natureBuilder.Add("民办"); break; case 2: natureBuilder.Add("中外合作"); break; case 3: natureBuilder.Add("港澳台"); break; } }); } //if (query.AreaNames != null && query.AreaNames.Count > 0) //{ // string areanames = ""; // foreach (var item in query.AreaNames) // { // areanames += "'" + item + "',"; // } // var newnames = areanames.Substring(0, areanames.Length - 1); //} //stringBuilder.AppendFormat(" order by rank asc"); //var university = await d_UniversityRepository.QuerySql(stringBuilder.ToString()); //if (university.Count <= 0) // return new MessageModel>() { success = false, msg = "所选院校数据完善中..." }; //var universityids = university.Select(x => x.Id).ToList(); //var batchinfo = await t_EnrollmentBatchRepository.Query(x => x.Year == query.Year && x.AreaName == query.AreaName && !x.Batch_name.Contains("提前")); //if (batchinfo.Count <= 0) // return new MessageModel>() { success = false, msg = "所属年份数据批次为空..." }; //var batchids = batchinfo.Select(s => s.Id).ToList(); //通过条件筛选出所有的 //var wheres = PredicateBuilder.New(); //wheres.And(x => x.Scoreline <= (query.Score + 10) && x.Scoreline > 0 && majornames.Contains(x.MajorName) && universityids.Contains(x.UniversityId) && x.PlanId == planinfo.FirstOrDefault().Id && batchids.Contains(x.BatchtypeId)); ////根据上述所有筛选 求出招生计划 //var plandesc = await _dal.Query(wheres, "Scoreline desc"); //if (plandesc.Count <= 0) // return new MessageModel>() { success = false, msg = "符合条件招生条件为空..." }; Expression> exp = Expressionable.Create() //创建表达式 .And(c => c.IsDelete == false) .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(natureBuilder.Any() && natureBuilder.Count() > 0, c => SqlFunc.ContainsArray(natureBuilder, c.Nature)) .AndIF(query.AreaNames.Any(), c => SqlFunc.ContainsArray(query.AreaNames, c.AreaName)) //.And(x => universityids.Contains(x.UId)) .ToExpression();//注意 这一句 不能少 var plandesc = await _PlanMajorDescRepository.Query(exp); plandesc = plandesc.OrderByDescending(c => c.LowScore).ToList(); //懒人推荐限制 //院校数量 var unum = 0; //专业数量 var mnum = 0; switch (query.AreaName) { case "上海市": unum = 24; mnum = 4; break; case "江苏省": unum = 16; mnum = 6; break; case "安徽省": unum = 12; mnum = 6; break; case "山东省": unum = 96; mnum = 1; break; case "广东省": unum = 15; mnum = 6; break; case "甘肃省": unum = 15; mnum = 6; break; } //招生计划内所有的院校Ids var planuniversityids = plandesc.Select(x => x.UId).ToList().Distinct().Take(unum); var ids = string.Join(",", planuniversityids); var stringBuilderinfo = new StringBuilder(); stringBuilderinfo.AppendFormat("select Id,Logo from D_University where IsDelete=0 and Id in ({0}) order by Id asc", ids); var info = await d_UniversityRepository.QuerySql(stringBuilderinfo.ToString()); List list = new List() { }; foreach (var item in info) { var plansinfo = plandesc.Where(x => x.UId == item.Id).ToList().Take(mnum); list.Add(new UniversityEnrollmentPlanLazyResult() { //UniversityName = item.Name, UniversityId = item.Id, Logo = item.Logo, //Nhef = item.Nhef, //Sff = item.Sff, //Syl = item.Syl, AreaName = plansinfo.FirstOrDefault().AreaName, Year = query.Year.ToString(), UniversityName = plansinfo.FirstOrDefault().UniversityName, Infos = plansinfo.Select(x => new PlanInfo() { MajorId = x.Id, Money = x.Free, Year = x.AcademicYear, YearName = query.Year.ToString(), PlanName = x.Major, PlanNum = x.PlanCount, Scoreline = x.LowScore == 0 ? "-" : x.LowScore.ToString(), LowScoreRank = x.LowScoreRank == 0 ? "-" : x.LowScoreRank.ToString() }).ToList(), // AscriptionName = item.AscriptionName, // Rank = item.Rank <= 0 ? "-" : item.Rank.ToString() }); } return new MessageModel>() { success = true, msg = "获取成功", response = list }; } /// /// 根据计划Ids 获取招生计划 /// /// /// public async Task>> GetPlanByUniversity(PlanDetailQuery query) { if (query.PlanIds != null && query.PlanIds.Count <= 0) return new MessageModel>() { success = false, msg = "传入不能为空" }; var info = await t_TbSNeedDataInfoRepository.QueryPage(x => SqlFunc.ContainsArray(query.PlanIds, x.ID), query.PageIndex, query.PageSize, "UniversityRank asc"); // int tpyear = info.data.FirstOrDefault().Years; string tpname = info.data.FirstOrDefault().UniversityName; string location = info.data.FirstOrDefault().Location; List list = new List() { }; foreach (var item in info.data) { string remark = !string.IsNullOrWhiteSpace(item.Remark) ? "(" + item.Remark + ")" : ""; var newname = item.MajorName + remark; var newmoney = string.IsNullOrWhiteSpace(item.Fee) || item.Fee == "0" || item.Fee == "待定" ? "--" : item.Fee; //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 = "2024", Money = newmoney, PlanNum = item._plancount, MajorId = item.ID, Scoreline = item._Score, Type = MajorPlanScoreTool.GetPlanScore(int.Parse(item._23Score), query.Score),//还缺冲稳保 Percentage = MajorPlanScoreTool.GetPlanPercentage(int.Parse(item._23Score), query.Score), Subject = item._23subject, AcademicYear = item.AcademicYear, planItems = new List() { new PlanItem() { PlanCount=item._plancount.ToString(), RankLine="--", Scoreline="--", Year="2024" }, new PlanItem() { PlanCount=item._23Count, RankLine=item._23ScoreLine.ToString(), Scoreline=item._23Score, Year="2023" }, new PlanItem() { PlanCount=item._22Count, RankLine=item._22ScoreLine, Scoreline=item._22Score, Year="2022" }, new PlanItem() { PlanCount=item._21Count, RankLine=item._21ScoreLine, Scoreline=item._21Score, Year="2021" } } }); } return new MessageModel>() { success = true, msg = "获取成功", response = new PageModel() { data = list, dataCount = info.dataCount, page = info.page, pageCount = info.pageCount, PageSize = info.PageSize } }; } /// /// 校验专业名称 /// /// /// /// public string CheckMajorName(string name, string remake) { return string.IsNullOrWhiteSpace(remake) ? name : remake.Contains("(") || remake.Contains("(") ? name + remake : name + "(" + remake + ")"; } /// /// 冲稳保获取推荐学校专业(已弃用) /// /// /// public async Task>> GetEnrollmentCWBByPage(CWBEnrollmentPlaneQuery query) { //所选科目 分数 if (query.Score <= 0) return new MessageModel>() { success = false, msg = "分数不能为0..." }; var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Area_Id == query.AreaId && w.Years == query.Year); if (planinfo == null) return new MessageModel>() { success = false, msg = "所选省份年份的招生计划,正在完善中..." }; //筛选符合条件的院校ids var stringBuilder = new StringBuilder(); stringBuilder.Append("SELECT Id FROM `D_University` where IsDelete=0 "); if (query.Nature != null && query.Nature.Count > 0) { var newnature = string.Join(",", query.Nature); stringBuilder.AppendFormat(" and Nature in ({0})", newnature); } if (query.UniversityAreaName != null && query.UniversityAreaName.Count > 0) { var newname = ""; foreach (var item in query.UniversityAreaName) { newname += "'" + item + "'" + ","; } newname = newname.Substring(0, newname.Length - 1); stringBuilder.AppendFormat(" and Area_Name in ({0})", newname); } if (query.SchoolLevel != null && query.SchoolLevel.Count > 0) { foreach (var item in query.SchoolLevel) { if (item == 1) { stringBuilder.AppendFormat(" and Nhef=1"); } else if (item == 2) { stringBuilder.AppendFormat(" and Sff=1"); } else if (item == 3) { stringBuilder.AppendFormat(" and Syl=1"); } } } stringBuilder.AppendFormat(" order by rank asc"); var university = await d_UniversityRepository.QuerySql(stringBuilder.ToString()); if (university.Count <= 0) return new MessageModel>() { success = false, msg = "所选院校数据完善中..." }; var universityids = university.Select(x => x.Id).ToList(); //通过条件筛选出所有的 var wheres = PredicateBuilder.New(); wheres.And(x => universityids.Contains(x.UniversityId) && x.IsDelete == false && x.PlanId == planinfo.FirstOrDefault().Id && x.BatchtypeId == query.BatchId && x.UniversityId > 0); //().Id && batchids.Contains(x.BatchtypeId) && x.UniversityId > 0); if (query.TradeIds != null && query.TradeIds.Count > 0) { //所选专业增加majorids筛选 //query.MajorIds var majorclassinfo = await d_MajorClassRepository.Query(x => query.TradeIds.Contains(x.TradeId) && x.IsDelete == false); var CategoryClassids = majorclassinfo.Select(x => x.Id).ToList(); var major = await d_MajorRepository.Query(x => x.IsDelete == false && CategoryClassids.Contains(x.CategoryClass_Id)); if (major.Count() <= 0) return new MessageModel>() { success = false, msg = "所选专业大类数据完善中..." }; var majornames = major.Select(x => x.MajorName).ToList(); wheres.And(x => majornames.Contains(x.MajorName)); } //根据上述所有筛选 求出招生计划 var plandesc = await _dal.Query(wheres, "Scoreline desc"); if (plandesc.Count <= 0) return new MessageModel>() { success = false, msg = "符合条件招生条件为空..." }; List c = new List() { }; List w = new List() { }; List b = new List() { }; var start = query.PageSize * (query.PageIndex - 1); var end = query.PageIndex * query.PageSize; List list = new List() { }; var chonguIds = plandesc.Where(k => k.Scoreline > 0 && (query.Score + 20 >= k.Scoreline && query.Score < k.Scoreline)).Select(e => e.UniversityId).Distinct().ToList(); list.Add(new CWBEnrollmentPlanResult() { Name = "冲", Count = chonguIds.Count(), UniversityIds = chonguIds }); var wenuIds = plandesc.Where(k => k.Scoreline > 0 && (query.Score >= k.Scoreline && query.Score - 25 <= k.Scoreline)).Select(e => e.UniversityId).Distinct().ToList(); list.Add(new CWBEnrollmentPlanResult() { Name = "稳", Count = wenuIds.Count(), UniversityIds = wenuIds }); var baouIds = plandesc.Where(k => k.Scoreline > 0 && (query.Score - 26 >= k.Scoreline && query.Score - 60 <= k.Scoreline)).Select(e => e.UniversityId).Distinct().ToList(); list.Add(new CWBEnrollmentPlanResult() { Name = "保", Count = baouIds.Count(), UniversityIds = baouIds }); return new MessageModel>() { success = true, msg = "获取成功", response = list }; } /// /// 冲稳保详情配合接口 /// /// /// public async Task>> GetUniversityMapItems(CWBUniversityDetailQuery query) { return await this.t_EnrollmentPlanedesc.GetUniversityMapItems(query); } /// /// 冲稳保详情 /// /// /// public async Task>> GetCWBUniversityDetail(CWBUniversityDetailQuery query) { return await this.t_EnrollmentPlanedesc.GetCWBUniversityDetail(query); //var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Years == query.Year && w.Area_Id == query.AreaId); } #region 转化Tag /// /// 转化出标签所有可能 /// /// /// public List GetTag(string tag) { var Nums = new List(); for (int i = 0; i < tag.Length; i++) { Nums.Add(tag[i].ToString()); } Permutation(Nums.ToArray(), 0, Nums.ToArray().Length); //permut = GetTagExtened(tag, permut); return permut; } /// /// 递归实现全排序并输出 /// /// 待排序的字符数组 /// 输出字符数组的起始位置 /// 输出字符数组的长度 public void Permutation(string[] nums, int m, int n) { int i; string t; if (m < n - 1) { Permutation(nums, m + 1, n); for (i = m + 1; i < n; i++) { t = nums[m]; nums[m] = nums[i]; nums[i] = t; Permutation(nums, m + 1, n); t = nums[m]; nums[m] = nums[i]; nums[i] = t; } } else { string kk = string.Empty; for (int j = 0; j < nums.Length; j++) { kk += nums[j]; } permut.Add(kk); } } ///// ///// 判断是否为不常见标签,若是则匹配相关联标签 ///// ///// ///// //public List GetTagExtened(string tag, List taglist) //{ // var list = new List(); // var query = yd_tagExInfo.Get(a => a.Enabled == 1 && a.Tags.Equals(tag)).FirstOrDefault(); // if (query != null) // { // list = JsonConvert.DeserializeObject>(query.tagEx); // } // if (list.Any() && list.Count() > 0) // { // taglist.AddRange(list.Select(s => s.tag).ToList()); // } // return taglist; //} #endregion /// /// 获取分析结果录取概率 获取之后保存一下 /// /// /// public async Task> GetUniversityProbability(UniversityProbabilityQuery query) { query.Year = query.Year > 2024 ? 2024 : query.Year; var universityinfoline = await _QualificationLineRepository.Query(c => c.UId == query.UniversityId); if (universityinfoline == null) return new MessageModel() { success = false, msg = "院校信息不存在" }; var universitydetail = await d_UniversityRepository.QueryById(query.UniversityId); UniversityProbabilityResult model = new UniversityProbabilityResult() { }; var scoreline = await _ScoreLineRepository.Query(c => c.Years == query.Year.ToString() && c.Province == query.AreaName && c.Score == query.Score.ToString()); model.YearBatchScores = universityinfoline.Select(c => new YearBatchScore() { BatchName = c.BatchName, Score = c.LowScore, Year = c.Years }).ToList(); model.Sff = universityinfoline.FirstOrDefault()._211 == "是" ? true : false; model.Nhef = universityinfoline.FirstOrDefault()._985 == "是" ? true : false; model.Syl = universityinfoline.FirstOrDefault()._SYL == "是" ? true : false; model.Name = universityinfoline.FirstOrDefault().UniversityName; model.Logo = universitydetail.Logo; model.Nature = universitydetail.Nature; model.AreaName = universitydetail.Area_Name; model.AscriptionName = universitydetail.AscriptionName; model.Rank = universitydetail.Rank; model.SubjectLevel = universitydetail.Subject_Level; model.EstimateScore = Math.Round(model.YearBatchScores.Average(c => c.Score), 0); double tmpscore = 0; if (scoreline.Any()) { tmpscore = double.Parse(scoreline.FirstOrDefault().Score); // model.Probability = tmpscore >= model.EstimateScore ? "" : ""; } model.Proposal = tmpscore + 5 > model.EstimateScore ? "成功几率较好,建议可以填报" : tmpscore + 5 == model.EstimateScore ? "成功几率较低,建议谨慎考虑" : tmpscore < model.EstimateScore ? "风险过高,建议谨慎考虑" : "风险过高,不建议填报"; model.Probability = tmpscore + 5 > model.EstimateScore ? new Random().Next(80, 99) : tmpscore + 5 == model.EstimateScore ? new Random().Next(40, 70) : tmpscore < model.EstimateScore ? new Random().Next(0, 30) : new Random().Next(0, 15); return new MessageModel() { success = true, msg = "获取成功", response = model }; } #region 获取Proposal建议 private string GetProposal(float Probability) { if (Probability >= 85) { return "成功几率很高,建议填报"; } else if (Probability >= 65) { return "成功几率较好,建议可以填报"; } else if (Probability >= 50) { return "成功几率较低,建议谨慎考虑"; } else if (Probability >= 35) { return "风险过高,建议谨慎考虑"; } else { return "风险过高,不建议填报"; } } #endregion /// /// 获取概率历史记录列表 /// /// public async Task>> GetProbabilityResult(ProbabilityQuery query) { var info = await u_ProbabilityHistoryRepository.QueryPage(x => x.IsDelete == false && x.CustomerId == query.CustomerId, query.PageIndex, query.PageSize, "CreateTime desc"); if (info.data.Count <= 0) return new MessageModel>() { success = false, msg = "获取失败,暂未测试录取概率" }; var universityids = info.data.Select(x => x.UniversityId).ToList(); var universityinfo = await d_UniversityRepository.Query(x => universityids.Contains(x.Id) && x.IsDelete == false, "Rank asc"); List list = new List() { }; foreach (var item in info.data) { list.Add(new ProbabilityResult() { Id = item.Id, AreaId = item.AreaId, EstimateScore = item.EstimateScore, Probability = item.Probability, UniversityId = item.UniversityId, UniversityName = universityinfo.Where(x => x.Id == item.UniversityId).Select(x => x.Name).FirstOrDefault(), Year = item.Year }); } return new MessageModel>() { success = true, msg = "获取成功", response = new PageModel() { data = list, dataCount = info.dataCount, page = info.page, pageCount = info.pageCount, PageSize = info.PageSize } }; } /// /// 保存志愿表 /// /// /// public async Task> SaveVolunteerTable(VolunteerTableQuery query) { //if (query.TableId > 0) //{ //} //u_VolunteerTableRepository u_VolunteerTableDetailRepository var table = await u_VolunteerTableRepository.Query(x => x.IsDelete == false && x.CustomerId == query.CustomerId); var num = table.Count() + 1; var TableName = "我的志愿表" + num; var addtable = await u_VolunteerTableRepository.Add(new U_VolunteerTable() { CustomerId = query.CustomerId, VolunteerTableName = TableName }); if (addtable > 0) { List list = new List() { }; foreach (var item in query.details) { list.Add(new U_VolunteerTableDetail() { PlanMajorIds = string.Join(",", item.PlanMagorIds), UniversityId = item.UniversityId, UniversityName = item.UniversityName, VolunteerTableId = addtable }); } var adddetail = await u_VolunteerTableDetailRepository.Add(list); if (adddetail > 0) { return new MessageModel() { success = true, msg = "保存成功" }; } else { return new MessageModel() { success = false, msg = "保存失败" }; } } return new MessageModel() { success = true, msg = "保存成功" }; } /// /// 获取个人志愿列表 传Id /// /// /// public async Task>> GetVolunteerTableList(IdQuery query) { var info = await u_VolunteerTableRepository.Query(x => x.IsDelete == false && x.CustomerId == query.CustomerId, "CreateTime desc"); if (info.Count <= 0) return new MessageModel>() { success = false, msg = "获取失败,暂无志愿表" }; return new MessageModel>() { success = true, msg = "获取成功", response = info.Select(x => new VolunteerTableListResult() { Id = x.Id, Name = x.VolunteerTableName, CreateTime = x.CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss") }).ToList() }; } /// /// 获取志愿表详情 传Id /// /// /// public async Task>> GetVolunteerTableDetail(IdQuery query) { var info = await u_VolunteerTableDetailRepository.Query(x => x.IsDelete == false && x.VolunteerTableId == query.Id); if (info == null) return new MessageModel>() { success = false, msg = "获取失败,数据不存在" }; List list = new List() { }; var planstringids = info.Select(x => x.PlanMajorIds).ToList(); List PlanIds = new List() { }; foreach (var item in planstringids) { if (!string.IsNullOrWhiteSpace(item)) { var newids = item.Split(",").Select(x => int.Parse(x)).ToList(); PlanIds.AddRange(newids); } } var descinfo = await _PlanMajorDescRepository.Query(x => x.IsDelete == false && PlanIds.Contains(x.Id)); foreach (var item in info) { if (!string.IsNullOrWhiteSpace(item.PlanMajorIds)) { var planids = item.PlanMajorIds.Split(",").Select(x => int.Parse(x)).ToList(); var nowdesc = descinfo.Where(x => planids.Contains(x.Id)).ToList(); if (nowdesc.Count <= 0) continue; string yearname = string.Empty; if (query.CustomerId.HasValue) { yearname = (await this._CustomerInfoRepository.QueryById(query.CustomerId)).Year.ToString(); } list.Add(new VolunteerTableResult() { UniversityName = item.UniversityName, EnrollmentCode = nowdesc.FirstOrDefault(o => o.UId == item.UniversityId).EnrollmentCode, Nature = nowdesc.FirstOrDefault(o => o.UId == item.UniversityId).Nature, Ownership = nowdesc.FirstOrDefault(o => o.UId == item.UniversityId).Ownership, _211 = nowdesc.FirstOrDefault(o => o.UId == item.UniversityId)._211, _985 = nowdesc.FirstOrDefault(o => o.UId == item.UniversityId)._985, _SYL = nowdesc.FirstOrDefault(o => o.UId == item.UniversityId)._SYL, Infos = nowdesc.Select(x => new PlanInfo() { Money = x.Free, Year = x.Years == 0 ? "-" : x.Years.ToString() == "" ? "-" : x.Years.ToString(), PlanName = x.Major, MajorCode = descinfo.FirstOrDefault(o => o.Id == x.Id).MajorCode, MajorGroup = descinfo.FirstOrDefault(o => o.Id == x.Id).MajorGroup, PlanNum = x.PlanCount, YearName = (x.Years - 1).ToString(), Scoreline = x.LowScore == 0 ? "-" : x.LowScore.ToString(), LowScoreRank = x.LowScoreRank == 0 ? "-" : x.LowScoreRank.ToString(), Remark = x.Remark, AcademicYear = x.AcademicYear }).ToList() }); } } return new MessageModel>() { success = true, msg = "获取成功", response = list }; } /// /// 删除志愿表 /// /// /// public async Task> DeleteVolunteerTable(IdQuery query) { var info = await u_VolunteerTableRepository.QueryById(query.Id); if (info == null) return new MessageModel() { success = false, msg = "删除失败,数据不存在" }; info.IsDelete = true; var result = await u_VolunteerTableRepository.Update(info); if (result) { return new MessageModel() { success = true, msg = "删除成功" }; } else { return new MessageModel() { success = false, msg = "删除失败" }; } } /// /// 保存志愿表 霍兰德专用 /// /// /// public async Task> SaveHollandVolunteer(HollandVolunteerTableQuery query) { var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Years == query.Year && w.Area_Id == query.AreaId); if (planinfo.Count <= 0) return new MessageModel() { success = false, msg = "传入年份省份有误" }; var planid = planinfo.Select(x => x.Id).FirstOrDefault(); var batchinfo = await t_EnrollmentBatchRepository.Query(x => x.Year == query.Year && x.AreaName == query.AreaName && !x.Batch_name.Contains("提前")); if (batchinfo.Count <= 0) return new MessageModel() { success = false, msg = "传入年份省份有误" }; var batchids = batchinfo.Select(s => s.Id).ToList(); var majorlists = query.infos.Select(x => x.MajorName).ToList(); var descinfo = await _dal.Query(x => x.IsDelete == false && x.PlanId == planid && majorlists.Contains(x.MajorName) && x.Scoreline <= query.Score && x.UniversityId > 0 && batchids.Contains(x.BatchtypeId)); //数据处理添加 List list = new List() { }; var table = await u_VolunteerTableRepository.Query(x => x.IsDelete == false && x.CustomerId == query.CustomerId); var num = table.Count() + 1; var TableName = "我的志愿表" + num; var addtable = await u_VolunteerTableRepository.Add(new U_VolunteerTable() { CustomerId = query.CustomerId, VolunteerTableName = TableName }); if (addtable > 0) foreach (var item in query.infos) { foreach (var s in item.universitys) { var plandescid = descinfo.Where(x => x.UniversityId == s.UniversityId && x.MajorName == item.MajorName).Select(x => x.Id).FirstOrDefault(); list.Add(new U_VolunteerTableDetail() { PlanMajorIds = plandescid.ToString(), UniversityId = s.UniversityId, UniversityName = s.UniversityName, VolunteerTableId = addtable }); } } return new MessageModel() { success = true, msg = "保存成功" }; } /// /// 获取一键生成的志愿表 /// /// /// public async Task>> GetAutoVolunteerTableDetail(VolunteerTableQuery query) { string yearName = "2024"; if (query.details == null) return new MessageModel>() { success = false, msg = "选择专业院校为空..." }; List list = new List() { }; //var planstringids = query.details.Select(x => x.PlanMagorIds).ToList(); var PlanIds = new List() { }; long id = 0; foreach (var item in query.details) { if (item.PlanMagorIds != null && item.PlanMagorIds.Count() > 0) { PlanIds.AddRange(item.PlanMagorIds); id = item.PlanMagorIds.First(); } } var descinfo = await t_TbSNeedDataInfoRepository.Query(x => PlanIds.Contains(x.ID)); var universityids = query.details.Select(x => x.UniversityId).ToList(); var universityinfo = await d_UniversityRepository.Query(x => universityids.Contains(x.Id) && x.IsDelete == false, "Rank asc"); int sort = 0; foreach (var item in query.details) { if (item.PlanMagorIds != null && item.PlanMagorIds.Count() > 0) { var nowdesc = descinfo.Where(x => item.PlanMagorIds.Contains(x.ID)).ToList(); if (nowdesc.Count <= 0) continue; var nowuniversityinfo = universityinfo.Where(x => x.Id == item.UniversityId).FirstOrDefault(); if (nowuniversityinfo == null) continue; //此处处理针对于霍兰德推荐的具有相同学校的案例 var count = list.Where(x => x.UniversityName == item.UniversityName).ToList(); if (count.Count > 0) { var newinfos = nowdesc.Select(x => new PlanInfo() { MajorId = x.ID, Money = x.Fee, Year = x.AcademicYear, PlanName = x.MajorName + (!string.IsNullOrWhiteSpace(x.Remark) ? "(" + x.Remark + ")" : ""), PlanNum = x._plancount, Scoreline = x._23Score == "0" ? "-" : x._23Score, LowScoreRank = x._23ScoreLine == 0 ? "-" : x._23ScoreLine.ToString(), Subject = x._24subject }).ToList(); count.FirstOrDefault().Infos.AddRange(newinfos); } else { sort++; list.Add(new SimuVolunteerTableResult() { Logo = nowuniversityinfo.Logo, Nhef = nowuniversityinfo.Nhef > 0, Rank = sort, Sff = nowuniversityinfo.Sff > 0, Syl = nowuniversityinfo.Syl > 0, UniversityId = item.UniversityId, UniversityName = item.UniversityName, UniversityCode = nowdesc.Any() ? nowdesc.FirstOrDefault().EnrollmentCode : "", Province = nowuniversityinfo.Area_Name, Nature = nowuniversityinfo.Nature, Infos = nowdesc.Select(x => new PlanInfo() { Subject = x._24subject, MajorId = x.ID, Money = x.Fee, Year = x.AcademicYear, PlanName = x.MajorName + (!string.IsNullOrWhiteSpace(x.Remark) ? "(" + x.Remark + ")" : ""), PlanNum = x._plancount, Scoreline = x._23Score == "0" ? "-" : x._23Score, LowScoreRank = x._23ScoreLine == 0 ? "-" : x._23ScoreLine.ToString(), YearName = yearName, Type = query.Score.HasValue ? MajorPlanScoreTool.GetPlanScore(int.Parse(x._23Score), query.Score.Value) : 0,//还缺冲稳保 Percentage = query.Score.HasValue ? MajorPlanScoreTool.GetPlanPercentage(int.Parse(x._23Score), query.Score.Value) : 0, }).ToList() }); } } } return new MessageModel>() { success = true, msg = "获取成功", response = list }; } /// /// 获取霍兰德一键生成的志愿表 /// /// /// public async Task>> GetHollandVolunteerTableDetail(HollandVolunteerTableQuery query) { query.Year = query.Year > 2024 ? 2024 : query.Year; var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Years == query.Year && w.Area_Id == query.AreaId); if (planinfo.Count <= 0) return new MessageModel>() { success = false, msg = "传入年份省份有误" }; var planid = planinfo.Select(x => x.Id).FirstOrDefault(); var batchinfo = await t_EnrollmentBatchRepository.Query(x => x.Year == query.Year && x.AreaName == query.AreaName && !x.Batch_name.Contains("提前")); if (batchinfo.Count <= 0) return new MessageModel>() { success = false, msg = "传入年份省份有误" }; var batchids = batchinfo.Select(s => s.Id).ToList(); var majorlists = query.infos.Select(x => x.MajorName).ToList(); var descinfo = await _dal.Query(x => x.IsDelete == false && x.PlanId == planid && majorlists.Contains(x.MajorName) && x.Scoreline <= query.Score && x.UniversityId > 0 && batchids.Contains(x.BatchtypeId)); //数据处理添加 var universityids = new List() { }; foreach (var item in query.infos) { foreach (var s in item.universitys) { universityids.Add(s.UniversityId); } } var universityinfo = await d_UniversityRepository.Query(x => universityids.Contains(x.Id) && x.IsDelete == false, "Rank asc"); List list = new List() { }; foreach (var item in query.infos) { foreach (var s in item.universitys) { var nowuniversityinfo = universityinfo.Where(x => x.Id == s.UniversityId).FirstOrDefault(); if (nowuniversityinfo == null) continue; var plandescid = descinfo.Where(x => x.UniversityId == s.UniversityId && x.MajorName == item.MajorName).Select(x => x.Id).FirstOrDefault(); var nowdesc = descinfo.Where(x => plandescid == x.Id).ToList(); var count = list.Where(x => x.UniversityName == s.UniversityName && x.UniversityId == s.UniversityId).ToList(); if (count.Count > 0) { var newinfos = nowdesc.Select(x => new PlanInfo() { MajorId = x.Id, Money = x.Tuitionfee, Year = x.Studyyears, PlanName = x.MajorName, PlanNum = x.Plancount, Scoreline = x.Scoreline == 0 ? "-" : x.Scoreline.ToString(), LowScoreRank = x.scorepostion == 0 ? "-" : x.scorepostion.ToString() }).ToList(); count.FirstOrDefault().Infos.AddRange(newinfos); } else { list.Add(new SimuVolunteerTableResult() { Logo = nowuniversityinfo.Logo, Nhef = nowuniversityinfo.Nhef > 0, Rank = nowuniversityinfo.Rank, Sff = nowuniversityinfo.Sff > 0, Syl = nowuniversityinfo.Syl > 0, UniversityId = s.UniversityId, UniversityName = s.UniversityName, Infos = nowdesc.Select(x => new PlanInfo() { MajorId = x.Id, Money = x.Tuitionfee, Year = x.Studyyears, PlanName = x.MajorName, PlanNum = x.Plancount, Scoreline = x.Scoreline == 0 ? "-" : x.Scoreline.ToString() }).ToList() }); } } } return new MessageModel>() { success = true, msg = "获取成功", response = list }; } /// /// 根据标签推荐选科 /// /// /// public async Task> GetSubjectSelectByTag(ByTagSubjectSelectQuery query) { query.Year = query.Year > 2024 ? 2024 : query.Year; var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Years == query.Year && w.Area_Id == query.AreaId); if (planinfo == null) return new MessageModel() { success = false, msg = "所选省份年份的招生计划,正在完善中..." }; var planid = planinfo.FirstOrDefault().Id; if (string.IsNullOrWhiteSpace(query.Tag)) return new MessageModel() { success = false, msg = "标签传入为空,请去测试" }; var newTags = GetTag(query.Tag); var planmaptag = await t_PlanMapTagRepository.Query(x => x.IsDelete == false); List majorlists = new List() { }; foreach (var item in newTags) { majorlists.AddRange(planmaptag.Where(x => x.Tag.Contains(item)).Select(x => x.Name).ToList()); } majorlists = majorlists.Distinct().ToList(); var descinfo = await _dal.Query(x => x.IsDelete == false && x.PlanId == planid && majorlists.Contains(x.MajorName) && x.UniversityId > 0); List list = new List() { }; list.Add(new IdNameResult() { Name = "物", Id = descinfo.Count(x => x.Subjectclaim.Contains("物")) }); list.Add(new IdNameResult() { Name = "化", Id = descinfo.Count(x => x.Subjectclaim.Contains("化")) }); list.Add(new IdNameResult() { Name = "生", Id = descinfo.Count(x => x.Subjectclaim.Contains("生")) }); list.Add(new IdNameResult() { Name = "政", Id = descinfo.Count(x => x.Subjectclaim.Contains("政")) }); list.Add(new IdNameResult() { Name = "史", Id = descinfo.Count(x => x.Subjectclaim.Contains("史")) }); list.Add(new IdNameResult() { Name = "地", Id = descinfo.Count(x => x.Subjectclaim.Contains("地")) }); var result = list.OrderByDescending(x => x.Id).Select(x => x.Name).Take(3); return new MessageModel() { success = true, msg = "获取成功", response = string.Join("|", result) }; } /// /// 获取喜欢的院校 /// /// /// public async Task>> GetLikeSchoolMajor(IdQuery query) { var table = await u_VolunteerTableRepository.Query(x => x.IsDelete == false && x.CustomerId == query.Id); if (table.Count <= 0) return new MessageModel>() { success = false, msg = "未生成志愿表" }; var tableids = table.Select(x => x.Id).ToList(); var detail = await u_VolunteerTableDetailRepository.Query(x => x.IsDelete == false && tableids.Contains(x.VolunteerTableId)); if (detail.Count <= 0) return new MessageModel>() { success = false, msg = "数据为空" }; List ids = new List() { }; foreach (var item in detail) { var newplaninfo = item.PlanMajorIds.Split(",").ToList(); foreach (var s in newplaninfo) { int id = Convert.ToInt32(s); ids.Add(id); } } var info = await _dal.Query(x => x.IsDelete == false && ids.Contains(x.Id)); List list = new List() { }; foreach (var item in detail) { var newplaninfo = item.PlanMajorIds.Split(",").ToList(); foreach (var s in newplaninfo) { int id = Convert.ToInt32(s); var planname = info.Where(x => x.Id == id).Select(x => x.MajorName).FirstOrDefault(); if (string.IsNullOrWhiteSpace(planname)) continue; list.Add(new LikeSchoolMajor() { SchoolName = item.UniversityName, MajorName = planname }); } } return new MessageModel>() { success = true, msg = "获取成功", response = list }; } /// /// 专业规划 /// /// public async Task>> GetMajorPlanClaim(CustomerQuery query) { query.Year = query.Year > 2024 ? 2024 : query.Year; //查招生计划 var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Years == query.Year && w.Area_Id == query.AreaId); if (planinfo == null) return new MessageModel>() { success = false, msg = "招生计划为空" }; var planid = planinfo.Select(x => x.Id).FirstOrDefault(); //12 大类 var majorcate = await d_MajorCategoryRepository.Query(x => x.IsDelete == false && x.Type == 1); //二级类 var majorcateids = majorcate.Select(x => x.Id).ToList(); var majorclass = await d_MajorClassRepository.Query(x => x.IsDelete == false && majorcateids.Contains(x.TradeId)); //三级类 var majorclassids = majorclass.Select(x => x.Id).ToList(); var major = await d_MajorRepository.Query(x => x.IsDelete == false && majorclassids.Contains(x.CategoryClass_Id)); //通过三级类的名称去匹配 subjectclaim 选科信息 //没有的话就给个无选科要求 var batchinfo = await t_EnrollmentBatchRepository.Query(x => x.Year == query.Year && x.AreaName == query.AreaName && !x.Batch_name.Contains("提前")); if (batchinfo.Count <= 0) return new MessageModel>() { success = false, msg = "所属年份数据批次为空..." }; var batchids = batchinfo.Select(s => s.Id).ToList(); var plandesc = await _dal.Query(x => x.IsDelete == false && x.PlanId == planid && batchids.Contains(x.BatchtypeId) && x.UniversityId > 0, "Scoreline desc"); List list = new List() { }; foreach (var item in majorcate) { List majors = new List() { }; var newmajorclassids = majorclass.Where(x => x.TradeId == item.Id).Select(x => x.Id).ToList(); var newmajorinfo = major.Where(x => newmajorclassids.Contains(x.CategoryClass_Id)); foreach (var s in newmajorinfo) { var claim = plandesc.Where(x => x.MajorName == s.MajorName).Select(x => x.Subjectclaim).FirstOrDefault(); majors.Add(new MajorClaim() { MajorName = s.Name, Claim = GetClaim(claim) }); } list.Add(new MajorPlanResult() { Name = item.Name, Majors = majors }); } return new MessageModel>() { success = true, msg = "获取成功", response = list }; } /// /// /// /// /// public string GetClaim(string claim) { var returnclaim = claim; switch (claim) { case "不限": returnclaim = "无限制"; break; case "": returnclaim = "无限制"; break; case null: returnclaim = "无限制"; break; case "无限制": returnclaim = "无限制"; break; default: returnclaim = claim; break; } return returnclaim; } /// /// 院校内部获取批次 /// /// /// public async Task>> GetUniversityPlanBatch(YearAreaQuery query) { // query.Year = query.Year.HasValue && query.Year > 2023 ? 2023 : query.Year; Expression> expression = Expressionable.Create() .And(c => c.IsDelete == false) .And(c => c.AreaName == query.AreaName) .AndIF(query.Year.HasValue, c => c.Year == query.Year) .ToExpression(); var info = await t_BatchlineRepository.Query(expression); if (info.Count <= 0) return new MessageModel>() { success = false, msg = "数据为空" }; List list = new List() { }; foreach (var item in info) { if (item.Type_name != "不分文理") { list.Add(new IdNameResult() { Id = item.Id, Name = item.Batch_name, TypeName = item.Type_name, Year = item.Year, Score = item.Average }); } else { list.Add(new IdNameResult() { Id = item.Id, Name = item.Batch_name, Year = item.Year, Score = item.Average }); } } return new MessageModel>() { success = true, msg = "获取成功", response = list }; } /// /// 获取批次 /// /// /// public async Task>> GetBatchByYearArea(YearAreaQuery query) { query.Year = query.Year.HasValue && query.Year >= 2024 ? 2024 : query.Year;//获取批次信息新数据出来2023后需更新成2024 Expression> expression = Expressionable.Create() .And(c => c.IsDelete == false) .And(c => !c.Batch_name.Contains("提前")) .And(c => !c.Batch_name.Contains("零志愿")) .And(c => c.AreaId == query.ProvinceCode) .AndIF(query.Year.HasValue, c => c.Year == query.Year) .ToExpression(); var info = await t_EnrollmentBatchRepository.Query(expression); if (info.Count <= 0) return new MessageModel>() { success = false, msg = "数据为空" }; List list = new List() { }; foreach (var item in info.OrderByDescending(c => c.Year).ToList()) { if (item.Type != "不分文理") { list.Add(new IdNameResult() { Id = item.Id, Name = item.Batch_name, TypeName = item.Type, Year = item.Year, Score = item.ScoreLine }); } else { list.Add(new IdNameResult() { Id = item.Id, Name = item.Batch_name, Year = item.Year, Score = item.ScoreLine }); } } //var baseurl = "https://static-data.ycymedu.com/batchitems/"; //var list = new List(); //using var httpClient = new System.Net.Http.HttpClient(); //string url = $"{baseurl}{query.ProvinceCode}.json"; //var response = httpClient.GetAsync(url).Result; //if (response.IsSuccessStatusCode) //{ // var jsonData = System.Text.Json.JsonSerializer.Deserialize(response.Content.ReadAsStringAsync().Result); // if (jsonData?.code == 1) // { // list = jsonData.data.list.Select(s => new IdNameResult() // { // Id = s.subject_id, // Name = s.batch_name, // Year = s.year, // TypeName = s.subject_name, // Score = s.score // }).ToList(); // } //} return new MessageModel>() { success = true, msg = "获取成功", response = list }; } public Task>> GetBatchByAreaAndYear(BatchQuery query) { throw new NotImplementedException(); } } }