登录
This commit is contained in:
parent
b6583ed53a
commit
5bb8e83a03
@ -1521,13 +1521,12 @@ namespace VOL.Ai.Services
|
|||||||
if (teacher == null || string.IsNullOrWhiteSpace(teacher.TeacherNo) || string.IsNullOrWhiteSpace(teacher.TeacherName))
|
if (teacher == null || string.IsNullOrWhiteSpace(teacher.TeacherNo) || string.IsNullOrWhiteSpace(teacher.TeacherName))
|
||||||
throw new Exception("获取京师老师信息失败!");
|
throw new Exception("获取京师老师信息失败!");
|
||||||
|
|
||||||
// 2️⃣ 查询数据库中是否已有该老师
|
// 3️⃣ 确保老师存在数据库
|
||||||
var dbTeacher = await _teacherRepository.DbContext.Set<JS_Teacher>()
|
var dbTeacher = await _teacherRepository.DbContext.Set<JS_Teacher>()
|
||||||
.FirstOrDefaultAsync(t => t.TeacherNo == teacher.TeacherNo);
|
.FirstOrDefaultAsync(t => t.TeacherNo == teacher.TeacherNo);
|
||||||
|
|
||||||
if (dbTeacher == null)
|
if (dbTeacher == null)
|
||||||
{
|
{
|
||||||
// 老师不存在,新增
|
|
||||||
dbTeacher = new JS_Teacher
|
dbTeacher = new JS_Teacher
|
||||||
{
|
{
|
||||||
TeacherNo = teacher.TeacherNo,
|
TeacherNo = teacher.TeacherNo,
|
||||||
@ -1537,55 +1536,36 @@ namespace VOL.Ai.Services
|
|||||||
};
|
};
|
||||||
|
|
||||||
await _teacherRepository.DbContext.Set<JS_Teacher>().AddAsync(dbTeacher);
|
await _teacherRepository.DbContext.Set<JS_Teacher>().AddAsync(dbTeacher);
|
||||||
await _teacherRepository.DbContext.SaveChangesAsync();
|
await _teacherRepository.DbContext.SaveChangesAsync(); // 保存后 Id 可用
|
||||||
}
|
}
|
||||||
|
|
||||||
var gradeDtos = teacher.GradeList ?? new List<GradeDto>();
|
var gradeDtos = teacher.GradeList ?? new List<GradeDto>();
|
||||||
var allGradeNos = gradeDtos.Where(g => !string.IsNullOrWhiteSpace(g.GradeNo))
|
var allGradeNos = gradeDtos
|
||||||
|
.Where(g => !string.IsNullOrWhiteSpace(g.GradeNo))
|
||||||
.Select(g => g.GradeNo)
|
.Select(g => g.GradeNo)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
// 3️⃣ 查询数据库已有年级和班级
|
// 4️⃣ 查询数据库已有年级和班级
|
||||||
var existGrades = await _studentRepository.DbContext.Set<JS_Grade>()
|
var existGrades = await _studentRepository.DbContext.Set<JS_Grade>()
|
||||||
.Where(x => x.SchoolCode == schoolCode && allGradeNos.Contains(x.GradeNo))
|
.Where(x => x.SchoolCode == schoolCode && x.TeacherNo == teacher.TeacherNo && allGradeNos.Contains(x.GradeNo))
|
||||||
.Include(g => g.Classes)
|
.Include(g => g.Classes)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
var existClasses = existGrades.SelectMany(g => g.Classes).ToList();
|
var existClasses = existGrades.SelectMany(g => g.Classes).ToList();
|
||||||
|
|
||||||
// 先删班级
|
// 5️⃣ 先删除旧班级,再删除旧年级
|
||||||
|
if (existClasses.Any())
|
||||||
_studentRepository.DbContext.Set<JS_Class>().RemoveRange(existClasses);
|
_studentRepository.DbContext.Set<JS_Class>().RemoveRange(existClasses);
|
||||||
|
|
||||||
// 再删年级
|
if (existGrades.Any())
|
||||||
_studentRepository.DbContext.Set<JS_Grade>().RemoveRange(existGrades);
|
_studentRepository.DbContext.Set<JS_Grade>().RemoveRange(existGrades);
|
||||||
|
|
||||||
await _studentRepository.DbContext.SaveChangesAsync();
|
await _studentRepository.DbContext.SaveChangesAsync();
|
||||||
|
|
||||||
|
// 6️⃣ 构造新增年级和班级
|
||||||
// 4️⃣ 更新已存在的年级老师信息(直接 UPDATE)
|
var newGrades = gradeDtos
|
||||||
//foreach (var grade in existGrades)
|
.Where(g => !string.IsNullOrWhiteSpace(g.GradeNo))
|
||||||
//{
|
.Select(g => new JS_Grade
|
||||||
// grade.TeacherNo = teacher.TeacherNo;
|
|
||||||
// grade.TeacherName = teacher.TeacherName;
|
|
||||||
|
|
||||||
// foreach (var cls in grade.Classes)
|
|
||||||
// {
|
|
||||||
// cls.TeacherNo = teacher.TeacherNo;
|
|
||||||
// cls.TeacherName = teacher.TeacherName;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
// 5️⃣ 构造新增年级和班级
|
|
||||||
var newGrades = new List<JS_Grade>();
|
|
||||||
var existGradeNoSet = existGrades.Select(g => g.GradeNo).ToHashSet();
|
|
||||||
var existClassNoSet = existGrades.SelectMany(g => g.Classes).Select(c => c.ClassNo).ToHashSet();
|
|
||||||
|
|
||||||
foreach (var g in gradeDtos)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrWhiteSpace(g.GradeNo) || existGradeNoSet.Contains(g.GradeNo))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
var gradeNew = new JS_Grade
|
|
||||||
{
|
{
|
||||||
TeacherNo = teacher.TeacherNo,
|
TeacherNo = teacher.TeacherNo,
|
||||||
TeacherName = teacher.TeacherName,
|
TeacherName = teacher.TeacherName,
|
||||||
@ -1606,29 +1586,15 @@ namespace VOL.Ai.Services
|
|||||||
ClassNo = c.ClassNo,
|
ClassNo = c.ClassNo,
|
||||||
ClassName = c.ClassName
|
ClassName = c.ClassName
|
||||||
}).ToList() ?? new List<JS_Class>()
|
}).ToList() ?? new List<JS_Class>()
|
||||||
};
|
}).ToList();
|
||||||
newGrades.Add(gradeNew);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (newGrades.Any())
|
if (newGrades.Any())
|
||||||
await _studentRepository.DbContext.Set<JS_Grade>().AddRangeAsync(newGrades);
|
await _studentRepository.DbContext.Set<JS_Grade>().AddRangeAsync(newGrades);
|
||||||
|
|
||||||
// 6️⃣ 保存所有修改和新增
|
|
||||||
|
|
||||||
//// EF Core 显式标记更新
|
|
||||||
//_studentRepository.UpdateRange(existGrades);
|
|
||||||
|
|
||||||
//// 同时更新所有班级(必须显式)
|
|
||||||
//var allClasses = existGrades.SelectMany(g => g.Classes).ToList();
|
|
||||||
//_classRepository.UpdateRange(allClasses);
|
|
||||||
|
|
||||||
await _studentRepository.DbContext.SaveChangesAsync();
|
await _studentRepository.DbContext.SaveChangesAsync();
|
||||||
|
|
||||||
// 7️⃣ 返回结果
|
// 7️⃣ 使用 EF 跟踪的实体直接返回,不用再查询数据库
|
||||||
var dbGrades = await _studentRepository.DbContext.Set<JS_Grade>()
|
var dbGrades = newGrades;
|
||||||
.Where(x => x.SchoolCode == schoolCode && allGradeNos.Contains(x.GradeNo) && x.TeacherNo == teacher.TeacherNo)
|
|
||||||
.Include(g => g.Classes)
|
|
||||||
.ToListAsync();
|
|
||||||
|
|
||||||
var res = new Ai_TeacherFaceInfo
|
var res = new Ai_TeacherFaceInfo
|
||||||
{
|
{
|
||||||
@ -1645,31 +1611,6 @@ namespace VOL.Ai.Services
|
|||||||
.ToList()
|
.ToList()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//// 3️⃣ 直接从 teacher 里组装年级班级数据(不进数据库)
|
|
||||||
//var gradeDtos = teacher.GradeList ?? new List<GradeDto>();
|
|
||||||
|
|
||||||
//var classList = gradeDtos
|
|
||||||
// .Where(g => !string.IsNullOrWhiteSpace(g.GradeNo))
|
|
||||||
// .SelectMany(g => g.ClassList ?? new List<ClassDto>(),
|
|
||||||
// (g, c) => new { g, c })
|
|
||||||
// .Where(x => !string.IsNullOrWhiteSpace(x.c.ClassNo))
|
|
||||||
// .Select(x => new Classes
|
|
||||||
// {
|
|
||||||
// Id = 0, // 不落库,Id 没意义
|
|
||||||
// Name = $"{x.g.GradeName}-{x.c.ClassName}"
|
|
||||||
// })
|
|
||||||
// .ToList();
|
|
||||||
|
|
||||||
//// 4️⃣ 返回结果
|
|
||||||
//var res = new Ai_TeacherFaceInfo
|
|
||||||
//{
|
|
||||||
// Id = 0,
|
|
||||||
// TeacherName = teacher.TeacherName,
|
|
||||||
// Phone = teacher.TeacherNo,
|
|
||||||
// GradeAndClassList = classList
|
|
||||||
//};
|
|
||||||
|
|
||||||
// 8️⃣ 删除扫码记录
|
// 8️⃣ 删除扫码记录
|
||||||
_scanCodeLoginRepository.Delete(loginInfo);
|
_scanCodeLoginRepository.Delete(loginInfo);
|
||||||
await _scanCodeLoginRepository.SaveChangesAsync();
|
await _scanCodeLoginRepository.SaveChangesAsync();
|
||||||
@ -1677,7 +1618,6 @@ namespace VOL.Ai.Services
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 登录
|
/// 登录
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user