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.
 
 
 
 
 
 

320 lines
9.9 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;
  7. using System.Linq;
  8. using Newtonsoft.Json;
  9. namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
  10. {
  11. /// <summary>
  12. /// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架
  13. /// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司
  14. /// 创 建:超级管理员
  15. /// 日 期:2022-04-14 18:12
  16. /// 描 述:考试记录表
  17. /// </summary>
  18. public class Exam_ExamPlanController : MvcControllerBase
  19. {
  20. private Exam_ExamPlanIBLL exam_ExamPlanIBLL = new Exam_ExamPlanBLL();
  21. private Exam_ExamPlanLessonIBLL exam_ExamPlanLessonIBLL = new Exam_ExamPlanLessonBLL();
  22. private Exam_ExamPlanClassIBLL exam_ExamPlanClassIBLL = new Exam_ExamPlanClassBLL();
  23. #region 视图功能
  24. /// <summary>
  25. /// 主页面
  26. /// <summary>
  27. /// <returns></returns>
  28. [HttpGet]
  29. public ActionResult Index()
  30. {
  31. return View();
  32. }
  33. /// <summary>
  34. /// 表单页
  35. /// <summary>
  36. /// <returns></returns>
  37. [HttpGet]
  38. public ActionResult Form()
  39. {
  40. return View();
  41. }
  42. /// <summary>
  43. /// 表单页
  44. /// <summary>
  45. /// <returns></returns>
  46. [HttpGet]
  47. public ActionResult GenerateForm()
  48. {
  49. return View();
  50. }
  51. /// <summary>
  52. /// 表单页
  53. /// <summary>
  54. /// <returns></returns>
  55. [HttpGet]
  56. public ActionResult ClearForm()
  57. {
  58. return View();
  59. }
  60. /// <summary>
  61. /// 安排时间
  62. /// <summary>
  63. /// <returns></returns>
  64. [HttpGet]
  65. public ActionResult FormTime()
  66. {
  67. return View();
  68. }
  69. #endregion
  70. #region 获取数据
  71. /// <summary>
  72. /// 获取页面显示列表数据
  73. /// </summary>
  74. /// <param name="pagination">分页参数</param>
  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 = exam_ExamPlanIBLL.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. /// <param name="keyValue">主键</param>
  96. /// <returns></returns>
  97. [HttpGet]
  98. [AjaxOnly]
  99. public ActionResult GetFormData(string keyValue)
  100. {
  101. var Exam_ExamPlanData = exam_ExamPlanIBLL.GetExam_ExamPlanEntity(keyValue);
  102. var jsonData = new
  103. {
  104. Exam_ExamPlan = Exam_ExamPlanData,
  105. };
  106. return Success(jsonData);
  107. }
  108. /// <summary>
  109. /// 安排时间
  110. /// </summary>
  111. /// <param name="EPId"></param>
  112. /// <returns></returns>
  113. [HttpGet]
  114. [AjaxOnly]
  115. public ActionResult GetPlanTimeList(string EPId)
  116. {
  117. var data = exam_ExamPlanIBLL.GetPlanTimeList(EPId);
  118. return Success(data);
  119. }
  120. #endregion
  121. #region 提交数据
  122. /// <summary>
  123. /// 删除实体数据
  124. /// </summary>
  125. /// <param name="keyValue">主键</param>
  126. /// <returns></returns>
  127. [HttpPost]
  128. [AjaxOnly]
  129. public ActionResult DeleteForm(string keyValue)
  130. {
  131. exam_ExamPlanIBLL.DeleteEntity(keyValue);
  132. return Success("删除成功!");
  133. }
  134. /// <summary>
  135. /// 生成排考名单
  136. /// </summary>
  137. /// <param name="keyValue"></param>
  138. /// <returns></returns>
  139. [HttpPost]
  140. [AjaxOnly]
  141. public ActionResult Generate(string keyValue)
  142. {
  143. var data = exam_ExamPlanIBLL.GetPlanTimeList(keyValue);
  144. if (data.Count() <= 0)
  145. {
  146. return Fail("请先安排时间!");
  147. }
  148. if (!exam_ExamPlanIBLL.IsGenerate(keyValue))
  149. {
  150. return Fail("请先安排考试!");
  151. }
  152. exam_ExamPlanIBLL.Generate(keyValue);
  153. return Success("生成成功!");
  154. }
  155. /// <summary>
  156. /// 安排考试
  157. /// </summary>
  158. /// <param name="EPId"></param>
  159. /// <returns></returns>
  160. [HttpPost]
  161. [AjaxOnly]
  162. public ActionResult SavePlanTime(string EPId, List<Exam_ExamPlanTimeEntity> list)
  163. {
  164. if (list.Count <= 0)
  165. {
  166. return Fail("请安排时间!");
  167. }
  168. foreach (var entity in list)
  169. {
  170. DateTime time;
  171. if (!DateTime.TryParse(entity.ExamTimeStart, out time))
  172. {
  173. return Fail("开始时间格式不正确!");
  174. }
  175. if (!DateTime.TryParse(entity.ExamTimeEnd, out time))
  176. {
  177. return Fail("结束时间格式不正确!");
  178. }
  179. var startTime = Convert.ToDateTime(entity.ExamDate.Value.ToString("yyyy-MM-dd") + " " + entity.ExamTimeStart);
  180. var endTime = Convert.ToDateTime(entity.ExamDate.Value.ToString("yyyy-MM-dd") + " " + entity.ExamTimeEnd);
  181. if (endTime <= startTime)
  182. {
  183. return Fail("结束时间必须大于开始时间!");
  184. }
  185. //考试时长
  186. entity.ExamTimeLength = (endTime - startTime).TotalMinutes;
  187. }
  188. exam_ExamPlanIBLL.SavePlanTime(EPId, list);
  189. return Success("保存成功!");
  190. }
  191. /// <summary>
  192. /// 清除排考名单/清除所有排考记录
  193. /// </summary>
  194. /// <param name="keyValue">排考记录主表Id</param>
  195. /// <param name="type">1:清除排考名单;2:清除所有排考记录</param>
  196. /// <returns></returns>
  197. [HttpPost]
  198. [AjaxOnly]
  199. public ActionResult ClearGenerate(string keyValue, int type)
  200. {
  201. exam_ExamPlanIBLL.ClearGenerate(keyValue, type);
  202. return Success("操作成功!");
  203. }
  204. /// <summary>
  205. /// 保存实体数据(新增、修改)
  206. /// </summary>
  207. /// <param name="keyValue">主键</param>
  208. /// <param name="strEntity">实体</param>
  209. /// <returns></returns>
  210. [HttpPost]
  211. [ValidateAntiForgeryToken]
  212. [AjaxOnly]
  213. public ActionResult SaveForm(string keyValue, string strEntity)
  214. {
  215. Exam_ExamPlanEntity entity = strEntity.ToObject<Exam_ExamPlanEntity>();
  216. exam_ExamPlanIBLL.SaveEntity(keyValue, entity);
  217. if (string.IsNullOrEmpty(keyValue))
  218. {
  219. }
  220. return Success("保存成功!");
  221. }
  222. /// <summary>
  223. /// 生成排考名单
  224. /// </summary>
  225. /// <param name="AcademicYearNo"></param>
  226. /// <param name="Semester"></param>
  227. /// <param name="PlanType"></param>
  228. /// <returns></returns>
  229. [HttpPost]
  230. [ValidateAntiForgeryToken]
  231. [AjaxOnly]
  232. public ActionResult GenerateForm(string AcademicYearNo, string Semester, string PlanType)
  233. {
  234. int res = exam_ExamPlanIBLL.ClaerForm(AcademicYearNo, Semester, PlanType);
  235. return Success("清空(" + res + ")条数据成功!");
  236. }
  237. /// <summary>
  238. /// 清除排考名单
  239. /// </summary>
  240. /// <param name="AcademicYearNo"></param>
  241. /// <param name="Semester"></param>
  242. /// <param name="PlanType"></param>
  243. /// <returns></returns>
  244. [HttpPost]
  245. [ValidateAntiForgeryToken]
  246. [AjaxOnly]
  247. public ActionResult ClearForm(string AcademicYearNo, string Semester, string PlanType)
  248. {
  249. int res = exam_ExamPlanIBLL.GenerateForm(AcademicYearNo, Semester, PlanType);
  250. return Success("清空(" + res + ")条数据成功!");
  251. }
  252. /// <summary>
  253. /// 一键安排课程
  254. /// </summary>
  255. /// <param name="keyValue"></param>
  256. /// <returns></returns>
  257. [HttpPost]
  258. [AjaxOnly]
  259. public ActionResult PlanLessonByEPId(string keyValue)
  260. {
  261. exam_ExamPlanLessonIBLL.InitExamPlanLesson(keyValue);
  262. return Success("操作成功!");
  263. }
  264. /// <summary>
  265. /// 一键安排班级
  266. /// </summary>
  267. /// <param name="keyValue"></param>
  268. /// <returns></returns>
  269. [HttpPost]
  270. [AjaxOnly]
  271. public ActionResult PlanClassByEPId(string keyValue)
  272. {
  273. var count = exam_ExamPlanLessonIBLL.GetListByEPId(keyValue).Count();
  274. if (count <= 0)
  275. {
  276. return Fail("请先安排课程!");
  277. }
  278. exam_ExamPlanClassIBLL.PlanClassByEPId(keyValue);
  279. return Success("操作成功!");
  280. }
  281. /// <summary>
  282. /// 自动生成考试课程排考时间
  283. /// </summary>
  284. /// <param name="keyValue"></param>
  285. /// <returns></returns>
  286. [HttpPost]
  287. [AjaxOnly]
  288. public ActionResult PlanLessonTimeByEPId(string keyValue)
  289. {
  290. var count = exam_ExamPlanLessonIBLL.GetListByEPId(keyValue).Count();
  291. if (count <= 0)
  292. {
  293. return Fail("请先安排课程!");
  294. }
  295. exam_ExamPlanLessonIBLL.PlanLessonTimeByEPId(keyValue);
  296. return Success("操作成功!");
  297. }
  298. #endregion
  299. }
  300. }