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.
 
 
 
 
 
 

1362 lines
48 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. /// <summary>
  278. /// 生源地信息统计
  279. /// <summary>
  280. /// <returns></returns>
  281. [HttpGet]
  282. public ActionResult StatisticsProvince()
  283. {
  284. return View();
  285. }
  286. #endregion
  287. #region 获取数据
  288. [HttpPost]
  289. [AjaxOnly]
  290. public void SynchronousList()
  291. {
  292. stuInfoFreshIBLL.SynchronousList();
  293. }
  294. /// <summary>
  295. /// 获取列表数据
  296. /// <summary>
  297. /// <returns></returns>
  298. [HttpGet]
  299. [AjaxOnly]
  300. public ActionResult GetList(string queryJson)
  301. {
  302. var data = stuInfoFreshIBLL.GetList(queryJson);
  303. return Success(data);
  304. }
  305. /// <summary>
  306. /// 获取列表分页数据
  307. /// <param name="pagination">分页参数</param>
  308. /// <summary>
  309. /// <returns></returns>
  310. [HttpGet]
  311. [AjaxOnly]
  312. public ActionResult GetPageList(string pagination, string queryJson)
  313. {
  314. Pagination paginationobj = pagination.ToObject<Pagination>();
  315. var data = stuInfoFreshIBLL.GetPageList(paginationobj, queryJson);
  316. var jsonData = new
  317. {
  318. rows = data,
  319. total = paginationobj.total,
  320. page = paginationobj.page,
  321. records = paginationobj.records
  322. };
  323. return Success(jsonData);
  324. }
  325. /// <summary>
  326. /// 获取表单数据
  327. /// <summary>
  328. /// <returns></returns>
  329. [HttpGet]
  330. [AjaxOnly]
  331. public ActionResult GetFormData(string keyValue)
  332. {
  333. var StuInfoFreshData = stuInfoFreshIBLL.GetStuInfoFreshEntity(keyValue);
  334. //获取头像地址
  335. var url = Config.GetValue("defaultheadimg");
  336. if (StuInfoFreshData.IsPhoto == true && !string.IsNullOrEmpty(StuInfoFreshData.Photo))
  337. {
  338. var annexesFileEntity = annexesFileIBLL.GetEntity(StuInfoFreshData.Photo);
  339. if (annexesFileEntity != null)
  340. {
  341. url = "/" + annexesFileEntity.F_FilePath.Substring(annexesFileEntity.F_FilePath.IndexOf("Resource"));
  342. }
  343. }
  344. var StuInfoFreshEmergePeopleData = stuInfoFreshIBLL.GetStuInfoFreshEmergePeopleList(StuInfoFreshData.ID);
  345. var StuInfoFreshFamilyData = stuInfoFreshIBLL.GetStuInfoFreshFamilyList(StuInfoFreshData.ID);
  346. var jsonData = new
  347. {
  348. StuInfoFresh = StuInfoFreshData,
  349. StuInfoFreshEmergePeople = StuInfoFreshEmergePeopleData,
  350. StuInfoFreshFamily = StuInfoFreshFamilyData,
  351. Url = url
  352. };
  353. return Success(jsonData);
  354. }
  355. /// <summary>
  356. /// 获取分配宿舍列表
  357. /// </summary>
  358. /// <param name="pagination"></param>
  359. /// <param name="queryJson"></param>
  360. /// <returns></returns>
  361. [HttpGet]
  362. [AjaxOnly]
  363. public ActionResult GetDormitorys(string pagination, string queryJson)
  364. {
  365. Pagination paginationobj = pagination.ToObject<Pagination>();
  366. var data = stuInfoFreshIBLL.GetDormitorys(paginationobj, queryJson);
  367. var jsonData = new
  368. {
  369. rows = data,
  370. total = paginationobj.total,
  371. page = paginationobj.page,
  372. records = paginationobj.records
  373. };
  374. return Success(jsonData);
  375. }
  376. /// <summary>
  377. /// 获取分配宿舍列表
  378. /// </summary>
  379. /// <param name="pagination"></param>
  380. /// <param name="queryJson"></param>
  381. /// <returns></returns>
  382. [HttpGet]
  383. [AjaxOnly]
  384. public ActionResult GetDormitorys2(string pagination, string queryJson)
  385. {
  386. Pagination paginationobj = pagination.ToObject<Pagination>();
  387. var data = stuInfoFreshIBLL.GetDormitorys2(paginationobj, queryJson);
  388. var jsonData = new
  389. {
  390. rows = data,
  391. total = paginationobj.total,
  392. page = paginationobj.page,
  393. records = paginationobj.records
  394. };
  395. return Success(jsonData);
  396. }
  397. /// <summary>
  398. /// 获取分配宿舍左侧树形数据
  399. /// <summary>
  400. /// <returns></returns>
  401. [HttpGet]
  402. [AjaxOnly]
  403. public ActionResult GetDormitoryTree()
  404. {
  405. var data = stuInfoFreshIBLL.GetTree().OrderBy(x => x.value);
  406. return Success(data);
  407. }
  408. /// <summary>
  409. /// 获取分配床位左侧树形数据
  410. /// <summary>
  411. /// <returns></returns>
  412. [HttpGet]
  413. [AjaxOnly]
  414. public ActionResult GetBedTree(string classNo, string gender)
  415. {
  416. var data = stuInfoFreshIBLL.GetBedTree(classNo, gender).OrderBy(x => x.text);
  417. return Success(data);
  418. }
  419. #endregion
  420. #region 提交数据
  421. /// <summary>
  422. /// 删除实体数据
  423. /// <param name="keyValue">主键</param>
  424. /// <summary>
  425. /// <returns></returns>
  426. [HttpPost]
  427. [AjaxOnly]
  428. public ActionResult DeleteForm(string keyValue)
  429. {
  430. stuInfoFreshIBLL.DeleteEntity(keyValue);
  431. return Success("删除成功!");
  432. }
  433. /// <summary>
  434. /// 保存实体数据(新增、修改)
  435. /// <param name="keyValue">主键</param>
  436. /// <summary>
  437. /// <returns></returns>
  438. [HttpPost]
  439. [ValidateAntiForgeryToken]
  440. [AjaxOnly]
  441. public ActionResult SaveForm(string keyValue, string strEntity, string strstuInfoFreshEmergePeopleList, string strstuInfoFreshFamilyList)
  442. {
  443. StuInfoFreshEntity entity = strEntity.ToObject<StuInfoFreshEntity>();
  444. if (!string.IsNullOrEmpty(entity.Photo))
  445. {
  446. entity.IsPhoto = true;
  447. }
  448. else
  449. {
  450. entity.IsPhoto = false;
  451. }
  452. List<StuInfoFreshEmergePeopleEntity> stuInfoFreshEmergePeopleList = strstuInfoFreshEmergePeopleList.ToObject<List<StuInfoFreshEmergePeopleEntity>>();
  453. List<StuInfoFreshFamilyEntity> stuInfoFreshFamilyList = strstuInfoFreshFamilyList.ToObject<List<StuInfoFreshFamilyEntity>>();
  454. stuInfoFreshIBLL.SaveEntity(keyValue, entity, stuInfoFreshEmergePeopleList, stuInfoFreshFamilyList);
  455. return Success("保存成功!");
  456. }
  457. /// <summary>
  458. /// 保存实体数据(新增、修改)
  459. /// <param name="keyValue">主键</param>
  460. /// <summary>
  461. /// <returns></returns>
  462. [HttpPost]
  463. [ValidateAntiForgeryToken]
  464. [AjaxOnly]
  465. public ActionResult SaveLoanForm(string keyValue, string strEntity)
  466. {
  467. StuInfoFreshEntity entity = strEntity.ToObject<StuInfoFreshEntity>();
  468. stuInfoFreshIBLL.SaveEntity(keyValue, entity);
  469. return Success("保存成功!");
  470. }
  471. #endregion
  472. #region 扩展数据
  473. /// <summary>
  474. /// 拍照
  475. /// </summary>
  476. /// <param name="stuId"></param>
  477. /// <param name="base64url"></param>
  478. /// <returns></returns>
  479. [HttpPost]
  480. [AjaxOnly]
  481. public ActionResult DoPhoto(string base64url)
  482. {
  483. var loginuser = LoginUserInfo.Get();
  484. //头像处理
  485. var folderId = Guid.NewGuid().ToString();
  486. string filePath = Config.GetValue("AnnexesFile");
  487. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  488. string FileEextension = ".png";
  489. string fileGuid = Guid.NewGuid().ToString();
  490. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, loginuser.account, uploadDate, fileGuid, FileEextension);
  491. //创建文件夹
  492. string path = Path.GetDirectoryName(virtualPath);
  493. Directory.CreateDirectory(path);
  494. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  495. if (!System.IO.File.Exists(virtualPath))
  496. {
  497. byte[] bytes = Convert.FromBase64String(base64url.Replace("data:image/png;base64,", ""));
  498. FileInfo file = new FileInfo(virtualPath);
  499. FileStream fs = file.Create();
  500. fs.Write(bytes, 0, bytes.Length);
  501. fs.Close();
  502. //文件信息写入数据库
  503. fileAnnexesEntity.F_Id = fileGuid;
  504. fileAnnexesEntity.F_FileName = "userphoto.png";
  505. fileAnnexesEntity.F_FilePath = virtualPath;
  506. fileAnnexesEntity.F_FileSize = bytes.Length.ToString();
  507. fileAnnexesEntity.F_FileExtensions = FileEextension;
  508. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  509. fileAnnexesEntity.F_CreateUserId = loginuser.userId;
  510. fileAnnexesEntity.F_CreateUserName = loginuser.realName;
  511. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  512. }
  513. var data = new
  514. {
  515. Url = virtualPath,
  516. AnnexesFileId = fileGuid
  517. };
  518. return Success(data);
  519. }
  520. /// <summary>
  521. ///确认报到、取消报到
  522. /// </summary>
  523. /// <returns></returns>
  524. [HttpPost]
  525. [AjaxOnly]
  526. public ActionResult IsRegister(string keyValue, string status)
  527. {
  528. stuInfoFreshIBLL.IsRegister(keyValue, status);
  529. return Success("操作成功");
  530. }
  531. /// <summary>
  532. ///收取学生档案
  533. /// </summary>
  534. /// <returns></returns>
  535. [HttpPost]
  536. [AjaxOnly]
  537. public ActionResult IsCollectFile(string keyValue, string status)
  538. {
  539. stuInfoFreshIBLL.IsCollectFile(keyValue, status);
  540. return Success("操作成功");
  541. }
  542. /// <summary>
  543. ///领取钥匙
  544. /// </summary>
  545. /// <returns></returns>
  546. [HttpPost]
  547. [AjaxOnly]
  548. public ActionResult IsGetKey(string keyValue, string status)
  549. {
  550. stuInfoFreshIBLL.IsGetKey(keyValue, status);
  551. return Success("操作成功");
  552. }
  553. /// <summary>
  554. ///领取校园卡
  555. /// </summary>
  556. /// <returns></returns>
  557. [HttpPost]
  558. [AjaxOnly]
  559. public ActionResult IsGetCard(string keyValue, string status)
  560. {
  561. stuInfoFreshIBLL.IsGetCard(keyValue, status);
  562. return Success("操作成功");
  563. }
  564. /// <summary>
  565. ///领取军训服装
  566. /// </summary>
  567. /// <returns></returns>
  568. [HttpPost]
  569. [AjaxOnly]
  570. public ActionResult IsGetMiliClothes(string keyValue, string status)
  571. {
  572. stuInfoFreshIBLL.IsGetMiliClothes(keyValue, status);
  573. return Success("操作成功");
  574. }
  575. /// <summary>
  576. ///领取床上用品
  577. /// </summary>
  578. /// <returns></returns>
  579. [HttpPost]
  580. [AjaxOnly]
  581. public ActionResult IsGetBedding(string keyValue, string status)
  582. {
  583. stuInfoFreshIBLL.IsGetBedding(keyValue, status);
  584. return Success("操作成功");
  585. }
  586. /// <summary>
  587. ///缴费
  588. /// </summary>
  589. /// <returns></returns>
  590. [HttpPost]
  591. [AjaxOnly]
  592. public ActionResult IsPayFee(string keyValue, string status)
  593. {
  594. stuInfoFreshIBLL.IsPayFee(keyValue, status);
  595. return Success("操作成功");
  596. }
  597. /// <summary>
  598. ///其他费用缴费
  599. /// </summary>
  600. /// <returns></returns>
  601. [HttpPost]
  602. [AjaxOnly]
  603. public ActionResult IsOtherPayFee(string keyValue, string status)
  604. {
  605. stuInfoFreshIBLL.IsOtherPayFee(keyValue, status);
  606. return Success("操作成功");
  607. }
  608. /// <summary>
  609. ///审核助学贷款
  610. /// </summary>
  611. /// <returns></returns>
  612. [HttpPost]
  613. [AjaxOnly]
  614. public ActionResult DoCheckLoan(string keyValue, string status)
  615. {
  616. stuInfoFreshIBLL.DoCheckLoan(keyValue, status);
  617. return Success("操作成功");
  618. }
  619. /// <summary>
  620. /// 获取新生缴费明细
  621. /// <summary>
  622. /// <returns></returns>
  623. [HttpGet]
  624. [AjaxOnly]
  625. public ActionResult GetPayFeeDetail(string keyValue)
  626. {
  627. var StuInfoFreshData = stuInfoFreshIBLL.GetStuInfoFreshEntity(keyValue);
  628. var FinaChargesStandardList = new List<FinaChargesStandardEntity>();
  629. if (!string.IsNullOrEmpty(StuInfoFreshData.ClassNo) && !string.IsNullOrEmpty(StuInfoFreshData.MajorNo))
  630. {
  631. var ClassInfoEntity = classInfoIBLL.GetClassInfoEntityByClassNo(StuInfoFreshData.ClassNo);
  632. if (ClassInfoEntity != null)
  633. {
  634. var academicAndYear = Common.GetSemesterAndYear();
  635. FinaChargesStandardList = finaChargesStandardIBLL.GetFinaChargesStandardListByMajorNoOfNotAll(StuInfoFreshData.MajorNo, academicAndYear.AcademicYearShort, academicAndYear.Semester, ClassInfoEntity.Grade).ToList();
  636. }
  637. }
  638. var PayFeeTotal = FinaChargesStandardList.Select(x => x.Standard).Sum();
  639. var jsonData = new
  640. {
  641. FinaChargesStandardList = FinaChargesStandardList,
  642. PayFeeTotal = PayFeeTotal
  643. };
  644. return Success(jsonData);
  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 DoAllocationClass(string classNo, string dataJson)
  655. {
  656. var StuInfoFreshList = JsonConvert.DeserializeObject<List<StuInfoFreshEntity>>(dataJson);
  657. var ClassInfoEntity = classInfoIBLL.GetClassInfoEntityByClassNo(classNo);
  658. if (ClassInfoEntity == null)
  659. {
  660. return Fail("分配的班级不存在!");
  661. }
  662. //获取当前班级已有人数
  663. var hasList = stuInfoFreshIBLL.GetStuInfoFreshListByClassNo(classNo);
  664. var hasLength = hasList.Count();
  665. var tempLength = hasLength;
  666. if (StuInfoFreshList.Any())
  667. {
  668. foreach (var item in StuInfoFreshList)
  669. {
  670. tempLength++;
  671. item.ClassNo = classNo;
  672. item.DeptNo = ClassInfoEntity.DeptNo;
  673. item.MajorNo = ClassInfoEntity.MajorNo;
  674. item.Grade = ClassInfoEntity.Grade;
  675. item.StuNo = string.Format("{0}{1}", classNo, tempLength < 10 ? "0" + tempLength : tempLength.ToString());
  676. }
  677. }
  678. stuInfoFreshIBLL.DoAllocationClass(StuInfoFreshList);
  679. return Success("分配成功!");
  680. }
  681. /// <summary>
  682. /// 分配宿舍
  683. /// </summary>
  684. /// <param name="classNo"></param>
  685. /// <param name="dataJson"></param>
  686. /// <returns></returns>
  687. [HttpPost]
  688. [AjaxOnly]
  689. public ActionResult DoAllocationDormitory(string classNo, string dataJson)
  690. {
  691. var acc_DormitoryBuildEntities = JsonConvert.DeserializeObject<List<Acc_DormitoryBuildEntity>>(dataJson);
  692. foreach (var entity in acc_DormitoryBuildEntities)
  693. {
  694. //预分床位数量是否合理
  695. if (entity.PlanBedNum < 1)
  696. {
  697. return Fail("预分床位数量至少为1位!");
  698. }
  699. if (entity.PlanBedNum > entity.RemainBedNum)
  700. {
  701. return Fail("预分床位数量不能超出可分配床位数量!");
  702. }
  703. entity.PlanClassNo = classNo;
  704. }
  705. stuInfoFreshIBLL.DoAllocationDormitory(acc_DormitoryBuildEntities);
  706. return Success("分配成功!");
  707. }
  708. /// <summary>
  709. /// 取消分配宿舍
  710. /// </summary>
  711. /// <param name="classNo"></param>
  712. /// <param name="dataJson"></param>
  713. /// <returns></returns>
  714. [HttpPost]
  715. [AjaxOnly]
  716. public ActionResult CancelAllocationDormitory(string classNo, string dataJson)
  717. {
  718. var acc_DormitoryBuildEntities = JsonConvert.DeserializeObject<List<Acc_DormitoryBuildEntity>>(dataJson);
  719. foreach (var entity in acc_DormitoryBuildEntities)
  720. {
  721. //取消已分配床位数量是否合理
  722. if (entity.CancelUseBedNum < 1)
  723. {
  724. return Fail("取消已分配床位数量至少为1位!");
  725. }
  726. if (entity.CancelUseBedNum > entity.UseBedNum)
  727. {
  728. return Fail("取消已分配床位数量不能超出已分配床位数量!");
  729. }
  730. entity.PlanClassNo = classNo;
  731. }
  732. stuInfoFreshIBLL.CancelAllocationDormitory(acc_DormitoryBuildEntities);
  733. return Success("取消分配成功!");
  734. }
  735. /// <summary>
  736. /// 分配床位
  737. /// </summary>
  738. /// <param name="dormitoryNo"></param>
  739. /// <param name="stuId"></param>
  740. /// <param name="dormitoryName"></param>
  741. /// <returns></returns>
  742. [HttpPost]
  743. [AjaxOnly]
  744. public ActionResult DoAllocationBed(string dormitoryNo, string keyValue)
  745. {
  746. stuInfoFreshIBLL.DoAllocationBed(dormitoryNo, keyValue);
  747. return Success("分配成功!");
  748. }
  749. /// <summary>
  750. /// 自动分配床位
  751. /// </summary>
  752. /// <param name="dormitoryNo"></param>
  753. /// <param name="stuId"></param>
  754. /// <param name="dormitoryName"></param>
  755. /// <returns></returns>
  756. [HttpPost]
  757. [AjaxOnly]
  758. public ActionResult DoAllocationBedOfAuto(string classNo)
  759. {
  760. stuInfoFreshIBLL.DoAllocationBedOfAuto(classNo);
  761. return Success("分配成功!");
  762. }
  763. [HttpGet]
  764. [AjaxOnly]
  765. public ActionResult ConfirmDormitory()
  766. {
  767. stuInfoFreshIBLL.ConfirmDormitory();
  768. return Success("操作成功!");
  769. }
  770. [HttpGet]
  771. [AjaxOnly]
  772. public ActionResult ConfirmDormitoryTwo()
  773. {
  774. stuInfoFreshIBLL.ConfirmDormitoryTwo();
  775. return Success("操作成功!");
  776. }
  777. [HttpPost]
  778. [AjaxOnly]
  779. public ActionResult GetUniform(string keyValue, bool Status)
  780. {
  781. stuInfoFreshIBLL.GetUniform(keyValue, Status);
  782. return Success("操作成功");
  783. }
  784. [HttpPost]
  785. [AjaxOnly]
  786. public ActionResult PayUniform(string keyValue, bool Status)
  787. {
  788. stuInfoFreshIBLL.PayUniform(keyValue, Status);
  789. return Success("操作成功");
  790. }
  791. /// <summary>
  792. /// 导入学籍信息
  793. /// </summary>
  794. /// <param name="dormitoryNo"></param>
  795. /// <param name="stuId"></param>
  796. /// <param name="dormitoryName"></param>
  797. /// <returns></returns>
  798. [HttpPost]
  799. [AjaxOnly]
  800. public ActionResult ImportStuInfoBasic()
  801. {
  802. stuInfoFreshIBLL.ImportStuInfoBasic();
  803. return Success("生成学籍信息成功!");
  804. }
  805. /// <summary>
  806. /// 导入床位
  807. /// </summary>
  808. /// <returns></returns>
  809. public ActionResult ImportBed(HttpPostedFileBase filedata)
  810. {
  811. if (filedata == null || filedata.FileName == null || filedata.ContentLength == 0)
  812. {
  813. if (Request.Files.Count > 0)
  814. {
  815. filedata = Request.Files[0];
  816. }
  817. }
  818. if (filedata == null)
  819. {
  820. return Fail("未获取到文件");
  821. }
  822. var pathoffirst = Config.GetValue("AnnexesFile");
  823. var pathofsecond = "/DormitoryBuildImportFile";
  824. var pathofthird = DateTime.Now.ToString("yyyyMMdd");
  825. var filename = filedata.FileName;
  826. var exten = Path.GetExtension(filename);
  827. var fileguid = Guid.NewGuid().ToString();
  828. var pathoffull = string.Format("{0}/{1}/{2}/{3}{4}", pathoffirst, pathofsecond, pathofthird, fileguid, exten);
  829. var pathofdown = string.Format("{0}/{1}/{2}{3}", pathofsecond, pathofthird, fileguid, exten);
  830. var directory = Path.GetDirectoryName(pathoffull);
  831. if (!Directory.Exists(directory))
  832. {
  833. Directory.CreateDirectory(directory);
  834. }
  835. //保存文件
  836. filedata.SaveAs(pathoffull);
  837. //读取文件
  838. var filePath = pathoffull;
  839. var strMsg = string.Empty;
  840. IWorkbook wk = null;
  841. string extension = System.IO.Path.GetExtension(filePath);
  842. try
  843. {
  844. FileStream fs = System.IO.File.OpenRead(filePath);
  845. if (extension.Equals(".xls"))
  846. {
  847. wk = new HSSFWorkbook(fs);
  848. }
  849. else
  850. {
  851. wk = new XSSFWorkbook(fs);
  852. }
  853. fs.Close();
  854. //读取当前表数据
  855. ISheet sheet = wk.GetSheetAt(0);
  856. IRow row = sheet.GetRow(0);
  857. int offset = 0;
  858. //导入床位成功数量
  859. int bedSuccNum = 0;
  860. var stuinfofreshlist = stuInfoFreshIBLL.GetList("{}");
  861. var accommodationList = accommodationIBLL.GetList();
  862. for (int i = 1; i <= sheet.LastRowNum; i++)
  863. {
  864. row = sheet.GetRow(i);
  865. if (row != null)
  866. {
  867. //姓名0、学号1、班级2、宿舍楼3、单元4、楼层5、房间6、床位7
  868. var stuInfoFreshEntity = stuinfofreshlist.FirstOrDefault(m => m.StuNo == row.GetCell(1).ToString());
  869. if (stuInfoFreshEntity == null)
  870. {
  871. continue;
  872. }
  873. var classInfoEntity = classInfoIBLL.GetClassInfoEntityByClassName(row.GetCell(2).ToString());
  874. if (classInfoEntity == null)
  875. {
  876. continue;
  877. }
  878. if (accommodationList.Any())
  879. {
  880. var build = accommodationList.FirstOrDefault(x => x.BuildType == "1" && x.Name == row.GetCell(3).ToString());
  881. if (build != null)
  882. {
  883. var unit = accommodationList.FirstOrDefault(x => x.BuildType == "2" && x.ParentID == build.ID && x.Name == row.GetCell(4).ToString());
  884. if (unit != null)
  885. {
  886. var floor = accommodationList.FirstOrDefault(x => x.BuildType == "3" && x.ParentID == unit.ID && x.Name == row.GetCell(5).ToString());
  887. if (floor != null)
  888. {
  889. var room = accommodationList.FirstOrDefault(x => x.BuildType == "4" && x.ParentID == floor.ID && x.Name == row.GetCell(6).ToString());
  890. if (room != null)
  891. {
  892. var bed = accommodationList.FirstOrDefault(x => x.BuildType == "5" && x.ParentID == room.ID && x.Name == row.GetCell(7).ToString());
  893. if (bed != null)
  894. {
  895. //分配床位
  896. stuInfoFreshIBLL.DoAllocationBed(bed.ID, stuInfoFreshEntity.ID);
  897. bedSuccNum++;
  898. //分配宿舍
  899. var alist = new List<Acc_DormitoryBuildEntity>();
  900. var accommodationEntity = new Acc_DormitoryBuildEntity();
  901. accommodationEntity.ID = room.ID;
  902. accommodationEntity.PlanBedNum = 1;
  903. accommodationEntity.PlanClassNo = classInfoEntity.ClassNo;
  904. accommodationEntity.bedId = bed.ID;
  905. alist.Add(accommodationEntity);
  906. stuInfoFreshIBLL.ImportDormitory(alist);
  907. }
  908. }
  909. }
  910. }
  911. }
  912. }
  913. }
  914. }
  915. strMsg = "导入床位成功" + bedSuccNum + "个!";
  916. }
  917. catch (Exception e)
  918. {
  919. return Fail("导入床位失败!" + strMsg);
  920. }
  921. return Success("导入床位成功!" + strMsg);
  922. }
  923. /// <summary>
  924. /// 导出学生宿舍信息
  925. /// </summary>
  926. /// <returns></returns>
  927. public FileResult ExportBed(string queryJson)
  928. {
  929. var fileHead = "学生宿舍信息";
  930. var postData = JsonConvert.DeserializeObject<StuInfoFreshEntity>(queryJson);
  931. if (!string.IsNullOrEmpty(postData.ClassNo))
  932. {
  933. var classInfoEntity = classInfoIBLL.GetClassInfoEntityByClassNo(postData.ClassNo);
  934. fileHead = classInfoEntity?.ClassName + fileHead;
  935. }
  936. else if (!string.IsNullOrEmpty(postData.MajorNo))
  937. {
  938. var majorEntity = cdMajorIBLL.GetCdMajorEntityByMajorNo(postData.MajorNo);
  939. fileHead = majorEntity?.MajorName + fileHead;
  940. }
  941. else if (!string.IsNullOrEmpty(postData.DeptNo))
  942. {
  943. var deptEntity = cdDeptIBLL.GetCdDeptEntityByNo(postData.DeptNo);
  944. fileHead = deptEntity?.DeptName + fileHead;
  945. }
  946. FileStreamResult result = null;
  947. HSSFWorkbook book = new HSSFWorkbook();
  948. ISheet sheet = book.CreateSheet("Sheet0");
  949. for (int i = 0; i <= 9; i++)
  950. {
  951. sheet.SetColumnWidth(i, 256 * 15);
  952. }
  953. IRow headrow = sheet.CreateRow(0);
  954. headrow.CreateCell(0).SetCellValue(fileHead);
  955. sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 9));
  956. IRow cellrow = sheet.CreateRow(1);
  957. cellrow.CreateCell(0).SetCellValue("姓名");
  958. cellrow.CreateCell(1).SetCellValue("学号");
  959. cellrow.CreateCell(2).SetCellValue("系");
  960. cellrow.CreateCell(3).SetCellValue("专业");
  961. cellrow.CreateCell(4).SetCellValue("班级");
  962. cellrow.CreateCell(5).SetCellValue("宿舍楼");
  963. cellrow.CreateCell(6).SetCellValue("单元");
  964. cellrow.CreateCell(7).SetCellValue("楼层");
  965. cellrow.CreateCell(8).SetCellValue("房间");
  966. cellrow.CreateCell(9).SetCellValue("床位");
  967. //获取数据源
  968. var data = stuInfoFreshIBLL.GetList(queryJson).ToList();
  969. foreach (var item in data)
  970. {
  971. var i = data.IndexOf(item);
  972. IRow row = sheet.CreateRow(2 + i);
  973. row.CreateCell(0).SetCellValue(item.StuName);
  974. row.CreateCell(1).SetCellValue(item.StuNo);
  975. row.CreateCell(2).SetCellValue(item.DeptName);
  976. row.CreateCell(3).SetCellValue(item.MajorName);
  977. row.CreateCell(4).SetCellValue(item.ClassName);
  978. row.CreateCell(5).SetCellValue(item.Build);
  979. row.CreateCell(6).SetCellValue(item.Unit);
  980. row.CreateCell(7).SetCellValue(item.floor);
  981. row.CreateCell(8).SetCellValue(item.Room);
  982. row.CreateCell(9).SetCellValue(item.Bed);
  983. }
  984. var fileguid = Guid.NewGuid().ToString();
  985. var path = Server.MapPath("~/Resource/DormitoryBuildExportFile/" + DateTime.Now.ToString("yyyyMMdd") + "/");
  986. var pathoffull = path + fileguid + ".xls";
  987. if (!Directory.Exists(path))
  988. {
  989. Directory.CreateDirectory(path);
  990. }
  991. FileStream fswrite = new FileStream(pathoffull, FileMode.OpenOrCreate, FileAccess.Write);
  992. book.Write(fswrite);
  993. fswrite.Close();
  994. FileStream fsread = new FileStream(pathoffull, FileMode.OpenOrCreate, FileAccess.Read);
  995. result = File(fsread, "application/ms-excel", fileHead + ".xls");
  996. return result;
  997. }
  998. /// <summary>
  999. /// 删除宿舍信息
  1000. /// </summary>
  1001. /// <param name="dormitoryNo"></param>
  1002. /// <param name="stuId"></param>
  1003. /// <param name="dormitoryName"></param>
  1004. /// <returns></returns>
  1005. [HttpPost]
  1006. [AjaxOnly]
  1007. public ActionResult DeleteBed(string keyValue)
  1008. {
  1009. stuInfoFreshIBLL.DeleteBed(keyValue);
  1010. return Success("删除成功!");
  1011. }
  1012. /// <summary>
  1013. /// 年级下拉框信息【新生信息统计】
  1014. /// </summary>
  1015. /// <returns></returns>
  1016. [HttpGet]
  1017. [AjaxOnly]
  1018. public ActionResult GetGradeData()
  1019. {
  1020. var data = WebHelper.GenerateNearByYear2();
  1021. return Success(data);
  1022. }
  1023. /// <summary>
  1024. /// 获取列表数据
  1025. /// <summary>
  1026. /// <returns></returns>
  1027. [HttpGet]
  1028. [AjaxOnly]
  1029. public ActionResult GetStatisticList(string queryJson)
  1030. {
  1031. var data = stuInfoFreshIBLL.GetList2(queryJson);
  1032. var list = data.Where(x => !string.IsNullOrEmpty(x.MajorNo)).GroupBy(x => x.MajorNo).Select(x => new StatisticModel
  1033. {
  1034. MajorNo = x.Key,
  1035. MajorName = x.FirstOrDefault()?.MajorName,
  1036. Grade = x.FirstOrDefault()?.Grade,
  1037. TotalNum = x.Count(),
  1038. InfoNum = x.Count(y => y.IsStudentEdit == true),
  1039. RegisterNum = x.Count(y => y.RegisterStatus == "1"),
  1040. PayFeeNum = x.Count(y => y.PayFeeStatus == "1" || y.OnsitePayFeeStatus == "1"),
  1041. GetKeyNum = x.Count(y => y.GetKeyStatus == "1"),
  1042. GetCardNum = x.Count(y => y.GetCardStatus == "1"),
  1043. CollectFileNum = x.Count(y => y.CollectFileStatus == "1"),
  1044. LoanNum = x.Count(y => y.StudentLoanStatus == "1"),
  1045. GetMiliClothesNum = x.Count(y => y.GetMiliClothesStatus == "1"),
  1046. GetBeddingNum = x.Count(y => y.GetBeddingStatus == "1")
  1047. }).OrderBy(x => x.MajorNo);
  1048. //var aa = new StatisticModel
  1049. //{
  1050. // MajorNo = "全校",
  1051. // MajorName = "全校",
  1052. // Grade = list.FirstOrDefault()?.Grade,
  1053. // TotalNum = list.Select(x => x.TotalNum).Sum(),
  1054. // InfoNum = list.Select(x => x.InfoNum).Sum(),
  1055. // RegisterNum = list.Select(x => x.RegisterNum).Sum(),
  1056. // PayFeeNum = list.Select(x => x.PayFeeNum).Sum(),
  1057. // GetKeyNum = list.Select(x => x.GetKeyNum).Sum(),
  1058. //};
  1059. //var allList = new List<StatisticModel>();
  1060. //allList.Add(aa);
  1061. //allList.AddRange(list);
  1062. return Success(list);
  1063. }
  1064. /// <summary>
  1065. /// 获取列表数据
  1066. /// <summary>
  1067. /// <returns></returns>
  1068. [HttpGet]
  1069. [AjaxOnly]
  1070. public ActionResult GetStatisticListOfClass(string queryJson)
  1071. {
  1072. var data = stuInfoFreshIBLL.GetList2(queryJson);
  1073. var list = data.Where(x => !string.IsNullOrEmpty(x.ClassNo) && !string.IsNullOrEmpty(x.MajorNo)).GroupBy(x => new { x.MajorNo, x.ClassNo }).Select(x => new StatisticModel
  1074. {
  1075. ClassNo = x.Key.ClassNo,
  1076. ClassName = x.FirstOrDefault()?.ClassName,
  1077. Grade = x.FirstOrDefault()?.Grade,
  1078. MajorNo = x.Key.MajorNo,
  1079. MajorName = x.FirstOrDefault()?.MajorName,
  1080. TotalNum = x.Count(),
  1081. InfoNum = x.Count(y => y.IsStudentEdit == true),
  1082. RegisterNum = x.Count(y => y.RegisterStatus == "1"),
  1083. PayFeeNum = x.Count(y => y.PayFeeStatus == "1" || y.OnsitePayFeeStatus == "1"),
  1084. GetKeyNum = x.Count(y => y.GetKeyStatus == "1"),
  1085. GetCardNum = x.Count(y => y.GetCardStatus == "1"),
  1086. CollectFileNum = x.Count(y => y.CollectFileStatus == "1"),
  1087. LoanNum = x.Count(y => y.StudentLoanStatus == "1"),
  1088. GetMiliClothesNum = x.Count(y => y.GetMiliClothesStatus == "1"),
  1089. GetBeddingNum = x.Count(y => y.GetBeddingStatus == "1")
  1090. }).OrderBy(x => x.MajorNo).ThenBy(x => x.ClassNo);
  1091. return Success(list);
  1092. }
  1093. public class StatisticModel
  1094. {
  1095. public string MajorNo { get; set; }
  1096. public string MajorName { get; set; }
  1097. public string ClassNo { get; set; }
  1098. public string ClassName { get; set; }
  1099. public string Grade { get; set; }
  1100. /// <summary>
  1101. /// 总人数
  1102. /// </summary>
  1103. public int TotalNum { get; set; }
  1104. /// <summary>
  1105. /// 完善个人信息人数
  1106. /// </summary>
  1107. public int InfoNum { get; set; }
  1108. /// <summary>
  1109. /// 报到人数
  1110. /// </summary>
  1111. public int RegisterNum { get; set; }
  1112. /// <summary>
  1113. /// 缴费人数
  1114. /// </summary>
  1115. public int PayFeeNum { get; set; }
  1116. /// <summary>
  1117. /// 领钥匙人数
  1118. /// </summary>
  1119. public int GetKeyNum { get; set; }
  1120. /// <summary>
  1121. /// 已领取校园卡人数
  1122. /// </summary>
  1123. public int GetCardNum { get; set; }
  1124. /// <summary>
  1125. /// 已收取档案人数
  1126. /// </summary>
  1127. public int CollectFileNum { get; set; }
  1128. /// <summary>
  1129. /// 贷款人数
  1130. /// </summary>
  1131. public int LoanNum { get; set; }
  1132. /// <summary>
  1133. /// 已领取军训服装人数
  1134. /// </summary>
  1135. public int GetMiliClothesNum { get; set; }
  1136. /// <summary>
  1137. /// 已领取床上用品人数
  1138. /// </summary>
  1139. public int GetBeddingNum { get; set; }
  1140. /// <summary>
  1141. /// 生源地
  1142. /// </summary>
  1143. public string Province { get; set; }
  1144. /// <summary>
  1145. /// 疆内
  1146. /// </summary>
  1147. public string City { get; set; }
  1148. }
  1149. /// <summary>
  1150. /// 获取列表数据
  1151. /// <summary>
  1152. /// <returns></returns>
  1153. [HttpGet]
  1154. [AjaxOnly]
  1155. public ActionResult GetStatisticArea(string queryJson)
  1156. {
  1157. var data = stuInfoFreshIBLL.GetList(queryJson);
  1158. var list = data.GroupBy(x => x.ProvinceNo).Select(x => new
  1159. {
  1160. ProvinceNo = x.Key,
  1161. TotalNum = x.Count(),
  1162. RegisterNum = x.Count(y => y.RegisterStatus == "1"),
  1163. BoyNum = x.Count(y => y.GenderNo == "1"),
  1164. GirlNum = x.Count(y => y.GenderNo == "0"),
  1165. }).OrderByDescending(a => a.TotalNum).ToList();
  1166. var item = new
  1167. {
  1168. ProvinceNo = "总计",
  1169. TotalNum = data.Count(),
  1170. RegisterNum = data.Count(y => y.RegisterStatus == "1"),
  1171. BoyNum = data.Count(y => y.GenderNo == "1"),
  1172. GirlNum = data.Count(y => y.GenderNo == "0"),
  1173. };
  1174. var zhounei = data.Where(a => a.ProvinceNo.Contains("5121"));
  1175. var item1 = new
  1176. {
  1177. ProvinceNo = "州内",
  1178. TotalNum = zhounei.Count(),
  1179. RegisterNum = zhounei.Count(y => y.RegisterStatus == "1"),
  1180. BoyNum = zhounei.Count(y => y.GenderNo == "1"),
  1181. GirlNum = zhounei.Count(y => y.GenderNo == "0"),
  1182. };
  1183. var zhouwai = data.Where(a => !a.ProvinceNo.Contains("5121"));
  1184. var item2 = new
  1185. {
  1186. ProvinceNo = "州外",
  1187. TotalNum = zhouwai.Count(),
  1188. RegisterNum = zhouwai.Count(y => y.RegisterStatus == "1"),
  1189. BoyNum = zhouwai.Count(y => y.GenderNo == "1"),
  1190. GirlNum = zhouwai.Count(y => y.GenderNo == "0"),
  1191. };
  1192. list.Add(item);
  1193. list.Add(item1);
  1194. list.Add(item2);
  1195. // var jsonData = new
  1196. // {
  1197. // rows = list,
  1198. // total = list.Count(),
  1199. // page = 1,
  1200. // records = list.Count();
  1201. //};
  1202. return Success(list);
  1203. }
  1204. /// <summary>
  1205. /// 获取列表数据
  1206. /// <summary>
  1207. /// <returns></returns>
  1208. [HttpGet]
  1209. [AjaxOnly]
  1210. public ActionResult GetStatisticProvince(string queryJson)
  1211. {
  1212. var data = stuInfoFreshIBLL.GetList2(queryJson);
  1213. var list = data.Where(x => !string.IsNullOrEmpty(x.Province)).GroupBy(x => new { x.Province, x.City }).Select(x => new StatisticModel
  1214. {
  1215. Province = x.Key.Province,
  1216. City = x.Key.City,
  1217. TotalNum = x.Count(),
  1218. InfoNum = x.Count(y => y.IsStudentEdit == true),
  1219. RegisterNum = x.Count(y => y.RegisterStatus == "1"),
  1220. PayFeeNum = x.Count(y => y.PayFeeStatus == "1" || y.OnsitePayFeeStatus == "1"),
  1221. GetKeyNum = x.Count(y => y.GetKeyStatus == "1"),
  1222. GetCardNum = x.Count(y => y.GetCardStatus == "1"),
  1223. CollectFileNum = x.Count(y => y.CollectFileStatus == "1"),
  1224. LoanNum = x.Count(y => y.StudentLoanStatus == "1"),
  1225. GetMiliClothesNum = x.Count(y => y.GetMiliClothesStatus == "1"),
  1226. GetBeddingNum = x.Count(y => y.GetBeddingStatus == "1")
  1227. }).OrderBy(x => x.Province).ThenBy(x => x.City);
  1228. return Success(list);
  1229. }
  1230. #endregion
  1231. #region 上传图片
  1232. [HttpPost]
  1233. [AjaxOnly]
  1234. public ActionResult IsPhoto(string stuId, string base64url)
  1235. {
  1236. var loginuser = LoginUserInfo.Get();
  1237. //头像处理
  1238. var folderId = Guid.NewGuid().ToString();
  1239. string filePath = Config.GetValue("AnnexesFile");
  1240. string uploadDate = DateTime.Now.ToString("yyyyMMdd");
  1241. string FileEextension = ".png";
  1242. string fileGuid = Guid.NewGuid().ToString();
  1243. string virtualPath = string.Format("{0}/{1}/{2}/{3}{4}", filePath, loginuser.account, uploadDate, fileGuid, FileEextension);
  1244. //创建文件夹
  1245. string path = Path.GetDirectoryName(virtualPath);
  1246. Directory.CreateDirectory(path);
  1247. AnnexesFileEntity fileAnnexesEntity = new AnnexesFileEntity();
  1248. if (!System.IO.File.Exists(virtualPath))
  1249. {
  1250. byte[] bytes = Convert.FromBase64String(base64url.Replace("data:image/png;base64,", ""));
  1251. FileInfo file = new FileInfo(virtualPath);
  1252. FileStream fs = file.Create();
  1253. fs.Write(bytes, 0, bytes.Length);
  1254. fs.Close();
  1255. //文件信息写入数据库
  1256. fileAnnexesEntity.F_Id = fileGuid;
  1257. fileAnnexesEntity.F_FileName = "userphoto.png";
  1258. fileAnnexesEntity.F_FilePath = virtualPath;
  1259. fileAnnexesEntity.F_FileSize = bytes.Length.ToString();
  1260. fileAnnexesEntity.F_FileExtensions = FileEextension;
  1261. fileAnnexesEntity.F_FileType = FileEextension.Replace(".", "");
  1262. fileAnnexesEntity.F_CreateUserId = loginuser.userId;
  1263. fileAnnexesEntity.F_CreateUserName = loginuser.realName;
  1264. annexesFileIBLL.SaveEntity(folderId, fileAnnexesEntity);
  1265. }
  1266. var result = stuInfoFreshIBLL.IsPhoto(stuId, true, fileGuid);
  1267. if (result.Item1)
  1268. {
  1269. return Success(result.Item2);
  1270. }
  1271. else
  1272. {
  1273. return Fail(result.Item2);
  1274. }
  1275. }
  1276. #endregion
  1277. }
  1278. }