|
|
@@ -62,28 +62,87 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration |
|
|
|
} |
|
|
|
if (!queryParam["EPLId"].IsEmpty()) |
|
|
|
{ |
|
|
|
//排考安排课程表Id |
|
|
|
var ELEntity = this.BaseRepository("CollegeMIS").FindList<Exam_ExamPlanEntity>($@"select * from Exam_ExamPlan where EPId=( |
|
|
|
select EPId from Exam_ExamPlanLesson where EPLId='{queryParam["EPLId"].ToString()}')").FirstOrDefault(); |
|
|
|
//考试课程数据 |
|
|
|
var EPLEntity = this.BaseRepository("CollegeMIS").FindEntity<Exam_ExamPlanLessonEntity>(queryParam["EPLId"].ToString()); |
|
|
|
//排考安排课程表 获取学年学期 |
|
|
|
var ELEntity = this.BaseRepository("CollegeMIS").FindEntity<Exam_ExamPlanEntity>(EPLEntity.EPId); |
|
|
|
if (ELEntity != null) |
|
|
|
{ |
|
|
|
strSql.Append($" AND t.AcademicYearNo = '{ELEntity.AcademicYearNo}' "); |
|
|
|
strSql.Append($" AND t.Semester = '{ELEntity.Semester}' "); |
|
|
|
} |
|
|
|
|
|
|
|
var empSql = $@"SELECT DISTINCT EPLId, STUFF( (SELECT ',' + empno FROM Exam_ExamPlanRoom WHERE EPLId = T.EPLId FOR XML PATH('') ), 1, 1, '') AS empno FROM Exam_ExamPlanRoom AS T |
|
|
|
where EPLId ='{queryParam["EPLId"].ToString()}'"; |
|
|
|
//同一考试课程下考场的监考老师不重复 |
|
|
|
var empSql = "SELECT DISTINCT EPLId, STUFF( (SELECT ',' + empno FROM Exam_ExamPlanRoom WHERE 1=1 "; |
|
|
|
if (!queryParam["EPRId"].IsEmpty()) |
|
|
|
{ |
|
|
|
empSql += $" and EPRId<>'{queryParam["EPRId"].ToString()}'"; |
|
|
|
empSql += $" and EPRId<>'{queryParam["EPRId"].ToString()}'"; |
|
|
|
} |
|
|
|
|
|
|
|
empSql += $@" and EPLId = T.EPLId FOR XML PATH('') ), 1, 1, '') AS empno FROM Exam_ExamPlanRoom AS T |
|
|
|
where EPLId ='{queryParam["EPLId"].ToString()}'"; |
|
|
|
var obj = this.BaseRepository("CollegeMIS").FindList<Exam_ExamPlanRoomEntity>(empSql).Select(x => x.EmpNo).Distinct().ToList(); |
|
|
|
if (obj != null && obj.Count > 0) |
|
|
|
{ |
|
|
|
var empNo = string.Join("','", obj[0].ToString().Split(',').Distinct()); |
|
|
|
strSql.Append($" AND t.EmpNo not in ('{empNo}')"); |
|
|
|
} |
|
|
|
|
|
|
|
//筛选掉考试时间冲突的老师和专业课的代课老师 |
|
|
|
List<string> empnos = new List<string>(); |
|
|
|
var LessonNo = EPLEntity.LessonNo; |
|
|
|
if (LessonNo.Contains("(")) |
|
|
|
{ |
|
|
|
LessonNo = LessonNo.Split('(')[0]; |
|
|
|
} |
|
|
|
//查询课程信息 |
|
|
|
var lessoninfo = this.BaseRepository("CollegeMIS").FindList<LessonInfoEntity>($@"select top 1 t.LessonTypeName,l.* from lessoninfo l |
|
|
|
join [dbo].[CdLessonType] t on l.LessonTypeId = t.LTId where l.LessonNo='{LessonNo}' ").FirstOrDefault(); |
|
|
|
if (lessoninfo != null && !lessoninfo.LessonTypeName.Contains("公共") && !lessoninfo.LessonTypeName.Contains("公开")) |
|
|
|
{ |
|
|
|
//如果是专业课,监考老师不能添加这门课的代课老师 |
|
|
|
var teachClass = this.BaseRepository("CollegeMIS").FindList<TeachClassEntity>( |
|
|
|
$"select distinct EmpNo from TeachClass where AcademicYearNo='{ELEntity.AcademicYearNo}' and Semester='{ELEntity.Semester}' and lessonno='{LessonNo}'"); |
|
|
|
var empno = teachClass.Select(x => x.EmpNo).ToList(); |
|
|
|
empnos = empnos.Union(empno).ToList(); |
|
|
|
} |
|
|
|
|
|
|
|
if (EPLEntity.ExamDate != null && EPLEntity.ExamTime.Contains("-")) |
|
|
|
{ |
|
|
|
//当前考试课程考试时间 |
|
|
|
var examtimeStart = Convert.ToDateTime(EPLEntity.ExamDate.Value.ToString("yyyy-MM-dd") + " " + (EPLEntity.ExamTime).Split('-')[0]); |
|
|
|
var examtimeEnd = Convert.ToDateTime(EPLEntity.ExamDate.Value.ToString("yyyy-MM-dd") + " " + EPLEntity.ExamTime.Split('-')[1]); |
|
|
|
|
|
|
|
//查询这个时间段不能监考的老师 |
|
|
|
var empnoTime = this.BaseRepository("CollegeMIS").FindList<Exam_ExamTeacherTimeEntity>(x => |
|
|
|
(examtimeStart >= x.ExamTimeStart && examtimeStart <= x.ExamTimeEnd) || (examtimeEnd >= x.ExamTimeStart && examtimeEnd <= x.ExamTimeEnd)).Select(x => x.EmpNo).ToList(); |
|
|
|
foreach (var empno in empnoTime) |
|
|
|
{ |
|
|
|
empnos = empnos.Union(empno.Split(',').ToList()).ToList(); |
|
|
|
} |
|
|
|
|
|
|
|
//查询已安排的监考老师数据 |
|
|
|
var examRoomByDateSql = $@"select a.EmpNo,b.ExamDate,b.ExamTime from [dbo].[Exam_ExamPlanRoom] a |
|
|
|
join Exam_ExamPlanLesson b on a.EPLId = b.EPLId |
|
|
|
where a.EmpNo is not null and b.ExamDate='{EPLEntity.ExamDate}' and a.EPLId<>'{queryParam["EPLId"].ToString()}'"; |
|
|
|
var examRoomsByDateList = this.BaseRepository("CollegeMIS").FindList<Exam_ExamPlanRoomEntity>(examRoomByDateSql).ToList(); |
|
|
|
foreach (var examRoom in examRoomsByDateList) |
|
|
|
{ |
|
|
|
var examRoomTime1 = Convert.ToDateTime(examRoom.ExamDate.Value.ToString("yyyy-MM-dd") + " " + examRoom.ExamTime.Split('-')[0]); |
|
|
|
var examRoomTime2 = Convert.ToDateTime(examRoom.ExamDate.Value.ToString("yyyy-MM-dd") + " " + examRoom.ExamTime.Split('-')[1]); |
|
|
|
|
|
|
|
//此处判断当前考场时间是否在考试课程排考时间的开始前30分钟到结束后30分钟 |
|
|
|
if ((examRoomTime1 >= examtimeStart.AddMinutes(-30) && examRoomTime1 <= examtimeEnd.AddMinutes(30)) || (examRoomTime2 >= examtimeStart.AddMinutes(-30) && examRoomTime2 <= examtimeEnd.AddMinutes(30))) |
|
|
|
{ |
|
|
|
empnos.Add(examRoom.EmpNo); |
|
|
|
} |
|
|
|
} |
|
|
|
if (empnos.Count() > 0) |
|
|
|
{ |
|
|
|
string nos = string.Join("','", empnos); |
|
|
|
strSql.Append($" AND t.EmpNo not in ('{nos}')"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
if (!queryParam["SqlParameter"].IsEmpty()) |
|
|
|
{ |
|
|
@@ -111,7 +170,7 @@ select EPId from Exam_ExamPlanLesson where EPLId='{queryParam["EPLId"].ToString( |
|
|
|
/// <param name="Semester"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public IEnumerable<Exam_InvigilateTeacherEntity> GetList(string AcademicYearNo, int? Semester) |
|
|
|
{ |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
return this.BaseRepository("CollegeMIS").FindList<Exam_InvigilateTeacherEntity>(x => x.AcademicYearNo == AcademicYearNo && x.Semester == Semester); |
|
|
|