Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 
 

507 рядки
16 KiB

  1. using System;
  2. using Learun.Util;
  3. using System.Data;
  4. using Learun.Application.TwoDevelopment.EducationalAdministration;
  5. using System.Web.Mvc;
  6. using System.Collections.Generic;
  7. using System.IO;
  8. using System.Linq;
  9. using Learun.Application.Base.SystemModule;
  10. using static Learun.Application.TwoDevelopment.EducationalAdministration.StuInfoBasicEntity;
  11. namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
  12. {
  13. /// <summary>
  14. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  15. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  16. /// 创 建:超级管理员
  17. /// 日 期:2019-02-21 16:53
  18. /// 描 述:学生学籍
  19. /// </summary>
  20. public class StuInfoBasicController : MvcControllerBase
  21. {
  22. private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
  23. private ArrangeLessonSyncIBLL arrangeLessonSyncIBLL = new ArrangeLessonSyncBLL();
  24. private AnnexesFileIBLL annexesFileIbll = new AnnexesFileBLL();
  25. private StuEncourgementIBLL stuEncourgementIBLL = new StuEncourgementBLL();
  26. private StuPunishmentIBLL stuPunishmentIBLL = new StuPunishmentBLL();
  27. private StuScoreIBLL stuScoreIBLL = new StuScoreBLL();
  28. #region 视图功能
  29. /// <summary>
  30. /// 主页面
  31. /// <summary>
  32. /// <returns></returns>
  33. [HttpGet]
  34. public ActionResult Index()
  35. {
  36. return View();
  37. }
  38. /// <summary>
  39. /// 主页面【大厂】
  40. /// <summary>
  41. /// <returns></returns>
  42. [HttpGet]
  43. public ActionResult IndexOfDC()
  44. {
  45. return View();
  46. }
  47. /// <summary>
  48. /// 表单页
  49. /// <summary>
  50. /// <returns></returns>
  51. [HttpGet]
  52. public ActionResult Form()
  53. {
  54. return View();
  55. }
  56. /// <summary>
  57. /// 表单页【大厂】
  58. /// <summary>
  59. /// <returns></returns>
  60. [HttpGet]
  61. public ActionResult FormOfDC()
  62. {
  63. return View();
  64. }
  65. [HttpGet]
  66. public ActionResult FormView()
  67. {
  68. return View();
  69. }
  70. [HttpGet]
  71. public ActionResult MyClass()
  72. {
  73. return View();
  74. }
  75. [HttpGet]
  76. public ActionResult CreateGraduateNo()
  77. {
  78. return View();
  79. }
  80. [HttpGet]
  81. public ActionResult Graduate()
  82. {
  83. return View();
  84. }
  85. [HttpGet]
  86. public ActionResult CreateGraduateNoForm()
  87. {
  88. return View();
  89. }
  90. /// <summary>
  91. /// 学生列表【班级信息管理】
  92. /// <summary>
  93. /// <returns></returns>
  94. [HttpGet]
  95. public ActionResult IndexInClass()
  96. {
  97. return View();
  98. }
  99. /// <summary>
  100. /// 打印
  101. /// <summary>
  102. /// <returns></returns>
  103. [HttpGet]
  104. public ActionResult Print(string keyValue)
  105. {
  106. var stuInfoBasicEntity = stuInfoBasicIBLL.GetStuInfoBasicEntity(keyValue);
  107. if (stuInfoBasicEntity == null)
  108. {
  109. return View(new StuInfoBasicEntity());
  110. }
  111. //头像
  112. stuInfoBasicEntity.Photo = annexesFileIbll.GetEntityByFolderId(stuInfoBasicEntity.Photo)?.F_FilePath;
  113. if (!string.IsNullOrEmpty(stuInfoBasicEntity.Photo))
  114. {
  115. stuInfoBasicEntity.Photo = stuInfoBasicEntity.Photo.Substring(stuInfoBasicEntity.Photo.IndexOf("Resource") - 1);
  116. }
  117. //奖罚情况
  118. stuInfoBasicEntity.StuEncourgementList = stuEncourgementIBLL.GetEncourgementListByStuNo(stuInfoBasicEntity.StuNo).OrderBy(x => x.AcademicYearNo).ThenBy(x => x.Semester).ToList();
  119. stuInfoBasicEntity.StuPunishmentList = stuPunishmentIBLL.GetPunishmentListByStuNo(stuInfoBasicEntity.StuNo).OrderBy(x => x.AcademicYearNo).ThenBy(x => x.Semester).ToList();
  120. //学习成绩
  121. stuInfoBasicEntity.StuScoreClassOneList = stuScoreIBLL.GetAllScoreListByStuNo(stuInfoBasicEntity.StuNo)
  122. .Where(x => x.AcademicYearNo != null && x.Semester != null && x.Score != null)
  123. .GroupBy(x => new { x.AcademicYearNo, x.Semester })
  124. .Select(x => new StuScoreClassOne()
  125. {
  126. AcademicYearNo = x.Key.AcademicYearNo,
  127. Semester = x.Key.Semester,
  128. StuScoreList = x.Select(y => new StuScoreEntity()
  129. {
  130. LessonNo = y.LessonNo,
  131. LessonName = y.LessonName,
  132. Score = y.Score
  133. }).OrderBy(xx => xx.LessonNo).ToList()
  134. }).OrderBy(xx => xx.AcademicYearNo).ThenBy(xx => xx.Semester).ToList();
  135. return View(stuInfoBasicEntity);
  136. }
  137. #endregion
  138. #region 获取数据
  139. /// <summary>
  140. /// 生成帐号
  141. /// </summary>
  142. /// <returns></returns>
  143. [HttpPost]
  144. [AjaxOnly]
  145. public ActionResult Generate()
  146. {
  147. stuInfoBasicIBLL.GenerateAccout();
  148. return Success("生成成功!");
  149. }
  150. [HttpPost]
  151. [AjaxOnly]
  152. public ActionResult UpdateAccount()
  153. {
  154. stuInfoBasicIBLL.UpdateAccount();
  155. return Success("更新成功!");
  156. }
  157. /// <summary>
  158. /// 获取页面显示列表数据
  159. /// <summary>
  160. /// <param name="queryJson">查询参数</param>
  161. /// <returns></returns>
  162. [HttpGet]
  163. [AjaxOnly]
  164. public ActionResult GetPageList(string pagination, string queryJson)
  165. {
  166. Pagination paginationobj = pagination.ToObject<Pagination>();
  167. var data = stuInfoBasicIBLL.GetPageList(paginationobj, queryJson);
  168. var jsonData = new
  169. {
  170. rows = data,
  171. total = paginationobj.total,
  172. page = paginationobj.page,
  173. records = paginationobj.records
  174. };
  175. return Success(jsonData);
  176. }
  177. /// <summary>
  178. /// 获取表单数据
  179. /// <summary>
  180. /// <returns></returns>
  181. [HttpGet]
  182. [AjaxOnly]
  183. public ActionResult GetFormData(string keyValue)
  184. {
  185. var StuInfoBasicData = stuInfoBasicIBLL.GetStuInfoBasicEntity(keyValue);
  186. var jsonData = new
  187. {
  188. StuInfoBasic = StuInfoBasicData,
  189. };
  190. return Success(jsonData);
  191. }
  192. /// <summary>
  193. /// 获取毕业学生的专业
  194. /// </summary>
  195. /// <returns></returns>
  196. [HttpGet]
  197. [AjaxOnly]
  198. public ActionResult GetMajorInfoWithGraduation()
  199. {
  200. var data = stuInfoBasicIBLL.GetMajorInfoWithGraduation();
  201. return Success(data);
  202. }
  203. /// <summary>
  204. /// 根据帐号获取学生的信息
  205. /// </summary>
  206. /// <param name="Account"></param>
  207. /// <returns></returns>
  208. [HttpGet]
  209. [AjaxOnly]
  210. public ActionResult GetStuInfo(string Account)
  211. {
  212. var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(Account);
  213. if (stuInfo != null)
  214. {
  215. return JsonResult(stuInfo);
  216. }
  217. else
  218. {
  219. return Fail("学生不存在");
  220. }
  221. }
  222. /// <summary>
  223. /// 根据帐号获取学生的信息
  224. /// </summary>
  225. /// <param name="ClassNo">班级码</param>
  226. /// <returns></returns>
  227. [HttpGet]
  228. [AjaxOnly]
  229. public ActionResult GetStuInfoByClassNo(string ClassNo)
  230. {
  231. var stuInfo = stuInfoBasicIBLL.GetStuInfoByClassNo(ClassNo);
  232. return Success(stuInfo);
  233. }
  234. /// <summary>
  235. /// 根据帐号获取学生的信息
  236. /// </summary>
  237. /// <param name="Account"></param>
  238. /// <returns></returns>
  239. [HttpGet]
  240. [AjaxOnly]
  241. public ActionResult GetStuInfoBasicEntityByStuName(string name)
  242. {
  243. var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuName(name);
  244. return Success(stuInfo);
  245. }
  246. /// <summary>
  247. /// 获取左侧树形数据
  248. /// <summary>
  249. /// <returns></returns>
  250. [HttpGet]
  251. [AjaxOnly]
  252. public ActionResult GetTree()
  253. {
  254. var data = stuInfoBasicIBLL.GetTree();
  255. return Success(data);
  256. }
  257. #endregion
  258. #region 提交数据
  259. /// <summary>
  260. /// 领取毕业证
  261. /// </summary>
  262. /// <param name="keyValue">学生id</param>
  263. /// <returns></returns>
  264. [HttpPost]
  265. [AjaxOnly]
  266. public ActionResult GetCard(string keyValue)
  267. {
  268. stuInfoBasicIBLL.GetCard(keyValue);
  269. return Success("领取成功");
  270. }
  271. /// <summary>
  272. /// 学生毕业归档
  273. /// </summary>
  274. /// <param name="keyValue">学生id</param>
  275. /// <returns></returns>
  276. [HttpPost]
  277. [AjaxOnly]
  278. public ActionResult StuStore()
  279. {
  280. stuInfoBasicIBLL.StuStore();
  281. return Success("操作成功");
  282. }
  283. /// <summary>
  284. /// 删除实体数据
  285. /// <param name="keyValue">主键</param>
  286. /// <summary>
  287. /// <returns></returns>
  288. [HttpPost]
  289. [AjaxOnly]
  290. public ActionResult DeleteForm(string keyValue)
  291. {
  292. stuInfoBasicIBLL.DeleteEntity(keyValue);
  293. return Success("删除成功!");
  294. }
  295. /// <summary>
  296. /// 保存实体数据(新增、修改)
  297. /// <param name="keyValue">主键</param>
  298. /// <summary>
  299. /// <returns></returns>
  300. [HttpPost]
  301. [ValidateAntiForgeryToken]
  302. [AjaxOnly]
  303. public ActionResult SaveForm(string keyValue, string strEntity)
  304. {
  305. StuInfoBasicEntity entity = strEntity.ToObject<StuInfoBasicEntity>();
  306. entity.SyncFlag = false;
  307. var model = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(entity.StuNo);
  308. if (string.IsNullOrEmpty(keyValue))
  309. {
  310. if (model != null)
  311. {
  312. return Fail("学号已存在!");
  313. }
  314. }
  315. else
  316. {
  317. if (model != null && model.StuId != keyValue)
  318. {
  319. return Fail("学号已存在!");
  320. }
  321. entity.SyncFlag = true;
  322. //判断排课同步数据是否存在:若存在,清除同步数据;
  323. var arrangeLessonSyncList = arrangeLessonSyncIBLL.GetArrangeLessonSyncListByTableId(keyValue);
  324. if (arrangeLessonSyncList.Any())
  325. {
  326. arrangeLessonSyncIBLL.DeleteEntityByTableId(keyValue);
  327. }
  328. else
  329. {
  330. entity.SyncFlag = false;
  331. }
  332. }
  333. stuInfoBasicIBLL.SaveEntity(keyValue, entity);
  334. return Success("保存成功!");
  335. }
  336. [HttpPost]
  337. [AjaxOnly]
  338. public ActionResult CreateGraduateNoByMajor(string CityCode, string SchoolCode, string MajorList)
  339. {
  340. stuInfoBasicIBLL.CreateGraduateNoByMajor(CityCode, SchoolCode, MajorList);
  341. return Success("生成成功");
  342. }
  343. /// <summary>
  344. /// 审核
  345. /// <param name="keyValue">主键</param>
  346. /// <summary>
  347. /// <returns></returns>
  348. [HttpPost]
  349. [AjaxOnly]
  350. public ActionResult Check(string keyValue)
  351. {
  352. var keyValueArr = keyValue.Split(',');
  353. foreach (var item in keyValueArr)
  354. {
  355. var StuInfoBasicData = stuInfoBasicIBLL.GetStuInfoBasicEntity(item);
  356. if (StuInfoBasicData != null)
  357. {
  358. StuInfoBasicData.CheckMark = "1";
  359. stuInfoBasicIBLL.SaveEntity(item, StuInfoBasicData);
  360. }
  361. }
  362. return Success("审核成功!");
  363. }
  364. /// <summary>
  365. /// 取消审核
  366. /// <param name="keyValue">主键</param>
  367. /// <summary>
  368. /// <returns></returns>
  369. [HttpPost]
  370. [AjaxOnly]
  371. public ActionResult UnCheck(string keyValue)
  372. {
  373. var keyValueArr = keyValue.Split(',');
  374. foreach (var item in keyValueArr)
  375. {
  376. var StuInfoBasicData = stuInfoBasicIBLL.GetStuInfoBasicEntity(item);
  377. if (StuInfoBasicData != null)
  378. {
  379. StuInfoBasicData.CheckMark = "0";
  380. stuInfoBasicIBLL.SaveEntity(item, StuInfoBasicData);
  381. }
  382. }
  383. return Success("取消审核成功!");
  384. }
  385. /// <summary>
  386. /// 全部审核
  387. /// <param name="keyValue">主键</param>
  388. /// <summary>
  389. /// <returns></returns>
  390. [HttpPost]
  391. [AjaxOnly]
  392. public ActionResult CheckAll()
  393. {
  394. stuInfoBasicIBLL.CheckAll();
  395. return Success("全部审核成功!");
  396. }
  397. /// <summary>
  398. /// 准许学生毕业操作
  399. /// <param name="keyValue">学号</param>
  400. /// <summary>
  401. /// <returns></returns>
  402. [HttpGet]
  403. [AjaxOnly]
  404. public ActionResult AllowGraduate(string stuNo, string status)
  405. {
  406. stuInfoBasicIBLL.AllowGraduate(stuNo, status);
  407. return Success("操作成功!");
  408. }
  409. [HttpPost]
  410. [AjaxOnly]
  411. public ActionResult IsPhoto(string stuId, string base64url)
  412. {
  413. var loginuser = LoginUserInfo.Get();
  414. //头像处理
  415. var folderId = Guid.NewGuid().ToString();
  416. string filePath = Config.GetValue("AnnexesFile");
  417. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  418. string FileEextension = ".png";
  419. string fileGuid = Guid.NewGuid().ToString();
  420. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, loginuser.account, uploadDate, fileGuid, FileEextension);
  421. //创建文件夹
  422. string path = Path.GetDirectoryName(virtualPath);
  423. Directory.CreateDirectory(path);
  424. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  425. if (!System.IO.File.Exists(virtualPath))
  426. {
  427. byte[] bytes = Convert.FromBase64String(base64url.Replace("data:image/png;base64,", ""));
  428. FileInfo file = new FileInfo(virtualPath);
  429. FileStream fs = file.Create();
  430. fs.Write(bytes, 0, bytes.Length);
  431. fs.Close();
  432. //文件信息写入数据库
  433. fileAnnexesEntity.F_Id = fileGuid;
  434. fileAnnexesEntity.F_FileName = "userphoto.png";
  435. fileAnnexesEntity.F_FilePath = virtualPath;
  436. fileAnnexesEntity.F_FileSize = bytes.Length.ToString();
  437. fileAnnexesEntity.F_FileExtensions = FileEextension;
  438. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  439. fileAnnexesEntity.F_CreateUserId = loginuser.userId;
  440. fileAnnexesEntity.F_CreateUserName = loginuser.realName;
  441. annexesFileIbll.SaveEntity(folderId, fileAnnexesEntity);
  442. var stuEntity = stuInfoBasicIBLL.GetStuInfoBasicEntity(stuId);
  443. stuEntity.Photo = folderId;
  444. stuInfoBasicIBLL.SaveEntity(stuEntity.StuId, stuEntity);
  445. return Success("上传成功");
  446. }
  447. else
  448. {
  449. return Fail("上传失败");
  450. }
  451. }
  452. /// <summary>
  453. /// 同步照片
  454. /// <summary>
  455. /// <returns></returns>
  456. [HttpGet]
  457. [AjaxOnly]
  458. public ActionResult SynPhoto()
  459. {
  460. stuInfoBasicIBLL.SynPhoto();
  461. return Success("同步成功!");
  462. }
  463. #endregion
  464. }
  465. }