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.
 
 
 
 
 
 

802 lines
33 KiB

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