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.
 
 
 
 
 
 

607 lines
19 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 IndexBank()
  44. {
  45. return View("Index");
  46. }
  47. /// <summary>
  48. /// 主页面【大厂】
  49. /// <summary>
  50. /// <returns></returns>
  51. [HttpGet]
  52. public ActionResult IndexOfDC()
  53. {
  54. return View();
  55. }
  56. /// <summary>
  57. /// 表单页
  58. /// <summary>
  59. /// <returns></returns>
  60. [HttpGet]
  61. public ActionResult Form()
  62. {
  63. return View();
  64. }
  65. /// <summary>
  66. /// 表单页【大厂】
  67. /// <summary>
  68. /// <returns></returns>
  69. [HttpGet]
  70. public ActionResult FormOfDC()
  71. {
  72. return View();
  73. }
  74. [HttpGet]
  75. public ActionResult FormView()
  76. {
  77. return View();
  78. }
  79. [HttpGet]
  80. public ActionResult MyClass()
  81. {
  82. return View();
  83. }
  84. [HttpGet]
  85. public ActionResult CreateGraduateNo()
  86. {
  87. return View();
  88. }
  89. [HttpGet]
  90. public ActionResult Graduate()
  91. {
  92. return View();
  93. }
  94. [HttpGet]
  95. public ActionResult CreateGraduateNoForm()
  96. {
  97. return View();
  98. }
  99. /// <summary>
  100. /// 学生列表【班级信息管理】
  101. /// <summary>
  102. /// <returns></returns>
  103. [HttpGet]
  104. public ActionResult IndexInClass()
  105. {
  106. return View();
  107. }
  108. /// <summary>
  109. /// 打印
  110. /// <summary>
  111. /// <returns></returns>
  112. [HttpGet]
  113. public ActionResult Print(string keyValue)
  114. {
  115. var stuInfoBasicEntity = stuInfoBasicIBLL.GetStuInfoBasicEntity(keyValue);
  116. if (stuInfoBasicEntity == null)
  117. {
  118. return View(new StuInfoBasicEntity());
  119. }
  120. //头像
  121. stuInfoBasicEntity.Photo = annexesFileIbll.GetEntityByFolderId(stuInfoBasicEntity.Photo)?.F_FilePath;
  122. if (!string.IsNullOrEmpty(stuInfoBasicEntity.Photo))
  123. {
  124. stuInfoBasicEntity.Photo = stuInfoBasicEntity.Photo.Substring(stuInfoBasicEntity.Photo.IndexOf("Resource") - 1);
  125. }
  126. //奖罚情况
  127. stuInfoBasicEntity.StuEncourgementList = stuEncourgementIBLL.GetEncourgementListByStuNo(stuInfoBasicEntity.StuNo).OrderBy(x => x.AcademicYearNo).ThenBy(x => x.Semester).ToList();
  128. stuInfoBasicEntity.StuPunishmentList = stuPunishmentIBLL.GetPunishmentListByStuNo(stuInfoBasicEntity.StuNo).OrderBy(x => x.AcademicYearNo).ThenBy(x => x.Semester).ToList();
  129. //学习成绩
  130. stuInfoBasicEntity.StuScoreClassOneList = stuScoreIBLL.GetAllScoreListByStuNo(stuInfoBasicEntity.StuNo)
  131. .Where(x => x.AcademicYearNo != null && x.Semester != null && x.Score != null)
  132. .GroupBy(x => new { x.AcademicYearNo, x.Semester })
  133. .Select(x => new StuScoreClassOne()
  134. {
  135. AcademicYearNo = x.Key.AcademicYearNo,
  136. Semester = x.Key.Semester,
  137. StuScoreList = x.Select(y => new StuScoreEntity()
  138. {
  139. LessonNo = y.LessonNo,
  140. LessonName = y.LessonName,
  141. Score = y.Score
  142. }).OrderBy(xx => xx.LessonNo).ToList()
  143. }).OrderBy(xx => xx.AcademicYearNo).ThenBy(xx => xx.Semester).ToList();
  144. return View(stuInfoBasicEntity);
  145. }
  146. /// <summary>
  147. /// 导入页面
  148. /// <summary>
  149. /// <returns></returns>
  150. [HttpGet]
  151. public ActionResult ImportForm()
  152. {
  153. return View();
  154. }
  155. /// <summary>
  156. /// 即将毕业学生管理
  157. /// <summary>
  158. /// <returns></returns>
  159. [HttpGet]
  160. public ActionResult SoonGraduateIndex()
  161. {
  162. return View();
  163. }
  164. #endregion
  165. #region 获取数据
  166. /// <summary>
  167. /// 生成帐号
  168. /// </summary>
  169. /// <returns></returns>
  170. [HttpPost]
  171. [AjaxOnly]
  172. public ActionResult Generate()
  173. {
  174. stuInfoBasicIBLL.GenerateAccout();
  175. return Success("生成成功!");
  176. }
  177. [HttpPost]
  178. [AjaxOnly]
  179. public ActionResult UpdateAccount()
  180. {
  181. stuInfoBasicIBLL.UpdateAccount();
  182. return Success("更新成功!");
  183. }
  184. /// <summary>
  185. /// 获取页面显示列表数据
  186. /// <summary>
  187. /// <param name="queryJson">查询参数</param>
  188. /// <returns></returns>
  189. [HttpGet]
  190. [AjaxOnly]
  191. public ActionResult GetPageList(string pagination, string queryJson)
  192. {
  193. Pagination paginationobj = pagination.ToObject<Pagination>();
  194. var data = stuInfoBasicIBLL.GetPageList(paginationobj, queryJson);
  195. var jsonData = new
  196. {
  197. rows = data,
  198. total = paginationobj.total,
  199. page = paginationobj.page,
  200. records = paginationobj.records
  201. };
  202. return Success(jsonData);
  203. }
  204. /// <summary>
  205. /// 获取页面显示列表数据
  206. /// <summary>
  207. /// <returns></returns>
  208. [HttpGet]
  209. [AjaxOnly]
  210. public ActionResult GetAllList()
  211. {
  212. var data = stuInfoBasicIBLL.GetAllList();
  213. return Success(data);
  214. }
  215. /// <summary>
  216. /// 获取表单数据
  217. /// <summary>
  218. /// <returns></returns>
  219. [HttpGet]
  220. [AjaxOnly]
  221. public ActionResult GetFormData(string keyValue)
  222. {
  223. var StuInfoBasicData = stuInfoBasicIBLL.GetStuInfoBasicEntity(keyValue);
  224. var jsonData = new
  225. {
  226. StuInfoBasic = StuInfoBasicData,
  227. };
  228. return Success(jsonData);
  229. }
  230. /// <summary>
  231. /// 获取毕业学生的专业
  232. /// </summary>
  233. /// <returns></returns>
  234. [HttpGet]
  235. [AjaxOnly]
  236. public ActionResult GetMajorInfoWithGraduation()
  237. {
  238. var data = stuInfoBasicIBLL.GetMajorInfoWithGraduation();
  239. return Success(data);
  240. }
  241. /// <summary>
  242. /// 根据帐号获取学生的信息
  243. /// </summary>
  244. /// <param name="Account"></param>
  245. /// <returns></returns>
  246. [HttpGet]
  247. [AjaxOnly]
  248. public ActionResult GetStuInfo(string Account)
  249. {
  250. var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(Account);
  251. if (stuInfo != null)
  252. {
  253. return JsonResult(stuInfo);
  254. }
  255. else
  256. {
  257. return Fail("学生不存在");
  258. }
  259. }
  260. /// <summary>
  261. /// 根据帐号获取学生的信息
  262. /// </summary>
  263. /// <param name="ClassNo">班级码</param>
  264. /// <returns></returns>
  265. [HttpGet]
  266. [AjaxOnly]
  267. public ActionResult GetStuInfoByClassNo(string ClassNo)
  268. {
  269. var stuInfo = stuInfoBasicIBLL.GetStuInfoByClassNo(ClassNo);
  270. return Success(stuInfo);
  271. }
  272. /// <summary>
  273. /// 根据帐号获取学生的信息
  274. /// </summary>
  275. /// <param name="Account"></param>
  276. /// <returns></returns>
  277. [HttpGet]
  278. [AjaxOnly]
  279. public ActionResult GetStuInfoBasicEntityByStuName(string name)
  280. {
  281. var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuName(name);
  282. return Success(stuInfo);
  283. }
  284. /// <summary>
  285. /// 获取左侧树形数据
  286. /// <summary>
  287. /// <returns></returns>
  288. [HttpGet]
  289. [AjaxOnly]
  290. public ActionResult GetTree()
  291. {
  292. var data = stuInfoBasicIBLL.GetTree();
  293. return Success(data);
  294. }
  295. /// <summary>
  296. /// 获取页面显示列表数据
  297. /// <summary>
  298. /// <param name="queryJson">查询参数</param>
  299. /// <returns></returns>
  300. [HttpGet]
  301. [AjaxOnly]
  302. public ActionResult GetPageListOfSoonGraduate(string pagination, string queryJson)
  303. {
  304. Pagination paginationobj = pagination.ToObject<Pagination>();
  305. var data = stuInfoBasicIBLL.GetPageListOfSoonGraduate(paginationobj, queryJson);
  306. var jsonData = new
  307. {
  308. rows = data,
  309. total = paginationobj.total,
  310. page = paginationobj.page,
  311. records = paginationobj.records
  312. };
  313. return Success(jsonData);
  314. }
  315. #endregion
  316. #region 提交数据
  317. /// <summary>
  318. /// 领取毕业证
  319. /// </summary>
  320. /// <param name="keyValue">学生id</param>
  321. /// <returns></returns>
  322. [HttpPost]
  323. [AjaxOnly]
  324. public ActionResult GetCard(string keyValue)
  325. {
  326. stuInfoBasicIBLL.GetCard(keyValue);
  327. return Success("领取成功");
  328. }
  329. /// <summary>
  330. /// 学生毕业归档
  331. /// </summary>
  332. /// <param name="keyValue">学生id</param>
  333. /// <returns></returns>
  334. [HttpPost]
  335. [AjaxOnly]
  336. public ActionResult StuStore()
  337. {
  338. stuInfoBasicIBLL.StuStore();
  339. return Success("操作成功");
  340. }
  341. /// <summary>
  342. /// 删除实体数据
  343. /// <param name="keyValue">主键</param>
  344. /// <summary>
  345. /// <returns></returns>
  346. [HttpPost]
  347. [AjaxOnly]
  348. public ActionResult DeleteForm(string keyValue)
  349. {
  350. stuInfoBasicIBLL.DeleteEntity(keyValue);
  351. return Success("删除成功!");
  352. }
  353. /// <summary>
  354. /// 保存实体数据(新增、修改)
  355. /// <param name="keyValue">主键</param>
  356. /// <summary>
  357. /// <returns></returns>
  358. [HttpPost]
  359. [ValidateAntiForgeryToken]
  360. [AjaxOnly]
  361. public ActionResult SaveForm(string keyValue, string strEntity)
  362. {
  363. StuInfoBasicEntity entity = strEntity.ToObject<StuInfoBasicEntity>();
  364. entity.SyncFlag = false;
  365. var model = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(entity.StuNo);
  366. if (string.IsNullOrEmpty(keyValue))
  367. {
  368. if (model != null)
  369. {
  370. return Fail("学号已存在!");
  371. }
  372. }
  373. else
  374. {
  375. if (model != null && model.StuId != keyValue)
  376. {
  377. return Fail("学号已存在!");
  378. }
  379. entity.SyncFlag = true;
  380. //判断排课同步数据是否存在:若存在,清除同步数据;
  381. var arrangeLessonSyncList = arrangeLessonSyncIBLL.GetArrangeLessonSyncListByTableId(keyValue);
  382. if (arrangeLessonSyncList.Any())
  383. {
  384. arrangeLessonSyncIBLL.DeleteEntityByTableId(keyValue);
  385. }
  386. else
  387. {
  388. entity.SyncFlag = false;
  389. }
  390. }
  391. stuInfoBasicIBLL.SaveEntity(keyValue, entity);
  392. return Success("保存成功!");
  393. }
  394. [HttpPost]
  395. [AjaxOnly]
  396. public ActionResult CreateGraduateNoByMajor(string CityCode, string SchoolCode, string MajorList)
  397. {
  398. stuInfoBasicIBLL.CreateGraduateNoByMajor(CityCode, SchoolCode, MajorList);
  399. return Success("生成成功");
  400. }
  401. /// <summary>
  402. /// 审核
  403. /// <param name="keyValue">主键</param>
  404. /// <summary>
  405. /// <returns></returns>
  406. [HttpPost]
  407. [AjaxOnly]
  408. public ActionResult Check(string keyValue)
  409. {
  410. var keyValueArr = keyValue.Split(',');
  411. foreach (var item in keyValueArr)
  412. {
  413. var StuInfoBasicData = stuInfoBasicIBLL.GetStuInfoBasicEntity(item);
  414. if (StuInfoBasicData != null)
  415. {
  416. StuInfoBasicData.CheckMark = "1";
  417. stuInfoBasicIBLL.SaveEntity(item, StuInfoBasicData);
  418. }
  419. }
  420. return Success("审核成功!");
  421. }
  422. /// <summary>
  423. /// 取消审核
  424. /// <param name="keyValue">主键</param>
  425. /// <summary>
  426. /// <returns></returns>
  427. [HttpPost]
  428. [AjaxOnly]
  429. public ActionResult UnCheck(string keyValue)
  430. {
  431. var keyValueArr = keyValue.Split(',');
  432. foreach (var item in keyValueArr)
  433. {
  434. var StuInfoBasicData = stuInfoBasicIBLL.GetStuInfoBasicEntity(item);
  435. if (StuInfoBasicData != null)
  436. {
  437. StuInfoBasicData.CheckMark = "0";
  438. stuInfoBasicIBLL.SaveEntity(item, StuInfoBasicData);
  439. }
  440. }
  441. return Success("取消审核成功!");
  442. }
  443. /// <summary>
  444. /// 全部审核
  445. /// <param name="keyValue">主键</param>
  446. /// <summary>
  447. /// <returns></returns>
  448. [HttpPost]
  449. [AjaxOnly]
  450. public ActionResult CheckAll()
  451. {
  452. stuInfoBasicIBLL.CheckAll();
  453. return Success("全部审核成功!");
  454. }
  455. /// <summary>
  456. /// 准许学生毕业操作
  457. /// <param name="keyValue">学号</param>
  458. /// <summary>
  459. /// <returns></returns>
  460. [HttpGet]
  461. [AjaxOnly]
  462. public ActionResult AllowGraduate(string stuNo, string status)
  463. {
  464. stuInfoBasicIBLL.AllowGraduate(stuNo, status);
  465. return Success("操作成功!");
  466. }
  467. [HttpPost]
  468. [AjaxOnly]
  469. public ActionResult IsPhoto(string stuId, string base64url)
  470. {
  471. var loginuser = LoginUserInfo.Get();
  472. //头像处理
  473. var folderId = Guid.NewGuid().ToString();
  474. string filePath = Config.GetValue("AnnexesFile");
  475. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  476. string FileEextension = ".png";
  477. string fileGuid = Guid.NewGuid().ToString();
  478. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, loginuser.account, uploadDate, fileGuid, FileEextension);
  479. //创建文件夹
  480. string path = Path.GetDirectoryName(virtualPath);
  481. Directory.CreateDirectory(path);
  482. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  483. if (!System.IO.File.Exists(virtualPath))
  484. {
  485. byte[] bytes = Convert.FromBase64String(base64url.Replace("data:image/png;base64,", ""));
  486. FileInfo file = new FileInfo(virtualPath);
  487. FileStream fs = file.Create();
  488. fs.Write(bytes, 0, bytes.Length);
  489. fs.Close();
  490. //文件信息写入数据库
  491. fileAnnexesEntity.F_Id = fileGuid;
  492. fileAnnexesEntity.F_FileName = "userphoto.png";
  493. fileAnnexesEntity.F_FilePath = virtualPath;
  494. fileAnnexesEntity.F_FileSize = bytes.Length.ToString();
  495. fileAnnexesEntity.F_FileExtensions = FileEextension;
  496. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  497. fileAnnexesEntity.F_CreateUserId = loginuser.userId;
  498. fileAnnexesEntity.F_CreateUserName = loginuser.realName;
  499. annexesFileIbll.SaveEntity(folderId, fileAnnexesEntity);
  500. var stuEntity = stuInfoBasicIBLL.GetStuInfoBasicEntity(stuId);
  501. stuEntity.Photo = folderId;
  502. stuInfoBasicIBLL.SaveEntity(stuEntity.StuId, stuEntity);
  503. return Success("上传成功");
  504. }
  505. else
  506. {
  507. return Fail("上传失败");
  508. }
  509. }
  510. /// <summary>
  511. /// 同步照片
  512. /// <summary>
  513. /// <returns></returns>
  514. [HttpGet]
  515. [AjaxOnly]
  516. public ActionResult SynPhoto()
  517. {
  518. stuInfoBasicIBLL.SynPhoto();
  519. return Success("同步成功!");
  520. }
  521. [HttpPost]
  522. [AjaxOnly]
  523. public ActionResult SyncDept()
  524. {
  525. stuInfoBasicIBLL.SyncDept();
  526. return Success("同步成功");
  527. }
  528. [HttpPost]
  529. [AjaxOnly]
  530. public ActionResult SyncMajor()
  531. {
  532. stuInfoBasicIBLL.SyncMajor();
  533. return Success("同步成功");
  534. }
  535. /// <summary>
  536. /// 我的班级导入数据
  537. /// </summary>
  538. /// <returns></returns>
  539. public ActionResult DownTemplate()
  540. {
  541. FileStreamResult result = null;
  542. try
  543. {
  544. var path = Server.MapPath("~/Content/excel/");
  545. var pathoffull = path + "StuInfoBasicUpdateImport.xls";
  546. FileStream fsread = fsread = new FileStream(pathoffull, FileMode.OpenOrCreate, FileAccess.ReadWrite);
  547. result = File(fsread, "application/ms-excel", "班级学籍信息批量修改.xls");
  548. return result;
  549. }
  550. catch (Exception ex)
  551. {
  552. return null;
  553. }
  554. }
  555. #endregion
  556. }
  557. }