From 90a6815c7ae31e2eed950c959c3ff6390d8d8a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com> Date: Thu, 25 Sep 2025 15:42:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E7=8F=AD=E7=BA=A7?= =?UTF-8?q?=E5=88=86=E6=AE=B5=E5=88=86=E6=9E=90=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ExamClassInfoController.cs | 51 +++++++------------ Learn.Archives.Core/Model/ExamClassTag.cs | 5 +- 2 files changed, 22 insertions(+), 34 deletions(-) diff --git a/Learn.Archives.API/Controllers/ExamClassInfoController.cs b/Learn.Archives.API/Controllers/ExamClassInfoController.cs index 4abca20..d9d6c60 100644 --- a/Learn.Archives.API/Controllers/ExamClassInfoController.cs +++ b/Learn.Archives.API/Controllers/ExamClassInfoController.cs @@ -342,8 +342,6 @@ namespace Learn.Archives.API.Controllers 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 && @@ -370,42 +368,37 @@ namespace Learn.Archives.API.Controllers Type = exam.Type, Average1 = exam.BaseSchoolScore, }; - insertClassInfo.Add(eCInfo); + insertTotalClassInfo.Add(eCInfo); var avgTotal = 0m; //todo 班级分段分析 - var classTagDic = new Dictionary(); + 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 (!classTagDic.TryGetValue(item.Id, out ExamClassTag? tag)) + { + tag = new ExamClassTag() + { + MaxScore = item.MaxScore, + MinScore = item.MinScore, + ClassId = classInfo.Id, + PeopleCount = eCInfo.PeopleCount, + ExamId = exam.Id, + ExamTagId = item.Id, + Name = item.TagName, + SubjectId = item.SubjectId + }; + insertTotalClassTag.Add(tag); + classTagDic.Add(item.Id, tag); + } //总分分段 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++; + tag.OnLineCount++; } } @@ -419,13 +412,7 @@ namespace Learn.Archives.API.Controllers } //总分平均分 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); } { diff --git a/Learn.Archives.Core/Model/ExamClassTag.cs b/Learn.Archives.Core/Model/ExamClassTag.cs index b14b668..f8a3167 100644 --- a/Learn.Archives.Core/Model/ExamClassTag.cs +++ b/Learn.Archives.Core/Model/ExamClassTag.cs @@ -65,8 +65,9 @@ namespace Learn.Archives.Core.Model /// /// 上线率 /// - [SugarColumn(DecimalDigits = 2)] - public decimal OnLineRate { get; set; } + [SugarColumn(IsIgnore = true)] + public decimal OnLineRate => OnLineCount / PeopleCount; + public int PeopleCount { get; set; } /// /// 上线人数 ///