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.API/Controllers/ExamUserInfoController.cs b/Learn.Archives.API/Controllers/ExamUserInfoController.cs index c7a5903..ca1d860 100644 --- a/Learn.Archives.API/Controllers/ExamUserInfoController.cs +++ b/Learn.Archives.API/Controllers/ExamUserInfoController.cs @@ -57,6 +57,7 @@ namespace Learn.Archives.API.Controllers res.Data = res.Data.OrderBy(s => s.SubjectDic?[oldSer.Value]).ToList(); else res.Data = res.Data.OrderByDescending(s => s.SubjectDic?[oldSer.Value]).ToList(); + return res; } return await base.PageList(model); } 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; } /// /// 上线人数 ///