/// <summary> /// 描述:向课次调整信息表添加记录 /// <para>作 者:瞿琦</para> /// <para>创建时间:2019-3-8</para> /// </summary> /// <param name="adjustDate">要调整的日期</param> /// <param name="timLessonList">要调整的课次列表</param> /// <param name="unitOfWork">工作单元事务</param> /// <returns>添加到数据库的课次调整表数据</returns> private List <TblTimAdjustLesson> AddAdjustLessonInfo(DateTime adjustDate, List <TblTimLesson> timLessonList, UnitOfWork unitOfWork) { var adjustLessonList = new List <TblTimAdjustLesson>(); var batchNo = IdGenerator.NextId(); foreach (var item in timLessonList) { var adjuseLessonEntity = new TblTimAdjustLesson { AdjustLessonId = IdGenerator.NextId(), BatchNo = batchNo, BusinessType = (int)LessonBusinessType.AdjustLessonSchoolClassTime, ClassDate = adjustDate, //调整后的日期 ClassBeginTime = item.ClassBeginTime, ClassEndTime = item.ClassEndTime, ClassId = item.ClassId, ClassRoomId = item.ClassRoomId, FromLessonId = item.LessonId, FromTeacherId = item.TeacherId, SchoolTimeId = 0, SchoolId = item.SchoolId, StudentId = item.StudentId, ToTeacherId = item.TeacherId, Status = (int)TimAdjustLessonStatus.Normal, Remark = EnumName.GetDescription(typeof(LessonBusinessType), (int)LessonBusinessType.AdjustLessonSchoolClassTime), CreateTime = DateTime.Now }; adjustLessonList.Add(adjuseLessonEntity); } unitOfWork.GetCustomRepository <TblTimAdjustLessonRepository, TblTimAdjustLesson>().Add <TblTimAdjustLesson>(adjustLessonList); return(adjustLessonList); }
/// <summary> /// 获取调整课次信息 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2019-03-15</para> /// </summary> /// <param name="inLesson">转入课次信息</param> /// <param name="outLesson">转出课次信息</param> /// <param name="adjustLesson">课次业务信息</param> /// <returns>调整课次信息</returns> private ReplenishLessonCreatorInfo GetReplenishLessonCreatorInfo( ViewCompleteStudentAttendance inLesson, ViewCompleteStudentAttendance outLesson, TblTimAdjustLesson adjustLesson) { return(new ReplenishLessonCreatorInfo { BusinessId = adjustLesson.AdjustLessonId, BusinessType = (LessonBusinessType)this.BusinessType, TeacherId = inLesson.TeacherId, ClassBeginTime = inLesson.ClassBeginTime, ClassDate = inLesson.ClassDate, ClassEndTime = inLesson.ClassEndTime, ClassId = inLesson.ClassId, ClassRoomId = inLesson.ClassRoomId, CourseId = inLesson.CourseId, CourseLevelId = inLesson.CourseLevelId, EnrollOrderItemId = inLesson.EnrollOrderItemId, LessonCount = inLesson.LessonCount, LessonType = (LessonType)inLesson.LessonType, SchoolId = inLesson.SchoolId, TermId = inLesson.TermId, OutLessonId = outLesson.LessonId, StudentId = outLesson.StudentId, }); }
/// <summary> /// 生成补课周补课班级信息 /// <para>作 者:Huang GaoLiang </para> /// <para>创建时间:2019-03-12 </para> /// </summary> /// <param name="replenishWeekClassTime"></param> /// <param name="oldDatClass">常规课班级信息</param> /// <param name="timAdjustLessonList">补课周补课集合</param> /// <param name="classNo">补课周班级生成规则</param> /// <param name="newClassList">新班级集合</param> /// <param name="adjustLessonList">业务调整数据集合</param> /// <param name="m">补课周补课信息</param> /// <param name="replenishWeekList">即将生成补课周的信息</param> /// <param name="studentTimeLessList">学生考勤数据</param> /// <param name="batchNo">批次号</param> private void SetDatClass(ReplenishWeekClassTimeAddRequest replenishWeekClassTime, TblDatClass oldDatClass, List <TblTimAdjustLesson> timAdjustLessonList, string classNo, List <TblDatClass> newClassList, List <TblTimAdjustLesson> adjustLessonList, WeekClassTime m, List <WeekClassTime> replenishWeekList, ViewStudentTimeLess studentTimeLessList, long batchNo) { // 检查该班级是否存在(上课日期/上课时间/下课时间/教室) var adjustLesson = timAdjustLessonList.FirstOrDefault(j => j.ClassDate == m.ClassDate && j.ClassBeginTime == m.ClassBeginTime && j.ClassEndTime == m.ClassEndTime && j.ClassRoomId == m.ClassRoomId); // 如果补课周补课班级不存在,则需要生成一个补课周补课班级 long weekClassId = 0; // 如果不是连着上的,则判断补课周班级存不存在 if (!oldDatClass.ClassNo.Contains(HundredEight) && null == adjustLesson) { weekClassId = IdGenerator.NextId(); } // 如果是连着上的 else if (oldDatClass.ClassNo.Contains(HundredEight)) { adjustLesson = timAdjustLessonList.FirstOrDefault(j => j.ClassDate == m.ClassDate && j.ClassRoomId == m.ClassRoomId); if (adjustLesson == null && adjustLessonList.Any()) { weekClassId = adjustLessonList.FirstOrDefault().ClassId; } else { weekClassId = IdGenerator.NextId(); } } else { weekClassId = adjustLesson.ClassId; replenishWeekClassTime.NewClassId = adjustLesson.ClassId; } CreateDatClass(weekClassId, replenishWeekClassTime, oldDatClass, classNo, newClassList, m, studentTimeLessList, batchNo); var adjust = new TblTimAdjustLesson { AdjustLessonId = IdGenerator.NextId(), BatchNo = batchNo, BusinessType = (int)LessonBusinessType.AdjustLessonReplenishWeek, ClassBeginTime = m.ClassBeginTime, ClassDate = m.ClassDate, ClassEndTime = m.ClassEndTime, ClassId = weekClassId, ClassRoomId = m.ClassRoomId, FromLessonId = studentTimeLessList.LessonId, FromTeacherId = studentTimeLessList.TeacherId, ToTeacherId = studentTimeLessList.TeacherId, Remark = LessonProcessConstants.WeekRemark, SchoolId = this._schoolId, SchoolTimeId = 0,//补课周补课,无需添加上课时间段编号 StudentId = replenishWeekClassTime.StudentId, Status = (int)TimAdjustLessonStatus.Normal, CreateTime = DateTime.Now }; adjustLessonList.Add(adjust); }
/// <summary> /// 描述:向课次调整信息表添加记录 /// <para>作 者:瞿琦</para> /// <para>创建时间:2019-3-8</para> /// </summary> /// <param name="request">要保存的课次调整信息</param> /// <param name="timLessonList">要调整的课次列表</param> /// <param name="classTimeList">上课时间段集合</param> /// <param name="unitOfWork">事务</param> /// <returns>添加到数据库的课次调整表数据</returns> private List <TblTimAdjustLesson> AddAdjustLessonInfo(AdjustClassTimeRequest request, List <TblTimLesson> timLessonList, List <TblDatSchoolTime> classTimeList, UnitOfWork unitOfWork) { var adjustLessonList = new List <TblTimAdjustLesson>(); var batchNo = IdGenerator.NextId(); foreach (var totalItem in timLessonList) { //开始上课时间 var beginTime = request.NewClassBeginTime; //时间间隔 var timeInterval = 0; var studentLessonList = timLessonList.Where(x => x.ClassId == totalItem.ClassId && x.ClassDate == totalItem.ClassDate && x.StudentId == totalItem.StudentId); foreach (var studentLessonItem in studentLessonList) { var dateBeginTime = DateTime.Parse($"{request.NewClassDate:yyyy-MM-dd} {beginTime}"); var classEndTime = dateBeginTime.AddMinutes(classTimeList.FirstOrDefault().Duration); var adjuseLessonEntity = new TblTimAdjustLesson { AdjustLessonId = IdGenerator.NextId(), BatchNo = batchNo, BusinessType = (int)LessonBusinessType.AdjustLessonClassTime, ClassDate = request.NewClassDate, //调整后的上课日期 ClassBeginTime = beginTime, //调整后的上课时间 ClassEndTime = classEndTime.ToShortTimeString().ToString(), //调整后的下课时间 ClassId = studentLessonItem.ClassId, ClassRoomId = studentLessonItem.ClassRoomId, FromLessonId = studentLessonItem.LessonId, FromTeacherId = studentLessonItem.TeacherId, SchoolTimeId = 0, //此次业务是自定义时间段,为0 SchoolId = studentLessonItem.SchoolId, StudentId = studentLessonItem.StudentId, ToTeacherId = studentLessonItem.TeacherId, Status = (int)TimAdjustLessonStatus.Normal, Remark = EnumName.GetDescription(typeof(LessonBusinessType), (int)LessonBusinessType.AdjustLessonClassTime), CreateTime = DateTime.Now }; adjustLessonList.Add(adjuseLessonEntity); if (classTimeList.Count > 1) { var lessonTime1 = DateTime.Parse($"{request.NewClassDate:yyyy-MM-dd} {classTimeList[0].EndTime}"); var lessonTime2 = DateTime.Parse($"{request.NewClassDate:yyyy-MM-dd} {classTimeList[1].BeginTime}"); timeInterval = (int)(lessonTime2 - lessonTime1).TotalMinutes; } beginTime = classEndTime.AddMinutes(timeInterval).ToShortTimeString().ToString(); } } unitOfWork.GetCustomRepository <TblTimAdjustLessonRepository, TblTimAdjustLesson>().Add <TblTimAdjustLesson>(adjustLessonList); return(adjustLessonList); }
/// <summary> /// 描述:撤销排课 /// <para>作 者:Huang GaoLiang </para> /// <para>创建时间:2019-03-11</para> /// </summary> /// <param name="iRequest">撤销排课请求参数</param> /// <exception> /// 异常ID:1,未找到数据 /// 异常ID:46,该课程已考勤,不能撤销! /// </exception> public override void Adjust(IAdjustLessonRequest iRequest) { AdjustRevokeRequest request = iRequest as AdjustRevokeRequest; lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, this._schoolId, request.StudentId.ToString())) { LessonFinisherInfo info = new LessonFinisherInfo(); // 根据课次编号获取学生课次信息 var timLessonStudent = new StudentTimetableService(this._schoolId, request.StudentId).GetStudentTimLessonByLessId(request.LessonId); if (timLessonStudent == null) { throw new BussinessException(ModelType.Default, 1); } // 如果考勤状态是已考勤或者是已补签 if (timLessonStudent.AttendStatus == (int)AttendStatus.Normal || timLessonStudent.AdjustType == (int)AdjustType.SUPPLEMENTCONFIRMED) { throw new BussinessException(ModelType.Timetable, 46); } // 根据课次编号获取学生排课记录信息 TblTimLesson timLesson = new StudentTimetableService(this._schoolId, request.StudentId).GetTimLessonById(request.LessonId); TblTimAdjustLesson timAdjustLesson = new TblTimAdjustLesson { AdjustLessonId = IdGenerator.NextId(), SchoolId = this._schoolId, BatchNo = IdGenerator.NextId(), FromLessonId = timLesson.LessonId, FromTeacherId = timLesson.TeacherId, ToTeacherId = "", StudentId = request.StudentId, ClassRoomId = timLesson.ClassRoomId, ClassId = timLesson.ClassId, SchoolTimeId = 0, ClassDate = timLesson.ClassDate, ClassBeginTime = timLesson.ClassBeginTime, ClassEndTime = timLesson.ClassEndTime, BusinessType = (int)LessonBusinessType.CancelMakeLess, Remark = LessonProcessConstants.Remark, Status = (int)TimAdjustLessonStatus.Invalid, CreateTime = DateTime.Now, }; using (var unitOfWork = new UnitOfWork()) { try { unitOfWork.BeginTransaction(); // 1、写入调整课次业务表 unitOfWork.GetCustomRepository <TblTimAdjustLessonRepository, TblTimAdjustLesson>().Add(timAdjustLesson); // 2、调用课次服务 var adjustLessonRevokeFinisher = new AdjustLessonRevokeFinisher(this._schoolId, request.StudentId, request.LessonId, unitOfWork); LessonService lessonService = new LessonService(unitOfWork); lessonService.Finish(adjustLessonRevokeFinisher); unitOfWork.CommitTransaction(); } catch (Exception ex) { unitOfWork.RollbackTransaction(); throw ex; } } } }