From bc62ca43fe76cf38042891cc3e69b9ec5b067e91 Mon Sep 17 00:00:00 2001
From: zhangli <1109134334@qq.com>
Date: Wed, 15 Jun 2022 16:43:16 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E8=80=83=E8=AE=B0=E5=BD=95-=E4=B8=80?=
=?UTF-8?q?=E9=94=AE=E5=AE=89=E6=8E=92=E8=80=83=E5=9C=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Exam_ExamPlanLessonController.cs | 6 ++
.../Exam_ExamPlanClassService.cs | 4 +-
.../Exam_ExamPlanLessonBLL.cs | 20 +++++
.../Exam_ExamPlanLessonIBLL.cs | 1 +
.../Exam_ExamPlanLessonService.cs | 74 +++++++++++++++---
.../Exam_ExamPlanRoomEntity.cs | 12 ++-
.../Exam_ExamPlanRoomService.cs | 78 ++++++++++++++++++-
7 files changed, 182 insertions(+), 13 deletions(-)
diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/Exam_ExamPlanLessonController.cs b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/Exam_ExamPlanLessonController.cs
index 66be01a30..1b29bacd0 100644
--- a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/Exam_ExamPlanLessonController.cs
+++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/EducationalAdministration/Controllers/Exam_ExamPlanLessonController.cs
@@ -196,6 +196,12 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
Exam_ExamPlanLessonData.ExamTimeEnd = etime[1];
}
+ if ((Exam_ExamPlanLessonData.ClassNum == null || Exam_ExamPlanLessonData.ClassNum <= 0) ||
+ (Exam_ExamPlanLessonData.SeatCount == null || Exam_ExamPlanLessonData.SeatCount <= 0))
+ {
+ exam_ExamPlanLessonIBLL.UpdateClassNumAndStuCount(Exam_ExamPlanLessonData.EPLId);
+ }
+
var jsonData = new
{
Exam_ExamPlanLesson = Exam_ExamPlanLessonData,
diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanClass/Exam_ExamPlanClassService.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanClass/Exam_ExamPlanClassService.cs
index 93660d231..7c2e4c8dd 100644
--- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanClass/Exam_ExamPlanClassService.cs
+++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanClass/Exam_ExamPlanClassService.cs
@@ -364,9 +364,9 @@ where l.EPLId='{EPLId}'
}
- //更新排考安排课程表实排班级数、实排人数
+ //更新排考安排课程表实排班级数、实排人数和应排班级数、应排人数(如果没有点击【一键安排班级】,应排班级数、应排人数在安排考试页面切换课程时候更新)
string sql = $@"update l
-set l.RealStuCount=t.RealStuCount,l.RealClassNum=t.RealClassNum
+set l.RealStuCount=t.RealStuCount,l.RealClassNum=t.RealClassNum,ClassNum=t.RealClassNum,StuCount=t.RealStuCount
from Exam_ExamPlanLesson l
join (select '{lesson.EPLId}' as EPLId,count(1) as RealClassNum,sum(ClassStuNum) as RealStuCount from Exam_ExamPlanClass where EPLId='{lesson.EPLId}'
)t on l.EPLId=t.EPLId
diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonBLL.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonBLL.cs
index 3dd2fe689..88d9b16d4 100644
--- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonBLL.cs
+++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonBLL.cs
@@ -216,6 +216,26 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration
}
}
}
+
+ public void UpdateClassNumAndStuCount(string EPLId)
+ {
+ try
+ {
+ exam_ExamPlanLessonService.UpdateClassNumAndStuCount(EPLId);
+ }
+ catch (Exception ex)
+ {
+ if (ex is ExceptionEx)
+ {
+ throw;
+ }
+ else
+ {
+ throw ExceptionEx.ThrowBusinessException(ex);
+ }
+ }
+ }
+
///
/// 保存实体数据(新增、修改)
///
diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonIBLL.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonIBLL.cs
index 051781014..1d0b71c78 100644
--- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonIBLL.cs
+++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonIBLL.cs
@@ -45,6 +45,7 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration
void DeleteEntity(string keyValue);
void Check(string keyValue,int ELCheckMark);
void InitExamPlanLesson(string EPId);
+ void UpdateClassNumAndStuCount(string EPLId);
///
/// 保存实体数据(新增、修改)
///
diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonService.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonService.cs
index a758d7769..5d3a310ae 100644
--- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonService.cs
+++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanLesson/Exam_ExamPlanLessonService.cs
@@ -311,15 +311,7 @@ and AcademicYearNo='{exam_ExamPlan.AcademicYearNo}' and Semester='{exam_ExamPlan
group by LessonNo,lessonname";
this.BaseRepository("CollegeMIS").ExecuteBySql(sql);
}
-
- //排考课程表
- var EPLIdlist = this.BaseRepository("CollegeMIS").FindList(x => x.EPId == EPId).Select(x => x.EPLId);
- var EPLIds = string.Join("','", EPLIdlist);
- //班级
- var classInfo = this.BaseRepository("CollegeMIS").FindList($"select ClassNo,count(1) as StuNum FROM Exam_ExamStudent where ESEnabled=1 and ESType='{exam_ExamPlan.PlanType}' and AcademicYearNo='{exam_ExamPlan.AcademicYearNo}' and Semester='{exam_ExamPlan.Semester}' group by ClassNo");
- //修改应排班级数和应考人数
- var UpdSql = $"update Exam_ExamPlanLesson set ClassNum='{classInfo.Count()}',StuCount='{classInfo.Sum(x => x.StuNum)}' where EPLId in ('{EPLIds}')";
- this.BaseRepository("CollegeMIS").ExecuteBySql(UpdSql);
+
}
catch (Exception ex)
{
@@ -334,6 +326,70 @@ and AcademicYearNo='{exam_ExamPlan.AcademicYearNo}' and Semester='{exam_ExamPlan
}
}
+ ///
+ /// 更新应考班级数和应考人数(安排考试切换课程时更新)
+ /// 【一键安排班级】功能也有更新
+ ///
+ /// 主键
+ public void UpdateClassNumAndStuCount(string EPLId)
+ {
+ var db = this.BaseRepository("CollegeMIS");
+ try
+ {
+ db.BeginTrans();
+ var lesson = db.FindEntity(x => x.EPLId == EPLId);
+ //排考记录表
+ var examPlan = db.FindEntity(lesson.EPId);
+ var lessonno = lesson.LessonNo;
+ if (lesson.LessonNo.Contains("("))
+ {
+ lessonno = lesson.LessonNo.Split('(')[0];
+ }
+
+ //查询课程信息
+ var lessoninfo = db.FindList($@"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)
+ {
+ var updSql = $@"update a set a.ClassNum=b.ClassNum,a.StuCount=b.StuCount
+from Exam_ExamPlanLesson a join
+(
+select count(1) as ClassNum,SUM(StuNum) as StuCount,'{EPLId}' as EPLId from (
+SELECT t.ClassNo,count(1) as StuNum FROM Exam_ExamStudent t
+ left join classinfo c on t.ClassNo=c.ClassNo WHERE t.ESEnabled=1 and t.AcademicYearNo='{examPlan.AcademicYearNo}' and t.Semester='{examPlan.Semester}' and t.ESType='{examPlan.PlanType}'
+
+";
+ if (lessoninfo.LessonTypeName.Contains("专业"))
+ {
+ updSql += $" and c.majorno='{lessoninfo.TeachMajorNo}' ";
+ }
+ //else if (lessoninfo.LessonTypeName.Contains("公共") || lessoninfo.LessonTypeName.Contains("公开"))
+ //{
+ // //公共课添加所有班级
+ //}
+
+ updSql += $@" group by t.ClassNo,t.AcademicYearNo,t.Semester,t.ESType,c.ClassName
+ ) t) b on a.EPLId=b.EPLId
+ where a.EPLId='{EPLId}'";
+
+ db.ExecuteBySql(updSql);
+ db.Commit();
+ }
+
+ }
+ catch (Exception ex)
+ {
+ db.Rollback();
+ if (ex is ExceptionEx)
+ {
+ throw;
+ }
+ else
+ {
+ throw ExceptionEx.ThrowServiceException(ex);
+ }
+ }
+ }
///
/// 保存实体数据(新增、修改)
///
diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanRoom/Exam_ExamPlanRoomEntity.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanRoom/Exam_ExamPlanRoomEntity.cs
index c03fe1c6b..d601e4b92 100644
--- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanRoom/Exam_ExamPlanRoomEntity.cs
+++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanRoom/Exam_ExamPlanRoomEntity.cs
@@ -11,7 +11,7 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration
/// 日 期:2022-04-15 18:12
/// 描 述:排考安排考场表
///
- public class Exam_ExamPlanRoomEntity
+ public class Exam_ExamPlanRoomEntity
{
#region 实体成员
///
@@ -75,6 +75,16 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration
this.EPRId = keyValue;
}
#endregion
+ ///
+ /// 考试日期
+ ///
+ [NotMapped]
+ public DateTime? ExamDate { get; set; }
+ ///
+ /// 考试时间
+ ///
+ [NotMapped]
+ public string ExamTime { get; set; }
}
}
diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanRoom/Exam_ExamPlanRoomService.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanRoom/Exam_ExamPlanRoomService.cs
index 994a329c3..2c9bfeb67 100644
--- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanRoom/Exam_ExamPlanRoomService.cs
+++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/EducationalAdministration/Exam_ExamPlanRoom/Exam_ExamPlanRoomService.cs
@@ -300,8 +300,84 @@ where l.EPLId='{EPLId}'";
return (false, "请先设置排考时间!");
}
//考试班级
-
+ var EPLIds = examLessonList.Select(y => y.EPLId).ToList();
+ if (db.FindList(x => EPLIds.Contains(x.EPLId)).Count() <= 0)
+ {
+ return (false, "请先添加考试班级!");
+ }
+
+ List list = new List();
+ //循环考试课程
+ foreach (var examLesson in examLessonList)
+ {
+ //删除考场
+ db.ExecuteBySql($"delete Exam_ExamPlanRoom where EPLId='{examLesson.EPLId}'");
+ //已设置考试时间且已添加班级
+ if (examLesson.ExamDate != null && examLesson.ExamTime.Contains("-") && examLesson.RealStuCount > 0)
+ {
+ //当前考试课程考试时间
+ var examtimeStart = Convert.ToDateTime(examLesson.ExamDate.Value.ToString("yyyy-MM-dd") + " " + (examLesson.ExamTime).Split('-')[0]);
+ var examtimeEnd = Convert.ToDateTime(examLesson.ExamDate.Value.ToString("yyyy-MM-dd") + " " + examLesson.ExamTime.Split('-')[1]);
+
+ //查询与考试课程的考试时间在同一天的考场,如果存在考试时间冲突的考场 则排除此考场
+ List conflictRoom = new List();
+ var examRoomByDateSql = $@"select a.ClassroomNo,b.ExamDate,b.ExamTime from [dbo].[Exam_ExamPlanRoom] a
+ join Exam_ExamPlanLesson b on a.EPLId = b.EPLId
+ where ExamDate = '{examLesson.ExamDate}'";
+ var examRoomsByDate = db.FindList(examRoomByDateSql).ToList();
+ //并集(和当前考试记录的考试课程在同一天的)
+ var examDatelist = list.Where(x => x.ExamDate == examLesson.ExamDate);
+ examRoomsByDate = examRoomsByDate.Union(examDatelist).ToList();
+ foreach (var examRoom in examRoomsByDate)
+ {
+ 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)))
+ {
+ conflictRoom.Add(examRoom.ClassroomNo);
+ }
+ }
+
+ //考场座位数
+ int? seatCount = 0;
+ var roomListSql =
+ $"select * from Exam_ExamRoom where AcademicYearNo='{examPlan.AcademicYearNo}' and Semester='{examPlan.Semester}' and EREnabled=1 ";
+ if (conflictRoom.Count() > 0)
+ {
+ var classroomNo = string.Join("','", conflictRoom.ToList());
+ roomListSql += $" and ClassroomNo not in ('{classroomNo}')";
+ }
+ var examRoomList = db.FindList(roomListSql).OrderBy(x => Guid.NewGuid());
+
+ foreach (var room in examRoomList)
+ {
+ list.Add(new Exam_ExamPlanRoomEntity
+ {
+ ClassroomNo = room.ClassroomNo,
+ ExamDate = examLesson.ExamDate,
+ ExamTime = examLesson.ExamTime,
+ });
+ Exam_ExamPlanRoomEntity EPRoom = new Exam_ExamPlanRoomEntity();
+ EPRoom.Create();
+ EPRoom.EPLId = examLesson.EPLId;
+ EPRoom.ClassroomName = room.ClassroomName;
+ EPRoom.ClassroomNo = room.ClassroomNo;
+ EPRoom.SeatCount = room.SeatCount;
+ db.Insert(EPRoom);
+ seatCount += room.SeatCount;
+ if (seatCount >= examLesson.RealStuCount)
+ {
+ break;
+ }
+ }
+
+ db.ExecuteBySql(
+ $"update Exam_ExamPlanLesson set SeatCount='{seatCount}' where EPLId='{examLesson.EPLId}'");
+ }
+
+ }
db.Commit();
return (true, "");
}