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.
 
 
 
 
 
 

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