Esempio n. 1
0
        /// <summary>
        /// 获取学期排课表
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-09-21</para>
        /// </summary>
        /// <returns>学期排课表数据</returns>
        private TermTimetableResponse GetTermCourseTimetable()
        {
            TermTimetableResponse res = new TermTimetableResponse
            {
                CourseTimetableSixty  = this.GetTermCourseTimetable(TimeType.Sixty),
                CourseTimetableNinety = this.GetTermCourseTimetable(TimeType.Ninety),

                TermTimetableAuditResponse = new TermTimetableAuditResponse
                {
                    AuditStatus = (AuditStatus)base.TblAutAudit.AuditStatus,
                    Auditime    = base.TblAutAudit.AuditDate.ToString("yyyy-MM-dd HH:mm"),
                    AuditName   = base.TblAutAudit.AuditUserName,
                    Remark      = GetAuditRemark()
                }
            };

            TblDatTerm term = TermService.GetTermByTermId(_termId);

            res.TermBeginDate = term.BeginDate.ToString("yyyy-MM-dd");
            res.TermEndDate   = term.EndDate.ToString("yyyy-MM-dd");

            //如果被退回,退回原因应从DataExt中取
            if (res.TermTimetableAuditResponse.AuditStatus == AuditStatus.Return)
            {
                res.TermTimetableAuditResponse.IsFirstSubmitUser = base.IsFlowSubmitUser;
                res.TermTimetableAuditResponse.CreateUserName    = base.TblAutAudit.CreateUserName;
                res.TermTimetableAuditResponse.Remark            = base.TblAutAudit.DataExt;
            }
            return(res);
        }
Esempio n. 2
0
        /// <summary>
        /// 根据学期获取停课日
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-11-08</para>
        /// </summary>
        /// <param name="term">学期信息</param>
        /// <returns>停课时间段数据列表</returns>
        internal static List <SchoolHolidayResponse> GetSchoolHoliday(TblDatTerm term)
        {
            SchoolHolidayService beginSchoolHoliday = new SchoolHolidayService(term.SchoolId, term.BeginDate.Year);
            SchoolHolidayService endSchoolHoliday   = new SchoolHolidayService(term.SchoolId, term.EndDate.Year);

            List <SchoolHolidayResponse> beginSchoolHolidayResponses = beginSchoolHoliday.GetWeekDayHolidayList().Result;
            List <SchoolHolidayResponse> endSchoolHolidayResponses   = endSchoolHoliday.GetWeekDayHolidayList().Result;

            List <SchoolHolidayResponse> schoolHoliday = beginSchoolHolidayResponses.Union(endSchoolHolidayResponses).ToList();

            return(schoolHoliday);
        }
