Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

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