using Learun.Util; using System.Data; using Learun.Application.TwoDevelopment.PersonnelManagement; using System.Web.Mvc; using System.Collections.Generic; using Learun.Application.TwoDevelopment.EducationalAdministration; using System; using System.Linq; using System.Threading.Tasks; using Newtonsoft.Json; namespace Learun.Application.Web.Areas.PersonnelManagement.Controllers { /// /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园 /// Copyright (c) 2013-2018 北京泉江科技有限公司 /// 创 建:超级管理员 /// 日 期:2019-03-25 11:16 /// 描 述:课程表 /// public class TimeTableController : MvcControllerBase { private ArrangeLessonTermIBLL arrangeLessonTermIBLL = new ArrangeLessonTermBLL(); private StuAttendanceIBLL stuAttendanceIBLL = new StuAttendanceBLL(); private ArrangeLessonTermOfElectiveIBLL arrangeLessonTermOfElectiveIBLL = new ArrangeLessonTermOfElectiveBLL(); private StuAttendanceLeaveIBLL stuAttendanceLeaveIBLL = new StuAttendanceLeaveBLL(); private StuSelectLessonListOfElectiveIBLL stuSelectLessonList = new StuSelectLessonListOfElectiveBLL(); private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL(); private LessonInfoIBLL lessonInfoIBLL = new LessonInfoBLL(); private Edu_ChangeTeacherLessonIBLL edu_ChangeTeacherLessonIBLL = new Edu_ChangeTeacherLessonBLL(); #region 视图功能 /// /// 主页面 /// /// [HttpGet] public ActionResult Index() { return View(); } /// /// 考勤 /// /// [HttpGet] public ActionResult Attendance() { return View(); } [HttpGet] public ActionResult AttendanceDetail() { return View(); } [HttpGet] public ActionResult AttendanceStatistic() { return View(); } [HttpGet] public ActionResult AttendanceList() { return View(); } [HttpGet] public ActionResult Leave() { return View(); } /// /// 课程表【教务】 /// /// [HttpGet] public ActionResult IndexInEducation() { return View(); } /// /// 课程表【教学调度】 /// /// [HttpGet] public ActionResult IndexInEducationSelect() { return View(); } /// /// 课程表--修改教师所带的课程【教务】 /// /// [HttpGet] public ActionResult IndexInEducationModify() { return View(); } /// /// 表单--修改教师所带的课程【教务】 /// /// [HttpGet] public ActionResult ModifyLessonForm() { return View(); } /// /// 获取表单数据 /// /// [HttpGet] [AjaxOnly] public ActionResult GetFormData() { var userInfo = LoginUserInfo.Get(); var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(userInfo.account); StuAttendanceLeaveEntity entity = new StuAttendanceLeaveEntity(); entity.ClassNo = stuInfo.ClassNo; entity.DeptNo = stuInfo.DeptNo; entity.Grade = stuInfo.Grade; entity.MajorNo = stuInfo.MajorNo; entity.StuNo = userInfo.account; entity.StuName = userInfo.realName; var jsonData = new { StuAttendanceLeave = entity, }; return Success(jsonData); } /// /// 获取相关课程考勤的学生信息 /// /// [HttpGet] [AjaxOnly] public ActionResult AttendanceStudents(string pagination, string queryJson, string lessonSortNo) { Pagination paginationobj = pagination.ToObject(); var data = new List(); if (lessonSortNo == "1")//必修课 { data = arrangeLessonTermIBLL.AttendanceStudents(paginationobj, queryJson).ToList(); } else if (lessonSortNo == "2")//选修课 { data = arrangeLessonTermOfElectiveIBLL.AttendanceStudents(paginationobj, queryJson).ToList(); } var jsonData = new { rows = data, total = paginationobj.total, page = paginationobj.page, records = paginationobj.records }; return Success(jsonData); } /// /// 提交课程考勤 /// /// [HttpPost] [AjaxOnly] public async Task AttendanceApply(string kqType, string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition) { var data = await stuAttendanceIBLL.AttendanceApply(kqType, lessonTime, lessonDate, classRoomNo, dataJson, attenScore, attenCondition); return Success(data); } /// /// 教师/学生课程表 /// /// [HttpGet] [AjaxOnly] public ActionResult GetData(string startTime, string endTime) { var userInfo = LoginUserInfo.Get(); //var startDate = startTime ?? Common.CalculateFirstDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd"); //var endDate = endTime ?? Common.CalculateLastDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd"); //开始时间 var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime); var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd"); var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd"); var semesterAndYear = Common.GetSemesterAndYear(startDate); var strAcademicYear = semesterAndYear.AcademicYearLong; var strSemester = semesterAndYear.Semester; var timeTableList = new List(); //课程表 var data = arrangeLessonTermIBLL.GetTimeTable(userInfo.account, userInfo.Description, startDate, endDate); timeTableList.AddRange(data); //选修课课程表 var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTable(userInfo.account, userInfo.Description, startDate, endDate); timeTableList.AddRange(dataOfElective); //var timeTables = data.ToList(); var timeTables = timeTableList.ToList(); var noDataResult = new { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "", teacherName = userInfo.realName }; if (!timeTables.Any()) { return JsonResult(noDataResult); } var formatDataa = from d in timeTables let tt = d.LessonTime.Substring(1) group d by tt into g orderby g.Key select new { time = g.Key, list = from e in timeTables let ee = e.LessonTime.Substring(1) where ee == g.Key select new { day = e.LessonTime.ToCharArray()[0], curriculum = string.IsNullOrEmpty(e.EnName) ? (e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName) : (e.LessonSortNo == "2" ? e.EnName + "[选修]" : e.EnName), lessonName = e.LessonName, teacher = e.EmpName, classRoom = e.ClassroomName.Trim(), academicyear = semesterAndYear.AcademicYearShort, semester = strSemester, lessonNo = e?.LessonNo, teachClassNo = e?.TeachClassNo, empno = e?.EmpNo, lessonTime = e.LessonTime, lessonDate = e.LessonDate.ToString("yyyy-MM-dd"), classRoomNo = e?.ClassRoomNo.Trim(), lessonSortNo = e.LessonSortNo, e.OLPEId, className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName } } ; var leaveList = stuAttendanceLeaveIBLL.GetList(); var formatData = timeTables.OrderBy(a => a.LessonTime.Substring(1)) .Select(a => new { time = a.LessonTime.Substring(1), list = timeTables.Where(b => b.LessonTime.Substring(1) == a.LessonTime.Substring(1)) .Select(b => new { day = b.LessonTime.ToCharArray()[0], curriculum = string.IsNullOrEmpty(b.EnName) ? (b.LessonSortNo == "2" ? b.LessonName + "[选修]" : b.LessonName) : (b.LessonSortNo == "2" ? b.EnName + "[选修]" : b.EnName), lessonName = b.LessonName, teacher = b.EmpName, classRoom = b.ClassroomName.Trim(), academicyear = semesterAndYear.AcademicYearShort, semester = strSemester, lessonNo = b?.LessonNo, teachClassNo = b?.TeachClassNo, empno = b?.EmpNo, lessonTime = b.LessonTime, lessonDate = b.LessonDate.ToString("yyyy-MM-dd"), classRoomNo = b?.ClassRoomNo.Trim(), lessonSortNo = b.LessonSortNo, b.OLPEId, className = string.IsNullOrEmpty(b.ClassName) ? "" : b.ClassName, leaveType = leaveList.Any(c => c.LessonNo == b.LessonNo && c.StuNo == userInfo.account && c.LessonDate == b.LessonDate && c.LessonTime == b.LessonTime) ? 1 : 0, checkType = leaveList.FirstOrDefault(c => c.LessonNo == b.LessonNo && c.StuNo == userInfo.account && c.LessonDate == b.LessonDate && c.LessonTime == b.LessonTime)?.IsCheck, }) }); //foreach (var item in formatData.list) //{ // if(leaveList.Any(a=>a.LessonNo==item.)) //} var result = new { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", teacherName = userInfo.realName, weekList = formatData }; return JsonResult(result); } /// /// 课程表【教务】 /// /// [HttpGet] [AjaxOnly] public ActionResult GetDataInEducation(string startTime, string endTime, string classNo, string empNo, string schoolId) { var userInfo = LoginUserInfo.Get(); //开始时间 var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime); var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd"); var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd"); var semesterAndYear = Common.GetSemesterAndYear(startDate); var strAcademicYear = semesterAndYear.AcademicYearLong; var strSemester = semesterAndYear.Semester; var timeTableList = new List(); //课程表 var data = arrangeLessonTermIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId); timeTableList.AddRange(data); //选修课课程表 var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId); timeTableList.AddRange(dataOfElective); var timeTables = timeTableList.ToList(); var noDataResult = new { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "" }; if (!timeTables.Any()) { return JsonResult(noDataResult); } var formatData = from d in timeTables let tt = d.LessonTime.Substring(1) group d by tt into g orderby g.Key select new { time = g.Key, list = from e in timeTables let ee = e.LessonTime.Substring(1) where ee == g.Key select new { day = e.LessonTime.ToCharArray()[0], curriculum = e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName, teacher = e?.EmpName, classRoom = string.IsNullOrEmpty(e.ClassroomName) ? "" : e.ClassroomName.Trim(), academicyear = semesterAndYear.AcademicYearShort, semester = strSemester, lessonNo = e?.LessonNo, teachClassNo = e?.TeachClassNo, empno = e?.EmpNo, lessonTime = e.LessonTime, lessonDate = e.LessonDate.ToString("yyyy-MM-dd"), classRoomNo = string.IsNullOrEmpty(e.ClassRoomNo) ? "" : e.ClassRoomNo.Trim(), lessonSortNo = e.LessonSortNo, e?.OLPEId, className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName } } ; var result = new { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = formatData }; return JsonResult(result); } /// /// 课程表【教务】 /// /// [HttpGet] [AjaxOnly] public ActionResult GetDataInEducationSelect(string startTime, string endTime, string classNo, string empNo, string schoolId) { var userInfo = LoginUserInfo.Get(); //开始时间 var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime); var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd"); var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd"); var semesterAndYear = Common.GetSemesterAndYear(startDate); var strAcademicYear = semesterAndYear.AcademicYearLong; var strSemester = semesterAndYear.Semester; var timeTableList = new List(); //课程表 var data = arrangeLessonTermIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId); timeTableList.AddRange(data); //选修课课程表 //var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId); //timeTableList.AddRange(dataOfElective); var timeTables = timeTableList.ToList(); var noDataResult = new { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "" }; if (!timeTables.Any()) { return JsonResult(noDataResult); } var formatData = from d in timeTables let tt = d.LessonTime.Substring(1) group d by tt into g orderby g.Key select new { time = g.Key, list = from e in timeTables let ee = e.LessonTime.Substring(1) where ee == g.Key select new { day = e.LessonTime.ToCharArray()[0], lessonTime = e.LessonTime, lessonDate = e.LessonDate.ToString("yyyy-MM-dd"), schooldId = e?.F_SchoolId, academicyear = semesterAndYear.AcademicYearShort, semester = strSemester, deptNo = e?.DeptNo, majorNo = e?.MajorNo, lessonNo = e?.LessonNo, curriculum = e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName, teachClassNo = e?.TeachClassNo, className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName, empno = e?.EmpNo, teacher = e?.EmpName, classRoomNo = string.IsNullOrEmpty(e.ClassRoomNo) ? "" : e.ClassRoomNo.Trim(), classRoom = string.IsNullOrEmpty(e.ClassroomName) ? "" : e.ClassroomName.Trim(), lessonSortNo = e.LessonSortNo } } ; var result = new { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = formatData }; return JsonResult(result); } /// /// 课程表【教务】--班级下拉框信息 /// /// [HttpGet] [AjaxOnly] public ActionResult GetClassData(string schoolId = "") { var data = arrangeLessonTermIBLL.GetClassData(schoolId); return Success(data); } /// /// 课程表【教务】--教师下拉框信息 /// /// [HttpGet] [AjaxOnly] public ActionResult GetTeacherData(string schoolId = "") { var data = arrangeLessonTermIBLL.GetTeacherData(schoolId); return Success(data); } /// /// 表单--修改教师所带的课程【教务】--课程下拉框信息 /// /// [HttpGet] [AjaxOnly] public ActionResult GetLessonData() { var lessonList = lessonInfoIBLL.GetAllLesson().OrderBy(x => x.LessonNo); var data = lessonList.Select(x => new { value = x.LessonId, text = x.LessonName + "(" + x.LessonNo + ")" }); return Success(data); } #endregion #region 保存数据 [HttpPost] [ValidateAntiForgeryToken] [AjaxOnly] public ActionResult SaveForm(string keyValue, string strEntity) { StuAttendanceLeaveEntity entity = strEntity.ToObject(); entity.TeachClassNo = entity.ClassNo; stuAttendanceLeaveIBLL.SaveEntity(keyValue, entity); return Success("保存成功!"); } /// /// 修改教师课程--保存 /// /// /// /// [HttpPost] [ValidateAntiForgeryToken] [AjaxOnly] public ActionResult SaveChangeTeacherLesson(string strEntity) { Edu_ChangeTeacherLessonEntity entity = strEntity.ToObject(); entity.CToTeacherId = entity.CFromTeacherId; entity.CToTeacherName = entity.CFromTeacherName; //获取目标课程 var lessonInfoEntity = lessonInfoIBLL.GetLessonInfoEntity(entity.CToLessonId); if (lessonInfoEntity == null) { return Fail("目标课程不存在!"); } entity.CToLessonId = lessonInfoEntity.LessonNo; entity.CToLessonName = lessonInfoEntity.LessonName; entity.CreateTime = DateTime.Now; if (entity.CFromLessonId == entity.CToLessonId) { return Fail("目标课程与原目标一致!"); } //修改排课、成绩录入相关表 edu_ChangeTeacherLessonIBLL.ModifyTableAboutTeacherLesson(entity); //新增Edu_ChangeTeacherLesson记录 edu_ChangeTeacherLessonIBLL.SaveEntity("", entity); return Success("保存成功!"); } /// /// 考勤统计 /// /// 分页参数 /// 查询参数 /// [HttpGet] [AjaxOnly] public ActionResult GetAttendanceStatisticPageList(string pagination, string queryJson) { Pagination paginationobj = pagination.ToObject(); var data = stuAttendanceIBLL.GetAttendanceStatisticPageList(paginationobj, queryJson); var jsonData = new { rows = data, total = paginationobj.total, page = paginationobj.page, records = paginationobj.records }; return Success(jsonData); } /// /// 全校学生课程考勤 /// /// 分页参数 /// 查询参数 /// [HttpGet] [AjaxOnly] public ActionResult GetAttendancePageList(string pagination, string queryJson) { Pagination paginationobj = pagination.ToObject(); var data = stuAttendanceIBLL.GetAttendancePageList(paginationobj, queryJson); var jsonData = new { rows = data, total = paginationobj.total, page = paginationobj.page, records = paginationobj.records }; return Success(jsonData); } #endregion } }