Esempio n. 3
0
        /// <summary>
        /// 待添加到审核中班级
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-02-19</para>
        /// </summary>
        /// <param name="input">待添加的班级信息</param>
        /// <param name="classRoomId">教室Id</param>
        /// <param name="schoolTimeId">上课时间段Id</param>
        /// <param name="createUserName">创建人</param>
        /// <returns>审核中的班级课表信息</returns>
        private static TblAutClass GetTblAutClass(ClassScheduleRequest input, long classRoomId, long schoolTimeId, string createUserName)
        {
            //教室信息
            var classRoom = new ClassRoomService(classRoomId).ClassRoomInfo;

            ValidateObject(classRoom);

            //上课时间信息
            var schoolTime = SchoolTimeService.GetBySchoolTimeId(schoolTimeId);

            ValidateObject(schoolTime);

            //根据学期编号获取学期信息
            TblDatTerm term = TermService.GetTermByTermId(schoolTime.TermId);

            ValidateObject(term);

            //获取课程
            TblDatRoomCourse roomCourse = new ClassRoomService(classRoomId).GetByCourseId(input.CourseId).Result;

            ValidateObject(roomCourse);

            //复制课表到审核中得到审核主表id
            long auditId = new TermCourseTimetableAuditService(schoolTime.TermId).VerifyGetAuditId(classRoom.SchoolId);

            TblAutClass autClass = new TblAutClass
            {
                AutClassId   = IdGenerator.NextId(),
                SchoolId     = classRoom.SchoolId,
                ClassId      = IdGenerator.NextId(),
                AuditId      = auditId,
                ClassNo      = input.ClassNo,
                TermId       = term.TermId,
                RoomCourseId = roomCourse.RoomCourseId,
                ClassRoomId  = classRoomId,
                CourseId     = roomCourse.CourseId,
                CourseLeveId = input.CourseLevelId,
                TeacherId    = input.TeacherId,
                CourseNum    = input.CourseNum,
                StudentsNum  = input.StudentsNum,
                CreateTime   = DateTime.Now,
                UpdateTime   = DateTime.Now,
                DataStatus   = 0
            };

            return(autClass);
        }
        /// <summary>
        /// 获取未安排课表的班级课表信息
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-11-06</para>
        /// </summary>
        /// <param name="classRoomId">教室ID</param>
        /// <param name="schoolTimeId">时间段ID</param>
        /// <returns>课次表详情</returns>
        public static ClassTimetableResponse GetNoClassTimetable(long classRoomId, long schoolTimeId)
        {
            ClassTimetableResponse res = new ClassTimetableResponse
            {
                IsClassJoin = false
            };

            SchoolTimeService       service        = SchoolTimeService.CreateSchoolTimeService(schoolTimeId);
            List <TblDatSchoolTime> allSchoolTimes = service.TblDatSchoolTime;
            TblDatTerm term = service.TblDatTerm;

            //获取当前时间段
            var firstTime = allSchoolTimes.FirstOrDefault(x => x.SchoolTimeId == schoolTimeId);

            //第一节课时间段
            res.Time1 = new List <string> {
                firstTime.BeginTime, firstTime.EndTime
            };

            //上课老师
            res.Teacher = TeachService.GetIncumbentTeachers(term.SchoolId);

            //当前教室门牌号
            res.RoomNo = new SchoolClassRoomService(term.SchoolId).GetClassRoom(classRoomId)?.RoomNo;

            //课程与课程等级
            res.ClassTimetableCourse = GetClassTimetableCourseResponse(term.SchoolId, classRoomId);

            ClassTimetableSchoolTimeResult classTimetableSchoolTimeResult = GetClassTimetableSchoolTimeResult(allSchoolTimes, classRoomId, schoolTimeId, term.TermId);

            //星期几与上课时间的数据
            res.WeekDaySchoolTimes = classTimetableSchoolTimeResult
                                     .WeekDaySchoolTimes
                                     .OrderBy(m => m.WeekDay).ToList();

            res.CanClassJoin = classTimetableSchoolTimeResult.CanClassJoin;

            //第二节课时间段
            res.Time2 = classTimetableSchoolTimeResult.Time2;

            return(res);
        }
        /// <summary>
        /// 获取已安排课表的班级课表信息
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-11-06</para>
        /// </summary>
        /// <remarks>课程表班级的详情信息</remarks>
        /// <exception cref="BussinessException">
        /// 异常ID:1,异常描述:班级信息为空
        /// </exception>
        private ClassTimetableResponse GetClassTimetable()
        {
            //获取班级
            var classInfo = this.GetClass();

            if (classInfo == null)
            {
                throw new BussinessException(ModelType.Default, 1);
            }

            //基础数据
            ClassTimetableResponse res = new ClassTimetableResponse()
            {
                ClassNo            = classInfo.ClassNo,
                CourseId           = classInfo.CourseId,
                CourseLevelId      = classInfo.CourseLeveId,
                CourseNum          = classInfo.CourseNum,
                StudentsNum        = classInfo.StudentsNum,
                TeaherId           = classInfo.TeacherId,
                CanClassJoin       = false,
                WeekDaySchoolTimes = new List <ClassTimetableSchoolTimeResponse>()
            };

            SchoolTimeService schoolTimeService = new SchoolTimeService(classInfo.TermId);
            //获取学期信息
            TblDatTerm term = schoolTimeService.TblDatTerm;
            //这个学期所有的上课时间
            var allTermClassTime = schoolTimeService.TblDatSchoolTime.OrderBy(x => x.BeginTime).ToList();

            //校区老师
            res.Teacher = TeachService.GetIncumbentTeachers(term.SchoolId, classInfo.TeacherId);

            //课程信息与课程等级
            res.ClassTimetableCourse = GetClassTimetableCourseResponse(term.SchoolId, classInfo.ClassRoomId, classInfo.CourseId);

            //当前教室门牌号
            res.RoomNo = new SchoolClassRoomService(term.SchoolId).GetClassRoom(classInfo.ClassRoomId)?.RoomNo;

            var timClassTime = _classTimeRepository.Value.GetByClassId(classInfo.ClassId);

            //当前班级对应的上课时间段
            var currentClassTimes = allTermClassTime
                                    .Where(m => timClassTime.Select(x => x.SchoolTimeId).Contains(m.SchoolTimeId))
                                    .OrderBy(x => x.BeginTime).ToList();

            //班级第一个时间段
            var firstClassTime = currentClassTimes[0];

            res.Time1 = new List <string> {
                firstClassTime.BeginTime, firstClassTime.EndTime
            };
            res.Time2 = new List <string>();

            var isJoinClass = currentClassTimes.Where(x => x.WeekDay == firstClassTime.WeekDay).OrderBy(x => x.BeginTime).ToList();

            //班级第二个时间段
            if (isJoinClass.Count > 1)
            {
                var secondClassTime = isJoinClass[1];
                res.Time2 = new List <string> {
                    secondClassTime.BeginTime, secondClassTime.EndTime
                };
                res.IsClassJoin = true;
            }

            //星期几与上课时间的数据
            for (int i = 1; i <= 7; i++)
            {
                var classTime = currentClassTimes.Where(x => x.WeekDay == i).ToList();
                ClassTimetableSchoolTimeResponse ctst = new ClassTimetableSchoolTimeResponse
                {
                    HasSchoolTime1 = false,
                    SchoolTimeId1  = 0,
                    HasSchoolTime2 = false,
                    SchoolTimeId2  = 0,
                    IsChecked      = false,
                    WeekDay        = i
                };
                if (classTime.Any())
                {
                    ctst.HasSchoolTime1 = true;
                    ctst.SchoolTimeId1  = classTime[0].SchoolTimeId;
                    ctst.IsChecked      = true;

                    if (classTime.Count > 1)
                    {
                        ctst.HasSchoolTime2 = true;
                        ctst.SchoolTimeId2  = classTime[1].SchoolTimeId;
                    }
                }
                res.WeekDaySchoolTimes.Add(ctst);
            }

            return(res);
        }