NewGaoKaoApi/New_College.Services/T_EnrollmentPlaneServices.cs

573 lines
24 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using New_College.IServices;
using New_College.Model.Models;
using New_College.Services.BASE;
using New_College.IRepository.Base;
using System.Threading.Tasks;
using New_College.IRepository;
using New_College.Common.Excel;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Data.Entity.ModelConfiguration.Conventions;
using System;
using New_College.Model.ViewModels.Result;
using New_College.Model.ViewModels.Query;
using New_College.Model;
using System.Text.RegularExpressions;
using New_College.Common.Helper;
using Newtonsoft.Json;
using System.IO;
using System.Threading;
namespace New_College.Services
{
public class T_EnrollmentPlaneServices : BaseServices<T_EnrollmentPlane>, IT_EnrollmentPlaneServices
{
private readonly IBaseRepository<T_EnrollmentPlane> _dal;
private readonly IT_EnrollmentPlaneRepository planeRepository;
private readonly ID_UniversityRepository d_University;
private readonly ID_MajorRepository d_Major;
private readonly IT_EnrollmentBatchRepository t_EnrollmentBatch;
private readonly IT_EnrollmentPlanedescRepository t_EnrollmentPlanedesc;
private readonly ID_MajorCategoryRepository d_MajorCategoryRepository;
private readonly ID_MajorClassRepository d_MajorClassRepository;
public T_EnrollmentPlaneServices(IBaseRepository<T_EnrollmentPlane> dal, IT_EnrollmentPlaneRepository t_EnrollmentPlaneRepository, ID_UniversityRepository d_UniversityRepository, ID_MajorRepository d_MajorRepository, IT_EnrollmentBatchRepository t_EnrollmentBatchRepository, IT_EnrollmentPlanedescRepository t_EnrollmentPlanedescRepository, ID_MajorCategoryRepository d_MajorCategoryRepository, ID_MajorClassRepository majorClassRepository)
{
this._dal = dal;
base.BaseDal = dal;
this.planeRepository = t_EnrollmentPlaneRepository;
this.d_University = d_UniversityRepository;
this.d_Major = d_MajorRepository;
this.t_EnrollmentBatch = t_EnrollmentBatchRepository;
this.t_EnrollmentPlanedesc = t_EnrollmentPlanedescRepository;
this.d_MajorCategoryRepository = d_MajorCategoryRepository;
this.d_MajorClassRepository = majorClassRepository;
}
/// <summary>
/// 招生计划
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task<PageModel<EnrollmentPlansResult>> GetEnrollmentPlans(EnrollmentPlanRequest request)
{
return await this.planeRepository.GetEnrollmentPlans(request);
}
public async Task<bool> universitydetailupdate()
{
var universitylist = await this.d_University.Query(x => x.IsDelete == false);
for (int k = 0; k <= 2800; k += 20)
{
var jsontext = UniversityTypeRelsove.GetFileJson(string.Format(@"D:\\jsondoc\\2023-09-14\\{0}.json", k));
var jsontext2 = Regex.Unescape(jsontext.Remove(jsontext.Length - 1, 1).Remove(0, 1));
var result = JsonConvert.DeserializeObject<List<Class1>>(jsontext2);
result.ForEach(async c =>
{
Thread.Sleep(100);
if (!string.IsNullOrWhiteSpace(c.description))
{
if (universitylist.Any(k => k.Name == c.name.Trim()) && string.IsNullOrWhiteSpace(universitylist.FirstOrDefault(k => k.Name == c.name.Trim()).Description))
{
var defaultinfo = universitylist.FirstOrDefault(k => k.Name == c.name.Trim());
defaultinfo.Description = c.description;
defaultinfo.ModifyTime = DateTime.Now;
await this.d_University.Update(defaultinfo);
}
}
});
}
return true;
}
/// <summary>
/// 更新目录
/// </summary>
/// <returns></returns>
public async Task<bool> tradeupadte()
{
var jsontext = UniversityTypeRelsove.GetFileJson(@"D:\\Files\\1060.json");
var result = JsonConvert.DeserializeObject<Rootobject>(jsontext);
var newtrade = result.msg;
var majorcategory = await this.d_MajorCategoryRepository.Query(x => x.IsDelete == false);
var majorcategorylist = new List<D_MajorCategory>();
newtrade.ToList().ForEach(async a =>
{
if (majorcategory.Any(n => n.TradeName == a.name && n.Type == 2))
{
var majorcategorydetail = majorcategory.FirstOrDefault(n => n.TradeName == a.name && n.Type == 2);
majorcategorydetail.TradeNumber = a.key;
majorcategorydetail.ModifyTime = DateTime.Now;
await this.d_MajorCategoryRepository.Update(majorcategorydetail);
}
//if (!majorcategory.Any(n => n.TradeName == a.name && n.Type == 3))
//{
// majorcategorylist.Add(new D_MajorCategory()
// {
// CreateTime = DateTime.Now,
// IsDelete = false,
// ModifyTime = DateTime.Now,
// Name = a.name,
// OrderSort = 0,
// TradeName = a.name,
// TradeNumber = a.key,
// Type = 3,
// });
//}
});
//if (majorcategorylist.Any())
// await this.d_MajorCategoryRepository.Add(majorcategorylist);
return true;
}
/// <summary>
/// 专业类别二级目录
/// </summary>
/// <returns></returns>
public async Task<bool> categoryupdate()
{
string[] files = Directory.GetFiles(@"D:\\Files\\Type\\");
var msglist = new List<Msg>();
var majorclassitems = new List<D_MajorClass>();
var majorcategory = await this.d_MajorCategoryRepository.Query(x => x.IsDelete == false && x.Type == 3);
var majorclass = await this.d_MajorClassRepository.Query(x => x.IsDelete == false);
foreach (string itemfile in files)
{
if (itemfile.Contains("1070"))
{
var jsontext = UniversityTypeRelsove.GetFileJson(itemfile);
var result = JsonConvert.DeserializeObject<Rootobject>(jsontext);
msglist.AddRange(result.msg);
}
}
var majorclasslist = majorclass.ToList();
msglist.ForEach(x =>
{
//if (majorclass.Any(n=> n.Name == x.name))
//{
// var majorclassdefault = majorclass.FirstOrDefault(k => k.Name == x.name);
// majorclassdefault.ModifyTime = DateTime.Now;
// majorclassdefault.OrderSort = int.Parse(x.key);
// await this.d_MajorClassRepository.Update(majorclassdefault);
//}
//else
//{
var tradenumber = x.key.Remove(x.key.Length - 2, 2);
var singletrade = majorcategory.FirstOrDefault(c => c.TradeNumber == tradenumber);
if (singletrade != null)
{
majorclassitems.Add(new D_MajorClass()
{
Categoryname = x.name,
CreateTime = DateTime.Now,
IsDelete = false,
ModifyTime = DateTime.Now,
Name = x.name,
OrderSort = int.Parse(x.key),
TradeId = singletrade.Id
});
}
// }
});
if (majorclassitems.Any())
{
await this.d_MajorClassRepository.Add(majorclassitems);
}
return true;
}
/// <summary>
/// 专业名称
/// </summary>
/// <returns></returns>
public async Task<bool> ClassChildItems()
{
string[] files = Directory.GetFiles(@"D:\\Files\\TypeChild\\");
var msglist = new List<MsgITEMS>();
var majorclass = await this.d_MajorClassRepository.Query(x => x.IsDelete == false);
var majorinfolist = await this.d_Major.Query(x => x.IsDelete == false);
foreach (string itemfile in files)
{
if (itemfile.Contains("1070"))
{
int ordersort = int.Parse("1070" + itemfile.Split("1070")[1].Replace(".json", ""));
var categoryid = majorclass.FirstOrDefault(c => c.IsDelete == false && c.OrderSort == ordersort);
var jsontext = UniversityTypeRelsove.GetFileJson(itemfile);
var result = JsonConvert.DeserializeObject<MajorItem>(jsontext);
result.msg.ToList().ForEach(msg =>
{
msg.categoryid = categoryid.Id;
msglist.Add(msg);
});
}
}
var majoritems = new List<D_Major>();
///
msglist.ForEach(a =>
{
var anyinfo = majorinfolist.Any(c => a.categoryid == c.CategoryClass_Id && a.zydm == c.MajorCode);
if (!anyinfo)
{
majoritems.Add(new D_Major()
{
Hot = a.zymyd==""?0:decimal.Parse(a.zymyd),
CategoryClass_Id = a.categoryid,
CreateTime = DateTime.Now,
IsDelete = false,
MajorCode = a.zydm,
MajorName = a.zymc,
ModifyTime = DateTime.Now,
Name = a.zymc,
OrderSort =0,
Type = 3,
});
}
});
await d_Major.Add(majoritems);
return true;
}
public class Rootobject
{
public Msg[] msg { get; set; }
public bool flag { get; set; }
}
public class Msg
{
public string key { get; set; }
public string name { get; set; }
}
public class Class1
{
public string id { get; set; }
public string name { get; set; }
public string description { get; set; }
}
public class MajorItem
{
public MsgITEMS[] msg { get; set; }
public bool flag { get; set; }
}
public class MsgITEMS
{
public string zydm { get; set; }
public string zymc { get; set; }
public string specId { get; set; }
public string zymyd { get; set; }
public int categoryid { get; set; }
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public async Task<bool> Importuniverbaseinfo()
{
var dataSet = ExcelUtil.ReadExcelToDataSet("D:\\universitybasesql.xlsx");
if (dataSet.Tables.Count > 0)
{
var universitylist = await this.d_University.Query(x => x.IsDelete == false);
// var universitymidfys = new List<D_University>();
var universityattench = new List<D_University>();
foreach (DataRow dr in dataSet.Tables[0].Rows)
{
var universityname = dr["院校名称"].ToString();
var areaname = dr["省份"].ToString();
var schooltype = dr["本科专科"].ToString();
var classtype = dr["类型"].ToString();
var isgongban = dr["公办民办"].ToString();
var is985 = dr["是否985"].ToString();
var is211 = dr["是否211"].ToString();
var issyl = dr["双一流"].ToString();
var isqjjh = dr["强基计划"].ToString();
if (universitylist.Any(c => c.Name == universityname))
{
var single = universitylist.FirstOrDefault(c => c.Name == universityname);
single.Area_Name = areaname;
// 0综合,1理工类2医学类|3军事类|4语言类|5师范类|6财经类|7政法类|8民族类|9农林类|10艺术类|11体育类|12其他
single.Type = classtype == "综合" ? 0 : classtype == "理工" ? 1
: classtype == "医学类" ? 2
: classtype == "军事类" ? 3
: classtype == "语言类" ? 4
: classtype == "师范类" ? 5
: classtype == "财经类" ? 6
: classtype == "政法类" ? 7
: classtype == "民族类" ? 8
: classtype == "农林类" ? 9
: classtype == "艺术类" ? 10
: classtype == "体育类" ? 11 : 12;
single.Nature = isgongban == "公办" ? 0 : isgongban == "民办" ? 1 : isgongban == "中外合作" ? 2 : 3;
single.Sff = is211 == "211" ? 1 : 0;
single.QJJH = isqjjh == "强基计划" ? 1 : 0;
single.Nhef = is985 == "985" ? 1 : 0;
single.Syl = issyl == "双一流" ? 1 : 0;
single.Subject_Level = schooltype == "本科" ? 0 : 1;
single.ModifyTime = DateTime.Now;
await this.d_University.Update(single);
}
else
{
universityattench.Add(new D_University()
{
Name = universityname,
Type = classtype == "综合" ? 0 : classtype == "理工" ? 1
: classtype == "医学类" ? 2
: classtype == "军事类" ? 3
: classtype == "语言类" ? 4
: classtype == "师范类" ? 5
: classtype == "财经类" ? 6
: classtype == "政法类" ? 7
: classtype == "民族类" ? 8
: classtype == "农林类" ? 9
: classtype == "艺术类" ? 10
: classtype == "体育类" ? 11 : 12,
Area_Name = areaname,
Nature = isgongban == "公办" ? 0 : isgongban == "民办" ? 1 : isgongban == "中外合作" ? 2 : 3,
Sff = is211 == "211" ? 1 : 0,
QJJH = isqjjh == "强基计划" ? 1 : 0,
Nhef = is985 == "985" ? 1 : 0,
Syl = issyl == "985" ? 1 : 0,
Subject_Level = schooltype == "本科" ? 0 : 1
});
}
}
await this.d_University.Add(universityattench);
}
return true;
}
//2020 最低录取分数导入
public async Task<bool> Import()
{
var dataSet = ExcelUtil.ReadExcelToDataSet("D:\\一草一木\\山东2020年招生录取数据.xlsx");
if (dataSet.Tables.Count > 0)
{
var universitylist = await this.d_University.Query(x => x.IsDelete == false);
var majorlist = await this.d_Major.Query(x => x.IsDelete == false);
var batchlist = await this.t_EnrollmentBatch.Query(x => x.IsDelete == false && x.AreaId == 1376 && x.Year == 2021);
var planinfo =
await this.t_EnrollmentPlanedesc.Query(e => e.PlanId == 10);
List<T_EnrollmentPlanedesc> list = new List<T_EnrollmentPlanedesc>() { };
List<string> adduniversity = new List<string>() { };
foreach (DataRow dr in dataSet.Tables[0].Rows)
{
string schoolname = dr["院校名称"].ToString();
string area = dr["省份"].ToString();
string major = dr["专业"].ToString();
string batch = dr["批次"].ToString();
string lowerscore = dr["最低分"].ToString();
string lowerlevel = dr["最低位次"].ToString();
var universityid = universitylist.Where(x => x.Name == schoolname).Select(x => x.Id).FirstOrDefault();
if (universityid <= 0)
{
//记录学校 并添加
adduniversity.Add(schoolname);
continue;
}
var batchid = batchlist.Where(x => x.Batch_name == batch).Select(x => x.Id).FirstOrDefault();
var remake = "";
if (major.Contains("("))
{
int indexs = major.IndexOf("(");
remake = major.Substring(indexs);
major = major.Substring(0, indexs);
}
var majorid = majorlist.Where(x => x.Name == major.Trim()).Select(x => x.Id).FirstOrDefault();
var planinfomodel = planinfo.Where(e => e.UniversityId == universityid && e.MajorId == majorid && e.BatchtypeId == batchid);
if (planinfomodel.Any())
{
var models = planinfomodel.FirstOrDefault();
models.scorepostion = Convert.ToInt32(lowerlevel);
models.Scoreline = Convert.ToInt32(lowerscore);
bool kk = await this.t_EnrollmentPlanedesc.Update(models);
}
}
// var cc = adduniversity;
// var count = await this.t_EnrollmentPlanedesc.Add(list);
}
return true;
}
#region 2021招生分数更新
///// <summary>
///// 2021上海招生分数更新
///// </summary>
///// <returns></returns>
//public async Task<bool> Import()
//{
// var dataSet = ExcelUtil.ReadExcelToDataSet("D:\\一草一木\\2021年山东本科招生计划.xls");
// if (dataSet.Tables.Count > 0)
// {
// var universitylist = await this.d_University.Query(x => x.IsDelete == false);
// var majorlist = await this.d_Major.Query(x => x.IsDelete == false);
// var batchlist = await this.t_EnrollmentBatch.Query(x => x.IsDelete == false && x.AreaId == 1376 && x.Year == 2021);
// List<T_EnrollmentPlanedesc> list = new List<T_EnrollmentPlanedesc>() { };
// List<string> adduniversity = new List<string>() { };
// foreach (DataRow dr in dataSet.Tables[0].Rows)
// {
// string schoolname = dr["院校名称"].ToString();
// string area = dr["省份"].ToString();
// string major = dr["专业"].ToString();
// string batch = dr["批次"].ToString();
// //string avgscore = dr["平均分"].ToString();
// //string scoreline = dr["最低分"].ToString();
// string subjectclaim = dr["科类"].ToString();
// string plannum = dr["计划人数"].ToString();
// var universityid = universitylist.Where(x => x.Name == schoolname).Select(x => x.Id).FirstOrDefault();
// if (universityid <= 0)
// {
// //记录学校 并添加
// adduniversity.Add(schoolname);
// continue;
// }
// var batchid = batchlist.Where(x => x.Batch_name == batch).Select(x => x.Id).FirstOrDefault();
// var remake = "";
// if (major.Contains("("))
// {
// int indexs = major.IndexOf("(");
// remake = major.Substring(indexs);
// major = major.Substring(0, indexs).Trim();
// }
// var majorid = majorlist.Where(x => major.Contains(x.Name)).Select(x => x.Id).FirstOrDefault();
// list.Add(new T_EnrollmentPlanedesc()
// {
// UniversityId = universityid,
// BatchtypeId = batchid,
// Plancount = Convert.ToInt32(plannum),
// PlanId = 10,
// //Scoreline = float.Parse(scoreline),
// //majoraverage = float.Parse(avgscore),
// MajorName = major,
// Remark = remake,
// MajorId = majorid,
// Subjectclaim = subjectclaim,
// });
// }
// var cc = adduniversity;
// var count = await t_EnrollmentPlanedesc.Add(list);
// }
// return true;
//}
#endregion
/// <summary>
/// 2019上海招生分数更新
/// </summary>
/// <returns></returns>
//public async Task<bool> Import()
//{
// try
// {
// var dataSet = ExcelUtil.ReadExcelToDataSet("D:\\Ashuju\\数据\\好帮手\\招生计划\\导入步骤\\江苏省2019缺失分数线补充.xlsx");
// if (dataSet.Tables.Count > 0)
// {
// var info = await t_EnrollmentPlanedescServices.Query(x => x.PlanId == 9 && x.IsDelete == false && x.Scoreline <= 0);
// var universitylist = await d_UniversityRepository.Query(x => x.IsDelete == false);
// List<T_EnrollmentPlanedesc> list = new List<T_EnrollmentPlanedesc>() { };
// List<string> adduniversity = new List<string>() { };
// foreach (DataRow dr in dataSet.Tables[0].Rows)
// {
// string Name = dr["Name"].ToString();
// string MajorName = dr["MajorName"].ToString();
// string Scoreline = dr["Scoreline"].ToString();
// if (Scoreline != "0")
// {
// var universityid = universitylist.Where(x => x.Name == Name).Select(x => x.Id).FirstOrDefault();
// if (universityid > 0)
// {
// var nowinfo = info.Where(x => x.UniversityId == universityid && x.MajorName == MajorName).FirstOrDefault();
// if (nowinfo != null)
// {
// nowinfo.Scoreline = Convert.ToSingle(Scoreline);
// list.Add(nowinfo);
// }
// }
// }
// }
// var count = await t_EnrollmentPlanedescServices.Update(list);
// var cc = 0;
// }
// return true;
//}
//catch (Exception ex)
//{
// throw;
//}
//}
}
}