课程库 Excel 导入导出已完成:
支持下载标准导入模板。 导出严格沿用当前关键词、学院、分类、课程性质和状态筛选。 以课程编码为唯一键:存在则更新,不存在则新增。 校验学院编码、课程分类、课程性质、学分学时及考核方式。 整批原子导入,任一行错误则全部不写入,并提示具体行号。 学院管理员仍只能维护本学院的专业课和实践课,无法借 Excel 越权。 界面入口沿用现有课程库工具栏样式。
This commit is contained in:
@@ -156,10 +156,6 @@ public sealed class GraduationAuditsController(
|
||||
{
|
||||
var plan = plans.FirstOrDefault(x =>
|
||||
x.MajorId == student.AdministrativeClass!.MajorId);
|
||||
var requiredCourses = plan?.Modules
|
||||
.SelectMany(x => x.Courses)
|
||||
.Where(x => x.Type == CurriculumCourseType.Required)
|
||||
.ToList() ?? [];
|
||||
var studentGrades = grades.Where(x => x.StudentId == student.Id).ToList();
|
||||
var passedCourseIds = studentGrades
|
||||
.Where(IsPassed)
|
||||
@@ -170,14 +166,12 @@ public sealed class GraduationAuditsController(
|
||||
.Where(IsPassed)
|
||||
.GroupBy(x => x.CourseId)
|
||||
.Sum(x => x.Max(item => item.Credits));
|
||||
var missingCourses = requiredCourses
|
||||
.Where(x => !passedCourseIds.Contains(x.CourseId))
|
||||
.Select(x => x.Course!.Name)
|
||||
.Distinct()
|
||||
.ToArray();
|
||||
var completion = CurriculumCompletionRules.Evaluate(
|
||||
plan?.Modules ?? [],
|
||||
passedCourseIds);
|
||||
var missingCourseNames = plan is null
|
||||
? "未匹配已发布的培养方案"
|
||||
: string.Join("、", missingCourses);
|
||||
: string.Join("、", completion.MissingRequirements);
|
||||
if (missingCourseNames.Length > 2000)
|
||||
missingCourseNames = missingCourseNames[..2000];
|
||||
var failedCourseCount = studentGrades
|
||||
@@ -188,8 +182,8 @@ public sealed class GraduationAuditsController(
|
||||
student.Status,
|
||||
plan?.TotalCredits ?? 0,
|
||||
earnedCredits,
|
||||
requiredCourses.Count,
|
||||
requiredCourses.Count - missingCourses.Length,
|
||||
completion.RequirementCount,
|
||||
completion.PassedRequirementCount,
|
||||
failedCourseCount);
|
||||
db.GraduationAuditResults.Add(new GraduationAuditResult
|
||||
{
|
||||
@@ -199,8 +193,8 @@ public sealed class GraduationAuditsController(
|
||||
StudentStatusSnapshot = student.Status,
|
||||
RequiredCredits = plan?.TotalCredits ?? 0,
|
||||
EarnedCredits = earnedCredits,
|
||||
RequiredCourseCount = requiredCourses.Count,
|
||||
PassedRequiredCourseCount = requiredCourses.Count - missingCourses.Length,
|
||||
RequiredCourseCount = completion.RequirementCount,
|
||||
PassedRequiredCourseCount = completion.PassedRequirementCount,
|
||||
FailedCourseCount = failedCourseCount,
|
||||
MissingCourseNames = missingCourseNames,
|
||||
CalculatedConclusion = conclusion,
|
||||
|
||||
Reference in New Issue
Block a user