自动排课

This commit is contained in:
2026-07-25 11:32:13 +08:00 Unverified
parent a63c943815
commit 533ff6b9f6
5 changed files with 102 additions and 10 deletions
@@ -91,6 +91,8 @@ public sealed class ScheduleSettingsController(AppDbContext db) : ControllerBase
.OrderByDescending(item => item.IsPrimary)
.Select(item => item.Teacher!.Name),
x.Capacity,
x.StartWeek,
x.EndWeek,
x.WeeklyHours,
x.SchedulingMode
})
@@ -114,6 +116,8 @@ public sealed class ScheduleSettingsController(AppDbContext db) : ControllerBase
task.CollegeName,
task.TeacherNames,
task.Capacity,
task.StartWeek,
task.EndWeek,
task.WeeklyHours,
task.SchedulingMode,
HasCustomConstraint = constraint is not null,
@@ -233,10 +233,10 @@ public sealed class AutomaticScheduleGenerator(AppDbContext db)
student.Status == StudentStatus.Active) ?? 0));
return classrooms.Where(room =>
room.Capacity >= minimumCapacity &&
(!constraint?.RequiredCampusId.HasValue ?? true ||
room.Building!.CampusId == constraint.RequiredCampusId) &&
(!constraint?.RequiredBuildingId.HasValue ?? true ||
room.BuildingId == constraint.RequiredBuildingId) &&
(constraint?.RequiredCampusId is not Guid requiredCampusId ||
room.Building!.CampusId == requiredCampusId) &&
(constraint?.RequiredBuildingId is not Guid requiredBuildingId ||
room.BuildingId == requiredBuildingId) &&
(allowedRoomIds.Count == 0 || allowedRoomIds.Contains(room.Id)))
.ToList();
}