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.
 
 
 
 
 
 

516 lines
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. public ActionResult FormTran()
  95. {
  96. return View();
  97. }
  98. /// <summary>
  99. /// 学生列表【班级信息管理】
  100. /// <summary>
  101. /// <returns></returns>
  102. [HttpGet]
  103. public ActionResult IndexInClass()
  104. {
  105. return View();
  106. }
  107. /// <summary>
  108. /// 打印
  109. /// <summary>
  110. /// <returns></returns>
  111. [HttpGet]
  112. public ActionResult Print(string keyValue)
  113. {
  114. var stuInfoBasicEntity = stuInfoBasicIBLL.GetStuInfoBasicEntity(keyValue);
  115. if (stuInfoBasicEntity == null)
  116. {
  117. return View(new StuInfoBasicEntity());
  118. }
  119. //头像
  120. stuInfoBasicEntity.Photo = annexesFileIbll.GetEntityByFolderId(stuInfoBasicEntity.Photo)?.F_FilePath;
  121. if (!string.IsNullOrEmpty(stuInfoBasicEntity.Photo))
  122. {
  123. stuInfoBasicEntity.Photo = stuInfoBasicEntity.Photo.Substring(stuInfoBasicEntity.Photo.IndexOf("Resource") - 1);
  124. }
  125. //奖罚情况
  126. stuInfoBasicEntity.StuEncourgementList = stuEncourgementIBLL.GetEncourgementListByStuNo(stuInfoBasicEntity.StuNo).OrderBy(x => x.AcademicYearNo).ThenBy(x => x.Semester).ToList();
  127. stuInfoBasicEntity.StuPunishmentList = stuPunishmentIBLL.GetPunishmentListByStuNo(stuInfoBasicEntity.StuNo).OrderBy(x => x.AcademicYearNo).ThenBy(x => x.Semester).ToList();
  128. //学习成绩
  129. stuInfoBasicEntity.StuScoreClassOneList = stuScoreIBLL.GetAllScoreListByStuNo(stuInfoBasicEntity.StuNo)
  130. .Where(x => x.AcademicYearNo != null && x.Semester != null && x.Score != null)
  131. .GroupBy(x => new { x.AcademicYearNo, x.Semester })
  132. .Select(x => new StuScoreClassOne()
  133. {
  134. AcademicYearNo = x.Key.AcademicYearNo,
  135. Semester = x.Key.Semester,
  136. StuScoreList = x.Select(y => new StuScoreEntity()
  137. {
  138. LessonNo = y.LessonNo,
  139. LessonName = y.LessonName,
  140. Score = y.Score
  141. }).OrderBy(xx => xx.LessonNo).ToList()
  142. }).OrderBy(xx => xx.AcademicYearNo).ThenBy(xx => xx.Semester).ToList();
  143. return View(stuInfoBasicEntity);
  144. }
  145. #endregion
  146. #region 获取数据
  147. /// <summary>
  148. /// 生成帐号
  149. /// </summary>
  150. /// <returns></returns>
  151. [HttpPost]
  152. [AjaxOnly]
  153. public ActionResult Generate()
  154. {
  155. stuInfoBasicIBLL.GenerateAccout();
  156. return Success("生成成功!");
  157. }
  158. [HttpPost]
  159. [AjaxOnly]
  160. public ActionResult UpdateAccount()
  161. {
  162. stuInfoBasicIBLL.UpdateAccount();
  163. return Success("更新成功!");
  164. }
  165. /// <summary>
  166. /// 获取页面显示列表数据
  167. /// <summary>
  168. /// <param name="queryJson">查询参数</param>
  169. /// <returns></returns>
  170. [HttpGet]
  171. [AjaxOnly]
  172. public ActionResult GetPageList(string pagination, string queryJson)
  173. {
  174. Pagination paginationobj = pagination.ToObject<Pagination>();
  175. var data = stuInfoBasicIBLL.GetPageList(paginationobj, queryJson);
  176. var jsonData = new
  177. {
  178. rows = data,
  179. total = paginationobj.total,
  180. page = paginationobj.page,
  181. records = paginationobj.records
  182. };
  183. return Success(jsonData);
  184. }
  185. /// <summary>
  186. /// 获取表单数据
  187. /// <summary>
  188. /// <returns></returns>
  189. [HttpGet]
  190. [AjaxOnly]
  191. public ActionResult GetFormData(string keyValue)
  192. {
  193. var StuInfoBasicData = stuInfoBasicIBLL.GetStuInfoBasicEntity(keyValue);
  194. var jsonData = new
  195. {
  196. StuInfoBasic = StuInfoBasicData,
  197. };
  198. return Success(jsonData);
  199. }
  200. /// <summary>
  201. /// 获取毕业学生的专业
  202. /// </summary>
  203. /// <returns></returns>
  204. [HttpGet]
  205. [AjaxOnly]
  206. public ActionResult GetMajorInfoWithGraduation()
  207. {
  208. var data = stuInfoBasicIBLL.GetMajorInfoWithGraduation();
  209. return Success(data);
  210. }
  211. /// <summary>
  212. /// 根据帐号获取学生的信息
  213. /// </summary>
  214. /// <param name="Account"></param>
  215. /// <returns></returns>
  216. [HttpGet]
  217. [AjaxOnly]
  218. public ActionResult GetStuInfo(string Account)
  219. {
  220. var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(Account);
  221. if (stuInfo != null)
  222. {
  223. return JsonResult(stuInfo);
  224. }
  225. else
  226. {
  227. return Fail("学生不存在");
  228. }
  229. }
  230. /// <summary>
  231. /// 根据帐号获取学生的信息
  232. /// </summary>
  233. /// <param name="ClassNo">班级码</param>
  234. /// <returns></returns>
  235. [HttpGet]
  236. [AjaxOnly]
  237. public ActionResult GetStuInfoByClassNo(string ClassNo)
  238. {
  239. var stuInfo = stuInfoBasicIBLL.GetStuInfoByClassNo(ClassNo);
  240. return Success(stuInfo);
  241. }
  242. /// <summary>
  243. /// 根据帐号获取学生的信息
  244. /// </summary>
  245. /// <param name="Account"></param>
  246. /// <returns></returns>
  247. [HttpGet]
  248. [AjaxOnly]
  249. public ActionResult GetStuInfoBasicEntityByStuName(string name)
  250. {
  251. var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuName(name);
  252. return Success(stuInfo);
  253. }
  254. /// <summary>
  255. /// 获取左侧树形数据
  256. /// <summary>
  257. /// <returns></returns>
  258. [HttpGet]
  259. [AjaxOnly]
  260. public ActionResult GetTree()
  261. {
  262. var data = stuInfoBasicIBLL.GetTree();
  263. return Success(data);
  264. }
  265. #endregion
  266. #region 提交数据
  267. /// <summary>
  268. /// 领取毕业证
  269. /// </summary>
  270. /// <param name="keyValue">学生id</param>
  271. /// <returns></returns>
  272. [HttpPost]
  273. [AjaxOnly]
  274. public ActionResult GetCard(string keyValue)
  275. {
  276. stuInfoBasicIBLL.GetCard(keyValue);
  277. return Success("领取成功");
  278. }
  279. /// <summary>
  280. /// 学生毕业归档
  281. /// </summary>
  282. /// <param name="keyValue">学生id</param>
  283. /// <returns></returns>
  284. [HttpPost]
  285. [AjaxOnly]
  286. public ActionResult StuStore()
  287. {
  288. stuInfoBasicIBLL.StuStore();
  289. return Success("操作成功");
  290. }
  291. /// <summary>
  292. /// 删除实体数据
  293. /// <param name="keyValue">主键</param>
  294. /// <summary>
  295. /// <returns></returns>
  296. [HttpPost]
  297. [AjaxOnly]
  298. public ActionResult DeleteForm(string keyValue)
  299. {
  300. stuInfoBasicIBLL.DeleteEntity(keyValue);
  301. return Success("删除成功!");
  302. }
  303. /// <summary>
  304. /// 保存实体数据(新增、修改)
  305. /// <param name="keyValue">主键</param>
  306. /// <summary>
  307. /// <returns></returns>
  308. [HttpPost]
  309. [ValidateAntiForgeryToken]
  310. [AjaxOnly]
  311. public ActionResult SaveForm(string keyValue, string strEntity)
  312. {
  313. StuInfoBasicEntity entity = strEntity.ToObject<StuInfoBasicEntity>();
  314. entity.SyncFlag = false;
  315. var model = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(entity.StuNo);
  316. if (string.IsNullOrEmpty(keyValue))
  317. {
  318. if (model != null)
  319. {
  320. return Fail("学号已存在!");
  321. }
  322. }
  323. else
  324. {
  325. if (model != null && model.StuId != keyValue)
  326. {
  327. return Fail("学号已存在!");
  328. }
  329. entity.SyncFlag = true;
  330. //判断排课同步数据是否存在:若存在,清除同步数据;
  331. var arrangeLessonSyncList = arrangeLessonSyncIBLL.GetArrangeLessonSyncListByTableId(keyValue);
  332. if (arrangeLessonSyncList.Any())
  333. {
  334. arrangeLessonSyncIBLL.DeleteEntityByTableId(keyValue);
  335. }
  336. else
  337. {
  338. entity.SyncFlag = false;
  339. }
  340. }
  341. stuInfoBasicIBLL.SaveEntity(keyValue, entity);
  342. return Success("保存成功!");
  343. }
  344. [HttpPost]
  345. [AjaxOnly]
  346. public ActionResult CreateGraduateNoByMajor(string CityCode, string SchoolCode, string MajorList)
  347. {
  348. stuInfoBasicIBLL.CreateGraduateNoByMajor(CityCode, SchoolCode, MajorList);
  349. return Success("生成成功");
  350. }
  351. /// <summary>
  352. /// 审核
  353. /// <param name="keyValue">主键</param>
  354. /// <summary>
  355. /// <returns></returns>
  356. [HttpPost]
  357. [AjaxOnly]
  358. public ActionResult Check(string keyValue)
  359. {
  360. var keyValueArr = keyValue.Split(',');
  361. foreach (var item in keyValueArr)
  362. {
  363. var StuInfoBasicData = stuInfoBasicIBLL.GetStuInfoBasicEntity(item);
  364. if (StuInfoBasicData != null)
  365. {
  366. StuInfoBasicData.CheckMark = "1";
  367. stuInfoBasicIBLL.SaveEntity(item, StuInfoBasicData);
  368. }
  369. }
  370. return Success("审核成功!");
  371. }
  372. /// <summary>
  373. /// 取消审核
  374. /// <param name="keyValue">主键</param>
  375. /// <summary>
  376. /// <returns></returns>
  377. [HttpPost]
  378. [AjaxOnly]
  379. public ActionResult UnCheck(string keyValue)
  380. {
  381. var keyValueArr = keyValue.Split(',');
  382. foreach (var item in keyValueArr)
  383. {
  384. var StuInfoBasicData = stuInfoBasicIBLL.GetStuInfoBasicEntity(item);
  385. if (StuInfoBasicData != null)
  386. {
  387. StuInfoBasicData.CheckMark = "0";
  388. stuInfoBasicIBLL.SaveEntity(item, StuInfoBasicData);
  389. }
  390. }
  391. return Success("取消审核成功!");
  392. }
  393. /// <summary>
  394. /// 全部审核
  395. /// <param name="keyValue">主键</param>
  396. /// <summary>
  397. /// <returns></returns>
  398. [HttpPost]
  399. [AjaxOnly]
  400. public ActionResult CheckAll()
  401. {
  402. stuInfoBasicIBLL.CheckAll();
  403. return Success("全部审核成功!");
  404. }
  405. /// <summary>
  406. /// 准许学生毕业操作
  407. /// <param name="keyValue">学号</param>
  408. /// <summary>
  409. /// <returns></returns>
  410. [HttpGet]
  411. [AjaxOnly]
  412. public ActionResult AllowGraduate(string stuNo, string status)
  413. {
  414. stuInfoBasicIBLL.AllowGraduate(stuNo, status);
  415. return Success("操作成功!");
  416. }
  417. [HttpPost]
  418. [AjaxOnly]
  419. public ActionResult IsPhoto(string stuId, string base64url)
  420. {
  421. var loginuser = LoginUserInfo.Get();
  422. //头像处理
  423. var folderId = Guid.NewGuid().ToString();
  424. string filePath = Config.GetValue("AnnexesFile");
  425. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  426. string FileEextension = ".png";
  427. string fileGuid = Guid.NewGuid().ToString();
  428. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, loginuser.account, uploadDate, fileGuid, FileEextension);
  429. //创建文件夹
  430. string path = Path.GetDirectoryName(virtualPath);
  431. Directory.CreateDirectory(path);
  432. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  433. if (!System.IO.File.Exists(virtualPath))
  434. {
  435. byte[] bytes = Convert.FromBase64String(base64url.Replace("data:image/png;base64,", ""));
  436. FileInfo file = new FileInfo(virtualPath);
  437. FileStream fs = file.Create();
  438. fs.Write(bytes, 0, bytes.Length);
  439. fs.Close();
  440. //文件信息写入数据库
  441. fileAnnexesEntity.F_Id = fileGuid;
  442. fileAnnexesEntity.F_FileName = "userphoto.png";
  443. fileAnnexesEntity.F_FilePath = virtualPath;
  444. fileAnnexesEntity.F_FileSize = bytes.Length.ToString();
  445. fileAnnexesEntity.F_FileExtensions = FileEextension;
  446. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  447. fileAnnexesEntity.F_CreateUserId = loginuser.userId;
  448. fileAnnexesEntity.F_CreateUserName = loginuser.realName;
  449. annexesFileIbll.SaveEntity(folderId, fileAnnexesEntity);
  450. var stuEntity = stuInfoBasicIBLL.GetStuInfoBasicEntity(stuId);
  451. stuEntity.Photo = folderId;
  452. stuInfoBasicIBLL.SaveEntity(stuEntity.StuId, stuEntity);
  453. return Success("上传成功");
  454. }
  455. else
  456. {
  457. return Fail("上传失败");
  458. }
  459. }
  460. /// <summary>
  461. /// 同步照片
  462. /// <summary>
  463. /// <returns></returns>
  464. [HttpGet]
  465. [AjaxOnly]
  466. public ActionResult SynPhoto()
  467. {
  468. stuInfoBasicIBLL.SynPhoto();
  469. return Success("同步成功!");
  470. }
  471. #endregion
  472. }
  473. }