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.
 
 
 
 
 
 

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