Esempio n. 1
0
        /// <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,
            });
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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;
                    }
                }
            }
        }