You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TimeTableController.cs 30 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693
  1. using Learun.Util;
  2. using System.Data;
  3. using Learun.Application.TwoDevelopment.PersonnelManagement;
  4. using System.Web.Mvc;
  5. using System.Collections.Generic;
  6. using Learun.Application.TwoDevelopment.EducationalAdministration;
  7. using System;
  8. using System.Linq;
  9. using System.Threading.Tasks;
  10. using Newtonsoft.Json;
  11. namespace Learun.Application.Web.Areas.PersonnelManagement.Controllers
  12. {
  13. /// <summary>
  14. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  15. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  16. /// 创 建:超级管理员
  17. /// 日 期:2019-03-25 11:16
  18. /// 描 述:课程表
  19. /// </summary>
  20. public class TimeTableController : MvcControllerBase
  21. {
  22. private ArrangeLessonTermIBLL arrangeLessonTermIBLL = new ArrangeLessonTermBLL();
  23. private StuAttendanceIBLL stuAttendanceIBLL = new StuAttendanceBLL();
  24. private ArrangeLessonTermOfElectiveIBLL arrangeLessonTermOfElectiveIBLL = new ArrangeLessonTermOfElectiveBLL();
  25. private StuAttendanceLeaveIBLL stuAttendanceLeaveIBLL = new StuAttendanceLeaveBLL();
  26. private StuSelectLessonListOfElectiveIBLL stuSelectLessonList = new StuSelectLessonListOfElectiveBLL();
  27. private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
  28. private LessonInfoIBLL lessonInfoIBLL = new LessonInfoBLL();
  29. private Edu_ChangeTeacherLessonIBLL edu_ChangeTeacherLessonIBLL = new Edu_ChangeTeacherLessonBLL();
  30. #region 视图功能
  31. /// <summary>
  32. /// 主页面
  33. /// <summary>
  34. /// <returns></returns>
  35. [HttpGet]
  36. public ActionResult Index()
  37. {
  38. return View();
  39. }
  40. /// <summary>
  41. /// 考勤
  42. /// <summary>
  43. /// <returns></returns>
  44. [HttpGet]
  45. public ActionResult Attendance()
  46. {
  47. return View();
  48. }
  49. [HttpGet]
  50. public ActionResult AttendanceDetail()
  51. {
  52. return View();
  53. }
  54. [HttpGet]
  55. public ActionResult AttendanceStatistic()
  56. {
  57. return View();
  58. }
  59. [HttpGet]
  60. public ActionResult AttendanceList()
  61. {
  62. return View();
  63. }
  64. [HttpGet]
  65. public ActionResult Leave()
  66. {
  67. return View();
  68. }
  69. /// <summary>
  70. /// 课程表【教务】
  71. /// <summary>
  72. /// <returns></returns>
  73. [HttpGet]
  74. public ActionResult IndexInEducation()
  75. {
  76. return View();
  77. }
  78. /// <summary>
  79. /// 班级课程表【教务】
  80. /// <summary>
  81. /// <returns></returns>
  82. [HttpGet]
  83. public ActionResult ClassIndexInEducation()
  84. {
  85. return View();
  86. }
  87. /// <summary>
  88. /// 课程表【教学调度】
  89. /// <summary>
  90. /// <returns></returns>
  91. [HttpGet]
  92. public ActionResult IndexInEducationSelect()
  93. {
  94. return View();
  95. }
  96. /// <summary>
  97. /// 课程表【教学调度】--调课
  98. /// <summary>
  99. /// <returns></returns>
  100. [HttpGet]
  101. public ActionResult IndexInEducationSelect_()
  102. {
  103. return View();
  104. }
  105. /// <summary>
  106. /// 课程表--修改教师所带的课程【教务】
  107. /// <summary>
  108. /// <returns></returns>
  109. [HttpGet]
  110. public ActionResult IndexInEducationModify()
  111. {
  112. return View();
  113. }
  114. /// <summary>
  115. /// 表单--修改教师所带的课程【教务】
  116. /// <summary>
  117. /// <returns></returns>
  118. [HttpGet]
  119. public ActionResult ModifyLessonForm()
  120. {
  121. return View();
  122. }
  123. /// <summary>
  124. /// 表单--修改教师所带的课程【教务】
  125. /// <summary>
  126. /// <returns></returns>
  127. [HttpGet]
  128. public ActionResult SchoolLesson()
  129. {
  130. return View();
  131. }
  132. /// <summary>
  133. /// 表单--修改教师所带的课程【教务】
  134. /// <summary>
  135. /// <returns></returns>
  136. [HttpGet]
  137. public ActionResult PrintSchedule()
  138. {
  139. return View();
  140. }
  141. public class WeekDate
  142. {
  143. public int week { get; set; }
  144. public string startdate { get; set; }
  145. public string enddate { get; set; }
  146. public string textweek { get; set; }
  147. }
  148. [HttpGet]
  149. [AjaxOnly]
  150. public ActionResult GetWeeksData()
  151. {
  152. var weekdatelist = new List<WeekDate>();
  153. var yearsemester = Common.GetSemesterAndYear();
  154. var arrangelessonlist = arrangeLessonTermIBLL.GetListForTimeTable("{\"AcademicYearNo\":\"" + yearsemester.AcademicYearShort + "\",\"Semester\":\"" + yearsemester.Semester + "\"}").OrderBy(m => m.LessonDate);
  155. if (arrangelessonlist.Any())
  156. {
  157. var firstday = arrangelessonlist.First();
  158. var lastday = arrangelessonlist.Last();
  159. var monday = firstday.LessonDate.Value.AddDays(-Convert.ToInt32(firstday.LessonDate.Value.DayOfWeek) + 1);
  160. var sunday = lastday.LessonDate.Value.AddDays(7 - Convert.ToInt32(lastday.LessonDate.Value.DayOfWeek));
  161. //总周数
  162. var weekCount = Math.Ceiling(Convert.ToDouble((sunday - monday).Days+1) / 7);
  163. for (var i = 0; i < weekCount; i++)
  164. {
  165. var wentity = new WeekDate();
  166. wentity.week = i + 1;
  167. wentity.startdate = monday.AddDays(i * 7).ToString("yyyy-MM-dd");
  168. wentity.enddate = monday.AddDays(i * 7+6).ToString("yyyy-MM-dd");
  169. wentity.textweek = "第" + wentity.week + "周 (" + wentity.startdate + "~" + wentity.enddate + ")";
  170. weekdatelist.Add(wentity);
  171. }
  172. return Success(weekdatelist);
  173. }
  174. else
  175. return Success(new { });
  176. }
  177. /// <summary>
  178. /// 获取当前日期是第几周
  179. /// </summary>
  180. /// <returns></returns>
  181. [HttpGet]
  182. [AjaxOnly]
  183. public ActionResult GetCurrentWeek()
  184. {
  185. var yearsemester = Common.GetSemesterAndYear();
  186. var arrangelessonlist = arrangeLessonTermIBLL.GetListForTimeTable("{\"AcademicYearNo\":\"" + yearsemester.AcademicYearShort + "\",\"Semester\":\"" + yearsemester.Semester + "\"}").OrderBy(m => m.LessonDate);
  187. if (arrangelessonlist.Any())
  188. {
  189. var firstday = arrangelessonlist.First();
  190. var lastday = arrangelessonlist.Last();
  191. var monday = firstday.LessonDate.Value.AddDays(-(Convert.ToInt32(firstday.LessonDate.Value.DayOfWeek) == 0 ? 7 : Convert.ToInt32(firstday.LessonDate.Value.DayOfWeek)) + 1);
  192. var sunday = lastday.LessonDate.Value.AddDays(7 - (Convert.ToInt32(lastday.LessonDate.Value.DayOfWeek) == 0 ? 7 : Convert.ToInt32(lastday.LessonDate.Value.DayOfWeek)));
  193. var currentweek = Util.Time.GetWeekOfDay(monday, sunday);
  194. return Success(currentweek);
  195. }
  196. return Success(1);
  197. }
  198. /// <summary>
  199. /// 获取表单数据
  200. /// <summary>
  201. /// <returns></returns>
  202. [HttpGet]
  203. [AjaxOnly]
  204. public ActionResult GetFormData()
  205. {
  206. var userInfo = LoginUserInfo.Get();
  207. var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(userInfo.account);
  208. StuAttendanceLeaveEntity entity = new StuAttendanceLeaveEntity();
  209. entity.ClassNo = stuInfo.ClassNo;
  210. entity.DeptNo = stuInfo.DeptNo;
  211. entity.Grade = stuInfo.Grade;
  212. entity.MajorNo = stuInfo.MajorNo;
  213. entity.StuNo = userInfo.account;
  214. entity.StuName = userInfo.realName;
  215. var jsonData = new
  216. {
  217. StuAttendanceLeave = entity,
  218. };
  219. return Success(jsonData);
  220. }
  221. /// <summary>
  222. /// 获取相关课程考勤的学生信息
  223. /// </summary>
  224. /// <returns></returns>
  225. [HttpGet]
  226. [AjaxOnly]
  227. public ActionResult AttendanceStudents(string pagination, string queryJson, string lessonSortNo)
  228. {
  229. Pagination paginationobj = pagination.ToObject<Pagination>();
  230. var data = new List<StuSelectLessonListEntity>();
  231. if (lessonSortNo == "1")//必修课
  232. {
  233. data = arrangeLessonTermIBLL.AttendanceStudents(paginationobj, queryJson).ToList();
  234. }
  235. else if (lessonSortNo == "2")//选修课
  236. {
  237. data = arrangeLessonTermOfElectiveIBLL.AttendanceStudents(paginationobj, queryJson).ToList();
  238. }
  239. var jsonData = new
  240. {
  241. rows = data,
  242. total = paginationobj.total,
  243. page = paginationobj.page,
  244. records = paginationobj.records
  245. };
  246. return Success(jsonData);
  247. }
  248. /// <summary>
  249. /// 提交课程考勤
  250. /// </summary>
  251. /// <returns></returns>
  252. [HttpPost]
  253. [AjaxOnly]
  254. public async Task<ActionResult> AttendanceApply(string kqType, string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition)
  255. {
  256. var data = await stuAttendanceIBLL.AttendanceApply(kqType, lessonTime, lessonDate, classRoomNo, dataJson, attenScore, attenCondition);
  257. return Success(data);
  258. }
  259. /// <summary>
  260. /// 教师/学生课程表
  261. /// </summary>
  262. /// <returns></returns>
  263. [HttpGet]
  264. [AjaxOnly]
  265. public ActionResult GetData(string startTime, string endTime)
  266. {
  267. var userInfo = LoginUserInfo.Get();
  268. //var startDate = startTime ?? Common.CalculateFirstDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd");
  269. //var endDate = endTime ?? Common.CalculateLastDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd");
  270. //开始时间
  271. var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
  272. var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
  273. var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
  274. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  275. var strAcademicYear = semesterAndYear.AcademicYearLong;
  276. var strSemester = semesterAndYear.Semester;
  277. var timeTableList = new List<TimeTable>();
  278. //课程表
  279. var data = arrangeLessonTermIBLL.GetTimeTable(userInfo.account, userInfo.Description, startDate, endDate);
  280. timeTableList.AddRange(data);
  281. //选修课课程表
  282. var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTable(userInfo.account, userInfo.Description, startDate, endDate);
  283. timeTableList.AddRange(dataOfElective);
  284. //var timeTables = data.ToList();
  285. var timeTables = timeTableList.ToList();
  286. var noDataResult = new
  287. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "", teacherName = userInfo.realName };
  288. if (!timeTables.Any())
  289. {
  290. return JsonResult(noDataResult);
  291. }
  292. var leaveList = stuAttendanceLeaveIBLL.GetList();
  293. var formatData = from d in timeTables
  294. let tt = d.LessonTime.Substring(1)
  295. group d by tt into g
  296. orderby g.Key
  297. select new
  298. {
  299. time = g.Key,
  300. list = from e in timeTables
  301. let ee = e.LessonTime.Substring(1)
  302. where ee == g.Key
  303. select new
  304. {
  305. day = e.LessonTime.ToCharArray()[0],
  306. curriculum = string.IsNullOrEmpty(e.EnName) ? (e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName) : (e.LessonSortNo == "2" ? e.EnName + "[选修]" : e.EnName),
  307. lessonName = e.LessonName,
  308. teacher = e.EmpName,
  309. classRoom = e?.ClassroomName?.Trim(),
  310. academicyear = semesterAndYear.AcademicYearShort,
  311. semester = strSemester,
  312. lessonNo = e?.LessonNo,
  313. teachClassNo = e?.TeachClassNo,
  314. empno = e?.EmpNo,
  315. lessonTime = e.LessonTime,
  316. lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
  317. classRoomNo = e?.ClassRoomNo?.Trim(),
  318. lessonSortNo = e.LessonSortNo,
  319. e.OLPEId,
  320. className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName,
  321. leaveType = leaveList.Any(c => c.LessonNo == e.LessonNo && c.StuNo == userInfo.account && c.LessonDate == e.LessonDate && c.LessonTime == e.LessonTime) ? 1 : 0,
  322. checkType = leaveList.FirstOrDefault(c => c.LessonNo == e.LessonNo && c.StuNo == userInfo.account && c.LessonDate == e.LessonDate && c.LessonTime == e.LessonTime)?.IsCheck,
  323. }
  324. }
  325. ;
  326. // var leaveList = stuAttendanceLeaveIBLL.GetList();
  327. //var formatData = timeTables.OrderBy(a => a.LessonTime.Substring(1))
  328. // .Select(a => new
  329. // {
  330. // time = a.LessonTime.Substring(1),
  331. // list = timeTables.Where(b => b.LessonTime.Substring(1) == a.LessonTime.Substring(1))
  332. // .Select(b => new
  333. // {
  334. // day = b.LessonTime.ToCharArray()[0],
  335. // curriculum = string.IsNullOrEmpty(b.EnName) ? (b.LessonSortNo == "2" ? b.LessonName + "[选修]" : b.LessonName) : (b.LessonSortNo == "2" ? b.EnName + "[选修]" : b.EnName),
  336. // lessonName = b.LessonName,
  337. // teacher = b.EmpName,
  338. // classRoom = b.ClassroomName.Trim(),
  339. // academicyear = semesterAndYear.AcademicYearShort,
  340. // semester = strSemester,
  341. // lessonNo = b?.LessonNo,
  342. // teachClassNo = b?.TeachClassNo,
  343. // empno = b?.EmpNo,
  344. // lessonTime = b.LessonTime,
  345. // lessonDate = b.LessonDate.ToString("yyyy-MM-dd"),
  346. // classRoomNo = b?.ClassRoomNo.Trim(),
  347. // lessonSortNo = b.LessonSortNo,
  348. // b.OLPEId,
  349. // className = string.IsNullOrEmpty(b.ClassName) ? "" : b.ClassName,
  350. // leaveType = leaveList.Any(c => c.LessonNo == b.LessonNo && c.StuNo == userInfo.account && c.LessonDate == b.LessonDate && c.LessonTime == b.LessonTime) ? 1 : 0,
  351. // checkType = leaveList.FirstOrDefault(c => c.LessonNo == b.LessonNo && c.StuNo == userInfo.account && c.LessonDate == b.LessonDate && c.LessonTime == b.LessonTime)?.IsCheck,
  352. // })
  353. // });
  354. //foreach (var item in formatData.list)
  355. //{
  356. // if(leaveList.Any(a=>a.LessonNo==item.))
  357. //}
  358. var result = new
  359. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", teacherName = userInfo.realName, weekList = formatData };
  360. return JsonResult(result);
  361. }
  362. /// <summary>
  363. /// 课程表【教务】
  364. /// </summary>
  365. /// <returns></returns>
  366. [HttpGet]
  367. [AjaxOnly]
  368. public ActionResult GetDataInEducation(string startTime, string endTime, string classNo, string empNo, string schoolId, string classroomNo)
  369. {
  370. var userInfo = LoginUserInfo.Get();
  371. //开始时间
  372. var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
  373. var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
  374. var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
  375. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  376. var strAcademicYear = semesterAndYear.AcademicYearLong;
  377. var strSemester = semesterAndYear.Semester;
  378. var timeTableList = new List<TimeTable>();
  379. //课程表
  380. var data = arrangeLessonTermIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId, classroomNo);
  381. timeTableList.AddRange(data);
  382. //选修课课程表
  383. //20220718因 更改教务课表显示格式为班级作为列头,选修课无班级所以不能显示在课表内
  384. //var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
  385. //timeTableList.AddRange(dataOfElective);
  386. var timeTables = timeTableList.ToList();
  387. var noDataResult = new
  388. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "" };
  389. if (!timeTables.Any())
  390. {
  391. return JsonResult(noDataResult);
  392. }
  393. //最大节次
  394. int maxlessontime = timeTables.Max(m => Convert.ToInt32(m.LessonTime.Substring(1)));
  395. //班级列表
  396. var classinfolist = timeTables.Select(m => new { m.TeachClassNo, m.ClassName }).OrderBy(m => m.TeachClassNo).GroupBy(m => new { m.TeachClassNo, m.ClassName });
  397. var formatData = from d in timeTables
  398. let tt = d.LessonTime.Substring(1)
  399. group d by tt into g
  400. orderby g.Key
  401. select new
  402. {
  403. time = g.Key,
  404. list = from e in timeTables
  405. let ee = e.LessonTime.Substring(1)
  406. where ee == g.Key
  407. select new
  408. {
  409. day = e.LessonTime.ToCharArray()[0],
  410. curriculum = e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName,
  411. teacher = e?.EmpName,
  412. classRoom = string.IsNullOrEmpty(e.ClassroomName) ? "" : e.ClassroomName.Trim(),
  413. academicyear = semesterAndYear.AcademicYearShort,
  414. semester = strSemester,
  415. lessonNo = e?.LessonNo,
  416. teachClassNo = e?.TeachClassNo,
  417. empno = e?.EmpNo,
  418. lessonTime = e.LessonTime,
  419. lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
  420. classRoomNo = string.IsNullOrEmpty(e.ClassRoomNo) ? "" : e.ClassRoomNo.Trim(),
  421. lessonSortNo = e.LessonSortNo,
  422. e?.OLPEId,
  423. className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName
  424. }
  425. }
  426. ;
  427. var result = new
  428. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", maxlessontime, classinfolist, weekList = formatData };
  429. return JsonResult(result);
  430. }
  431. /// <summary>
  432. /// 课程表【教务】
  433. /// </summary>
  434. /// <returns></returns>
  435. [HttpGet]
  436. [AjaxOnly]
  437. public ActionResult GetDataInEducationSelect(string startTime, string endTime, string classNo, string empNo, string schoolId)
  438. {
  439. var userInfo = LoginUserInfo.Get();
  440. //开始时间
  441. var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
  442. var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
  443. var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
  444. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  445. var strAcademicYear = semesterAndYear.AcademicYearLong;
  446. var strSemester = semesterAndYear.Semester;
  447. var timeTableList = new List<TimeTable>();
  448. //课程表
  449. var data = arrangeLessonTermIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId, "");
  450. timeTableList.AddRange(data);
  451. //选修课课程表
  452. //var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
  453. //timeTableList.AddRange(dataOfElective);
  454. var timeTables = timeTableList.ToList();
  455. var noDataResult = new
  456. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "" };
  457. if (!timeTables.Any())
  458. {
  459. return JsonResult(noDataResult);
  460. }
  461. var formatData = from d in timeTables
  462. let tt = d.LessonTime.Substring(1)
  463. group d by tt into g
  464. orderby g.Key
  465. select new
  466. {
  467. time = g.Key,
  468. list = from e in timeTables
  469. let ee = e.LessonTime.Substring(1)
  470. where ee == g.Key
  471. select new
  472. {
  473. AltId=e.AltId,
  474. day = e.LessonTime.ToCharArray()[0],
  475. lessonTime = e.LessonTime,
  476. lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
  477. schooldId = e?.F_SchoolId,
  478. academicyear = semesterAndYear.AcademicYearShort,
  479. semester = strSemester,
  480. deptNo = e?.DeptNo,
  481. deptname="",
  482. majorNo = e?.MajorNo,
  483. lessonNo = e?.LessonNo,
  484. curriculum = e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName,
  485. teachClassNo = e?.TeachClassNo,
  486. className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName,
  487. empno = e?.EmpNo,
  488. teacher = e?.EmpName,
  489. classRoomNo = string.IsNullOrEmpty(e.ClassRoomNo) ? "" : e.ClassRoomNo.Trim(),
  490. classRoom = string.IsNullOrEmpty(e.ClassroomName) ? "" : e.ClassroomName.Trim(),
  491. lessonSortNo = e.LessonSortNo
  492. }
  493. }
  494. ;
  495. var result = new
  496. { schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = formatData };
  497. return JsonResult(result);
  498. }
  499. /// <summary>
  500. /// 课程表【教务】--班级下拉框信息
  501. /// </summary>
  502. /// <returns></returns>
  503. [HttpGet]
  504. [AjaxOnly]
  505. public ActionResult GetClassData(string schoolId = "")
  506. {
  507. var data = arrangeLessonTermIBLL.GetClassData(schoolId);
  508. return Success(data);
  509. }
  510. /// <summary>
  511. /// 课程表【教务】--教师下拉框信息
  512. /// </summary>
  513. /// <returns></returns>
  514. [HttpGet]
  515. [AjaxOnly]
  516. public ActionResult GetTeacherData(string schoolId = "")
  517. {
  518. var data = arrangeLessonTermIBLL.GetTeacherData(schoolId);
  519. return Success(data);
  520. }
  521. /// <summary>
  522. /// 课程表【教务】--教室下拉框信息
  523. /// </summary>
  524. /// <returns></returns>
  525. [HttpGet]
  526. [AjaxOnly]
  527. public ActionResult GetClassroomData(string schoolId = "")
  528. {
  529. var data = arrangeLessonTermIBLL.GetClassroomData(schoolId);
  530. return Success(data);
  531. }
  532. /// <summary>
  533. /// 表单--修改教师所带的课程【教务】--课程下拉框信息
  534. /// </summary>
  535. /// <returns></returns>
  536. [HttpGet]
  537. [AjaxOnly]
  538. public ActionResult GetLessonData()
  539. {
  540. var lessonList = lessonInfoIBLL.GetAllLesson().OrderBy(x => x.LessonNo);
  541. var data = lessonList.Select(x => new { value = x.LessonId, text = x.LessonName + "(" + x.LessonNo + ")" });
  542. return Success(data);
  543. }
  544. #endregion
  545. #region 保存数据
  546. [HttpPost]
  547. [ValidateAntiForgeryToken]
  548. [AjaxOnly]
  549. public ActionResult SaveForm(string keyValue, string strEntity)
  550. {
  551. StuAttendanceLeaveEntity entity = strEntity.ToObject<StuAttendanceLeaveEntity>();
  552. entity.TeachClassNo = entity.ClassNo;
  553. stuAttendanceLeaveIBLL.SaveEntity(keyValue, entity);
  554. return Success("保存成功!");
  555. }
  556. /// <summary>
  557. /// 修改教师课程--保存
  558. /// </summary>
  559. /// <param name="keyValue"></param>
  560. /// <param name="strEntity"></param>
  561. /// <returns></returns>
  562. [HttpPost]
  563. [ValidateAntiForgeryToken]
  564. [AjaxOnly]
  565. public ActionResult SaveChangeTeacherLesson(string strEntity)
  566. {
  567. Edu_ChangeTeacherLessonEntity entity = strEntity.ToObject<Edu_ChangeTeacherLessonEntity>();
  568. entity.CToTeacherId = entity.CFromTeacherId;
  569. entity.CToTeacherName = entity.CFromTeacherName;
  570. //获取目标课程
  571. var lessonInfoEntity = lessonInfoIBLL.GetLessonInfoEntity(entity.CToLessonId);
  572. if (lessonInfoEntity == null)
  573. {
  574. return Fail("目标课程不存在!");
  575. }
  576. entity.CToLessonId = lessonInfoEntity.LessonNo;
  577. entity.CToLessonName = lessonInfoEntity.LessonName;
  578. entity.CreateTime = DateTime.Now;
  579. if (entity.CFromLessonId == entity.CToLessonId)
  580. {
  581. return Fail("目标课程与原目标一致!");
  582. }
  583. //修改排课、成绩录入相关表
  584. edu_ChangeTeacherLessonIBLL.ModifyTableAboutTeacherLesson(entity);
  585. //新增Edu_ChangeTeacherLesson记录
  586. edu_ChangeTeacherLessonIBLL.SaveEntity("", entity);
  587. return Success("保存成功!");
  588. }
  589. /// <summary>
  590. /// 考勤统计
  591. /// <summary>
  592. /// <param name="pagination">分页参数</param>
  593. /// <param name="queryJson">查询参数</param>
  594. /// <returns></returns>
  595. [HttpGet]
  596. [AjaxOnly]
  597. public ActionResult GetAttendanceStatisticPageList(string pagination, string queryJson)
  598. {
  599. Pagination paginationobj = pagination.ToObject<Pagination>();
  600. var data = stuAttendanceIBLL.GetAttendanceStatisticPageList(paginationobj, queryJson);
  601. var jsonData = new
  602. {
  603. rows = data,
  604. total = paginationobj.total,
  605. page = paginationobj.page,
  606. records = paginationobj.records
  607. };
  608. return Success(jsonData);
  609. }
  610. /// <summary>
  611. /// 全校学生课程考勤
  612. /// <summary>
  613. /// <param name="pagination">分页参数</param>
  614. /// <param name="queryJson">查询参数</param>
  615. /// <returns></returns>
  616. [HttpGet]
  617. [AjaxOnly]
  618. public ActionResult GetAttendancePageList(string pagination, string queryJson)
  619. {
  620. Pagination paginationobj = pagination.ToObject<Pagination>();
  621. var data = stuAttendanceIBLL.GetAttendancePageList(paginationobj, queryJson);
  622. var jsonData = new
  623. {
  624. rows = data,
  625. total = paginationobj.total,
  626. page = paginationobj.page,
  627. records = paginationobj.records
  628. };
  629. return Success(jsonData);
  630. }
  631. #endregion
  632. }
  633. }