1644 lines
79 KiB
C#
1644 lines
79 KiB
C#
|
||
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;
|
||
|
||
namespace New_College.Services
|
||
{
|
||
public class T_EnrollmentPlanedescServices : BaseServices<T_EnrollmentPlanedesc>, IT_EnrollmentPlanedescServices
|
||
{
|
||
private readonly IBaseRepository<T_EnrollmentPlanedesc> _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;
|
||
public T_EnrollmentPlanedescServices(IBaseRepository<T_EnrollmentPlanedesc> 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)
|
||
{
|
||
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;
|
||
}
|
||
|
||
public List<string> permut = new List<string>();
|
||
|
||
/// <summary>
|
||
/// 根据分数获取个性推荐学校
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<PageModel<UniversityResult>> GetRecommendUniversity(RecommendUniversityQuery query)
|
||
{
|
||
|
||
return await t_EnrollmentPlanedesc.GetRecommendUniversity(query);
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 霍兰德推荐学校专业
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<TagEnrollmentPlanResult>>> 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<List<TagEnrollmentPlanResult>>() { success = false, msg = "所选省份年份的招生计划,正在完善中..." };
|
||
var planid = planinfo.FirstOrDefault().Id;
|
||
if (string.IsNullOrWhiteSpace(query.Tag))
|
||
return new MessageModel<List<TagEnrollmentPlanResult>>() { success = false, msg = "Tag传入为空..." };
|
||
var newTags = GetTag(query.Tag).Distinct().ToList();
|
||
var planmaptag = await t_PlanMapTagRepository.Query(x => x.IsDelete == false);
|
||
List<majorlists> majorcolorlists = new List<majorlists>() { };
|
||
List<string> majorlists = new List<string>() { };
|
||
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<List<TagEnrollmentPlanResult>>() { success = false, msg = "标签匹配招生计划专业为空..." };
|
||
|
||
var wheres = PredicateBuilder.New<T_EnrollmentPlanedesc>();
|
||
|
||
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<List<TagEnrollmentPlanResult>>() { 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<D_University>();
|
||
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<List<TagEnrollmentPlanResult>>() { success = false, msg = "所选省份推荐院校数据为空" };
|
||
}
|
||
else
|
||
{
|
||
universityinfo = await d_UniversityRepository.Query(x => universityids.Contains(x.Id) && x.IsDelete == false, "Rank Asc");
|
||
}
|
||
if (query.SearchType == 1)
|
||
{
|
||
List<TagEnrollmentPlanResult> list = new List<TagEnrollmentPlanResult>() { };
|
||
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<OtherInfo> nowInfo = new List<OtherInfo>() { };
|
||
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<List<TagEnrollmentPlanResult>>() { success = true, msg = "获取成功", response = datalist };
|
||
}
|
||
else
|
||
{
|
||
List<TagEnrollmentPlanResult> list = new List<TagEnrollmentPlanResult>() { };
|
||
foreach (var item in universityinfo)
|
||
{
|
||
var newdesc = descinfo.Where(x => x.UniversityId == item.Id).ToList();
|
||
if (newdesc.Count > 0)
|
||
{
|
||
List<OtherInfo> otherlist = new List<OtherInfo>() { };
|
||
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<List<TagEnrollmentPlanResult>>() { success = true, msg = "获取成功", response = list.OrderByDescending(x => x.Color).ToList() };
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 设置标签的背景颜色
|
||
/// </summary>
|
||
/// <param name="tag"></param>
|
||
/// <returns></returns>
|
||
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;
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 懒人模式
|
||
/// 办学性质
|
||
/// 高校级别
|
||
/// 专业ids
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<UniversityEnrollmentPlanLazyResult>>> GetEnrollmentLazyByPage(LazyEnrollmentPlaneQuery query)
|
||
{
|
||
query.Year = query.Year > 2023 ? 2023 : query.Year;
|
||
if (query.Score <= 0)
|
||
return new MessageModel<List<UniversityEnrollmentPlanLazyResult>>() { 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<List<UniversityEnrollmentPlanLazyResult>>() { 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<List<UniversityEnrollmentPlanLazyResult>>() { success = false, msg = "请选择专业大类,或所选专业大类数据完善中..." };
|
||
var majornames = major.Select(x => x.MajorName).ToList();
|
||
//通过办学性质和高校级别筛选出学校的ids
|
||
//string sql = "";
|
||
var natureBuilder = new List<string>();
|
||
//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<List<UniversityEnrollmentPlanLazyResult>>() { 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<List<UniversityEnrollmentPlanLazyResult>>() { success = false, msg = "所属年份数据批次为空..." };
|
||
//var batchids = batchinfo.Select(s => s.Id).ToList();
|
||
//通过条件筛选出所有的
|
||
//var wheres = PredicateBuilder.New<T_EnrollmentPlanedesc>();
|
||
//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<List<UniversityEnrollmentPlanLazyResult>>() { success = false, msg = "符合条件招生条件为空..." };
|
||
|
||
|
||
Expression<Func<D_PlanMajorDesc, bool>> exp = Expressionable.Create<D_PlanMajorDesc>() //创建表达式
|
||
.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<UniversityEnrollmentPlanLazyResult> list = new List<UniversityEnrollmentPlanLazyResult>() { };
|
||
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<List<UniversityEnrollmentPlanLazyResult>>()
|
||
{
|
||
success = true,
|
||
msg = "获取成功",
|
||
response = list
|
||
};
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据计划Ids 获取招生计划
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<PageModel<PlanDescList>>> GetPlanByUniversity(PlanDetailQuery query)
|
||
{
|
||
if (query.PlanIds != null && query.PlanIds.Count <= 0)
|
||
return new MessageModel<PageModel<PlanDescList>>() { 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<PlanDescList> list = new List<PlanDescList>() { };
|
||
foreach (var item in info.data)
|
||
{
|
||
var newname = item.MajorName;
|
||
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 = "2023",
|
||
Money = newmoney,
|
||
PlanNum = int.Parse(item._23Count),
|
||
MajorId = item.ID,
|
||
Scoreline = int.Parse(item._23ScoreLine),
|
||
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<PlanItem>()
|
||
{
|
||
new PlanItem() {
|
||
PlanCount=int.Parse(item._22Count),
|
||
RankLine=int.Parse(item._22ScoreLine),
|
||
Scoreline=int.Parse(item._22Score),
|
||
Year="2022"
|
||
},
|
||
new PlanItem() {
|
||
PlanCount=int.Parse(item._21Count),
|
||
RankLine=int.Parse(item._21ScoreLine),
|
||
Scoreline=int.Parse(item._21Score),
|
||
Year="2021"
|
||
},
|
||
}
|
||
});
|
||
}
|
||
return new MessageModel<PageModel<PlanDescList>>()
|
||
{
|
||
success = true,
|
||
msg = "获取成功",
|
||
response = new PageModel<PlanDescList>()
|
||
{
|
||
data = list,
|
||
dataCount = info.dataCount,
|
||
page = info.page,
|
||
pageCount = info.pageCount,
|
||
PageSize = info.PageSize
|
||
}
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 校验专业名称
|
||
/// </summary>
|
||
/// <param name="name"></param>
|
||
/// <param name="remake"></param>
|
||
/// <returns></returns>
|
||
public string CheckMajorName(string name, string remake)
|
||
{
|
||
return string.IsNullOrWhiteSpace(remake) ? name : remake.Contains("(") || remake.Contains("(") ? name + remake : name + "(" + remake + ")";
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 冲稳保获取推荐学校专业(已弃用)
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<CWBEnrollmentPlanResult>>> GetEnrollmentCWBByPage(CWBEnrollmentPlaneQuery query)
|
||
{
|
||
//所选科目 分数
|
||
if (query.Score <= 0)
|
||
return new MessageModel<List<CWBEnrollmentPlanResult>>() { 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<List<CWBEnrollmentPlanResult>>() { 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<List<CWBEnrollmentPlanResult>>() { success = false, msg = "所选院校数据完善中..." };
|
||
var universityids = university.Select(x => x.Id).ToList();
|
||
//通过条件筛选出所有的
|
||
var wheres = PredicateBuilder.New<T_EnrollmentPlanedesc>();
|
||
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<List<CWBEnrollmentPlanResult>>() { 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<List<CWBEnrollmentPlanResult>>() { success = false, msg = "符合条件招生条件为空..." };
|
||
List<UniversityEnrollmentPlanResult> c = new List<UniversityEnrollmentPlanResult>() { };
|
||
List<UniversityEnrollmentPlanResult> w = new List<UniversityEnrollmentPlanResult>() { };
|
||
List<UniversityEnrollmentPlanResult> b = new List<UniversityEnrollmentPlanResult>() { };
|
||
var start = query.PageSize * (query.PageIndex - 1);
|
||
var end = query.PageIndex * query.PageSize;
|
||
List<CWBEnrollmentPlanResult> list = new List<CWBEnrollmentPlanResult>() { };
|
||
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)).Select(e => e.UniversityId).Distinct().ToList();
|
||
list.Add(new CWBEnrollmentPlanResult()
|
||
{
|
||
Name = "保",
|
||
Count = baouIds.Count(),
|
||
UniversityIds = baouIds
|
||
});
|
||
return new MessageModel<List<CWBEnrollmentPlanResult>>()
|
||
{
|
||
success = true,
|
||
msg = "获取成功",
|
||
response = list
|
||
};
|
||
}
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 冲稳保详情配合接口
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<UniversityMapMajorItems>>> GetUniversityMapItems(CWBUniversityDetailQuery query)
|
||
{
|
||
return await this.t_EnrollmentPlanedesc.GetUniversityMapItems(query);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 冲稳保详情
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<PageModel<UniversityEnrollmentPlanResult>>> 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
|
||
/// <summary>
|
||
/// 转化出标签所有可能
|
||
/// </summary>
|
||
/// <param name="tag"></param>
|
||
/// <returns></returns>
|
||
public List<string> GetTag(string tag)
|
||
{
|
||
var Nums = new List<string>();
|
||
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;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 递归实现全排序并输出
|
||
/// </summary>
|
||
/// <param name="nums">待排序的字符数组</param>
|
||
/// <param name="m">输出字符数组的起始位置</param>
|
||
/// <param name="n">输出字符数组的长度</param>
|
||
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);
|
||
}
|
||
}
|
||
|
||
///// <summary>
|
||
///// 判断是否为不常见标签,若是则匹配相关联标签
|
||
///// </summary>
|
||
///// <param name="tag"></param>
|
||
///// <returns></returns>
|
||
//public List<string> GetTagExtened(string tag, List<string> taglist)
|
||
//{
|
||
// var list = new List<TagExTend>();
|
||
// var query = yd_tagExInfo.Get(a => a.Enabled == 1 && a.Tags.Equals(tag)).FirstOrDefault();
|
||
// if (query != null)
|
||
// {
|
||
// list = JsonConvert.DeserializeObject<List<TagExTend>>(query.tagEx);
|
||
// }
|
||
// if (list.Any() && list.Count() > 0)
|
||
// {
|
||
// taglist.AddRange(list.Select(s => s.tag).ToList());
|
||
// }
|
||
// return taglist;
|
||
//}
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// 获取分析结果录取概率 获取之后保存一下
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<UniversityProbabilityResult>> GetUniversityProbability(UniversityProbabilityQuery query)
|
||
{
|
||
query.Year = query.Year > 2023 ? 2023 : query.Year;
|
||
var universityinfoline = await _QualificationLineRepository.Query(c => c.UId == query.UniversityId);
|
||
if (universityinfoline == null)
|
||
return new MessageModel<UniversityProbabilityResult>() { 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<UniversityProbabilityResult>()
|
||
{
|
||
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
|
||
|
||
/// <summary>
|
||
/// 获取概率历史记录列表
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<PageModel<ProbabilityResult>>> 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<PageModel<ProbabilityResult>>() { 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<ProbabilityResult> list = new List<ProbabilityResult>() { };
|
||
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<PageModel<ProbabilityResult>>()
|
||
{
|
||
success = true,
|
||
msg = "获取成功",
|
||
response = new PageModel<ProbabilityResult>()
|
||
{
|
||
data = list,
|
||
dataCount = info.dataCount,
|
||
page = info.page,
|
||
pageCount = info.pageCount,
|
||
PageSize = info.PageSize
|
||
}
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存志愿表
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<bool>> 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<U_VolunteerTableDetail> list = new List<U_VolunteerTableDetail>() { };
|
||
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<bool>() { success = true, msg = "保存成功" };
|
||
}
|
||
else
|
||
{
|
||
return new MessageModel<bool>() { success = false, msg = "保存失败" };
|
||
}
|
||
}
|
||
return new MessageModel<bool>() { success = true, msg = "保存成功" };
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取个人志愿列表 传Id
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<VolunteerTableListResult>>> 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<List<VolunteerTableListResult>>() { success = false, msg = "获取失败,暂无志愿表" };
|
||
return new MessageModel<List<VolunteerTableListResult>>()
|
||
{
|
||
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()
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取志愿表详情 传Id
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<VolunteerTableResult>>> GetVolunteerTableDetail(IdQuery query)
|
||
{
|
||
var info = await u_VolunteerTableDetailRepository.Query(x => x.IsDelete == false && x.VolunteerTableId == query.Id);
|
||
if (info == null)
|
||
return new MessageModel<List<VolunteerTableResult>>() { success = false, msg = "获取失败,数据不存在" };
|
||
List<VolunteerTableResult> list = new List<VolunteerTableResult>() { };
|
||
var planstringids = info.Select(x => x.PlanMajorIds).ToList();
|
||
List<int> PlanIds = new List<int>() { };
|
||
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<List<VolunteerTableResult>>() { success = true, msg = "获取成功", response = list };
|
||
}
|
||
|
||
/// <summary>
|
||
/// 删除志愿表
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<bool>> DeleteVolunteerTable(IdQuery query)
|
||
{
|
||
var info = await u_VolunteerTableRepository.QueryById(query.Id);
|
||
if (info == null)
|
||
return new MessageModel<bool>() { success = false, msg = "删除失败,数据不存在" };
|
||
info.IsDelete = true;
|
||
var result = await u_VolunteerTableRepository.Update(info);
|
||
if (result)
|
||
{
|
||
return new MessageModel<bool>() { success = true, msg = "删除成功" };
|
||
}
|
||
else
|
||
{
|
||
return new MessageModel<bool>() { success = false, msg = "删除失败" };
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存志愿表 霍兰德专用
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<bool>> 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<bool>() { 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<bool>() { 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<U_VolunteerTableDetail> list = new List<U_VolunteerTableDetail>() { };
|
||
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<bool>() { success = true, msg = "保存成功" };
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取一键生成的志愿表
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<SimuVolunteerTableResult>>> GetAutoVolunteerTableDetail(VolunteerTableQuery query)
|
||
{
|
||
string yearName = "2023";
|
||
if (query.details == null)
|
||
return new MessageModel<List<SimuVolunteerTableResult>>() { success = false, msg = "选择专业院校为空..." };
|
||
List<SimuVolunteerTableResult> list = new List<SimuVolunteerTableResult>() { };
|
||
//var planstringids = query.details.Select(x => x.PlanMagorIds).ToList();
|
||
var PlanIds = new List<long>() { };
|
||
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,
|
||
PlanNum = int.Parse(x._23Count),
|
||
Scoreline = x._23Score == "0" ? "-" : x._23Score,
|
||
LowScoreRank = x._23ScoreLine == "0" ? "-" : x._23ScoreLine
|
||
}).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()
|
||
{
|
||
MajorId = x.ID,
|
||
Money = x.Fee,
|
||
Year = x.AcademicYear,
|
||
PlanName = x.MajorName,
|
||
PlanNum = int.Parse(x._23Count),
|
||
Scoreline = x._23Score == "0" ? "-" : x._23Score,
|
||
LowScoreRank = x._23ScoreLine == " 0" ? "-" : x._23ScoreLine,
|
||
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<List<SimuVolunteerTableResult>>() { success = true, msg = "获取成功", response = list };
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取霍兰德一键生成的志愿表
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<SimuVolunteerTableResult>>> GetHollandVolunteerTableDetail(HollandVolunteerTableQuery query)
|
||
{
|
||
query.Year = query.Year > 2023 ? 2023 : 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<List<SimuVolunteerTableResult>>() { 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<List<SimuVolunteerTableResult>>() { 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<int>() { };
|
||
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<SimuVolunteerTableResult> list = new List<SimuVolunteerTableResult>() { };
|
||
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<List<SimuVolunteerTableResult>>() { success = true, msg = "获取成功", response = list };
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据标签推荐选科
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<string>> GetSubjectSelectByTag(ByTagSubjectSelectQuery query)
|
||
{
|
||
query.Year = query.Year > 2023 ? 2023 : query.Year;
|
||
var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Years == query.Year && w.Area_Id == query.AreaId);
|
||
if (planinfo == null)
|
||
return new MessageModel<string>() { success = false, msg = "所选省份年份的招生计划,正在完善中..." };
|
||
var planid = planinfo.FirstOrDefault().Id;
|
||
if (string.IsNullOrWhiteSpace(query.Tag))
|
||
return new MessageModel<string>() { success = false, msg = "标签传入为空,请去测试" };
|
||
var newTags = GetTag(query.Tag);
|
||
var planmaptag = await t_PlanMapTagRepository.Query(x => x.IsDelete == false);
|
||
List<string> majorlists = new List<string>() { };
|
||
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<IdNameResult> list = new List<IdNameResult>() { };
|
||
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<string>()
|
||
{
|
||
success = true,
|
||
msg = "获取成功",
|
||
response = string.Join("|", result)
|
||
};
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取喜欢的院校
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<LikeSchoolMajor>>> GetLikeSchoolMajor(IdQuery query)
|
||
{
|
||
var table = await u_VolunteerTableRepository.Query(x => x.IsDelete == false && x.CustomerId == query.Id);
|
||
if (table.Count <= 0)
|
||
return new MessageModel<List<LikeSchoolMajor>>() { 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<List<LikeSchoolMajor>>() { success = false, msg = "数据为空" };
|
||
List<int> ids = new List<int>() { };
|
||
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<LikeSchoolMajor> list = new List<LikeSchoolMajor>() { };
|
||
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<List<LikeSchoolMajor>>() { success = true, msg = "获取成功", response = list };
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 专业规划
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<MajorPlanResult>>> GetMajorPlanClaim(CustomerQuery query)
|
||
{
|
||
query.Year = query.Year > 2023 ? 2023 : query.Year;
|
||
//查招生计划
|
||
var planinfo = await t_EnrollmentPlaneRepository.Query(w => w.Years == query.Year && w.Area_Id == query.AreaId);
|
||
if (planinfo == null)
|
||
return new MessageModel<List<MajorPlanResult>>() { 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<List<MajorPlanResult>>() { 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<MajorPlanResult> list = new List<MajorPlanResult>() { };
|
||
foreach (var item in majorcate)
|
||
{
|
||
List<MajorClaim> majors = new List<MajorClaim>() { };
|
||
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<List<MajorPlanResult>>() { success = true, msg = "获取成功", response = list };
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="claim"></param>
|
||
/// <returns></returns>
|
||
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;
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 院校内部获取批次
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<IdNameResult>>> GetUniversityPlanBatch(YearAreaQuery query)
|
||
{
|
||
|
||
// query.Year = query.Year.HasValue && query.Year > 2023 ? 2023 : query.Year;
|
||
Expression<Func<T_Batchline, bool>> expression = Expressionable.Create<T_Batchline>()
|
||
.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<List<IdNameResult>>() { success = false, msg = "数据为空" };
|
||
List<IdNameResult> list = new List<IdNameResult>() { };
|
||
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<List<IdNameResult>>()
|
||
{
|
||
success = true,
|
||
msg = "获取成功",
|
||
response = list
|
||
};
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取批次
|
||
/// </summary>
|
||
/// <param name="query"></param>
|
||
/// <returns></returns>
|
||
public async Task<MessageModel<List<IdNameResult>>> GetBatchByYearArea(YearAreaQuery query)
|
||
{
|
||
query.Year = query.Year.HasValue && query.Year > 2023 ? 2023 : query.Year;
|
||
Expression<Func<T_EnrollmentBatch, bool>> expression = Expressionable.Create<T_EnrollmentBatch>()
|
||
.And(c => c.IsDelete == false)
|
||
.And(c => !c.Batch_name.Contains("提前"))
|
||
.And(c => !c.Batch_name.Contains("零志愿"))
|
||
.And(c => c.AreaName == query.AreaName)
|
||
.AndIF(query.Year.HasValue, c => c.Year == query.Year)
|
||
.ToExpression();
|
||
var info = await t_EnrollmentBatchRepository.Query(expression);
|
||
if (info.Count <= 0)
|
||
return new MessageModel<List<IdNameResult>>() { success = false, msg = "数据为空" };
|
||
List<IdNameResult> list = new List<IdNameResult>() { };
|
||
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
|
||
});
|
||
}
|
||
}
|
||
return new MessageModel<List<IdNameResult>>()
|
||
{
|
||
success = true,
|
||
msg = "获取成功",
|
||
response = list
|
||
};
|
||
}
|
||
|
||
public Task<MessageModel<List<IdNameResult>>> GetBatchByAreaAndYear(BatchQuery query)
|
||
{
|
||
throw new NotImplementedException();
|
||
}
|
||
}
|
||
} |