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.
 
 
 
 
 
 

633 lines
18 KiB

  1. using Learun.Util;
  2. using System.Data;
  3. using Learun.Application.TwoDevelopment.LogisticsManagement;
  4. using System.Web.Mvc;
  5. using System.Collections.Generic;
  6. using System.Web.Helpers;
  7. using Newtonsoft.Json;
  8. using Newtonsoft.Json.Linq;
  9. using System;
  10. using System.Linq;
  11. using System.IO;
  12. using NPOI.HSSF.UserModel;
  13. using NPOI.SS.UserModel;
  14. using Learun.Application.Base.SystemModule;
  15. using System.Drawing;
  16. namespace Learun.Application.Web.Areas.LogisticsManagement.Controllers
  17. {
  18. /// <summary>
  19. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  20. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  21. /// 创 建:超级管理员
  22. /// 日 期:2019-04-26 15:02
  23. /// 描 述:学生宿舍管理
  24. /// </summary>
  25. public class AccommodationController : MvcControllerBase
  26. {
  27. private AccommodationIBLL accommodationIBLL = new AccommodationBLL();
  28. private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL();
  29. #region 视图功能
  30. /// <summary>
  31. /// 主页面
  32. /// <summary>
  33. /// <returns></returns>
  34. [HttpGet]
  35. public ActionResult Index()
  36. {
  37. return View();
  38. }
  39. /// <summary>
  40. /// 分配宿舍
  41. /// <summary>
  42. /// <returns></returns>
  43. [HttpGet]
  44. public ActionResult IndexDistribution()
  45. {
  46. return View();
  47. }
  48. /// <summary>
  49. /// 带参数的表单页
  50. /// <summary>
  51. /// <returns></returns>
  52. [HttpGet]
  53. public ActionResult Form(string ParentID = null, string ParentName = null, string keyValue = null)
  54. {
  55. ViewBag.ParentID = ParentID;
  56. ViewBag.ParentName = ParentName;
  57. ViewBag.BuildType = accommodationIBLL.GetBuildType(ParentID);
  58. if (!string.IsNullOrEmpty(keyValue))
  59. {
  60. ViewBag.BuildType = accommodationIBLL.GetParentBuildType(keyValue);
  61. }
  62. return View();
  63. }
  64. /// <summary>
  65. /// 宿舍楼
  66. /// </summary>
  67. /// <returns></returns>
  68. [HttpGet]
  69. public ActionResult Floor()
  70. {
  71. return View();
  72. }
  73. /// <summary>
  74. /// 单元
  75. /// </summary>
  76. /// <returns></returns>
  77. [HttpGet]
  78. public ActionResult Unit(string ID)
  79. {
  80. ViewBag.ParentID = ID;
  81. return View();
  82. }
  83. /// <summary>
  84. /// 楼层
  85. /// </summary>
  86. /// <returns></returns>
  87. [HttpGet]
  88. public ActionResult Corridor(string ID)
  89. {
  90. ViewBag.ParentID = ID;
  91. return View();
  92. }
  93. /// <summary>
  94. /// 房间
  95. /// </summary>
  96. /// <returns></returns>
  97. [HttpGet]
  98. public ActionResult Dormitory(string ID)
  99. {
  100. ViewBag.ParentID = ID;
  101. return View();
  102. }
  103. /// <summary>
  104. /// 床位
  105. /// </summary>
  106. /// <returns></returns>
  107. [HttpGet]
  108. public ActionResult Room(string ID)
  109. {
  110. ViewBag.ParentID = ID;
  111. return View();
  112. }
  113. /// <summary>
  114. /// 批量添加单元、楼层、房间、床位
  115. /// </summary>
  116. /// <param name="ParentID"></param>
  117. /// <returns></returns>
  118. [HttpGet]
  119. public ActionResult DormitoryAdd(string ParentID)
  120. {
  121. return View();
  122. }
  123. /// <summary>
  124. /// 自动分配宿舍
  125. /// </summary>
  126. /// <returns></returns>
  127. [HttpGet]
  128. public ActionResult Allocation()
  129. {
  130. return View();
  131. }
  132. /// <summary>
  133. /// 分配系
  134. /// </summary>
  135. /// <returns></returns>
  136. [HttpGet]
  137. public ActionResult FormDept()
  138. {
  139. return View();
  140. }
  141. /// <summary>
  142. /// 分配专业和班级
  143. /// </summary>
  144. /// <returns></returns>
  145. [HttpGet]
  146. public ActionResult FormClass()
  147. {
  148. return View();
  149. }
  150. /// <summary>
  151. /// 分配宿舍
  152. /// </summary>
  153. /// <returns></returns>
  154. [HttpGet]
  155. public ActionResult FormRoom()
  156. {
  157. return View();
  158. }
  159. /// <summary>
  160. /// 床位管理
  161. /// </summary>
  162. /// <returns></returns>
  163. [HttpGet]
  164. public ActionResult IndexBed()
  165. {
  166. return View();
  167. }
  168. /// <summary>
  169. /// 床位管理
  170. /// </summary>
  171. /// <returns></returns>
  172. [HttpGet]
  173. public ActionResult FormBed()
  174. {
  175. return View();
  176. }
  177. /// <summary>
  178. /// 分类管理
  179. /// </summary>
  180. /// <returns></returns>
  181. [HttpGet]
  182. public ActionResult FormClassify()
  183. {
  184. return View();
  185. }
  186. /// <summary>
  187. /// 分类管理
  188. /// </summary>
  189. /// <returns></returns>
  190. [HttpGet]
  191. public ActionResult IndexClassify()
  192. {
  193. return View();
  194. }
  195. /// <summary>
  196. /// 导入宿舍
  197. /// </summary>
  198. /// <returns></returns>
  199. [HttpGet]
  200. public ActionResult IndexImport()
  201. {
  202. return View();
  203. }
  204. /// <summary>
  205. /// 分配专业和班级
  206. /// </summary>
  207. /// <returns></returns>
  208. [HttpGet]
  209. public ActionResult FormMainClass()
  210. {
  211. return View();
  212. }
  213. #endregion
  214. #region 获取数据
  215. /// <summary>
  216. /// 获取页面显示列表数据
  217. /// <summary>
  218. /// <param name="queryJson">查询参数</param>
  219. /// <returns></returns>
  220. [HttpGet]
  221. [AjaxOnly]
  222. public ActionResult GetPageList(string pagination, string queryJson)
  223. {
  224. Pagination paginationobj = pagination.ToObject<Pagination>();
  225. var data = accommodationIBLL.GetPageList(paginationobj, queryJson);
  226. var jsonData = new
  227. {
  228. rows = data,
  229. total = paginationobj.total,
  230. page = paginationobj.page,
  231. records = paginationobj.records
  232. };
  233. return Success(jsonData);
  234. }
  235. /// <summary>
  236. /// 获取床位数据
  237. /// <summary>
  238. /// <param name="RoomId">查询参数</param>
  239. /// <returns></returns>
  240. [HttpGet]
  241. [AjaxOnly]
  242. public ActionResult GetDormStu(string keyValue)
  243. {
  244. var data = accommodationIBLL.GetDromStu(keyValue).OrderBy(x => x.Class);
  245. if (data.Count() <= 0)
  246. {
  247. return Fail("获取学生失败,未发现可编辑的学生");
  248. }
  249. return Success(data);
  250. }
  251. /// <summary>
  252. /// 获取床位数据
  253. /// <summary>
  254. /// <param name="RoomId">查询参数</param>
  255. /// <returns></returns>
  256. [HttpGet]
  257. [AjaxOnly]
  258. public ActionResult GetBedListByRoomId(string RoomId)
  259. {
  260. var data = accommodationIBLL.GetBedListByRoomId(RoomId).OrderBy(x => Convert.ToInt32(x.DNo));
  261. return Success(data);
  262. }
  263. /// <summary>
  264. /// 获取分类数据
  265. /// <summary>
  266. /// <param name="queryJson"></param>
  267. /// <returns></returns>
  268. [HttpGet]
  269. [AjaxOnly]
  270. public ActionResult GetClassifyList(string pagination, string queryJson)
  271. {
  272. Pagination paginationobj = pagination.ToObject<Pagination>();
  273. var data = accommodationIBLL.GetClassifyList(paginationobj, queryJson).OrderBy(x => x.DNo);
  274. //var jsonData = new
  275. //{
  276. // rows = data,
  277. // total = paginationobj.total,
  278. // page = paginationobj.page,
  279. // records = paginationobj.records
  280. //};
  281. return Success(data);
  282. }
  283. /// <summary>
  284. /// 获取宿舍楼数据
  285. /// </summary>
  286. /// <returns></returns>
  287. [HttpGet]
  288. [AjaxOnly]
  289. public ActionResult GetDormitoryList()
  290. {
  291. var data = accommodationIBLL.GetDormitoryList();
  292. return Success(data);
  293. }
  294. /// <summary>
  295. /// 获取单元数据
  296. /// </summary>
  297. /// <param name="ParentID"></param>
  298. /// <returns></returns>
  299. [HttpGet]
  300. [AjaxOnly]
  301. public ActionResult GetUnitList(string ParentID)
  302. {
  303. var data = accommodationIBLL.GetUnitList(ParentID);
  304. return Success(data);
  305. }
  306. /// <summary>
  307. /// 获取楼层数据
  308. /// </summary>
  309. /// <param name="ParentID"></param>
  310. /// <returns></returns>
  311. [HttpGet]
  312. [AjaxOnly]
  313. public ActionResult GetFloorList(string ParentID)
  314. {
  315. var data = accommodationIBLL.GetFloorList(ParentID);
  316. return Success(data);
  317. }
  318. /// <summary>
  319. /// 获取房间数据
  320. /// </summary>
  321. /// <param name="ParentID"></param>
  322. /// <returns></returns>
  323. [HttpGet]
  324. [AjaxOnly]
  325. public ActionResult GetRoomList(string ParentID)
  326. {
  327. var data = accommodationIBLL.GetRoomList(ParentID);
  328. return Success(data);
  329. }
  330. public ActionResult GetBedList(string ParentID)
  331. {
  332. var data = accommodationIBLL.GetBedList(ParentID);
  333. return Success(data);
  334. }
  335. /// <summary>
  336. /// 获取表单数据
  337. /// <summary>
  338. /// <returns></returns>
  339. [HttpGet]
  340. [AjaxOnly]
  341. public ActionResult GetFormData(string keyValue)
  342. {
  343. var Acc_DormitoryBuildData = accommodationIBLL.GetAcc_DormitoryBuildEntity(keyValue);
  344. var jsonData = new
  345. {
  346. Acc_DormitoryBuild = Acc_DormitoryBuildData,
  347. };
  348. return Success(jsonData);
  349. }
  350. /// <summary>
  351. /// 获取左侧树形数据
  352. /// <summary>
  353. /// <returns></returns>
  354. [HttpGet]
  355. [AjaxOnly]
  356. public ActionResult GetTree()
  357. {
  358. var data = accommodationIBLL.GetTree();
  359. return Success(data);
  360. }
  361. /// <summary>
  362. /// 获取左侧树形数据
  363. /// <summary>
  364. /// <returns></returns>
  365. [HttpGet]
  366. [AjaxOnly]
  367. public ActionResult GetTreeNew()
  368. {
  369. var data = accommodationIBLL.GetTreeNew();
  370. return Success(data);
  371. }
  372. /// <summary>
  373. /// 获取上级树形数据
  374. /// <summary>
  375. /// <returns></returns>
  376. [HttpGet]
  377. [AjaxOnly]
  378. public ActionResult GetClassifyTree()
  379. {
  380. var data = accommodationIBLL.GetClassifyTree();
  381. return Success(data);
  382. }
  383. /// <summary>
  384. ///
  385. /// </summary>
  386. /// <returns></returns>
  387. [HttpGet]
  388. [AjaxOnly]
  389. public ActionResult GetClassNo(string keyValue)
  390. {
  391. var data = accommodationIBLL.GetClassNo(keyValue);
  392. return Success(data);
  393. }
  394. #endregion
  395. #region 提交数据
  396. /// <summary>
  397. /// 删除实体数据
  398. /// <param name="keyValue">主键</param>
  399. /// <summary>
  400. /// <returns></returns>
  401. [HttpPost]
  402. [AjaxOnly]
  403. public ActionResult DeleteForm(string keyValue)
  404. {
  405. accommodationIBLL.DeleteEntity(keyValue);
  406. return Success("删除成功!");
  407. }
  408. /// <summary>
  409. /// 删除
  410. /// <param name="keyValue">主键</param>
  411. /// <summary>
  412. /// <returns></returns>
  413. [HttpPost]
  414. [AjaxOnly]
  415. public ActionResult DeleteBed(string keyValue, string ParentID)
  416. {
  417. accommodationIBLL.DeleteBed(keyValue, ParentID);
  418. return Success("删除成功!");
  419. }
  420. /// <summary>
  421. /// 保存实体数据(新增、修改)
  422. /// <param name="keyValue">主键</param>
  423. /// <summary>
  424. /// <returns></returns>
  425. [HttpPost]
  426. [ValidateAntiForgeryToken]
  427. [AjaxOnly]
  428. public ActionResult SaveForm(string keyValue, string strEntity)
  429. {
  430. Acc_DormitoryBuildEntity entity = strEntity.ToObject<Acc_DormitoryBuildEntity>();
  431. accommodationIBLL.SaveEntity(keyValue, entity);
  432. return Success("保存成功!");
  433. }
  434. /// <summary>
  435. /// 保存实体数据(新增、修改)
  436. /// <param name="keyValue">主键</param>
  437. /// <summary>
  438. /// <returns></returns>
  439. [HttpPost]
  440. [ValidateAntiForgeryToken]
  441. [AjaxOnly]
  442. public ActionResult SaveBedForm(string keyValue, string ParentID, string strEntity)
  443. {
  444. Acc_DormitoryBuildEntity entity = strEntity.ToObject<Acc_DormitoryBuildEntity>();
  445. if (entity.Name.Contains("床"))
  446. {
  447. entity.DNo = entity.Name.Replace("床", "");
  448. }
  449. accommodationIBLL.SaveBedEntity(keyValue, ParentID, entity);
  450. return Success("保存成功!");
  451. }
  452. /// <summary>
  453. /// 寝室分配系
  454. /// <param name="keyValue">主键</param>
  455. /// <summary>
  456. /// <returns></returns>
  457. [HttpPost]
  458. [ValidateAntiForgeryToken]
  459. [AjaxOnly]
  460. public ActionResult SaveDeptClass(string keyValue, string strEntity, int type)
  461. {
  462. Acc_DormitoryBuildEntity entity = strEntity.ToObject<Acc_DormitoryBuildEntity>();
  463. accommodationIBLL.SaveDeptClass(keyValue, entity, type);
  464. return Success("保存成功!");
  465. }
  466. /// <summary>
  467. /// 寝室分配床位
  468. /// <summary>
  469. /// <returns></returns>
  470. [HttpPost]
  471. [ValidateAntiForgeryToken]
  472. [AjaxOnly]
  473. public ActionResult SaveRoom(string RoomId, List<Acc_DormitoryBuildEntity> list)
  474. {
  475. //List<Acc_DormitoryBuildEntity> list = strEntity.ToObject<List<Acc_DormitoryBuildEntity>>();
  476. string res = accommodationIBLL.SaveRoom(RoomId, list);
  477. if (!string.IsNullOrEmpty(res))
  478. {
  479. return Fail(res);
  480. }
  481. return Success("保存成功!");
  482. }
  483. /// <summary>
  484. /// 学生宿舍的单元、楼层、房间、床位添加
  485. /// </summary>
  486. /// <param name="keyValue">主键</param>
  487. /// <param name="strEntity">参数 (单元、楼层、房间、床位)数量</param>
  488. /// <returns></returns>
  489. [HttpPost]
  490. [ValidateAntiForgeryToken]
  491. [AjaxOnly]
  492. public ActionResult DormitoryAdd(string keyValue, string strEntity)
  493. {
  494. JObject jsonEntity = JObject.Parse(strEntity);
  495. var elementNum = int.Parse(jsonEntity["ElementNum"].ToString());
  496. var floorNum = int.Parse(jsonEntity["FloorNum"].ToString());
  497. var roomNum = int.Parse(jsonEntity["RoomNum"].ToString());
  498. var bedNum = int.Parse(jsonEntity["BedNum"].ToString());
  499. accommodationIBLL.DormitoryAdd(keyValue, elementNum, floorNum, roomNum, bedNum);
  500. return Success("添加成功");
  501. }
  502. /// <summary>
  503. /// 自动分配学生宿舍
  504. /// </summary>
  505. /// <returns></returns>
  506. public ActionResult Automatic(string strEntity)
  507. {
  508. JObject jsonEntity = JObject.Parse(strEntity);
  509. bool noNation = jsonEntity["noNation"].ToString() == "1" ? true : false;
  510. bool noPlace = jsonEntity["noPlace"].ToString() == "1" ? true : false;
  511. accommodationIBLL.Automatic_allocation_accommodation(noNation, noPlace);
  512. return Success("分配成功");
  513. }
  514. /// <summary>
  515. /// 同步宿舍信息数据
  516. /// </summary>
  517. /// <returns></returns>
  518. public ActionResult SyncData()
  519. {
  520. accommodationIBLL.SyncData();
  521. return Success("同步成功");
  522. }
  523. /// <summary>
  524. /// 宿舍信息导入模板
  525. /// </summary>
  526. /// <returns></returns>
  527. public ActionResult DownTemplate()
  528. {
  529. FileStreamResult result = null;
  530. try
  531. {
  532. var path = Server.MapPath("~/Content/excel/");
  533. var pathoffull = path + "AccommodationImport.xls";
  534. FileStream fsread = fsread = new FileStream(pathoffull, FileMode.OpenOrCreate, FileAccess.ReadWrite);
  535. result = File(fsread, "application/ms-excel", "宿舍信息导入.xls");
  536. return result;
  537. }
  538. catch (Exception ex)
  539. {
  540. return null;
  541. }
  542. }
  543. /// <summary>
  544. /// 宿舍信息excel文件导入
  545. /// </summary>
  546. /// <param name="templateId"></param>
  547. /// <param name="Filedata"></param>
  548. /// <returns></returns>
  549. [HttpPost]
  550. [ValidateAntiForgeryToken]
  551. public ActionResult ExecuteImportExcel(string fileGuid, int chunks)
  552. {
  553. string path = annexesFileIBLL.SaveAnnexes(fileGuid, fileGuid, chunks, LoginUserInfo.Get());
  554. if (!string.IsNullOrEmpty(path))
  555. {
  556. DataTable dt = ExcelHelper.ExcelImport(path);
  557. var res = accommodationIBLL.ExecuteImportExcel(dt, fileGuid);
  558. var data = new
  559. {
  560. Success = res.snum,
  561. Fail = res.failDt.Rows.Count
  562. };
  563. return Success(data);
  564. }
  565. else
  566. {
  567. return Fail("导入数据失败!");
  568. }
  569. }
  570. #endregion
  571. }
  572. }