|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573 |
- 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
- {
- /// <summary>
- /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
- /// Copyright (c) 2013-2018 北京泉江科技有限公司
- /// 创 建:超级管理员
- /// 日 期:2019-03-25 11:16
- /// 描 述:课程表
- /// </summary>
- 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 视图功能
-
- /// <summary>
- /// 主页面
- /// <summary>
- /// <returns></returns>
- [HttpGet]
- public ActionResult Index()
- {
- return View();
- }
-
- /// <summary>
- /// 考勤
- /// <summary>
- /// <returns></returns>
- [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();
- }
-
-
- /// <summary>
- /// 课程表【教务】
- /// <summary>
- /// <returns></returns>
- [HttpGet]
- public ActionResult IndexInEducation()
- {
- return View();
- }
- /// <summary>
- /// 课程表【教学调度】
- /// <summary>
- /// <returns></returns>
- [HttpGet]
- public ActionResult IndexInEducationSelect()
- {
- return View();
- }
-
- /// <summary>
- /// 课程表--修改教师所带的课程【教务】
- /// <summary>
- /// <returns></returns>
- [HttpGet]
- public ActionResult IndexInEducationModify()
- {
- return View();
- }
- /// <summary>
- /// 表单--修改教师所带的课程【教务】
- /// <summary>
- /// <returns></returns>
- [HttpGet]
- public ActionResult ModifyLessonForm()
- {
- return View();
- }
-
- /// <summary>
- /// 获取表单数据
- /// <summary>
- /// <returns></returns>
- [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);
- }
-
- /// <summary>
- /// 获取相关课程考勤的学生信息
- /// </summary>
- /// <returns></returns>
- [HttpGet]
- [AjaxOnly]
- public ActionResult AttendanceStudents(string pagination, string queryJson, string lessonSortNo)
- {
- Pagination paginationobj = pagination.ToObject<Pagination>();
- var data = new List<StuSelectLessonListEntity>();
- 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);
- }
-
- /// <summary>
- /// 提交课程考勤
- /// </summary>
- /// <returns></returns>
- [HttpPost]
- [AjaxOnly]
- public async Task<ActionResult> 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);
- }
-
- /// <summary>
- /// 教师/学生课程表
- /// </summary>
- /// <returns></returns>
- [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<TimeTable>();
- //课程表
- 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);
- }
-
- /// <summary>
- /// 课程表【教务】
- /// </summary>
- /// <returns></returns>
- [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<TimeTable>();
- //课程表
- 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);
- }
-
- /// <summary>
- /// 课程表【教务】
- /// </summary>
- /// <returns></returns>
- [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<TimeTable>();
- //课程表
- 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);
- }
-
- /// <summary>
- /// 课程表【教务】--班级下拉框信息
- /// </summary>
- /// <returns></returns>
- [HttpGet]
- [AjaxOnly]
- public ActionResult GetClassData(string schoolId = "")
- {
- var data = arrangeLessonTermIBLL.GetClassData(schoolId);
-
- return Success(data);
- }
-
- /// <summary>
- /// 课程表【教务】--教师下拉框信息
- /// </summary>
- /// <returns></returns>
- [HttpGet]
- [AjaxOnly]
- public ActionResult GetTeacherData(string schoolId = "")
- {
- var data = arrangeLessonTermIBLL.GetTeacherData(schoolId);
-
- return Success(data);
- }
-
- /// <summary>
- /// 表单--修改教师所带的课程【教务】--课程下拉框信息
- /// </summary>
- /// <returns></returns>
- [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<StuAttendanceLeaveEntity>();
- entity.TeachClassNo = entity.ClassNo;
- stuAttendanceLeaveIBLL.SaveEntity(keyValue, entity);
- return Success("保存成功!");
- }
-
- /// <summary>
- /// 修改教师课程--保存
- /// </summary>
- /// <param name="keyValue"></param>
- /// <param name="strEntity"></param>
- /// <returns></returns>
- [HttpPost]
- [ValidateAntiForgeryToken]
- [AjaxOnly]
- public ActionResult SaveChangeTeacherLesson(string strEntity)
- {
- Edu_ChangeTeacherLessonEntity entity = strEntity.ToObject<Edu_ChangeTeacherLessonEntity>();
- 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("保存成功!");
- }
-
-
- /// <summary>
- /// 考勤统计
- /// <summary>
- /// <param name="pagination">分页参数</param>
- /// <param name="queryJson">查询参数</param>
- /// <returns></returns>
- [HttpGet]
- [AjaxOnly]
- public ActionResult GetAttendanceStatisticPageList(string pagination, string queryJson)
- {
- Pagination paginationobj = pagination.ToObject<Pagination>();
- var data = stuAttendanceIBLL.GetAttendanceStatisticPageList(paginationobj, queryJson);
- var jsonData = new
- {
- rows = data,
- total = paginationobj.total,
- page = paginationobj.page,
- records = paginationobj.records
- };
- return Success(jsonData);
- }
-
- /// <summary>
- /// 全校学生课程考勤
- /// <summary>
- /// <param name="pagination">分页参数</param>
- /// <param name="queryJson">查询参数</param>
- /// <returns></returns>
- [HttpGet]
- [AjaxOnly]
- public ActionResult GetAttendancePageList(string pagination, string queryJson)
- {
- Pagination paginationobj = pagination.ToObject<Pagination>();
- var data = stuAttendanceIBLL.GetAttendancePageList(paginationobj, queryJson);
- var jsonData = new
- {
- rows = data,
- total = paginationobj.total,
- page = paginationobj.page,
- records = paginationobj.records
- };
- return Success(jsonData);
- }
-
- #endregion
-
-
- }
- }
|