颐和api

FloorManageController.cs 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Mvc;
  6. using MadRunFabric.Common;
  7. using Microsoft.Extensions.Logging;
  8. using ConfigurationApi.IRepositories;
  9. using MadRunFabric.Model;
  10. using MongoDB.Driver;
  11. using Microsoft.AspNetCore.Authorization;
  12. using System.Security.Claims;
  13. using Api.SignToken;
  14. using Microsoft.Extensions.Configuration;
  15. namespace ConfigurationApi.Controllers
  16. {
  17. /// <summary>
  18. /// 楼层管理 - 例如:门诊楼10层
  19. /// </summary>
  20. //[Authorize]
  21. [ApiVersion("6.0")]
  22. [Produces("application/json")]
  23. [Route("api/[controller]")]
  24. public class FloorManageController : BaseController
  25. {
  26. private readonly ILogger<FloorManageController> _logger;
  27. private readonly IConfiguration _configuration;
  28. private readonly ISys_User_AccountRepository _sys_user_accountRepository;
  29. private readonly ISys_BuildingRepository _sys_buildingrepository;
  30. private readonly ISys_FloorRepository _sys_floorrepository;
  31. private readonly ISignTokenService _signTokenService;
  32. public FloorManageController(
  33. ILogger<FloorManageController> logger,
  34. IConfiguration configuration,
  35. ISys_User_AccountRepository sys_user_accountRepository,
  36. ISys_BuildingRepository sys_buildingrepository,
  37. ISys_FloorRepository sys_floorrepository,
  38. ISignTokenService signTokenService
  39. )
  40. {
  41. _logger = logger;
  42. _configuration = configuration;
  43. _sys_user_accountRepository = sys_user_accountRepository;
  44. _sys_buildingrepository = sys_buildingrepository;
  45. _sys_floorrepository = sys_floorrepository;
  46. _signTokenService = signTokenService;
  47. }
  48. #region 楼
  49. /// <summary>
  50. /// 获取所有楼列表
  51. /// </summary>
  52. /// <returns></returns>
  53. [HttpGet("getbuildlistdrop")]
  54. public async Task<IActionResult> GetBuildListdrop(string keyword, string projectid)
  55. {
  56. //排序字段
  57. var sort = Builders<Sys_Building>.Sort.Descending("sortnum");
  58. var list = await _sys_buildingrepository.Get(null, null, sort);
  59. //根据条件查询集合
  60. var listfilter = new List<FilterDefinition<Sys_Building>>();
  61. listfilter.Add(Builders<Sys_Building>.Filter.Eq("isdelete", 0));
  62. //查询
  63. if (!string.IsNullOrEmpty(projectid))
  64. listfilter.Add(Builders<Sys_Building>.Filter.Eq("projectid", projectid));
  65. if (!string.IsNullOrEmpty(keyword))
  66. listfilter.Add(Builders<Sys_Building>.Filter.Where(s => s.buildname.Contains(keyword)));
  67. var filter = Builders<Sys_Building>.Filter.And(listfilter);
  68. list = await _sys_buildingrepository.Get(filter, null, sort);
  69. //var list = await _sys_departmentrepository.Get(x => x.isdelete == 0);
  70. //var listmodel = new List<Sys_Department>();
  71. //foreach (var item in list)
  72. //{
  73. // var model = new DropListDto();
  74. // model.id = item.id;
  75. // model.text = item.project_name;
  76. // listmodel.Add(model);
  77. //}
  78. return Success("成功", list);
  79. }
  80. /// <summary>
  81. /// 获取楼列表 - 关联查询
  82. /// </summary>
  83. /// <returns></returns>
  84. [HttpGet("getbuildlistsbypage")]
  85. public IActionResult GetBuildListsByPage(string keyword, string projectid, int pageindex = 1, int pagesize = 10)
  86. {
  87. string rolecode = User.Claims.FirstOrDefault(c => c.Type == "RoleCode").Value;
  88. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  89. //var userstr = _signTokenService.GetUserInfoAsync(usercode).Result;
  90. //var userinfo = userstr.ToJObject()["data"].ToString().ToObject<UserInfoModel>();
  91. string allprojectrole = _configuration["allprojectrole"];
  92. var userinfos = _sys_user_accountRepository.GetUserInfo(usercode, allprojectrole);
  93. var userinfo = JsonHelper.JsonToEntity<UserAccountInfoModel>(userinfos.ToJson());
  94. int recordCount = 0;
  95. var result = _sys_buildingrepository.GetBuildListsByPage(keyword, projectid, userinfo, pageindex, pagesize, out recordCount);
  96. var obj = new
  97. {
  98. rows = result,
  99. total = recordCount,
  100. };
  101. return Success("获取成功", obj);
  102. }
  103. /// <summary>
  104. /// 获取楼层详情 by id - 关联查询
  105. /// </summary>
  106. /// <param name="id"></param>
  107. /// <returns></returns>
  108. [HttpGet("getbuilddetails")]
  109. public IActionResult GetBuildDetails(string id)
  110. {
  111. if (string.IsNullOrEmpty(id))
  112. return Error("参数错误");
  113. var model = _sys_buildingrepository.GetBuildDetails(id);
  114. if (model != null)
  115. {
  116. return Success("获取成功!", model);
  117. }
  118. return Error("获取失败");
  119. }
  120. /// <summary>
  121. /// 添加楼层
  122. /// </summary>
  123. /// <param name="floorname"></param>
  124. /// <param name="sortnum"></param>
  125. /// <param name="remark"></param>
  126. /// <returns></returns>
  127. [HttpPost("addbuild")]
  128. public async Task<IActionResult> AddBuildAsync(string projectid, string buildname, int sortnum, string remark)
  129. {
  130. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  131. if (string.IsNullOrEmpty(projectid))
  132. return Error("项目信息不能为空");
  133. if (string.IsNullOrEmpty(buildname))
  134. return Error("楼名称不能为空");
  135. var model = new Sys_Building();
  136. model.projectid = projectid;
  137. model.buildname = buildname;
  138. model.sortnum = sortnum;
  139. model.remark = remark;
  140. model.createtby = usercode;
  141. model.createtime = DateTime.Now.ToLocalTime();
  142. //model.projectid = "5aab6f580d26390eac2bdc82";
  143. //model.buildname = "1号楼";
  144. //model.sortnum = 1;
  145. //model.remark = "1号楼";
  146. //model.createtby = "8000";
  147. //model.createtime = DateTime.Now.ToLocalTime();
  148. bool b = await _sys_buildingrepository.Add(model);
  149. if (b)
  150. return Success("添加成功");
  151. return Error("添加失败");
  152. }
  153. /// <summary>
  154. /// 修改楼层信息
  155. /// </summary>
  156. /// <param name="id"></param>
  157. /// <param name="floorname"></param>
  158. /// <param name="sortnum"></param>
  159. /// <param name="remark"></param>
  160. /// <returns></returns>
  161. [HttpPost("updatebuild")]
  162. public async Task<IActionResult> UpdateBuildAsync(string id, string projectid, string buildname, int sortnum, string remark)
  163. {
  164. if (string.IsNullOrEmpty(id))
  165. return Error("参数错误");
  166. if (string.IsNullOrEmpty(projectid))
  167. return Error("项目信息不能为空");
  168. if (string.IsNullOrEmpty(buildname))
  169. return Error("楼名称不能为空");
  170. var model = new Sys_Building();
  171. model = await _sys_buildingrepository.GetSingle(id);
  172. if (model == null)
  173. return Error("操作失败");
  174. model.projectid = projectid;
  175. model.buildname = buildname;
  176. model.sortnum = sortnum;
  177. model.remark = remark;
  178. bool b = await _sys_buildingrepository.Update(model);
  179. if (b)
  180. return Success("保存成功");
  181. return Error("保存失败");
  182. }
  183. /// <summary>
  184. /// 删除楼层信息 by ids
  185. /// </summary>
  186. /// <param name="ids">string[] id</param>
  187. /// <returns></returns>
  188. [HttpPost("deletebuild")]
  189. public async Task<IActionResult> DeleteBuildAsync(string[] ids)
  190. {
  191. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  192. var res = 0;
  193. if (ids != null && ids.Length > 0)
  194. {
  195. foreach (var item in ids)
  196. {
  197. var ml = await _sys_buildingrepository.GetSingle(item);
  198. ml.isdelete = -1;
  199. ml.deleteby = usercode;
  200. ml.deletetime = DateTime.Now.ToLocalTime();
  201. if (_sys_buildingrepository.Update(ml).Result)
  202. {
  203. res += 1;
  204. #region 批量删除 - 删对应的楼层信息信息
  205. var imodel = new Sys_Floor();
  206. Dictionary<string, string> dic = new Dictionary<string, string>();
  207. dic.Add("isdelete", "1");
  208. dic.Add("deleteby", usercode);
  209. dic.Add("deletetime", DateTime.Now.ToLocalTime().ToLongDateString());
  210. var list = new List<FilterDefinition<Sys_Floor>>();
  211. var filterBuilder = Builders<Sys_Floor>.Filter;
  212. list.Add(filterBuilder.Eq("projectid", item));
  213. var filter = Builders<Sys_Floor>.Filter.And(list);
  214. await _sys_floorrepository.UpdateManay(imodel, dic, filter);
  215. #endregion
  216. }
  217. }
  218. if (res == ids.Length)
  219. return Success("删除成功");
  220. else if (res > 0 && res < ids.Length)
  221. return Error("部分删除失败,请查看后重新操作");
  222. else
  223. return Error("删除失败,请查看后重新操作");
  224. }
  225. else
  226. return Error("请选择要删除的记录");
  227. }
  228. #endregion
  229. #region 楼层
  230. /// <summary>
  231. /// 获取所有楼层列表
  232. /// </summary>
  233. /// <returns></returns>
  234. [HttpGet("getlistdrop")]
  235. public async Task<IActionResult> GetListdrop(string keyword, string buildid)
  236. {
  237. //排序字段
  238. var sort = Builders<Sys_Floor>.Sort.Descending("sortnum");
  239. var list = await _sys_floorrepository.Get(null, null, sort);
  240. var redCount = await _sys_floorrepository.CountAsync(null); //获取总数
  241. //根据条件查询集合
  242. var listfilter = new List<FilterDefinition<Sys_Floor>>();
  243. listfilter.Add(Builders<Sys_Floor>.Filter.Eq("isdelete", 0));
  244. //查询
  245. if (!string.IsNullOrEmpty(buildid))
  246. listfilter.Add(Builders<Sys_Floor>.Filter.Eq("buildid", buildid));
  247. if (!string.IsNullOrEmpty(keyword))
  248. listfilter.Add(Builders<Sys_Floor>.Filter.Where(s => s.floorname.Contains(keyword)));
  249. if (listfilter.Count > 0)
  250. {
  251. var filter = Builders<Sys_Floor>.Filter.And(listfilter);
  252. list = await _sys_floorrepository.Get(filter, null, sort);
  253. }
  254. //var list = await _sys_departmentrepository.Get(x => x.isdelete == 0);
  255. //var listmodel = new List<Sys_Department>();
  256. //foreach (var item in list)
  257. //{
  258. // var model = new DropListDto();
  259. // model.id = item.id;
  260. // model.text = item.project_name;
  261. // listmodel.Add(model);
  262. //}
  263. return Success("成功", list);
  264. }
  265. /// <summary>
  266. /// 获取楼层列表 by page
  267. /// </summary>
  268. /// <param name="keyword"></param>
  269. /// <param name="pageindex"></param>
  270. /// <param name="pagesize"></param>
  271. /// <returns></returns>
  272. [HttpGet("getlistbypage")]
  273. public async Task<IActionResult> GetListByPageAsync(string keyword, int pageindex = 1, int pagesize = 10)
  274. {
  275. #region 条件信息
  276. //排序字段
  277. var sort = Builders<Sys_Floor>.Sort.Descending("sortnum");
  278. var list = await _sys_floorrepository.GetByPage(null, pageindex, pagesize, sort);
  279. var redCount = await _sys_floorrepository.CountAsync(null); //获取总数
  280. //根据条件查询集合
  281. var listfilter = new List<FilterDefinition<Sys_Floor>>();
  282. //模糊查询
  283. if (!string.IsNullOrEmpty(keyword))
  284. listfilter.Add(Builders<Sys_Floor>.Filter.Where(s => s.floorname.Contains(keyword)));
  285. #endregion
  286. int recordCount = 0;
  287. if (listfilter.Count > 0)
  288. {
  289. var filter = Builders<Sys_Floor>.Filter.And(listfilter);
  290. list = await _sys_floorrepository.GetByPage(filter, pageindex, pagesize, sort);
  291. redCount = await _sys_floorrepository.CountAsync(filter); //获取总数
  292. }
  293. recordCount = int.Parse(redCount.ToString());
  294. var obj = new
  295. {
  296. state = "success",
  297. message = "成功",
  298. rows = list,
  299. total = recordCount,
  300. };
  301. return Content(obj.ToJson());
  302. }
  303. /// <summary>
  304. /// 获取楼层列表 - 关联查询
  305. /// </summary>
  306. /// <returns></returns>
  307. [HttpGet("getlistsbypage")]
  308. public IActionResult GetListsByPage(string keyword,string buildid, int pageindex = 1, int pagesize = 10)
  309. {
  310. int recordCount = 0;
  311. var result = _sys_floorrepository.GetListsByPage(keyword, buildid, pageindex, pagesize, out recordCount);
  312. var obj = new
  313. {
  314. rows = result,
  315. total = recordCount,
  316. };
  317. return Success("获取成功", obj);
  318. }
  319. /// <summary>
  320. /// 获取楼层详情 by id
  321. /// </summary>
  322. /// <param name="id"></param>
  323. /// <returns></returns>
  324. [HttpGet("getdetailes")]
  325. public async Task<IActionResult> GetDetailsAsync(string id)
  326. {
  327. if (string.IsNullOrEmpty(id))
  328. return Error("参数错误");
  329. var model = await _sys_floorrepository.GetSingle(id);
  330. if (model != null)
  331. {
  332. var result = new
  333. {
  334. id = model.id,
  335. buildid = model.buildid,
  336. sortnum = model.sortnum,
  337. remark = model.remark,
  338. createtime = model.createtime,
  339. };
  340. return Success("获取成功!", result);
  341. }
  342. return Error("获取失败");
  343. }
  344. /// <summary>
  345. /// 获取楼层详情 by id - 关联查询
  346. /// </summary>
  347. /// <param name="id"></param>
  348. /// <returns></returns>
  349. [HttpGet("getdetails")]
  350. public IActionResult GetDetails(string id)
  351. {
  352. if (string.IsNullOrEmpty(id))
  353. return Error("参数错误");
  354. var model = _sys_floorrepository.GetDetails(id);
  355. if (model != null)
  356. {
  357. return Success("获取成功!", model);
  358. }
  359. return Error("获取失败");
  360. }
  361. /// <summary>
  362. /// 添加楼层
  363. /// </summary>
  364. /// <param name="floorname"></param>
  365. /// <param name="sortnum"></param>
  366. /// <param name="remark"></param>
  367. /// <returns></returns>
  368. [HttpPost("add")]
  369. public async Task<IActionResult> AddAsync(string buildid, string floorname, int sortnum, string remark)
  370. {
  371. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  372. if (string.IsNullOrEmpty(buildid))
  373. return Error("楼信息不能为空");
  374. if (string.IsNullOrEmpty(floorname))
  375. return Error("楼层名称不能为空");
  376. var model = new Sys_Floor();
  377. model.buildid = buildid;
  378. model.floorname = floorname;
  379. model.sortnum = sortnum;
  380. model.remark = remark;
  381. model.createtby = usercode;
  382. model.createtime = DateTime.Now.ToLocalTime();
  383. //model.buildid = "5ad04d0c13d2380c3c0d6637";
  384. //model.floorname = "10层";
  385. //model.sortnum = 1;
  386. //model.remark = "门诊楼10层";
  387. //model.createtby = "8000";
  388. //model.createtime = DateTime.Now.ToLocalTime();
  389. bool b = await _sys_floorrepository.Add(model);
  390. if (b)
  391. return Success("添加成功");
  392. return Error("添加失败");
  393. }
  394. /// <summary>
  395. /// 修改楼层信息
  396. /// </summary>
  397. /// <param name="id"></param>
  398. /// <param name="floorname"></param>
  399. /// <param name="sortnum"></param>
  400. /// <param name="remark"></param>
  401. /// <returns></returns>
  402. [HttpPost("update")]
  403. public async Task<IActionResult> UpdateAsync(string id, string buildid, string floorname, int sortnum, string remark)
  404. {
  405. if (string.IsNullOrEmpty(id))
  406. return Error("参数错误");
  407. if (string.IsNullOrEmpty(buildid))
  408. return Error("楼信息不能为空");
  409. if (string.IsNullOrEmpty(floorname))
  410. return Error("楼层名称不能为空");
  411. var model = new Sys_Floor();
  412. model = await _sys_floorrepository.GetSingle(id);
  413. if (model == null)
  414. return Error("操作失败");
  415. model.buildid = buildid;
  416. model.floorname = floorname;
  417. model.sortnum = sortnum;
  418. model.remark = remark;
  419. bool b = await _sys_floorrepository.Update(model);
  420. if (b)
  421. return Success("保存成功");
  422. return Error("保存失败");
  423. }
  424. /// <summary>
  425. /// 删除楼层信息 by ids
  426. /// </summary>
  427. /// <param name="ids">string[] id</param>
  428. /// <returns></returns>
  429. [HttpPost("delete")]
  430. public async Task<IActionResult> DeleteAsync(string[] ids)
  431. {
  432. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  433. var res = 0;
  434. if (ids != null && ids.Length > 0)
  435. {
  436. foreach (var item in ids)
  437. {
  438. var ml = await _sys_floorrepository.GetSingle(item);
  439. ml.isdelete = -1;
  440. ml.deleteby = usercode;
  441. ml.deletetime = DateTime.Now.ToLocalTime();
  442. if (_sys_floorrepository.Update(ml).Result)
  443. res += 1;
  444. }
  445. if (res == ids.Length)
  446. return Success("删除成功");
  447. else if (res > 0 && res < ids.Length)
  448. return Error("部分删除失败,请查看后重新操作");
  449. else
  450. return Error("删除失败,请查看后重新操作");
  451. }
  452. else
  453. return Error("请选择要删除的记录");
  454. }
  455. #endregion
  456. /// <summary>
  457. /// 获取五级联动
  458. /// </summary>
  459. /// <param name="keyword"></param>
  460. /// <param name="buildid"></param>
  461. /// <returns></returns>
  462. [HttpGet("gettree")]
  463. public IActionResult GetTree()
  464. {
  465. var result = _sys_floorrepository.GetTree();
  466. return Success("成功", result);
  467. }
  468. }
  469. }