25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

1283 satır
45 KiB

  1. using Learun.Application.Base.SystemModule;
  2. using Learun.Application.TwoDevelopment.EducationalAdministration;
  3. using Learun.Application.TwoDevelopment.LogisticsManagement;
  4. using Learun.Application.TwoDevelopment.ReceiveSendFeeManagement;
  5. using Learun.Util;
  6. using Newtonsoft.Json;
  7. using NPOI.HSSF.UserModel;
  8. using NPOI.SS.UserModel;
  9. using NPOI.XSSF.UserModel;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.IO;
  14. using System.Linq;
  15. using System.Text;
  16. using System.Web;
  17. using System.Web.Mvc;
  18. namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers
  19. {
  20. /// <summary>
  21. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  22. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  23. /// 创 建:超级管理员
  24. /// 日 期:2019-08-08 17:21
  25. /// 描 述:新生信息管理
  26. /// </summary>
  27. public class StuInfoFreshController : MvcControllerBase
  28. {
  29. private StuInfoFreshIBLL stuInfoFreshIBLL = new StuInfoFreshBLL();
  30. private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL();
  31. private ClassInfoIBLL classInfoIBLL = new ClassInfoBLL();
  32. private FinaChargesStandardIBLL finaChargesStandardIBLL = new FinaChargesStandardBLL();
  33. private AccommodationIBLL accommodationIBLL = new AccommodationBLL();
  34. private CdMajorIBLL cdMajorIBLL = new CdMajorBLL();
  35. private CdDeptIBLL cdDeptIBLL = new CdDeptBLL();
  36. #region 视图功能
  37. /// <summary>
  38. /// 主页面
  39. /// <summary>
  40. /// <returns></returns>
  41. [HttpGet]
  42. public ActionResult Index()
  43. {
  44. return View();
  45. }
  46. [HttpGet]
  47. public ActionResult IndexDC()
  48. {
  49. return View();
  50. }
  51. [HttpGet]
  52. public ActionResult SchoolUniform()
  53. {
  54. return View();
  55. }
  56. [HttpGet]
  57. public ActionResult StatusView()
  58. {
  59. return View();
  60. }
  61. [HttpGet]
  62. public ActionResult PrintSignFlow(string Id)
  63. {
  64. if (!string.IsNullOrEmpty(Id))
  65. {
  66. var vwinfo = stuInfoFreshIBLL.GetStuInfoFreshEntity(Id);
  67. vwinfo.MajorName = cdMajorIBLL.GetCdMajorEntityByMajorNo(vwinfo.MajorNo).MajorName;
  68. return View(vwinfo);
  69. }
  70. else
  71. {
  72. return View();
  73. }
  74. }
  75. /// <summary>
  76. /// 根据区域统计
  77. /// <summary>
  78. /// <returns></returns>
  79. [HttpGet]
  80. public ActionResult StatisticsArea()
  81. {
  82. return View();
  83. }
  84. /// <summary>
  85. /// 表单页
  86. /// <summary>
  87. /// <returns></returns>
  88. [HttpGet]
  89. public ActionResult Form()
  90. {
  91. var url = Config.GetValue("defaultheadimg");
  92. ViewBag.Url = url;
  93. return View();
  94. }
  95. [HttpGet]
  96. public ActionResult FormDC()
  97. {
  98. var url = Config.GetValue("defaultheadimg");
  99. ViewBag.Url = url;
  100. return View();
  101. }
  102. /// <summary>
  103. /// 表单查看页
  104. /// <summary>
  105. /// <returns></returns>
  106. [HttpGet]
  107. public ActionResult FormView()
  108. {
  109. var url = Config.GetValue("defaultheadimg");
  110. ViewBag.Url = url;
  111. return View();
  112. }
  113. /// <summary>
  114. /// 表单【学子在线】
  115. /// <summary>
  116. /// <returns></returns>
  117. [HttpGet]
  118. public ActionResult FormOfStudent()
  119. {
  120. var url = Config.GetValue("defaultheadimg");
  121. ViewBag.Url = url;
  122. return View();
  123. }
  124. /// <summary>
  125. /// 新生报到管理页面
  126. /// <summary>
  127. /// <returns></returns>
  128. [HttpGet]
  129. public ActionResult RegisterIndex()
  130. {
  131. return View();
  132. }
  133. /// <summary>
  134. /// 新生档案管理页面
  135. /// <summary>
  136. /// <returns></returns>
  137. [HttpGet]
  138. public ActionResult CollectFileIndex()
  139. {
  140. return View();
  141. }
  142. /// <summary>
  143. /// 新生领取用品页面
  144. /// <summary>
  145. /// <returns></returns>
  146. [HttpGet]
  147. public ActionResult GetKeyIndex()
  148. {
  149. return View();
  150. }
  151. /// <summary>
  152. /// 新生缴费管理页面
  153. /// <summary>
  154. /// <returns></returns>
  155. [HttpGet]
  156. public ActionResult PayFeeIndex()
  157. {
  158. return View();
  159. }
  160. /// <summary>
  161. /// 新生缴费管理表单页
  162. /// <summary>
  163. /// <returns></returns>
  164. [HttpGet]
  165. public ActionResult PayFeeForm()
  166. {
  167. return View();
  168. }
  169. /// <summary>
  170. /// 助学贷款表单页
  171. /// <summary>
  172. /// <returns></returns>
  173. [HttpGet]
  174. public ActionResult LoanForm()
  175. {
  176. return View();
  177. }
  178. /// <summary>
  179. /// 现场缴费表单页
  180. /// <summary>
  181. /// <returns></returns>
  182. [HttpGet]
  183. public ActionResult OnsitePayForm()
  184. {
  185. return View();
  186. }
  187. /// <summary>
  188. /// 主页面【学子在线-新生信息完善】
  189. /// <summary>
  190. /// <returns></returns>
  191. [HttpGet]
  192. public ActionResult IndexOfStudent()
  193. {
  194. return View();
  195. }
  196. /// <summary>
  197. /// 分配班级
  198. /// <summary>
  199. /// <returns></returns>
  200. [HttpGet]
  201. public ActionResult AllocationClass()
  202. {
  203. return View();
  204. }
  205. [HttpGet]
  206. public ActionResult AllocationClassDC()
  207. {
  208. return View();
  209. }
  210. /// <summary>
  211. /// 分配宿舍
  212. /// <summary>
  213. /// <returns></returns>
  214. [HttpGet]
  215. public ActionResult AllocationDormitory()
  216. {
  217. return View();
  218. }
  219. /// <summary>
  220. /// 分配床位
  221. /// <summary>
  222. /// <returns></returns>
  223. [HttpGet]
  224. public ActionResult AllocationBed()
  225. {
  226. return View();
  227. }
  228. /// <summary>
  229. /// 导入床位页
  230. /// <summary>
  231. /// <returns></returns>
  232. [HttpGet]
  233. public ActionResult ImportBedForm()
  234. {
  235. return View();
  236. }
  237. /// <summary>
  238. /// 导出学生宿页舍
  239. /// <summary>
  240. /// <returns></returns>
  241. [HttpGet]
  242. public ActionResult ExportBedForm()
  243. {
  244. return View();
  245. }
  246. /// <summary>
  247. /// 新生信息统计
  248. /// <summary>
  249. /// <returns></returns>
  250. [HttpGet]
  251. public ActionResult StatisticIndex()
  252. {
  253. var academic = Common.GetSemesterAndYear();
  254. ViewBag.Grade = academic.AcademicYearShort.Substring(0, 2);
  255. return View();
  256. }
  257. /// <summary>
  258. /// 新生信息班级统计
  259. /// <summary>
  260. /// <returns></returns>
  261. [HttpGet]
  262. public ActionResult StatisticClassIndex()
  263. {
  264. var academic = Common.GetSemesterAndYear();
  265. ViewBag.Grade = academic.AcademicYearShort.Substring(0, 2);
  266. return View();
  267. }
  268. #endregion
  269. #region 获取数据
  270. /// <summary>
  271. /// 获取列表数据
  272. /// <summary>
  273. /// <returns></returns>
  274. [HttpGet]
  275. [AjaxOnly]
  276. public ActionResult GetList(string queryJson)
  277. {
  278. var data = stuInfoFreshIBLL.GetList(queryJson);
  279. return Success(data);
  280. }
  281. /// <summary>
  282. /// 获取列表分页数据
  283. /// <param name="pagination">分页参数</param>
  284. /// <summary>
  285. /// <returns></returns>
  286. [HttpGet]
  287. [AjaxOnly]
  288. public ActionResult GetPageList(string pagination, string queryJson)
  289. {
  290. Pagination paginationobj = pagination.ToObject<Pagination>();
  291. var data = stuInfoFreshIBLL.GetPageList(paginationobj, queryJson);
  292. var jsonData = new
  293. {
  294. rows = data,
  295. total = paginationobj.total,
  296. page = paginationobj.page,
  297. records = paginationobj.records
  298. };
  299. return Success(jsonData);
  300. }
  301. /// <summary>
  302. /// 获取表单数据
  303. /// <summary>
  304. /// <returns></returns>
  305. [HttpGet]
  306. [AjaxOnly]
  307. public ActionResult GetFormData(string keyValue)
  308. {
  309. var StuInfoFreshData = stuInfoFreshIBLL.GetStuInfoFreshEntity(keyValue);
  310. StuInfoFreshData.Files = StuInfoFreshData.ID;
  311. //获取头像地址
  312. var url = Config.GetValue("defaultheadimg");
  313. if (StuInfoFreshData.IsPhoto == true && !string.IsNullOrEmpty(StuInfoFreshData.Photo))
  314. {
  315. var annexesFileEntity = annexesFileIBLL.GetEntity(StuInfoFreshData.Photo);
  316. if (annexesFileEntity != null)
  317. {
  318. url = "/" + annexesFileEntity.F_FilePath.Substring(annexesFileEntity.F_FilePath.IndexOf("Resource"));
  319. }
  320. }
  321. var StuInfoFreshEmergePeopleData = stuInfoFreshIBLL.GetStuInfoFreshEmergePeopleList(StuInfoFreshData.ID);
  322. var StuInfoFreshFamilyData = stuInfoFreshIBLL.GetStuInfoFreshFamilyList(StuInfoFreshData.ID);
  323. var jsonData = new
  324. {
  325. StuInfoFresh = StuInfoFreshData,
  326. StuInfoFreshEmergePeople = StuInfoFreshEmergePeopleData,
  327. StuInfoFreshFamily = StuInfoFreshFamilyData,
  328. Url = url
  329. };
  330. return Success(jsonData);
  331. }
  332. /// <summary>
  333. /// 获取分配宿舍列表
  334. /// </summary>
  335. /// <param name="pagination"></param>
  336. /// <param name="queryJson"></param>
  337. /// <returns></returns>
  338. [HttpGet]
  339. [AjaxOnly]
  340. public ActionResult GetDormitorys(string pagination, string queryJson)
  341. {
  342. Pagination paginationobj = pagination.ToObject<Pagination>();
  343. var data = stuInfoFreshIBLL.GetDormitorys(paginationobj, queryJson);
  344. var jsonData = new
  345. {
  346. rows = data,
  347. total = paginationobj.total,
  348. page = paginationobj.page,
  349. records = paginationobj.records
  350. };
  351. return Success(jsonData);
  352. }
  353. /// <summary>
  354. /// 获取分配宿舍列表
  355. /// </summary>
  356. /// <param name="pagination"></param>
  357. /// <param name="queryJson"></param>
  358. /// <returns></returns>
  359. [HttpGet]
  360. [AjaxOnly]
  361. public ActionResult GetDormitorys2(string pagination, string queryJson)
  362. {
  363. Pagination paginationobj = pagination.ToObject<Pagination>();
  364. var data = stuInfoFreshIBLL.GetDormitorys2(paginationobj, queryJson);
  365. var jsonData = new
  366. {
  367. rows = data,
  368. total = paginationobj.total,
  369. page = paginationobj.page,
  370. records = paginationobj.records
  371. };
  372. return Success(jsonData);
  373. }
  374. /// <summary>
  375. /// 获取分配宿舍左侧树形数据
  376. /// <summary>
  377. /// <returns></returns>
  378. [HttpGet]
  379. [AjaxOnly]
  380. public ActionResult GetDormitoryTree()
  381. {
  382. var data = stuInfoFreshIBLL.GetTree().OrderBy(x => x.value);
  383. return Success(data);
  384. }
  385. /// <summary>
  386. /// 获取分配床位左侧树形数据
  387. /// <summary>
  388. /// <returns></returns>
  389. [HttpGet]
  390. [AjaxOnly]
  391. public ActionResult GetBedTree(string classNo, string gender)
  392. {
  393. var data = stuInfoFreshIBLL.GetBedTree(classNo, gender).OrderBy(x => x.text);
  394. return Success(data);
  395. }
  396. #endregion
  397. #region 提交数据
  398. /// <summary>
  399. /// 删除实体数据
  400. /// <param name="keyValue">主键</param>
  401. /// <summary>
  402. /// <returns></returns>
  403. [HttpPost]
  404. [AjaxOnly]
  405. public ActionResult DeleteForm(string keyValue)
  406. {
  407. stuInfoFreshIBLL.DeleteEntity(keyValue);
  408. return Success("删除成功!");
  409. }
  410. /// <summary>
  411. /// 保存实体数据(新增、修改)
  412. /// <param name="keyValue">主键</param>
  413. /// <summary>
  414. /// <returns></returns>
  415. [HttpPost]
  416. [ValidateAntiForgeryToken]
  417. [AjaxOnly]
  418. public ActionResult SaveForm(string keyValue, string strEntity, string strstuInfoFreshEmergePeopleList, string strstuInfoFreshFamilyList)
  419. {
  420. StuInfoFreshEntity entity = strEntity.ToObject<StuInfoFreshEntity>();
  421. if (!string.IsNullOrEmpty(entity.Photo))
  422. {
  423. entity.IsPhoto = true;
  424. }
  425. else
  426. {
  427. entity.IsPhoto = false;
  428. }
  429. List<StuInfoFreshEmergePeopleEntity> stuInfoFreshEmergePeopleList = strstuInfoFreshEmergePeopleList.ToObject<List<StuInfoFreshEmergePeopleEntity>>();
  430. List<StuInfoFreshFamilyEntity> stuInfoFreshFamilyList = strstuInfoFreshFamilyList.ToObject<List<StuInfoFreshFamilyEntity>>();
  431. var kshList = stuInfoFreshIBLL.Getksh(entity.ksh);
  432. if (string.IsNullOrEmpty(keyValue))
  433. {
  434. if (kshList != null)
  435. {
  436. return Fail("保存失败,考生号不可重复");
  437. }
  438. }
  439. else
  440. {
  441. if (kshList != null && kshList.ID != keyValue)
  442. {
  443. return Fail("保存失败,考生号不可重复");
  444. }
  445. }
  446. stuInfoFreshIBLL.SaveEntity(keyValue, entity, stuInfoFreshEmergePeopleList, stuInfoFreshFamilyList);
  447. return Success("保存成功!");
  448. }
  449. /// <summary>
  450. /// 保存实体数据(新增、修改)
  451. /// <param name="keyValue">主键</param>
  452. /// <summary>
  453. /// <returns></returns>
  454. [HttpPost]
  455. [ValidateAntiForgeryToken]
  456. [AjaxOnly]
  457. public ActionResult SaveLoanForm(string keyValue, string strEntity)
  458. {
  459. StuInfoFreshEntity entity = strEntity.ToObject<StuInfoFreshEntity>();
  460. stuInfoFreshIBLL.SaveEntity(keyValue, entity);
  461. return Success("保存成功!");
  462. }
  463. #endregion
  464. #region 扩展数据
  465. /// <summary>
  466. /// 拍照
  467. /// </summary>
  468. /// <param name="stuId"></param>
  469. /// <param name="base64url"></param>
  470. /// <returns></returns>
  471. [HttpPost]
  472. [AjaxOnly]
  473. public ActionResult DoPhoto(string base64url)
  474. {
  475. var loginuser = LoginUserInfo.Get();
  476. //头像处理
  477. var folderId = Guid.NewGuid().ToString();
  478. string filePath = Config.GetValue("AnnexesFile");
  479. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  480. string FileEextension = ".png";
  481. string fileGuid = Guid.NewGuid().ToString();
  482. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, loginuser.account, uploadDate, fileGuid, FileEextension);
  483. //创建文件夹
  484. string path = Path.GetDirectoryName(virtualPath);
  485. Directory.CreateDirectory(path);
  486. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  487. if (!System.IO.File.Exists(virtualPath))
  488. {
  489. byte[] bytes = Convert.FromBase64String(base64url.Replace("data:image/png;base64,", ""));
  490. FileInfo file = new FileInfo(virtualPath);
  491. FileStream fs = file.Create();
  492. fs.Write(bytes, 0, bytes.Length);
  493. fs.Close();
  494. //文件信息写入数据库
  495. fileAnnexesEntity.F_Id = fileGuid;
  496. fileAnnexesEntity.F_FileName = "userphoto.png";
  497. fileAnnexesEntity.F_FilePath = virtualPath;
  498. fileAnnexesEntity.F_FileSize = bytes.Length.ToString();
  499. fileAnnexesEntity.F_FileExtensions = FileEextension;
  500. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  501. fileAnnexesEntity.F_CreateUserId = loginuser.userId;
  502. fileAnnexesEntity.F_CreateUserName = loginuser.realName;
  503. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  504. }
  505. var data = new
  506. {
  507. Url = virtualPath,
  508. AnnexesFileId = fileGuid
  509. };
  510. return Success(data);
  511. }
  512. /// <summary>
  513. ///确认报到、取消报到
  514. /// </summary>
  515. /// <returns></returns>
  516. [HttpPost]
  517. [AjaxOnly]
  518. public ActionResult IsRegister(string keyValue, string status)
  519. {
  520. stuInfoFreshIBLL.IsRegister(keyValue, status);
  521. return Success("操作成功");
  522. }
  523. /// <summary>
  524. ///收取学生档案
  525. /// </summary>
  526. /// <returns></returns>
  527. [HttpPost]
  528. [AjaxOnly]
  529. public ActionResult IsCollectFile(string keyValue, string status)
  530. {
  531. stuInfoFreshIBLL.IsCollectFile(keyValue, status);
  532. return Success("操作成功");
  533. }
  534. /// <summary>
  535. ///领取钥匙
  536. /// </summary>
  537. /// <returns></returns>
  538. [HttpPost]
  539. [AjaxOnly]
  540. public ActionResult IsGetKey(string keyValue, string status)
  541. {
  542. stuInfoFreshIBLL.IsGetKey(keyValue, status);
  543. return Success("操作成功");
  544. }
  545. /// <summary>
  546. ///领取校园卡
  547. /// </summary>
  548. /// <returns></returns>
  549. [HttpPost]
  550. [AjaxOnly]
  551. public ActionResult IsGetCard(string keyValue, string status)
  552. {
  553. stuInfoFreshIBLL.IsGetCard(keyValue, status);
  554. return Success("操作成功");
  555. }
  556. /// <summary>
  557. ///缴费
  558. /// </summary>
  559. /// <returns></returns>
  560. [HttpPost]
  561. [AjaxOnly]
  562. public ActionResult IsPayFee(string keyValue, string status)
  563. {
  564. stuInfoFreshIBLL.IsPayFee(keyValue, status);
  565. return Success("操作成功");
  566. }
  567. /// <summary>
  568. ///其他费用缴费
  569. /// </summary>
  570. /// <returns></returns>
  571. [HttpPost]
  572. [AjaxOnly]
  573. public ActionResult IsOtherPayFee(string keyValue, string status)
  574. {
  575. stuInfoFreshIBLL.IsOtherPayFee(keyValue, status);
  576. return Success("操作成功");
  577. }
  578. /// <summary>
  579. ///审核助学贷款
  580. /// </summary>
  581. /// <returns></returns>
  582. [HttpPost]
  583. [AjaxOnly]
  584. public ActionResult DoCheckLoan(string keyValue, string status)
  585. {
  586. stuInfoFreshIBLL.DoCheckLoan(keyValue, status);
  587. return Success("操作成功");
  588. }
  589. /// <summary>
  590. /// 获取新生缴费明细
  591. /// <summary>
  592. /// <returns></returns>
  593. [HttpGet]
  594. [AjaxOnly]
  595. public ActionResult GetPayFeeDetail(string keyValue)
  596. {
  597. var StuInfoFreshData = stuInfoFreshIBLL.GetStuInfoFreshEntity(keyValue);
  598. var FinaChargesStandardList = new List<FinaChargesStandardEntity>();
  599. if (!string.IsNullOrEmpty(StuInfoFreshData.ClassNo) && !string.IsNullOrEmpty(StuInfoFreshData.MajorNo))
  600. {
  601. var ClassInfoEntity = classInfoIBLL.GetClassInfoEntityByClassNo(StuInfoFreshData.ClassNo);
  602. if (ClassInfoEntity != null)
  603. {
  604. var academicAndYear = Common.GetSemesterAndYear();
  605. FinaChargesStandardList = finaChargesStandardIBLL.GetFinaChargesStandardListByMajorNoOfNotAll(StuInfoFreshData.MajorNo, academicAndYear.AcademicYearShort, academicAndYear.Semester, ClassInfoEntity.Grade).ToList();
  606. }
  607. }
  608. var PayFeeTotal = FinaChargesStandardList.Select(x => x.Standard).Sum();
  609. var jsonData = new
  610. {
  611. FinaChargesStandardList = FinaChargesStandardList,
  612. PayFeeTotal = PayFeeTotal
  613. };
  614. return Success(jsonData);
  615. }
  616. /// <summary>
  617. /// 分配班级
  618. /// </summary>
  619. /// <param name="classNo"></param>
  620. /// <param name="dataJson"></param>
  621. /// <returns></returns>
  622. [HttpPost]
  623. [AjaxOnly]
  624. public ActionResult DoAllocationClass(string classNo, string dataJson)
  625. {
  626. var StuInfoFreshList = JsonConvert.DeserializeObject<List<StuInfoFreshEntity>>(dataJson);
  627. var ClassInfoEntity = classInfoIBLL.GetClassInfoEntityByClassNo(classNo);
  628. if (ClassInfoEntity == null)
  629. {
  630. return Fail("分配的班级不存在!");
  631. }
  632. //获取当前班级已有人数
  633. var hasList = stuInfoFreshIBLL.GetStuInfoFreshListByClassNo(classNo);
  634. var hasLength = hasList.Count();
  635. var tempLength = hasLength;
  636. if (StuInfoFreshList.Any())
  637. {
  638. foreach (var item in StuInfoFreshList)
  639. {
  640. tempLength++;
  641. item.ClassNo = classNo;
  642. item.DeptNo = ClassInfoEntity.DeptNo;
  643. item.MajorNo = ClassInfoEntity.MajorNo;
  644. item.Grade = ClassInfoEntity.Grade;
  645. item.StuNo = string.Format("{0}{1}", classNo, tempLength < 10 ? "0" + tempLength : tempLength.ToString());
  646. }
  647. }
  648. stuInfoFreshIBLL.DoAllocationClass(StuInfoFreshList);
  649. return Success("分配成功!");
  650. }
  651. /// <summary>
  652. /// 分配宿舍
  653. /// </summary>
  654. /// <param name="classNo"></param>
  655. /// <param name="dataJson"></param>
  656. /// <returns></returns>
  657. [HttpPost]
  658. [AjaxOnly]
  659. public ActionResult DoAllocationDormitory(string classNo, string dataJson)
  660. {
  661. var acc_DormitoryBuildEntities = JsonConvert.DeserializeObject<List<Acc_DormitoryBuildEntity>>(dataJson);
  662. foreach (var entity in acc_DormitoryBuildEntities)
  663. {
  664. //预分床位数量是否合理
  665. if (entity.PlanBedNum < 1)
  666. {
  667. return Fail("预分床位数量至少为1位!");
  668. }
  669. if (entity.PlanBedNum > entity.RemainBedNum)
  670. {
  671. return Fail("预分床位数量不能超出可分配床位数量!");
  672. }
  673. entity.PlanClassNo = classNo;
  674. }
  675. stuInfoFreshIBLL.DoAllocationDormitory(acc_DormitoryBuildEntities);
  676. return Success("分配成功!");
  677. }
  678. /// <summary>
  679. /// 取消分配宿舍
  680. /// </summary>
  681. /// <param name="classNo"></param>
  682. /// <param name="dataJson"></param>
  683. /// <returns></returns>
  684. [HttpPost]
  685. [AjaxOnly]
  686. public ActionResult CancelAllocationDormitory(string classNo, string dataJson)
  687. {
  688. var acc_DormitoryBuildEntities = JsonConvert.DeserializeObject<List<Acc_DormitoryBuildEntity>>(dataJson);
  689. foreach (var entity in acc_DormitoryBuildEntities)
  690. {
  691. //取消已分配床位数量是否合理
  692. if (entity.CancelUseBedNum < 1)
  693. {
  694. return Fail("取消已分配床位数量至少为1位!");
  695. }
  696. if (entity.CancelUseBedNum > entity.UseBedNum)
  697. {
  698. return Fail("取消已分配床位数量不能超出已分配床位数量!");
  699. }
  700. entity.PlanClassNo = classNo;
  701. }
  702. stuInfoFreshIBLL.CancelAllocationDormitory(acc_DormitoryBuildEntities);
  703. return Success("取消分配成功!");
  704. }
  705. /// <summary>
  706. /// 分配床位
  707. /// </summary>
  708. /// <param name="dormitoryNo"></param>
  709. /// <param name="stuId"></param>
  710. /// <param name="dormitoryName"></param>
  711. /// <returns></returns>
  712. [HttpPost]
  713. [AjaxOnly]
  714. public ActionResult DoAllocationBed(string dormitoryNo, string keyValue)
  715. {
  716. stuInfoFreshIBLL.DoAllocationBed(dormitoryNo, keyValue);
  717. return Success("分配成功!");
  718. }
  719. /// <summary>
  720. /// 自动分配床位
  721. /// </summary>
  722. /// <param name="dormitoryNo"></param>
  723. /// <param name="stuId"></param>
  724. /// <param name="dormitoryName"></param>
  725. /// <returns></returns>
  726. [HttpPost]
  727. [AjaxOnly]
  728. public ActionResult DoAllocationBedOfAuto(string classNo)
  729. {
  730. stuInfoFreshIBLL.DoAllocationBedOfAuto(classNo);
  731. return Success("分配成功!");
  732. }
  733. [HttpGet]
  734. [AjaxOnly]
  735. public ActionResult ConfirmDormitory()
  736. {
  737. stuInfoFreshIBLL.ConfirmDormitory();
  738. return Success("操作成功!");
  739. }
  740. [HttpGet]
  741. [AjaxOnly]
  742. public ActionResult ConfirmDormitoryTwo()
  743. {
  744. stuInfoFreshIBLL.ConfirmDormitoryTwo();
  745. return Success("操作成功!");
  746. }
  747. [HttpPost]
  748. [AjaxOnly]
  749. public ActionResult GetUniform(string keyValue, bool Status)
  750. {
  751. stuInfoFreshIBLL.GetUniform(keyValue, Status);
  752. return Success("操作成功");
  753. }
  754. [HttpPost]
  755. [AjaxOnly]
  756. public ActionResult PayUniform(string keyValue, bool Status)
  757. {
  758. stuInfoFreshIBLL.PayUniform(keyValue, Status);
  759. return Success("操作成功");
  760. }
  761. /// <summary>
  762. /// 导入学籍信息
  763. /// </summary>
  764. /// <param name="dormitoryNo"></param>
  765. /// <param name="stuId"></param>
  766. /// <param name="dormitoryName"></param>
  767. /// <returns></returns>
  768. [HttpPost]
  769. [AjaxOnly]
  770. public ActionResult ImportStuInfoBasic()
  771. {
  772. stuInfoFreshIBLL.ImportStuInfoBasic();
  773. return Success("生成学籍信息成功!");
  774. }
  775. /// <summary>
  776. /// 导入床位
  777. /// </summary>
  778. /// <returns></returns>
  779. public ActionResult ImportBed(HttpPostedFileBase filedata)
  780. {
  781. if (filedata == null || filedata.FileName == null || filedata.ContentLength == 0)
  782. {
  783. if (Request.Files.Count > 0)
  784. {
  785. filedata = Request.Files[0];
  786. }
  787. }
  788. if (filedata == null)
  789. {
  790. return Fail("未获取到文件");
  791. }
  792. var pathoffirst = Config.GetValue("AnnexesFile");
  793. var pathofsecond = "/DormitoryBuildImportFile";
  794. var pathofthird = DateTime.Now.ToString("yyyyMMdd");
  795. var filename = filedata.FileName;
  796. var exten = Path.GetExtension(filename);
  797. var fileguid = Guid.NewGuid().ToString();
  798. var pathoffull = string.Format("{0}/{1}/{2}/{3}{4}", pathoffirst, pathofsecond, pathofthird, fileguid, exten);
  799. var pathofdown = string.Format("{0}/{1}/{2}{3}", pathofsecond, pathofthird, fileguid, exten);
  800. var directory = Path.GetDirectoryName(pathoffull);
  801. if (!Directory.Exists(directory))
  802. {
  803. Directory.CreateDirectory(directory);
  804. }
  805. //保存文件
  806. filedata.SaveAs(pathoffull);
  807. //读取文件
  808. var filePath = pathoffull;
  809. var strMsg = string.Empty;
  810. IWorkbook wk = null;
  811. string extension = System.IO.Path.GetExtension(filePath);
  812. try
  813. {
  814. FileStream fs = System.IO.File.OpenRead(filePath);
  815. if (extension.Equals(".xls"))
  816. {
  817. wk = new HSSFWorkbook(fs);
  818. }
  819. else
  820. {
  821. wk = new XSSFWorkbook(fs);
  822. }
  823. fs.Close();
  824. //读取当前表数据
  825. ISheet sheet = wk.GetSheetAt(0);
  826. IRow row = sheet.GetRow(0);
  827. int offset = 0;
  828. //导入床位成功数量
  829. int bedSuccNum = 0;
  830. var stuinfofreshlist = stuInfoFreshIBLL.GetList("{}");
  831. var accommodationList = accommodationIBLL.GetList();
  832. for (int i = 1; i <= sheet.LastRowNum; i++)
  833. {
  834. row = sheet.GetRow(i);
  835. if (row != null)
  836. {
  837. //姓名0、学号1、班级2、宿舍楼3、单元4、楼层5、房间6、床位7
  838. var stuInfoFreshEntity = stuinfofreshlist.FirstOrDefault(m => m.StuNo == row.GetCell(1).ToString());
  839. if (stuInfoFreshEntity == null)
  840. {
  841. continue;
  842. }
  843. var classInfoEntity = classInfoIBLL.GetClassInfoEntityByClassName(row.GetCell(2).ToString());
  844. if (classInfoEntity == null)
  845. {
  846. continue;
  847. }
  848. if (accommodationList.Any())
  849. {
  850. var build = accommodationList.FirstOrDefault(x => x.BuildType == "1" && x.Name == row.GetCell(3).ToString());
  851. if (build != null)
  852. {
  853. var unit = accommodationList.FirstOrDefault(x => x.BuildType == "2" && x.ParentID == build.ID && x.Name == row.GetCell(4).ToString());
  854. if (unit != null)
  855. {
  856. var floor = accommodationList.FirstOrDefault(x => x.BuildType == "3" && x.ParentID == unit.ID && x.Name == row.GetCell(5).ToString());
  857. if (floor != null)
  858. {
  859. var room = accommodationList.FirstOrDefault(x => x.BuildType == "4" && x.ParentID == floor.ID && x.Name == row.GetCell(6).ToString());
  860. if (room != null)
  861. {
  862. var bed = accommodationList.FirstOrDefault(x => x.BuildType == "5" && x.ParentID == room.ID && x.Name == row.GetCell(7).ToString());
  863. if (bed != null)
  864. {
  865. //分配床位
  866. stuInfoFreshIBLL.DoAllocationBed(bed.ID, stuInfoFreshEntity.ID);
  867. bedSuccNum++;
  868. //分配宿舍
  869. var alist = new List<Acc_DormitoryBuildEntity>();
  870. var accommodationEntity = new Acc_DormitoryBuildEntity();
  871. accommodationEntity.ID = room.ID;
  872. accommodationEntity.PlanBedNum = 1;
  873. accommodationEntity.PlanClassNo = classInfoEntity.ClassNo;
  874. accommodationEntity.bedId = bed.ID;
  875. alist.Add(accommodationEntity);
  876. stuInfoFreshIBLL.ImportDormitory(alist);
  877. }
  878. }
  879. }
  880. }
  881. }
  882. }
  883. }
  884. }
  885. strMsg = "导入床位成功" + bedSuccNum + "个!";
  886. }
  887. catch (Exception e)
  888. {
  889. return Fail("导入床位失败!" + strMsg);
  890. }
  891. return Success("导入床位成功!" + strMsg);
  892. }
  893. /// <summary>
  894. /// 导出学生宿舍信息
  895. /// </summary>
  896. /// <returns></returns>
  897. public FileResult ExportBed(string queryJson)
  898. {
  899. var fileHead = "学生宿舍信息";
  900. var postData = JsonConvert.DeserializeObject<StuInfoFreshEntity>(queryJson);
  901. if (!string.IsNullOrEmpty(postData.ClassNo))
  902. {
  903. var classInfoEntity = classInfoIBLL.GetClassInfoEntityByClassNo(postData.ClassNo);
  904. fileHead = classInfoEntity?.ClassName + fileHead;
  905. }
  906. else if (!string.IsNullOrEmpty(postData.MajorNo))
  907. {
  908. var majorEntity = cdMajorIBLL.GetCdMajorEntityByMajorNo(postData.MajorNo);
  909. fileHead = majorEntity?.MajorName + fileHead;
  910. }
  911. else if (!string.IsNullOrEmpty(postData.DeptNo))
  912. {
  913. var deptEntity = cdDeptIBLL.GetCdDeptEntityByNo(postData.DeptNo);
  914. fileHead = deptEntity?.DeptName + fileHead;
  915. }
  916. FileStreamResult result = null;
  917. HSSFWorkbook book = new HSSFWorkbook();
  918. ISheet sheet = book.CreateSheet("Sheet0");
  919. for (int i = 0; i <= 9; i++)
  920. {
  921. sheet.SetColumnWidth(i, 256 * 15);
  922. }
  923. IRow headrow = sheet.CreateRow(0);
  924. headrow.CreateCell(0).SetCellValue(fileHead);
  925. sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 9));
  926. IRow cellrow = sheet.CreateRow(1);
  927. cellrow.CreateCell(0).SetCellValue("姓名");
  928. cellrow.CreateCell(1).SetCellValue("学号");
  929. cellrow.CreateCell(2).SetCellValue("系");
  930. cellrow.CreateCell(3).SetCellValue("专业");
  931. cellrow.CreateCell(4).SetCellValue("班级");
  932. cellrow.CreateCell(5).SetCellValue("宿舍楼");
  933. cellrow.CreateCell(6).SetCellValue("单元");
  934. cellrow.CreateCell(7).SetCellValue("楼层");
  935. cellrow.CreateCell(8).SetCellValue("房间");
  936. cellrow.CreateCell(9).SetCellValue("床位");
  937. //获取数据源
  938. var data = stuInfoFreshIBLL.GetList(queryJson).ToList();
  939. foreach (var item in data)
  940. {
  941. var i = data.IndexOf(item);
  942. IRow row = sheet.CreateRow(2 + i);
  943. row.CreateCell(0).SetCellValue(item.StuName);
  944. row.CreateCell(1).SetCellValue(item.StuNo);
  945. row.CreateCell(2).SetCellValue(item.DeptName);
  946. row.CreateCell(3).SetCellValue(item.MajorName);
  947. row.CreateCell(4).SetCellValue(item.ClassName);
  948. row.CreateCell(5).SetCellValue(item.Build);
  949. row.CreateCell(6).SetCellValue(item.Unit);
  950. row.CreateCell(7).SetCellValue(item.floor);
  951. row.CreateCell(8).SetCellValue(item.Room);
  952. row.CreateCell(9).SetCellValue(item.Bed);
  953. }
  954. var fileguid = Guid.NewGuid().ToString();
  955. var path = Server.MapPath("~/Resource/DormitoryBuildExportFile/" + DateTime.Now.ToString("yyyyMMdd") + "/");
  956. var pathoffull = path + fileguid + ".xls";
  957. if (!Directory.Exists(path))
  958. {
  959. Directory.CreateDirectory(path);
  960. }
  961. FileStream fswrite = new FileStream(pathoffull, FileMode.OpenOrCreate, FileAccess.Write);
  962. book.Write(fswrite);
  963. fswrite.Close();
  964. FileStream fsread = new FileStream(pathoffull, FileMode.OpenOrCreate, FileAccess.Read);
  965. result = File(fsread, "application/ms-excel", fileHead + ".xls");
  966. return result;
  967. }
  968. /// <summary>
  969. /// 删除宿舍信息
  970. /// </summary>
  971. /// <param name="dormitoryNo"></param>
  972. /// <param name="stuId"></param>
  973. /// <param name="dormitoryName"></param>
  974. /// <returns></returns>
  975. [HttpPost]
  976. [AjaxOnly]
  977. public ActionResult DeleteBed(string keyValue)
  978. {
  979. stuInfoFreshIBLL.DeleteBed(keyValue);
  980. return Success("删除成功!");
  981. }
  982. /// <summary>
  983. /// 年级下拉框信息【新生信息统计】
  984. /// </summary>
  985. /// <returns></returns>
  986. [HttpGet]
  987. [AjaxOnly]
  988. public ActionResult GetGradeData()
  989. {
  990. var data = WebHelper.GenerateNearByYear2();
  991. return Success(data);
  992. }
  993. /// <summary>
  994. /// 获取列表数据
  995. /// <summary>
  996. /// <returns></returns>
  997. [HttpGet]
  998. [AjaxOnly]
  999. public ActionResult GetStatisticList(string queryJson)
  1000. {
  1001. var data = stuInfoFreshIBLL.GetList2(queryJson);
  1002. var list = data.Where(x => !string.IsNullOrEmpty(x.MajorNo)).GroupBy(x => x.MajorNo).Select(x => new StatisticModel
  1003. {
  1004. MajorNo = x.Key,
  1005. MajorName = x.FirstOrDefault()?.MajorName,
  1006. Grade = x.FirstOrDefault()?.Grade,
  1007. TotalNum = x.Count(),
  1008. InfoNum = x.Count(y => y.IsStudentEdit == true),
  1009. RegisterNum = x.Count(y => y.RegisterStatus == "1"),
  1010. PayFeeNum = x.Count(y => y.PayFeeStatus == "1" || y.OnsitePayFeeStatus == "1"),
  1011. GetKeyNum = x.Count(y => y.GetKeyStatus == "1"),
  1012. GetCardNum = x.Count(y => y.GetCardStatus == "1"),
  1013. CollectFileNum = x.Count(y => y.CollectFileStatus == "1"),
  1014. LoanNum = x.Count(y => y.StudentLoanStatus == "1")
  1015. }).OrderBy(x => x.MajorNo);
  1016. //var aa = new StatisticModel
  1017. //{
  1018. // MajorNo = "全校",
  1019. // MajorName = "全校",
  1020. // Grade = list.FirstOrDefault()?.Grade,
  1021. // TotalNum = list.Select(x => x.TotalNum).Sum(),
  1022. // InfoNum = list.Select(x => x.InfoNum).Sum(),
  1023. // RegisterNum = list.Select(x => x.RegisterNum).Sum(),
  1024. // PayFeeNum = list.Select(x => x.PayFeeNum).Sum(),
  1025. // GetKeyNum = list.Select(x => x.GetKeyNum).Sum(),
  1026. //};
  1027. //var allList = new List<StatisticModel>();
  1028. //allList.Add(aa);
  1029. //allList.AddRange(list);
  1030. return Success(list);
  1031. }
  1032. /// <summary>
  1033. /// 获取列表数据
  1034. /// <summary>
  1035. /// <returns></returns>
  1036. [HttpGet]
  1037. [AjaxOnly]
  1038. public ActionResult GetStatisticListOfClass(string queryJson)
  1039. {
  1040. var data = stuInfoFreshIBLL.GetList2(queryJson);
  1041. var list = data.Where(x => !string.IsNullOrEmpty(x.ClassNo) && !string.IsNullOrEmpty(x.MajorNo)).GroupBy(x => new { x.MajorNo, x.ClassNo }).Select(x => new StatisticModel
  1042. {
  1043. ClassNo = x.Key.ClassNo,
  1044. ClassName = x.FirstOrDefault()?.ClassName,
  1045. Grade = x.FirstOrDefault()?.Grade,
  1046. MajorNo = x.Key.MajorNo,
  1047. MajorName = x.FirstOrDefault()?.MajorName,
  1048. TotalNum = x.Count(),
  1049. InfoNum = x.Count(y => y.IsStudentEdit == true),
  1050. RegisterNum = x.Count(y => y.RegisterStatus == "1"),
  1051. PayFeeNum = x.Count(y => y.PayFeeStatus == "1" || y.OnsitePayFeeStatus == "1"),
  1052. GetKeyNum = x.Count(y => y.GetKeyStatus == "1"),
  1053. GetCardNum = x.Count(y => y.GetCardStatus == "1"),
  1054. CollectFileNum = x.Count(y => y.CollectFileStatus == "1"),
  1055. LoanNum = x.Count(y => y.StudentLoanStatus == "1")
  1056. }).OrderBy(x => x.MajorNo).ThenBy(x => x.ClassNo);
  1057. return Success(list);
  1058. }
  1059. public class StatisticModel
  1060. {
  1061. public string MajorNo { get; set; }
  1062. public string MajorName { get; set; }
  1063. public string ClassNo { get; set; }
  1064. public string ClassName { get; set; }
  1065. public string Grade { get; set; }
  1066. /// <summary>
  1067. /// 总人数
  1068. /// </summary>
  1069. public int TotalNum { get; set; }
  1070. /// <summary>
  1071. /// 完善个人信息人数
  1072. /// </summary>
  1073. public int InfoNum { get; set; }
  1074. /// <summary>
  1075. /// 报到人数
  1076. /// </summary>
  1077. public int RegisterNum { get; set; }
  1078. /// <summary>
  1079. /// 缴费人数
  1080. /// </summary>
  1081. public int PayFeeNum { get; set; }
  1082. /// <summary>
  1083. /// 领钥匙人数
  1084. /// </summary>
  1085. public int GetKeyNum { get; set; }
  1086. /// <summary>
  1087. /// 已领取校园卡人数
  1088. /// </summary>
  1089. public int GetCardNum { get; set; }
  1090. /// <summary>
  1091. /// 已收取档案人数
  1092. /// </summary>
  1093. public int CollectFileNum { get; set; }
  1094. /// <summary>
  1095. /// 贷款人数
  1096. /// </summary>
  1097. public int LoanNum { get; set; }
  1098. }
  1099. /// <summary>
  1100. /// 获取列表数据
  1101. /// <summary>
  1102. /// <returns></returns>
  1103. [HttpGet]
  1104. [AjaxOnly]
  1105. public ActionResult GetStatisticArea(string queryJson)
  1106. {
  1107. var data = stuInfoFreshIBLL.GetList(queryJson);
  1108. var list = data.GroupBy(x => x.ProvinceNo).Select(x => new
  1109. {
  1110. ProvinceNo = x.Key,
  1111. TotalNum = x.Count(),
  1112. RegisterNum = x.Count(y => y.RegisterStatus == "1"),
  1113. BoyNum = x.Count(y => y.GenderNo == "1"),
  1114. GirlNum = x.Count(y => y.GenderNo == "0"),
  1115. }).OrderByDescending(a => a.TotalNum).ToList();
  1116. var item = new
  1117. {
  1118. ProvinceNo = "总计",
  1119. TotalNum = data.Count(),
  1120. RegisterNum = data.Count(y => y.RegisterStatus == "1"),
  1121. BoyNum = data.Count(y => y.GenderNo == "1"),
  1122. GirlNum = data.Count(y => y.GenderNo == "0"),
  1123. };
  1124. var zhounei = data.Where(a => a.ProvinceNo.Contains("5121"));
  1125. var item1 = new
  1126. {
  1127. ProvinceNo = "州内",
  1128. TotalNum = zhounei.Count(),
  1129. RegisterNum = zhounei.Count(y => y.RegisterStatus == "1"),
  1130. BoyNum = zhounei.Count(y => y.GenderNo == "1"),
  1131. GirlNum = zhounei.Count(y => y.GenderNo == "0"),
  1132. };
  1133. var zhouwai = data.Where(a => !a.ProvinceNo.Contains("5121"));
  1134. var item2 = new
  1135. {
  1136. ProvinceNo = "州外",
  1137. TotalNum = zhouwai.Count(),
  1138. RegisterNum = zhouwai.Count(y => y.RegisterStatus == "1"),
  1139. BoyNum = zhouwai.Count(y => y.GenderNo == "1"),
  1140. GirlNum = zhouwai.Count(y => y.GenderNo == "0"),
  1141. };
  1142. list.Add(item);
  1143. list.Add(item1);
  1144. list.Add(item2);
  1145. // var jsonData = new
  1146. // {
  1147. // rows = list,
  1148. // total = list.Count(),
  1149. // page = 1,
  1150. // records = list.Count();
  1151. //};
  1152. return Success(list);
  1153. }
  1154. #endregion
  1155. #region 上传图片
  1156. [HttpPost]
  1157. [AjaxOnly]
  1158. public ActionResult IsPhoto(string stuId, string base64url)
  1159. {
  1160. var loginuser = LoginUserInfo.Get();
  1161. //头像处理
  1162. var folderId = Guid.NewGuid().ToString();
  1163. string filePath = Config.GetValue("AnnexesFile");
  1164. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  1165. string FileEextension = ".png";
  1166. string fileGuid = Guid.NewGuid().ToString();
  1167. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, loginuser.account, uploadDate, fileGuid, FileEextension);
  1168. //创建文件夹
  1169. string path = Path.GetDirectoryName(virtualPath);
  1170. Directory.CreateDirectory(path);
  1171. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  1172. if (!System.IO.File.Exists(virtualPath))
  1173. {
  1174. byte[] bytes = Convert.FromBase64String(base64url.Replace("data:image/png;base64,", ""));
  1175. FileInfo file = new FileInfo(virtualPath);
  1176. FileStream fs = file.Create();
  1177. fs.Write(bytes, 0, bytes.Length);
  1178. fs.Close();
  1179. //文件信息写入数据库
  1180. fileAnnexesEntity.F_Id = fileGuid;
  1181. fileAnnexesEntity.F_FileName = "userphoto.png";
  1182. fileAnnexesEntity.F_FilePath = virtualPath;
  1183. fileAnnexesEntity.F_FileSize = bytes.Length.ToString();
  1184. fileAnnexesEntity.F_FileExtensions = FileEextension;
  1185. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  1186. fileAnnexesEntity.F_CreateUserId = loginuser.userId;
  1187. fileAnnexesEntity.F_CreateUserName = loginuser.realName;
  1188. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  1189. }
  1190. var result = stuInfoFreshIBLL.IsPhoto(stuId, true, fileGuid);
  1191. if (result.Item1)
  1192. {
  1193. return Success(result.Item2);
  1194. }
  1195. else
  1196. {
  1197. return Fail(result.Item2);
  1198. }
  1199. }
  1200. #endregion
  1201. }
  1202. }