diff --git a/Learn.Archives.API/Controllers/Dto/ExamClassInfoDto.cs b/Learn.Archives.API/Controllers/Dto/ExamClassInfoDto.cs index a6b065e..a18a342 100644 --- a/Learn.Archives.API/Controllers/Dto/ExamClassInfoDto.cs +++ b/Learn.Archives.API/Controllers/Dto/ExamClassInfoDto.cs @@ -1,7 +1,15 @@ -using MiniExcelLibs.Attributes; +using Learn.Archives.Core.Model; +using MiniExcelLibs.Attributes; namespace Learn.Archives.API.Controllers.Dto { + public class ExamClassTagReq : ExamClassTag + { + /// + /// 学科类型 + /// + public string SubjectStr => SubjectId?.ToString() ?? "总分"; + } public class ImportExamDto { /// @@ -46,11 +54,6 @@ namespace Learn.Archives.API.Controllers.Dto [ExcelColumnName("云校班级号")] public string Class { get; set; } /// - /// - /// - [ExcelColumnName("班级类型")] - public string ClassType { get; set; } - /// /// 学生姓名 /// [ExcelColumnName("学生姓名")] diff --git a/Learn.Archives.API/Controllers/ExamClassInfoController.cs b/Learn.Archives.API/Controllers/ExamClassInfoController.cs index b74a5d7..4abca20 100644 --- a/Learn.Archives.API/Controllers/ExamClassInfoController.cs +++ b/Learn.Archives.API/Controllers/ExamClassInfoController.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using MiniExcelLibs; using System.Buffers.Text; +using System.Collections.Generic; using System.Diagnostics; using System.Security.Claims; using UserCenter.Model; @@ -25,10 +26,15 @@ namespace Learn.Archives.API.Controllers readonly Repository baseService; readonly Repository examService; readonly Repository schoolService; + readonly Repository tagService; + readonly Repository classTagService; readonly Repository examUserInfoService; readonly LiveUserInfo userInfo; readonly IHttpContextAccessor accessor; - public ExamClassInfoController(Repository baseService, LiveUserInfo userInfo, IHttpContextAccessor httpContext, Repository examUserInfoService, Repository examService, Repository schoolService) : base(baseService) + public ExamClassInfoController(Repository baseService, LiveUserInfo userInfo, + IHttpContextAccessor httpContext, Repository examUserInfoService, + Repository examService, Repository schoolService, + Repository tagService, Repository classTagService) : base(baseService) { this.baseService = baseService; this.userInfo = userInfo; @@ -36,23 +42,8 @@ namespace Learn.Archives.API.Controllers this.examUserInfoService = examUserInfoService; this.examService = examService; this.schoolService = schoolService; - } - - [NonAction] - private Dictionary? ImportExamInfoSubjectDic(ImportExamInfo info) - { - return new Dictionary() - { - { SubjectEnum.语文, info.语文}, - { SubjectEnum.数学, info.数学}, - { SubjectEnum.英语, info.英语}, - { SubjectEnum.物理, info.物理}, - { SubjectEnum.化学, info.化学}, - { SubjectEnum.生物, info.生物}, - { SubjectEnum.政治, info.政治}, - { SubjectEnum.历史, info.历史}, - { SubjectEnum.地理, info.地理}, - }; + this.tagService = tagService; + this.classTagService = classTagService; } /// @@ -118,14 +109,14 @@ namespace Learn.Archives.API.Controllers !p.DeleteState && !c.DeleteState && !u.DeleteState && !s.DeleteState) .Select((s, c, p, pr, u) => new { - Name = c.Name + c.Type.ToString() + u.RealName, + Name = c.Name + u.RealName, u.Id, }).ToDictionaryAsync(s => s.Name, s => s.Id); //处理学生成绩数据 var userList = dataList.Select(s => { var classInfo = classArr - .FirstOrDefault(x => x.Name == s.Class && x.Type == s.ClassType.ToEnum()); + .FirstOrDefault(x => x.Name == s.Class ); if (classInfo == null) { s.Error = "未能匹配班级"; @@ -134,7 +125,7 @@ namespace Learn.Archives.API.Controllers } var grade = GradeHelper.GetStudentGradeBaseByGrade(s.Grade); var sub = ImportExamInfoSubjectDic(s); - var name = s.Class + s.ClassType.ToEnum().GetHashCode() + s.Student; + var name = s.Class + s.Student; if (!userDic.ContainsKey(name)) { s.Error = "未能匹配到年级班级下对应的学生"; @@ -175,115 +166,11 @@ namespace Learn.Archives.API.Controllers //写入数据库 await examUserInfoService.AsInsertable(insertUserInfo).ExecuteCommandAsync(); - await CalculatingTestResults(exam,examUserInfoService,schoolService); + await CalculatingTestResults(exam,examUserInfoService,schoolService, tagService); return Ok(); } - /// - /// 计算考试成绩 - /// - /// - /// - /// - /// - [NonAction] - public static async Task CalculatingTestResults(Exam exam, Repository eUService, Repository sService) - { - var userInfoArr = await eUService.AsQueryable() - .Where(s => s.ExamId == exam.Id) - .ToArrayAsync(); - - var insertTotalClassInfo = new List(); - var db = sService.Context; - foreach (var schoolArr in userInfoArr.GroupBy(s => s.SchoolId)) - { - - var insertClassInfo = new List(); - var school = await sService.GetFirstAsync(s => s.Id == schoolArr.Key); - var classArr = await db.Queryable().Where(c => c.SchoolId == school.Id && - c.GradeLevel == exam.GradeLevel && - c.GraduationYear == exam.GradeYear && !c.DeleteState).ToArrayAsync(); - - foreach (var classUserArr in userInfoArr.GroupBy(s => s.ClassId)) - { - var classInfo = classArr.First(s => s.Id == classUserArr.Key); - var eCInfo = new ExamClassInfo() - { - ExamId = exam.Id, - ExamName = exam.Name, - SchoolId = classInfo.SchoolId, - SchoolName = school.Name, - ClassId = classInfo.Id, - ClassName = classInfo.Name, - GradeLevel = classInfo.GradeLevel, - GradeYear = classInfo.GraduationYear, - PeopleCount = classUserArr.Count(), - MinScore = int.MaxValue, - MaxScore = -99, - BaseSchoolScore = exam.BaseSchoolScore, - TestPaperType = exam.TestPaperType, - Type = exam.Type, - Average1 = exam.BaseSchoolScore, - }; - insertClassInfo.Add(eCInfo); - var avgTotal = 0m; - foreach (var eUserInfo in classUserArr) - { - var v = eUserInfo.AssignScore; - //上线人数 - if (v >= exam.ScoreLine) - eCInfo.OnLineCount++; - //最大小分 - if (v < eCInfo.MinScore) - eCInfo.MinScore = v; - if (v > eCInfo.MaxScore) - eCInfo.MaxScore = v; - avgTotal += v;//追加得分 - } - //总分平均分 - eCInfo.Average = avgTotal / eCInfo.PeopleCount; - //计算上线率 - eCInfo.OnLineRate = (decimal)eCInfo.OnLineCount / (decimal)eCInfo.PeopleCount; - } - - insertTotalClassInfo.AddRange(insertClassInfo); - } - - { //计算年级上线率排名 - var i = 0; - foreach (var item in insertTotalClassInfo.OrderByDescending(s => s.OnLineRate) - .GroupBy(s => s.OnLineRate)) - { - foreach (var u in item) - u.OnLineRanking = ++i; - } - - //计算年级平均分排名 - i = 0; - foreach (var item in insertTotalClassInfo.OrderByDescending(s => s.Average) - .GroupBy(s => s.Average)) - { - foreach (var u in item) - u.AverageRank = ++i; - } - } - //写入数据库 - var baseDB = eUService.Context; - baseDB.Ado.BeginTran(); - try - { - await baseDB.Deleteable().Where(s=>s.ExamId==exam.Id).ExecuteCommandAsync(); - await baseDB.Insertable(insertTotalClassInfo).ExecuteCommandAsync(); - baseDB.Ado.CommitTran(); - } - catch (Exception ex) - { - baseDB.Ado.RollbackTran(); - Oh.ModelError($"导入失败:写入数据时候出现了异常 [{ex.Message}] !"); - } - - } /// /// 下载导入成绩模板 @@ -296,7 +183,6 @@ namespace Learn.Archives.API.Controllers { School="例子学校[导入时候请删除]", Class="测试班级", - ClassType="普通班级", Grade="高2028", Student="学生姓名", 语文=80.5m, @@ -359,5 +245,230 @@ namespace Learn.Archives.API.Controllers } return base.PageList(model); } + + + + /// + /// 重新计算考试成绩排名 + /// + /// 考试id + /// + [HttpGet] + public async Task RecalculateExamRankings(long examId) + { + if (examId == 0) + Oh.ModelError("传入了异常参数"); + var exam = examService.GetById(examId); + if (exam is null) + Oh.ModelError("无效的考试"); + await CalculatingTestResults(exam, examUserInfoService, schoolService, tagService); + return Ok(); + + } + + + /// + /// 获取班级考试分段排名 + /// + /// 考试id + /// + [HttpGet] + public async Task> ClassRanking(long examId,long classId) + { + if (examId == 0) + Oh.ModelError("传入异常参数"); + if (! await examService.IsAnyAsync(s => s.Id == examId)) + Oh.ModelError("无效的考试"); + var arr = await classTagService.AsQueryable().Where(s => s.ExamId == examId && s.ClassId == classId) + .Select() + .ToArrayAsync(); + return arr.OrderBy(s => s.SubjectId); + } + + + + + + [NonAction] + private Dictionary? ImportExamInfoSubjectDic(ImportExamInfo info) + { + return new Dictionary() + { + { SubjectEnum.语文, info.语文}, + { SubjectEnum.数学, info.数学}, + { SubjectEnum.英语, info.英语}, + { SubjectEnum.物理, info.物理}, + { SubjectEnum.化学, info.化学}, + { SubjectEnum.生物, info.生物}, + { SubjectEnum.政治, info.政治}, + { SubjectEnum.历史, info.历史}, + { SubjectEnum.地理, info.地理}, + }; + } + [NonAction] + private static decimal? SubjectScore(ExamUserInfo info, SubjectEnum? s) + { + switch (s) + { + case null: + return info.AssignScore; + default: + if (info?.SubjectDic is null) + return -999; + return info.SubjectDic.ContainsKey(s.Value) ? info.SubjectDic?[s.Value] : -999; + } + } + + /// + /// 计算考试成绩 + /// + /// + /// + /// + /// + [NonAction] + public static async Task CalculatingTestResults(Exam exam, Repository eUService, + Repository sService, Repository tagService) + { + var userInfoArr = await eUService.AsQueryable() + .Where(s => s.ExamId == exam.Id) + .ToArrayAsync(); + + var insertTotalClassInfo = new List(); + var insertTotalClassTag = new List(); + var eTagArr = await tagService.AsQueryable().Where(s => s.ExamId == exam.Id) + .ToArrayAsync(); + var db = sService.Context; + foreach (var schoolArr in userInfoArr.GroupBy(s => s.SchoolId)) + { + + var insertClassInfo = new List(); + var insertClassTag = new List(); + var school = await sService.GetFirstAsync(s => s.Id == schoolArr.Key); + var classArr = await db.Queryable().Where(c => c.SchoolId == school.Id && + c.GradeLevel == exam.GradeLevel && + c.GraduationYear == exam.GradeYear && !c.DeleteState).ToArrayAsync(); + + foreach (var classUserArr in userInfoArr.GroupBy(s => s.ClassId)) + { + var classInfo = classArr.First(s => s.Id == classUserArr.Key); + var eCInfo = new ExamClassInfo() + { + ExamId = exam.Id, + ExamName = exam.Name, + SchoolId = classInfo.SchoolId, + SchoolName = school.Name, + ClassId = classInfo.Id, + ClassName = classInfo.Name, + GradeLevel = classInfo.GradeLevel, + GradeYear = classInfo.GraduationYear, + PeopleCount = classUserArr.Count(), + MinScore = int.MaxValue, + MaxScore = -99, + BaseSchoolScore = exam.BaseSchoolScore, + TestPaperType = exam.TestPaperType, + Type = exam.Type, + Average1 = exam.BaseSchoolScore, + }; + insertClassInfo.Add(eCInfo); + var avgTotal = 0m; + + //todo 班级分段分析 + var classTagDic = new Dictionary(); + foreach (var eUserInfo in classUserArr) + { + if (!classTagDic.TryGetValue(eUserInfo.ClassId, out ExamClassTag[]? classTagArr)) + { + classTagArr = new ExamClassTag[10]; + classTagDic.Add(eUserInfo.ClassId, classTagArr); + } + //上线人数 + foreach (var item in eTagArr) + { + var subV = SubjectScore(eUserInfo, item.SubjectId); + //总分分段 + if (subV >= item.MinScore && subV <= item.MaxScore) + { + var tag = classTagArr[(int)(item.SubjectId ?? 0)]; + if (tag is null) + { + tag = new ExamClassTag() + { + MaxScore = item.MaxScore, + MinScore = item.MinScore, + ClassId = classInfo.Id, + ExamId = exam.Id, + ExamTagId = item.Id, + Name = item.TagName, + SubjectId = item.SubjectId + }; + insertClassTag.Add(tag); + classTagArr[(int)(item.SubjectId ?? 0)] = tag; + } + classTagArr[(int)(item.SubjectId ?? 0)].OnLineCount++; + } + + } + var v = eUserInfo.AssignScore; + //最大小分 + if (v < eCInfo.MinScore) + eCInfo.MinScore = v; + if (v > eCInfo.MaxScore) + eCInfo.MaxScore = v; + avgTotal += v;//追加得分 + } + //总分平均分 + eCInfo.Average = avgTotal / eCInfo.PeopleCount; + //计算上线率 + if (classTagDic.ContainsKey(eCInfo.ClassId)) + foreach (var item in classTagDic[eCInfo.ClassId]) + if(item !=null) item.OnLineRate = (decimal)item.OnLineCount / (decimal)eCInfo.PeopleCount; + } + insertTotalClassInfo.AddRange(insertClassInfo); + insertTotalClassTag.AddRange(insertClassTag); + } + + { + + var i = 0; + //计算班级上线率排名 + foreach (var examTagArr in insertTotalClassTag.GroupBy(s => s.ExamTagId)) + { + i = 0; + foreach (var item in examTagArr.OrderByDescending(s => s.OnLineRate) + .GroupBy(s => s.OnLineRate)) + { + foreach (var u in item) + u.OnLineRanking = ++i; + } + } + + //计算年级平均分排名 + i = 0; + foreach (var item in insertTotalClassInfo.OrderByDescending(s => s.Average) + .GroupBy(s => s.Average)) + { + foreach (var u in item) + u.AverageRank = ++i; + } + } + //写入数据库 + var baseDB = eUService.Context; + baseDB.Ado.BeginTran(); + try + { + await baseDB.Deleteable().Where(s => s.ExamId == exam.Id).ExecuteCommandAsync(); + await baseDB.Deleteable().Where(s => s.ExamId == exam.Id).ExecuteCommandAsync(); + await baseDB.Insertable(insertTotalClassInfo).ExecuteCommandAsync(); + await baseDB.Insertable(insertTotalClassTag).ExecuteCommandAsync(); + baseDB.Ado.CommitTran(); + } + catch (Exception ex) + { + baseDB.Ado.RollbackTran(); + Oh.ModelError($"导入失败:写入数据时候出现了异常 [{ex.Message}] !"); + } + + } } } diff --git a/Learn.Archives.API/Controllers/ExamController.cs b/Learn.Archives.API/Controllers/ExamController.cs index 1b8d7d8..e28a7d7 100644 --- a/Learn.Archives.API/Controllers/ExamController.cs +++ b/Learn.Archives.API/Controllers/ExamController.cs @@ -20,18 +20,20 @@ namespace Learn.Archives.API.Controllers { readonly Repository baseService; readonly Repository schoolService; + readonly Repository tagService; readonly Repository examClassInfoService; readonly Repository examUserInfoService; readonly LiveUserInfo userInfo; - public ExamController(Repository baseService, LiveUserInfo userInfo, - Repository examClassInfoService, Repository examUserInfoService, - Repository schoolService) : base(baseService) + public ExamController(Repository baseService, LiveUserInfo userInfo, + Repository examClassInfoService, Repository examUserInfoService, + Repository schoolService, Repository tagService) : base(baseService) { this.baseService = baseService; this.userInfo = userInfo; this.examClassInfoService = examClassInfoService; this.examUserInfoService = examUserInfoService; this.schoolService = schoolService; + this.tagService = tagService; } public override Task PageList([FromBody] QueryRequestBase model) { @@ -69,7 +71,7 @@ namespace Learn.Archives.API.Controllers } var res =await base.Edit(model); if (res) - await ExamClassInfoController.CalculatingTestResults(model, examUserInfoService, schoolService); + await ExamClassInfoController.CalculatingTestResults(model, examUserInfoService, schoolService, tagService); return res ; } public override async Task Del([FromBody] params long[] ids) diff --git a/Learn.Archives.API/Controllers/ExamTagsController.cs b/Learn.Archives.API/Controllers/ExamTagsController.cs new file mode 100644 index 0000000..2d61097 --- /dev/null +++ b/Learn.Archives.API/Controllers/ExamTagsController.cs @@ -0,0 +1,28 @@ +using Learn.Archives.API.Controllers.Dto; +using Learn.Archives.API.Expand; +using Learn.Archives.Core.Common; +using Learn.Archives.Core.Model; +using Learn.Archives.Core.Model.Dto; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Diagnostics; +using System.Linq; +using System.Security.Claims; +using UserCenter.Model; +using UserCenter.Model.Common; +using UserCenter.Model.Enum; + +namespace Learn.Archives.API.Controllers +{ + /// + /// 年级控制器 + /// + public class ExamTagsController : BackController + { + readonly Repository baseService; + public ExamTagsController(Repository baseService) : base(baseService) + { + this.baseService = baseService; + } + } +} diff --git a/Learn.Archives.API/Controllers/StudentController.cs b/Learn.Archives.API/Controllers/StudentController.cs index d74102e..6f65129 100644 --- a/Learn.Archives.API/Controllers/StudentController.cs +++ b/Learn.Archives.API/Controllers/StudentController.cs @@ -221,7 +221,6 @@ namespace Learn.Archives.API.Controllers School = s.School, Grade = gStr, Class = s.Class, - ClassType = s.ClassType??ClassTypeEnum.云校班.ToString(), Phone = s.Phone, RealName = s.RealName, Stages = s.Grade.Contains("初") ? StudentStagesEnum.初中.ToString() : StudentStagesEnum.高中.ToString() @@ -302,7 +301,6 @@ namespace Learn.Archives.API.Controllers School = s.School, Grade = gStr, Class = s.Class, - ClassType = s.ClassType??ClassTypeEnum.云校班.ToString(), ExamNo = s.Id.ToString(), Phone = s.Phone, RealName = s.RealName, @@ -353,7 +351,6 @@ namespace Learn.Archives.API.Controllers School = "必填:与系统匹配", Grade = "必填:可选值\r\n[初一初二初三,高一高二高山]", Class = "必填:与系统匹配\r\n格式:10班[数字+班]", - ClassType = "必填:可选值\r\n[云校班 海豚智学班 蓝鲸智库班 中职班 其他 雅思班 点阵笔班级 移动校园班级 智学班 ...]", Status = "选填 可选值\r\n[就读,退出]", AmountRelief ="选填: 为0则视为 '未申请减免'", ReliefType ="选填: 建卡贫困户\r\n低保户\r\n教师子女 \r\n孤儿\r\n艺体生\r\n残疾学生\r\n领导特殊承诺减免\r\n领导同意的特殊贫困减免", @@ -385,7 +382,6 @@ namespace Learn.Archives.API.Controllers School = "必填:与系统匹配", Grade = "必填:可选值\r\n[初一初二初三,高一高二高山]", Class = "必填:与系统匹配\r\n格式:10班[数字+班]\r\n任教类型是年级主任时不填", - ClassType = "必填:可选值\r\n[云校班 海豚智学班 蓝鲸智库班 中职班 其他 雅思班 点阵笔班级 移动校园班级 智学班 ...]\r\n任教类型是年级主任时不填", Subject = "选填学科", ExamNo ="选填: 填写老师任职信息[不在授课架构中的职务]", }}; diff --git a/Learn.Archives.API/appsettings.json b/Learn.Archives.API/appsettings.json index d3d0c1e..76c592f 100644 --- a/Learn.Archives.API/appsettings.json +++ b/Learn.Archives.API/appsettings.json @@ -14,7 +14,7 @@ "DB": { "ConnectionString": "AllowLoadLocalInfile=true;Server=58.17.132.2;User ID=marking;Password=qwe123!@#;Port=3306;Database=learn.archives;CharSet=utf8mb4;Port=43306;pooling=true;SslMode=None;", "SqlType": "MySql", - "UpdateTable": false + "UpdateTable": true }, "AuthKey": { "Secret": "9FAB7AC7-F1DB-4C56-B84F-044055A34AF2", diff --git a/Learn.Archives.Core/Model/Dto/ExamClassDto.cs b/Learn.Archives.Core/Model/Dto/ExamClassDto.cs new file mode 100644 index 0000000..ebe47a1 --- /dev/null +++ b/Learn.Archives.Core/Model/Dto/ExamClassDto.cs @@ -0,0 +1,13 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Learn.Archives.Core.Model.Dto +{ + + + +} diff --git a/Learn.Archives.Core/Model/Dto/UserCenterServiceDto.cs b/Learn.Archives.Core/Model/Dto/UserCenterServiceDto.cs index 1b4b135..19ca055 100644 --- a/Learn.Archives.Core/Model/Dto/UserCenterServiceDto.cs +++ b/Learn.Archives.Core/Model/Dto/UserCenterServiceDto.cs @@ -83,11 +83,6 @@ namespace Learn.Archives.Core.Model.Dto /// [ExcelColumn(Name = "班级", Width = 15)] public string Class { get; set; } - /// - /// 班级类型 - /// - [ExcelColumn(Name = "班级类型", Width = 20)] - public string ClassType { get; set; } /// /// 科目 @@ -161,11 +156,6 @@ namespace Learn.Archives.Core.Model.Dto /// [ExcelColumn(Name="班级", Width = 15)] public string Class { get; set; } - /// - /// 班级 - /// - [ExcelColumn(Name="班级类型", Width = 20)] - public string ClassType { get; set; } /// /// 减免金额 @@ -295,11 +285,6 @@ namespace Learn.Archives.Core.Model.Dto [ExcelColumn(Name="班级")] public string Class { get; set; } /// - /// 班级 - /// - [ExcelColumn(Name="班级类型")] - public string ClassType { get; set; } - /// /// 科目 /// [ExcelColumn(Name="科目")] diff --git a/Learn.Archives.Core/Model/Exam.cs b/Learn.Archives.Core/Model/Exam.cs index 58f9fbb..9e521a2 100644 --- a/Learn.Archives.Core/Model/Exam.cs +++ b/Learn.Archives.Core/Model/Exam.cs @@ -38,7 +38,8 @@ namespace Learn.Archives.Core.Model /// public string? _grade; /// - /// 年级 + /// 年级 + /// AOP自动转换年级 /// [SugarColumn(IsIgnore = true)] public string Grade diff --git a/Learn.Archives.Core/Model/ExamClassInfo.cs b/Learn.Archives.Core/Model/ExamClassInfo.cs index 4223d4c..8bf0b2d 100644 --- a/Learn.Archives.Core/Model/ExamClassInfo.cs +++ b/Learn.Archives.Core/Model/ExamClassInfo.cs @@ -1,4 +1,5 @@ -using Learn.Archives.Core.Model.Enum; +using Learn.Archives.Core.Model.Dto; +using Learn.Archives.Core.Model.Enum; using Learn.Archives.Core.Model.Interface; using SqlSugar; using System.ComponentModel.DataAnnotations; @@ -71,18 +72,19 @@ namespace Learn.Archives.Core.Model /// public int GradeYear { get; set; } - /// - /// 上线率 考试排名 - /// - public decimal OnLineRanking { get; set; } - /// - /// 上线率 - /// - public decimal OnLineRate { get; set; } - /// - /// 上线人数 - /// - public int OnLineCount { get; set; } + ///// + ///// 上线率 考试排名 + ///// + //public decimal OnLineRanking { get; set; } + ///// + ///// 上线率 + ///// + //public decimal OnLineRate { get; set; } + ///// + ///// 上线人数 + ///// + //public int OnLineCount { get; set; } + /// /// 参加人数 /// diff --git a/Learn.Archives.Core/Model/ExamClassTag.cs b/Learn.Archives.Core/Model/ExamClassTag.cs new file mode 100644 index 0000000..b14b668 --- /dev/null +++ b/Learn.Archives.Core/Model/ExamClassTag.cs @@ -0,0 +1,82 @@ +using Learn.Archives.Core.Model.Dto; +using Learn.Archives.Core.Model.Enum; +using Learn.Archives.Core.Model.Interface; +using SqlSugar; +using System.ComponentModel.DataAnnotations; +using System.Net; +using System.Text.Json; +using UserCenter.Model; +using UserCenter.Model.Common; +using UserCenter.Model.Enum; +using UserCenter.Model.Interface; + +namespace Learn.Archives.Core.Model +{ + /// + /// 班级考试详情 + /// + [SugarTable("examclasstag")] + public class ExamClassTag : EntityBaseId, IDB + { + /// + /// 考试Id + /// + [SugarColumn(Length = 20)] + public long ExamId { get; set; } + + /// + /// 班级id + /// + public long ClassId { get; set; } + + /// + /// 考试标签id + /// + public long ExamTagId { get; set; } + /// + /// 标签名称 + /// + public string Name { get; set; } + + + /// + /// 分段所属学科 + /// 可空 空即为总分分段 + /// + [SugarColumn(IsNullable = true)] + public SubjectEnum? SubjectId { get; set; } + + /// + /// 最小分值 + /// + [SugarColumn(DecimalDigits = 2)] + public decimal MinScore { get; set; } + + /// + /// 最大分值 + /// + [SugarColumn(DecimalDigits = 2)] + public decimal MaxScore { get; set; } + + /// + /// 上线率 考试排名 + /// + public int OnLineRanking { get; set; } + /// + /// 上线率 + /// + [SugarColumn(DecimalDigits = 2)] + public decimal OnLineRate { get; set; } + /// + /// 上线人数 + /// + public int OnLineCount { get; set; } + + /// + /// 创建时间 + /// + public DateTime CreateTime { get; set; } = DateTime.Now; + + + } +} diff --git a/Learn.Archives.Core/Model/ExamTags.cs b/Learn.Archives.Core/Model/ExamTags.cs new file mode 100644 index 0000000..edb3cde --- /dev/null +++ b/Learn.Archives.Core/Model/ExamTags.cs @@ -0,0 +1,73 @@ +using System; +using System.Linq; +using System.Text; + +using UserCenter.Model; +using UserCenter.Model.Interface; +using SqlSugar; +using UserCenter.Model.Enum; +using Learn.Archives.Core.Model.Interface; + +namespace Learn.Archives.Core.Model +{ + /// + /// 考试成绩分段表 + /// + [SugarTable("examtags")] + public partial class ExamTags : EntityBaseId, IDB + { + public ExamTags() + { + + this.IsDefault = Convert.ToInt32("0"); + this.CreateTime = DateTime.Now; + + } + /// + /// + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public override long Id { get; set; } + + /// + /// 考试编号 + /// + public long ExamId { get; set; } + + + /// + /// 分段所属学科 + /// 可空 空即为总分分段 + /// + [SugarColumn(IsNullable = true)] + public SubjectEnum? SubjectId { get; set; } + + /// + /// 最小分值 + /// + [SugarColumn(DecimalDigits = 2)] + public decimal MinScore { get; set; } + + /// + /// 最大分值 + /// + [SugarColumn(DecimalDigits = 2)] + public decimal MaxScore { get; set; } + + /// + /// 标签名称 + /// + public string TagName { get; set; } + + /// + /// 是否为默认标签 0:否 1:是 + /// + public int IsDefault { get; set; } + + /// + /// 添加时间 + /// + public DateTime CreateTime { get; set; } + + } +}