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.
 
 
 
 
 
 

413 lines
16 KiB

  1. using Learun.Util;
  2. using System.Data;
  3. using Learun.Application.TwoDevelopment.EducationalAdministration;
  4. using System.Web.Mvc;
  5. using System.Collections.Generic;
  6. using System.Threading.Tasks;
  7. using System;
  8. using System.Linq;
  9. namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
  10. {
  11. /// <summary>
  12. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  13. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  14. /// 创 建:超级管理员
  15. /// 日 期:2019-05-24 10:27
  16. /// 描 述:排考数据同步
  17. /// </summary>
  18. public class ArrangeExamTermController : MvcControllerBase
  19. {
  20. private ArrangeExamTermIBLL arrangeExamTermIBLL = new ArrangeExamTermBLL();
  21. private ArrangeExamStructureIBLL arrangeExamStructureIBLL = new ArrangeExamStructureBLL();
  22. private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
  23. private StuScoreIBLL stuScoreIBLL = new StuScoreBLL();
  24. #region 视图功能
  25. /// <summary>
  26. /// 主页面
  27. /// <summary>
  28. /// <returns></returns>
  29. [HttpGet]
  30. public ActionResult Index()
  31. {
  32. return View();
  33. }
  34. /// <summary>
  35. /// 表单页
  36. /// <summary>
  37. /// <returns></returns>
  38. [HttpGet]
  39. public ActionResult Form()
  40. {
  41. return View();
  42. }
  43. /// <summary>
  44. /// 考试表
  45. /// <summary>
  46. /// <returns></returns>
  47. [HttpGet]
  48. public ActionResult ExamIndex()
  49. {
  50. return View();
  51. }
  52. /// <summary>
  53. /// 考试安排表【教师工作管理】
  54. /// <summary>
  55. /// <returns></returns>
  56. [HttpGet]
  57. public ActionResult ExamIndexOfTeacher()
  58. {
  59. return View();
  60. }
  61. /// <summary>
  62. /// 考试安排表【学子在线】
  63. /// <summary>
  64. /// <returns></returns>
  65. [HttpGet]
  66. public ActionResult ExamIndexOfStudent()
  67. {
  68. return View();
  69. }
  70. #endregion
  71. #region 获取数据
  72. /// <summary>
  73. /// 获取页面显示列表数据
  74. /// <summary>
  75. /// <param name="queryJson">查询参数</param>
  76. /// <returns></returns>
  77. [HttpGet]
  78. [AjaxOnly]
  79. public ActionResult GetPageList(string pagination, string queryJson)
  80. {
  81. Pagination paginationobj = pagination.ToObject<Pagination>();
  82. var data = arrangeExamTermIBLL.GetPageList(paginationobj, queryJson);
  83. var jsonData = new
  84. {
  85. rows = data,
  86. total = paginationobj.total,
  87. page = paginationobj.page,
  88. records = paginationobj.records
  89. };
  90. return Success(jsonData);
  91. }
  92. /// <summary>
  93. /// 获取表单数据
  94. /// <summary>
  95. /// <returns></returns>
  96. [HttpGet]
  97. [AjaxOnly]
  98. public ActionResult GetFormData(string keyValue)
  99. {
  100. var ArrangeExamTermData = arrangeExamTermIBLL.GetArrangeExamTermEntity(keyValue);
  101. var jsonData = new
  102. {
  103. ArrangeExamTerm = ArrangeExamTermData,
  104. };
  105. return Success(jsonData);
  106. }
  107. #endregion
  108. #region 提交数据
  109. /// <summary>
  110. /// 删除实体数据
  111. /// <param name="keyValue">主键</param>
  112. /// <summary>
  113. /// <returns></returns>
  114. [HttpPost]
  115. [AjaxOnly]
  116. public ActionResult DeleteForm(string keyValue)
  117. {
  118. arrangeExamTermIBLL.DeleteEntity(keyValue);
  119. return Success("删除成功!");
  120. }
  121. /// <summary>
  122. /// 保存实体数据(新增、修改)
  123. /// <param name="keyValue">主键</param>
  124. /// <summary>
  125. /// <returns></returns>
  126. [HttpPost]
  127. [ValidateAntiForgeryToken]
  128. [AjaxOnly]
  129. public ActionResult SaveForm(string keyValue, string strEntity)
  130. {
  131. ArrangeExamTermEntity entity = strEntity.ToObject<ArrangeExamTermEntity>();
  132. arrangeExamTermIBLL.SaveEntity(keyValue, entity);
  133. return Success("保存成功!");
  134. }
  135. #endregion
  136. #region 扩展数据
  137. /// <summary>
  138. /// 排考数据同步
  139. /// </summary>
  140. /// <returns></returns>
  141. [HttpGet]
  142. [AjaxOnly]
  143. public async Task<ActionResult> AsyncArrangeExamDataNew(ArrangeLessonTermEntity entity)
  144. {
  145. var data = await arrangeExamTermIBLL.AsyncArrangeExamDataNew(entity);
  146. return Success(data);
  147. }
  148. [HttpGet]
  149. [AjaxOnly]
  150. public async Task<ActionResult> AsyncArrangeExamData()
  151. {
  152. var data = await arrangeExamTermIBLL.AsyncArrangeExamData();
  153. return Success(data);
  154. }
  155. /// <summary>
  156. /// 考试表
  157. /// </summary>
  158. /// <returns></returns>
  159. [HttpGet]
  160. [AjaxOnly]
  161. public ActionResult GetData(string startTime, string endTime, string classNo, string empNo)
  162. {
  163. var userInfo = LoginUserInfo.Get();
  164. //var startDate = startTime ?? Common.CalculateFirstDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd");
  165. //var endDate = endTime ?? Common.CalculateLastDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd");
  166. //开始时间
  167. var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
  168. var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
  169. var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
  170. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  171. var strAcademicYear = semesterAndYear.AcademicYearLong;
  172. var strSemester = semesterAndYear.Semester;
  173. //默认节次时间
  174. var sectionNum = 6;
  175. var sectionTimeArr = new string[6];
  176. //获取本学年本学期节次时间
  177. var arrangeExamTermEntity = arrangeExamTermIBLL.GetArrangeExamTermEntityByYear(semesterAndYear.AcademicYearShort, strSemester);
  178. if (arrangeExamTermEntity != null)
  179. {
  180. var structureId = arrangeExamTermEntity.StructureId;
  181. if (!string.IsNullOrEmpty(structureId))
  182. {
  183. var arrangeExamStructureEntity = arrangeExamStructureIBLL.GetArrangeExamStructureEntity(structureId);
  184. if (arrangeExamStructureEntity != null)
  185. {
  186. sectionNum = arrangeExamStructureEntity.MorningNum.Value + arrangeExamStructureEntity.AfternoonNum.Value + arrangeExamStructureEntity.NightNum.Value;
  187. if (!string.IsNullOrEmpty(arrangeExamStructureEntity.Time))
  188. {
  189. sectionTimeArr = arrangeExamStructureEntity.Time.Split(',');
  190. }
  191. }
  192. }
  193. }
  194. //获取考试数据
  195. var timeTables = arrangeExamTermIBLL.GetExamTable(startDate, endDate, classNo, empNo);
  196. var noDataResult = new
  197. { schoolName = "考试表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "", sectionNum = sectionNum, sectionTimeArr = sectionTimeArr };
  198. if (!timeTables.Any())
  199. {
  200. return JsonResult(noDataResult);
  201. }
  202. var formatData = from d in timeTables
  203. let tt = d.LessonTime.Substring(1)
  204. group d by tt into g
  205. orderby g.Key
  206. select new
  207. {
  208. time = g.Key,
  209. list = from e in timeTables
  210. let ee = e.LessonTime.Substring(1)
  211. where ee == g.Key
  212. select new
  213. {
  214. day = e.LessonTime.ToCharArray()[0],
  215. academicyear = semesterAndYear.AcademicYearShort,
  216. semester = strSemester,
  217. lessonNo = e?.LessonNo,
  218. curriculum = e.LessonName,
  219. lessonSortNo = e.LessonSortNo,
  220. lessonTime = e.LessonTime,
  221. lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
  222. empno = e?.EmpNo,
  223. teacher = e.EmpName,
  224. classNo = e?.TeachClassNo,
  225. className = e.ClassName,
  226. classRoomName = e.ClassroomName.Trim(),
  227. classRoomNo = e?.ClassRoomNo.Trim()
  228. }
  229. }
  230. ;
  231. var result = new
  232. { schoolName = "考试表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = formatData, sectionNum = sectionNum, sectionTimeArr = sectionTimeArr };
  233. return JsonResult(result);
  234. }
  235. /// <summary>
  236. /// 考试表【学子在线】
  237. /// </summary>
  238. /// <returns></returns>
  239. [HttpGet]
  240. [AjaxOnly]
  241. public ActionResult GetDataInStudent(string startTime, string endTime, string classNo, string empNo)
  242. {
  243. var userInfo = LoginUserInfo.Get();
  244. //获取学生所在班级
  245. var stuInfoBasicEntity = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(userInfo.account);
  246. if (stuInfoBasicEntity == null)
  247. {
  248. return Fail("学生不存在!");
  249. }
  250. //开始时间
  251. var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
  252. var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
  253. var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
  254. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  255. var strAcademicYear = semesterAndYear.AcademicYearLong;
  256. var strSemester = semesterAndYear.Semester;
  257. //默认节次时间
  258. var sectionNum = 6;
  259. var sectionTimeArr = new string[6];
  260. //获取本学年本学期节次时间
  261. var arrangeExamTermEntity = arrangeExamTermIBLL.GetArrangeExamTermEntityByYear(semesterAndYear.AcademicYearShort, strSemester);
  262. if (arrangeExamTermEntity != null)
  263. {
  264. var structureId = arrangeExamTermEntity.StructureId;
  265. if (!string.IsNullOrEmpty(structureId))
  266. {
  267. var arrangeExamStructureEntity = arrangeExamStructureIBLL.GetArrangeExamStructureEntity(structureId);
  268. if (arrangeExamStructureEntity != null)
  269. {
  270. sectionNum = arrangeExamStructureEntity.MorningNum.Value + arrangeExamStructureEntity.AfternoonNum.Value + arrangeExamStructureEntity.NightNum.Value;
  271. if (!string.IsNullOrEmpty(arrangeExamStructureEntity.Time))
  272. {
  273. sectionTimeArr = arrangeExamStructureEntity.Time.Split(',');
  274. }
  275. }
  276. }
  277. }
  278. var timeTables = new List<TimeTable>();
  279. //获取考试数据
  280. var timeTablesOfBixiu = arrangeExamTermIBLL.GetExamTable(startDate, endDate, stuInfoBasicEntity.ClassNo, "");
  281. timeTables.AddRange(timeTablesOfBixiu);
  282. //获取选修考试数据
  283. var timeTablesOfElective = arrangeExamTermIBLL.GetExamTableOfElectiveInStudent(startDate, endDate, userInfo.account);
  284. timeTables.AddRange(timeTablesOfElective);
  285. var noDataResult = new
  286. { schoolName = "考试表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "", sectionNum = sectionNum, sectionTimeArr = sectionTimeArr };
  287. if (!timeTables.Any())
  288. {
  289. return JsonResult(noDataResult);
  290. }
  291. var formatData = from d in timeTables
  292. let tt = d.LessonTime.Substring(1)
  293. group d by tt into g
  294. orderby g.Key
  295. select new
  296. {
  297. time = g.Key,
  298. list = from e in timeTables
  299. let ee = e.LessonTime.Substring(1)
  300. where ee == g.Key
  301. select new
  302. {
  303. day = e.LessonTime.ToCharArray()[0],
  304. academicyear = semesterAndYear.AcademicYearShort,
  305. semester = strSemester,
  306. lessonNo = e?.LessonNo,
  307. curriculum = e.LessonName,
  308. lessonSortNo = e.LessonSortNo,
  309. lessonTime = e.LessonTime,
  310. lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
  311. empno = e?.EmpNo,
  312. teacher = e.EmpName,
  313. classNo = e?.TeachClassNo,
  314. className = e.ClassName,
  315. classRoomName = e.ClassroomName.Trim(),
  316. classRoomNo = e?.ClassRoomNo.Trim()
  317. }
  318. }
  319. ;
  320. var result = new
  321. { schoolName = "考试表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = formatData, sectionNum = sectionNum, sectionTimeArr = sectionTimeArr };
  322. return JsonResult(result);
  323. }
  324. /// <summary>
  325. /// 考试表--班级下拉框信息
  326. /// </summary>
  327. /// <returns></returns>
  328. [HttpGet]
  329. [AjaxOnly]
  330. public ActionResult GetClassData()
  331. {
  332. var data = arrangeExamTermIBLL.GetClassData();
  333. return Success(data);
  334. }
  335. /// <summary>
  336. /// 考试表--教师下拉框信息
  337. /// </summary>
  338. /// <returns></returns>
  339. [HttpGet]
  340. [AjaxOnly]
  341. public ActionResult GetTeacherData()
  342. {
  343. var data = arrangeExamTermIBLL.GetTeacherData();
  344. return Success(data);
  345. }
  346. /// <summary>
  347. /// 获取一周的日期
  348. /// </summary>
  349. /// <returns></returns>
  350. [HttpGet]
  351. [AjaxOnly]
  352. public ActionResult GetWeekDate(string startTime)
  353. {
  354. var data = new List<string>();
  355. var monday = Common.CalculateFirstDateOfWeek(Convert.ToDateTime(startTime));
  356. for (int i = 0; i < 7; i++)
  357. {
  358. data.Add(monday.AddDays(i).ToDateString());
  359. }
  360. return Success(data);
  361. }
  362. #endregion
  363. /// <summary>
  364. /// 测试【移动端-学生成绩查询】
  365. /// </summary>
  366. /// <returns></returns>
  367. [HttpGet]
  368. [AjaxOnly]
  369. public ActionResult test()
  370. {
  371. var data = stuScoreIBLL.GetScoreListByStuNo("18-19","2","2018010101", "20180101");
  372. return Success(data);
  373. }
  374. }
  375. }