|
@@ -27,7 +27,7 @@ using HTEXLib.COMM.Helpers;
|
|
|
using TEAMModelOS.SDK.Models.Service;
|
|
|
using System.ComponentModel.DataAnnotations;
|
|
|
|
|
|
-namespace TEAMModelAPI.Controllers
|
|
|
+namespace TEAMModelBI.Controllers.OpenApi.Business
|
|
|
{
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
@@ -120,8 +120,8 @@ namespace TEAMModelAPI.Controllers
|
|
|
var period = data.period.Find(x => x.id.Equals($"{_periodId}"));
|
|
|
if (period != null)
|
|
|
{
|
|
|
-
|
|
|
- return Ok(new { period.subjects, period.timetable, period.grades, period.majors , weekDays });
|
|
|
+
|
|
|
+ return Ok(new { period.subjects, period.timetable, period.grades, period.majors, weekDays });
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -138,22 +138,25 @@ namespace TEAMModelAPI.Controllers
|
|
|
var (id, school) = HttpContext.GetApiTokenInfo();
|
|
|
List<CourseDto> courseDtos = json.courses;
|
|
|
List<Dictionary<string, string>> errorData = new List<Dictionary<string, string>>();
|
|
|
- List<Course> courses = new List<Course>() ;
|
|
|
-
|
|
|
+ List<Course> courses = new List<Course>();
|
|
|
+
|
|
|
School data = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
- foreach (var courseDto in courseDtos) {
|
|
|
+ foreach (var courseDto in courseDtos)
|
|
|
+ {
|
|
|
var period = data.period.Find(x => x.id.Equals($"{courseDto.periodId}"));
|
|
|
if (period != null)
|
|
|
{
|
|
|
//同名学科
|
|
|
var subject = period.subjects.Find(x => x.id.Equals($"{courseDto.subjectId}"));
|
|
|
- if (subject == null) {
|
|
|
+ if (subject == null)
|
|
|
+ {
|
|
|
subject = period.subjects.Find(x => x.name.Equals($"{courseDto.subjectName}"));
|
|
|
}
|
|
|
- if (subject == null) {
|
|
|
+ if (subject == null)
|
|
|
+ {
|
|
|
subject = new Subject { id = courseDto.subjectId, name = subject.name, type = 1 };
|
|
|
period.subjects.Add(subject);
|
|
|
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(data, data.id, new PartitionKey("Base"));
|
|
|
+ await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync(data, data.id, new PartitionKey("Base"));
|
|
|
}
|
|
|
Course course = null;
|
|
|
if (string.IsNullOrWhiteSpace(courseDto?.id))
|
|
@@ -216,17 +219,19 @@ namespace TEAMModelAPI.Controllers
|
|
|
//return Ok(new { error = 2, msg = "学段不存在!" });
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- return Ok(new { courses = courses ,errorData});
|
|
|
+
|
|
|
+ return Ok(new { courses, errorData });
|
|
|
}
|
|
|
//[Required(ErrorMessage = "{0} 课程的科目id必须填写"), RegularExpression(@"[0-9a-zA-Z]{8}(-[0-9a-zA-Z]{4}){3}-[0-9a-zA-Z]{12}",ErrorMessage ="科目的uuid格式错误!")]
|
|
|
|
|
|
- public class ImportCourseDto {
|
|
|
+ public class ImportCourseDto
|
|
|
+ {
|
|
|
public List<ImportCourse> courses { get; set; } = new List<ImportCourse>();
|
|
|
}
|
|
|
|
|
|
|
|
|
- public class ImportCourse {
|
|
|
+ public class ImportCourse
|
|
|
+ {
|
|
|
[Required(ErrorMessage = "课程id 必须设置"), RegularExpression(@"[0-9a-zA-Z]{8}(-[0-9a-zA-Z]{4}){3}-[0-9a-zA-Z]{12}", ErrorMessage = "科目的uuid格式错误!")]
|
|
|
public string courseId { get; set; }
|
|
|
[Required(ErrorMessage = "课程名称 必须设置")]
|
|
@@ -238,10 +243,10 @@ namespace TEAMModelAPI.Controllers
|
|
|
[Required(ErrorMessage = "课程学段id 必须设置"), RegularExpression(@"[0-9a-zA-Z]{8}(-[0-9a-zA-Z]{4}){3}-[0-9a-zA-Z]{12}", ErrorMessage = "学段的uuid格式错误!")]
|
|
|
public string periodId { get; set; }
|
|
|
public List<Schedule> schedules { get; set; }
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
[ProducesDefaultResponseType]
|
|
|
[HttpPost("upsert-course-schedule")]
|
|
|
[ApiToken(Auth = "1305", Name = "更新课程的排课信息", RWN = "W", Limit = false)]
|
|
@@ -249,32 +254,37 @@ namespace TEAMModelAPI.Controllers
|
|
|
{
|
|
|
var (id, school) = HttpContext.GetApiTokenInfo();
|
|
|
List<ImportCourse> importCourses = json.courses;
|
|
|
- HashSet<string> courseIds= importCourses .Select(x => x.courseId).ToHashSet();
|
|
|
+ HashSet<string> courseIds = importCourses.Select(x => x.courseId).ToHashSet();
|
|
|
if (courseIds.Count < 1) { return Ok(new { error = 1, msg = "课程参数错误!" }); }
|
|
|
|
|
|
//string sql = $"select value(c) from c where c.id in({string.Join(",",courseIds.Select(x=>$"'{x}'"))})";
|
|
|
string sql = $"select value(c) from c ";//直接获取全校的课程
|
|
|
List<Course> courses = new List<Course>();
|
|
|
await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School)
|
|
|
- .GetItemQueryIterator<Course>(queryText: sql, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"Course-{school}") })) {
|
|
|
+ .GetItemQueryIterator<Course>(queryText: sql, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"Course-{school}") }))
|
|
|
+ {
|
|
|
courses.Add(item);
|
|
|
}
|
|
|
List<Subject> addSubjects = new List<Subject>();
|
|
|
School data = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>(school, new PartitionKey("Base"));
|
|
|
//不存在的课程,可以被直接创建
|
|
|
var unexistCourseIds = courseIds.Except(courses.Select(x => x.id));
|
|
|
- foreach (var item in unexistCourseIds) {
|
|
|
- ImportCourse importCourse= importCourses.Find(x => x.courseId.Equals(item));
|
|
|
- if (importCourse != null) {
|
|
|
- Period period= data.period.Find(x => x.id.Equals(importCourse.periodId));
|
|
|
- if (period != null) {
|
|
|
+ foreach (var item in unexistCourseIds)
|
|
|
+ {
|
|
|
+ ImportCourse importCourse = importCourses.Find(x => x.courseId.Equals(item));
|
|
|
+ if (importCourse != null)
|
|
|
+ {
|
|
|
+ Period period = data.period.Find(x => x.id.Equals(importCourse.periodId));
|
|
|
+ if (period != null)
|
|
|
+ {
|
|
|
//同名学科
|
|
|
var subject = period.subjects.Find(x => x.id.Equals($"{importCourse.subjectId}"));
|
|
|
if (subject == null)
|
|
|
{
|
|
|
subject = period.subjects.Find(x => x.name.Equals($"{importCourse.subjectName}"));
|
|
|
}
|
|
|
- if (subject == null) {
|
|
|
+ if (subject == null)
|
|
|
+ {
|
|
|
subject = new Subject { id = importCourse.subjectId, name = importCourse.subjectName, type = 1 };
|
|
|
period.subjects.Add(subject);
|
|
|
addSubjects.Add(subject);
|
|
@@ -301,15 +311,17 @@ namespace TEAMModelAPI.Controllers
|
|
|
//importCourses =importCourses .Where(x => !unexistCourseIds .Contains(x.courseId));
|
|
|
|
|
|
//排查 课程学段,课程排课作息,课程排课的星期几是否准确
|
|
|
- List<ScheduleTimeDto> import_schedules_hastime = new List<ScheduleTimeDto>() ;
|
|
|
+ List<ScheduleTimeDto> import_schedules_hastime = new List<ScheduleTimeDto>();
|
|
|
List<ScheduleNoTimeDto> import_schedules_nottime = new List<ScheduleNoTimeDto>();
|
|
|
//保存没有选用名单的排课。
|
|
|
- List<Schedule> schedules_noList= new List<Schedule>() ;
|
|
|
+ List<Schedule> schedules_noList = new List<Schedule>();
|
|
|
List<ScheduleTimeDto> weeksError = new List<ScheduleTimeDto>();
|
|
|
|
|
|
|
|
|
- importCourses .ToList().ForEach(x => {
|
|
|
- x.schedules.ForEach(z => {
|
|
|
+ importCourses.ToList().ForEach(x =>
|
|
|
+ {
|
|
|
+ x.schedules.ForEach(z =>
|
|
|
+ {
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(z.classId) || !string.IsNullOrWhiteSpace(z.stulist))
|
|
|
{
|
|
@@ -353,7 +365,8 @@ namespace TEAMModelAPI.Controllers
|
|
|
|
|
|
});
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
//允许导入没有排课时间表的课程。
|
|
|
import_schedules_nottime.Add(new ScheduleNoTimeDto
|
|
|
{
|
|
@@ -367,7 +380,8 @@ namespace TEAMModelAPI.Controllers
|
|
|
}
|
|
|
else { schedules_noList.Add(z); }
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
schedules_noList.Add(z);
|
|
|
}
|
|
|
});
|
|
@@ -384,17 +398,19 @@ namespace TEAMModelAPI.Controllers
|
|
|
groupIdWarning = check_groupId.Where(x => x.list.Count > 1).SelectMany(x => x.list);
|
|
|
//import_schedules.RemoveAll(x => import_groupIdConfuse.Contains(x));
|
|
|
//物理教室自检
|
|
|
- var check_roomIds = import_schedules_hastime.Where(r=>!string.IsNullOrWhiteSpace(r.keyRoomIds)).GroupBy(x => x.keyRoomIds).Select(g => new { key = g.Key, list = g.ToList() });
|
|
|
+ var check_roomIds = import_schedules_hastime.Where(r => !string.IsNullOrWhiteSpace(r.keyRoomIds)).GroupBy(x => x.keyRoomIds).Select(g => new { key = g.Key, list = g.ToList() });
|
|
|
IEnumerable<ScheduleTimeDto> roomIdsWarning = new List<ScheduleTimeDto>();
|
|
|
roomIdsWarning = check_roomIds.Where(x => x.list.Count > 1).SelectMany(x => x.list);
|
|
|
//import_schedules.RemoveAll(x => import_roomIdsConfuse.Contains(x));
|
|
|
|
|
|
-
|
|
|
+
|
|
|
//打散数据库已经有的排课信息
|
|
|
List<ScheduleTimeDto> database_schedules = new List<ScheduleTimeDto>();
|
|
|
- courses.ForEach(x => {
|
|
|
- x.schedule.ForEach(z => {
|
|
|
- if (!string.IsNullOrWhiteSpace(z.teacherId) &&(!string.IsNullOrWhiteSpace(z.classId) || !string.IsNullOrWhiteSpace(z.stulist)))
|
|
|
+ courses.ForEach(x =>
|
|
|
+ {
|
|
|
+ x.schedule.ForEach(z =>
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrWhiteSpace(z.teacherId) && (!string.IsNullOrWhiteSpace(z.classId) || !string.IsNullOrWhiteSpace(z.stulist)))
|
|
|
{
|
|
|
string classId = null;
|
|
|
//行政班不为空,教学班为空,则名单取行政班
|
|
@@ -432,12 +448,13 @@ namespace TEAMModelAPI.Controllers
|
|
|
List<ScheduleTimeDto> groupIdError = new List<ScheduleTimeDto>();
|
|
|
List<ScheduleTimeDto> roomIdsError = new List<ScheduleTimeDto>();
|
|
|
//数据库排查
|
|
|
- import_schedules_hastime.ForEach(x => {
|
|
|
+ import_schedules_hastime.ForEach(x =>
|
|
|
+ {
|
|
|
//检查教师的排课是否冲突,不同的课程不能出现 教师冲突的情况, 相同课程可能是需要更新的。
|
|
|
- if (database_schedules.FindAll(s => s.keyTeacher.Equals(x.keyTeacher) && !x.courseId.Equals(s.courseId)).IsNotEmpty())
|
|
|
+ if (database_schedules.FindAll(s => s.keyTeacher.Equals(x.keyTeacher) && !x.courseId.Equals(s.courseId)).IsNotEmpty())
|
|
|
{
|
|
|
teacherError.Add(x);
|
|
|
- }
|
|
|
+ }
|
|
|
//检查名单的排课是否冲突
|
|
|
if (database_schedules.FindAll(s => s.keyGroupId.Equals(x.keyGroupId) && !x.courseId.Equals(s.courseId)).IsNotEmpty())
|
|
|
{
|
|
@@ -455,20 +472,21 @@ namespace TEAMModelAPI.Controllers
|
|
|
import_schedules_hastime.RemoveAll(x => roomIdsError.Contains(x));
|
|
|
//最终导入之前,必须检查,课程是否存在(notInCourseIds),教师是否存在,名单是否存在,并重新排列行政班,教学班,
|
|
|
//排课时间段id是否正确,星期几是否正确(import_weeksConfuse),教室是否正确
|
|
|
-
|
|
|
+
|
|
|
//检查教师存在的
|
|
|
HashSet<string> teachers = import_schedules_hastime.Select(x => x.teacherId).ToHashSet();
|
|
|
teachers.Union(import_schedules_nottime.Select(x => x.teacherId));
|
|
|
- IEnumerable<string> unexistTeacherIds= null;
|
|
|
- if (teachers.Count > 0) {
|
|
|
+ IEnumerable<string> unexistTeacherIds = null;
|
|
|
+ if (teachers.Count > 0)
|
|
|
+ {
|
|
|
List<string> teacherIds = new List<string>();
|
|
|
- string sqlTeacher = $"select value(c.id) from c where c.id in ({string.Join(",",teachers.Select(x=>$"'{x}'"))})";
|
|
|
+ string sqlTeacher = $"select value(c.id) from c where c.id in ({string.Join(",", teachers.Select(x => $"'{x}'"))})";
|
|
|
await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School)
|
|
|
- .GetItemQueryIterator<string>(queryText: sqlTeacher, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"Teacher-{school}") }))
|
|
|
+ .GetItemQueryIterator<string>(queryText: sqlTeacher, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"Teacher-{school}") }))
|
|
|
{
|
|
|
teacherIds.Add(item);
|
|
|
}
|
|
|
- unexistTeacherIds= teachers.Except(teacherIds);
|
|
|
+ unexistTeacherIds = teachers.Except(teacherIds);
|
|
|
//移除不存在的教师
|
|
|
import_schedules_hastime.RemoveAll(x => unexistTeacherIds.Contains(x.teacherId));
|
|
|
import_schedules_nottime.RemoveAll(x => unexistTeacherIds.Contains(x.teacherId));
|
|
@@ -486,7 +504,7 @@ namespace TEAMModelAPI.Controllers
|
|
|
{
|
|
|
rooms.Add(item);
|
|
|
}
|
|
|
- unexistRoomIds= roomIds.Except(rooms);
|
|
|
+ unexistRoomIds = roomIds.Except(rooms);
|
|
|
//移除不存在的教室
|
|
|
import_schedules_hastime.RemoveAll(x => unexistRoomIds.Contains(x.roomId));
|
|
|
import_schedules_nottime.RemoveAll(x => unexistRoomIds.Contains(x.roomId));
|
|
@@ -494,7 +512,8 @@ namespace TEAMModelAPI.Controllers
|
|
|
//检查名单存在的
|
|
|
List<string> groupIds = new List<string>();
|
|
|
var classIdsHasTime = import_schedules_hastime.Where(x => !string.IsNullOrWhiteSpace(x.classId)).Select(x => x.classId).ToHashSet();
|
|
|
- if (classIdsHasTime.Any()) {
|
|
|
+ if (classIdsHasTime.Any())
|
|
|
+ {
|
|
|
groupIds.AddRange(classIdsHasTime);
|
|
|
}
|
|
|
var stulistsHasTime = import_schedules_hastime.Where(x => !string.IsNullOrWhiteSpace(x.stulist)).Select(x => x.stulist).ToHashSet();
|
|
@@ -513,9 +532,10 @@ namespace TEAMModelAPI.Controllers
|
|
|
groupIds.AddRange(stulistsNotTime);
|
|
|
}
|
|
|
|
|
|
- List<GroupListDto> groupListDtos= await GroupListService.GetGroupListListids(_azureCosmos.GetCosmosClient(), _dingDing, groupIds, school);
|
|
|
+ List<GroupListDto> groupListDtos = await GroupListService.GetGroupListListids(_azureCosmos.GetCosmosClient(), _dingDing, groupIds, school);
|
|
|
IEnumerable<string> unexistGroupIds = null;
|
|
|
- if (groupListDtos.IsNotEmpty()) {
|
|
|
+ if (groupListDtos.IsNotEmpty())
|
|
|
+ {
|
|
|
unexistGroupIds = groupIds.Except(groupListDtos.Select(x => x.id));
|
|
|
//移除不存在的名单id
|
|
|
import_schedules_hastime.RemoveAll(x => unexistGroupIds.Contains(x.classId));
|
|
@@ -527,7 +547,8 @@ namespace TEAMModelAPI.Controllers
|
|
|
HashSet<Course> update_course = new HashSet<Course>();
|
|
|
HashSet<string> unexistTimeIds = new HashSet<string>();
|
|
|
//处理包含时间排课的课程
|
|
|
- import_schedules_hastime.ForEach(schedule => {
|
|
|
+ import_schedules_hastime.ForEach(schedule =>
|
|
|
+ {
|
|
|
Course course = courses.Find(x => x.id.Equals(schedule.courseId));
|
|
|
if (string.IsNullOrWhiteSpace(course?.period?.id))
|
|
|
{
|
|
@@ -535,47 +556,53 @@ namespace TEAMModelAPI.Controllers
|
|
|
TimeTable timeTable = period?.timetable.Find(x => x.id.Equals(schedule.timeId));
|
|
|
if (timeTable != null)
|
|
|
{
|
|
|
- string groupId= string.IsNullOrWhiteSpace(schedule.classId)?schedule.stulist:schedule.classId;
|
|
|
- GroupListDto groupList= groupListDtos.Find(g => g.id.Equals(groupId));
|
|
|
+ string groupId = string.IsNullOrWhiteSpace(schedule.classId) ? schedule.stulist : schedule.classId;
|
|
|
+ GroupListDto groupList = groupListDtos.Find(g => g.id.Equals(groupId));
|
|
|
string classId = null;
|
|
|
string stulist = null;
|
|
|
- if (groupList.type.Equals("class")) {
|
|
|
+ if (groupList.type.Equals("class"))
|
|
|
+ {
|
|
|
classId = groupList.id;
|
|
|
|
|
|
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
stulist = groupList.id;
|
|
|
}
|
|
|
- var course_schedule =course.schedule.Find(x => x.teacherId.Equals(schedule.teacherId));
|
|
|
+ var course_schedule = course.schedule.Find(x => x.teacherId.Equals(schedule.teacherId));
|
|
|
if (course_schedule != null)
|
|
|
{
|
|
|
course_schedule.classId = classId;
|
|
|
- course_schedule.stulist = stulist ;
|
|
|
+ course_schedule.stulist = stulist;
|
|
|
course_schedule.room = schedule.roomId;
|
|
|
- var time= course_schedule.time.Find(t => t.id.Equals(schedule.timeId) && t.week.Equals(schedule.week));
|
|
|
+ var time = course_schedule.time.Find(t => t.id.Equals(schedule.timeId) && t.week.Equals(schedule.week));
|
|
|
if (time != null)
|
|
|
{
|
|
|
- time.id=schedule.timeId;
|
|
|
- time.week=schedule.week;
|
|
|
+ time.id = schedule.timeId;
|
|
|
+ time.week = schedule.week;
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
course_schedule.time.Add(new TimeInfo { id = schedule.timeId, week = schedule.week });
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
- course.schedule.Add(new Schedule { teacherId = schedule.teacherId,classId = classId, stulist = stulist, room = schedule.roomId, time = new List<TimeInfo> { new TimeInfo { id=schedule.timeId,week=schedule.week} } });
|
|
|
+ else
|
|
|
+ {
|
|
|
+ course.schedule.Add(new Schedule { teacherId = schedule.teacherId, classId = classId, stulist = stulist, room = schedule.roomId, time = new List<TimeInfo> { new TimeInfo { id = schedule.timeId, week = schedule.week } } });
|
|
|
}
|
|
|
update_course.Add(course);
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
//课程,所在学段对应的作息时间不正确
|
|
|
unexistTimeIds.Add(schedule.timeId);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
//处理没有时间排课的课程
|
|
|
- import_schedules_nottime.ForEach(schedule => {
|
|
|
+ import_schedules_nottime.ForEach(schedule =>
|
|
|
+ {
|
|
|
Course course = courses.Find(x => x.id.Equals(schedule.courseId));
|
|
|
if (string.IsNullOrWhiteSpace(course?.period?.id))
|
|
|
{
|
|
@@ -601,38 +628,40 @@ namespace TEAMModelAPI.Controllers
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- course.schedule.Add(new Schedule { teacherId=schedule.teacherId, classId = classId, stulist = stulist, room = schedule.roomId});
|
|
|
+ course.schedule.Add(new Schedule { teacherId = schedule.teacherId, classId = classId, stulist = stulist, room = schedule.roomId });
|
|
|
}
|
|
|
update_course.Add(course);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- foreach (var item in update_course) {
|
|
|
+ foreach (var item in update_course)
|
|
|
+ {
|
|
|
await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReplaceItemAsync(item, item.id, new PartitionKey(item.code));
|
|
|
}
|
|
|
- return Ok(new {
|
|
|
- import= new //导入数据自检信息
|
|
|
+ return Ok(new
|
|
|
+ {
|
|
|
+ import = new //导入数据自检信息
|
|
|
{
|
|
|
teacherWarning,//自检-教师冲突的排课
|
|
|
groupIdWarning,//自检-名单冲突的排课
|
|
|
roomIdsWarning,//自检-物理教室冲突的排课
|
|
|
weeksError //自检-错误的星期几编码
|
|
|
},
|
|
|
- database= new //数据库比对信息
|
|
|
+ database = new //数据库比对信息
|
|
|
{
|
|
|
teacherError,//数据比对-教师冲突的排课
|
|
|
groupIdError,//数据比对-名单冲突的排课
|
|
|
roomIdsError,//数据比对-物理教室冲突的排课
|
|
|
- unexistCourseIds ,//不存在的课程
|
|
|
+ unexistCourseIds,//不存在的课程
|
|
|
unexistTeacherIds,//不存在的教师
|
|
|
unexistGroupIds,//不存在的名单
|
|
|
unexistRoomIds,//不存在的教室
|
|
|
unexistTimeIds //不存在的作息
|
|
|
},
|
|
|
- updateCourse= update_course,
|
|
|
- addSubjects= addSubjects
|
|
|
+ updateCourse = update_course,
|
|
|
+ addSubjects
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|