颐和api

DepartmentController.cs 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  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 MongoDB.Driver;
  10. using MadRunFabric.Model;
  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. /// 部门科室
  19. /// </summary>
  20. [Authorize]
  21. [ApiVersion("6.0")]
  22. [Produces("application/json")]
  23. [Route("api/[controller]")]
  24. public class DepartmentController : BaseController
  25. {
  26. private readonly ILogger<DepartmentController> _logger;
  27. private readonly IConfiguration _configuration;
  28. private readonly ISys_User_AccountRepository _sys_user_accountRepository;
  29. private readonly ISignTokenService _signTokenService;
  30. private readonly ISys_DepartmentRepository _sys_departmentrepository;
  31. public DepartmentController(
  32. ILogger<DepartmentController> logger,
  33. IConfiguration configuration,
  34. ISys_User_AccountRepository sys_user_accountRepository,
  35. ISignTokenService signTokenService,
  36. ISys_DepartmentRepository sys_departmentrepository
  37. )
  38. {
  39. _logger = logger;
  40. _configuration = configuration;
  41. _sys_user_accountRepository = sys_user_accountRepository;
  42. _signTokenService = signTokenService;
  43. _sys_departmentrepository = sys_departmentrepository;
  44. }
  45. /// <summary>
  46. /// 获取科室列表 by page
  47. /// </summary>
  48. /// <param name="keyword"></param>
  49. /// <param name="stime"></param>
  50. /// <param name="etime"></param>
  51. /// <param name="pageindex"></param>
  52. /// <param name="pagesize"></param>
  53. /// <returns></returns>
  54. [HttpGet("getlistbypage")]
  55. public IActionResult GetListByPageAsync(string keyword, string projectid, string building, string floorid, int pageindex = 1, int pagesize = 10)
  56. {
  57. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  58. //var userstr = _signTokenService.GetUserInfoAsync(usercode).Result;
  59. //var userinfo = userstr.ToJObject()["data"].ToString().ToObject<UserInfoModel>();
  60. string allprojectrole = _configuration["allprojectrole"];
  61. var userinfos = _sys_user_accountRepository.GetUserInfo(usercode, allprojectrole);
  62. var userinfo = JsonHelper.JsonToEntity<UserAccountInfoModel>(userinfos.ToJson());
  63. //获取数据
  64. int recordCount = 0;
  65. var result = _sys_departmentrepository.GetListsByPage(keyword, projectid, building, floorid, userinfo, pageindex, pagesize, out recordCount);
  66. var obj = new
  67. {
  68. rows = result.ToList(),
  69. total = recordCount
  70. };
  71. return Success("获取成功", obj);
  72. }
  73. /// <summary>
  74. /// 获取科室列表 - 下拉
  75. /// </summary>
  76. /// <param name="keyword"></param>
  77. /// <param name="projectid"></param>
  78. /// <param name="building"></param>
  79. /// <param name="floorid"></param>
  80. /// <returns></returns>
  81. [HttpGet("getlist")]
  82. public IActionResult GetListAsync(string keyword, string projectid, string building, string floorid)
  83. {
  84. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  85. //var userstr = _signTokenService.GetUserInfoAsync(usercode).Result;
  86. //var userinfo = userstr.ToJObject()["data"].ToString().ToObject<UserInfoModel>();
  87. string allprojectrole = _configuration["allprojectrole"];
  88. var userinfos = _sys_user_accountRepository.GetUserInfo(usercode, allprojectrole);
  89. var userinfo = JsonHelper.JsonToEntity<UserAccountInfoModel>(userinfos.ToJson());
  90. //获取数据
  91. var list = _sys_departmentrepository.GetLists(keyword, projectid, building, floorid, userinfo).ToList();
  92. var treeList = new List<TreeGridModel>();
  93. foreach (var item in list)
  94. {
  95. TreeGridModel treeModel = new TreeGridModel();
  96. bool hasChildren = list.Count(t => t.parent_id == item.id.ToString()) == 0 ? false : true;
  97. treeModel.id = item.id.ToString();
  98. treeModel.isLeaf = hasChildren;
  99. treeModel.parentId = item.parent_id;
  100. treeModel.expanded = hasChildren;
  101. treeModel.entityJson = item.ToJson();
  102. treeList.Add(treeModel);
  103. }
  104. var treeListJson = treeList.TreeGridJsonByParentId(null);
  105. return Content(treeList.TreeGridJsonByParentId(null));
  106. //return Success("获取成功", list.ToList());
  107. }
  108. /// <summary>
  109. /// 获取所有科室列表 - 树形下拉
  110. /// </summary>
  111. /// <returns></returns>
  112. [HttpGet("getlistdrop")]
  113. public async Task<IActionResult> GetListdrop(string projectid, string building, string floorid)
  114. {
  115. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  116. //var userstr = _signTokenService.GetUserInfoAsync(usercode).Result;
  117. //var userinfo = userstr.ToJObject()["data"].ToString().ToObject<UserInfoModel>();
  118. string allprojectrole = _configuration["allprojectrole"];
  119. var userinfos = _sys_user_accountRepository.GetUserInfo(usercode, allprojectrole);
  120. var userinfo = JsonHelper.JsonToEntity<UserAccountInfoModel>(userinfos.ToJson());
  121. var list = (await _sys_departmentrepository.Get(p => p.isdelete == 0)).ToList();
  122. if (!string.IsNullOrEmpty(projectid))
  123. list = list.Where(it => it.projectid == projectid).ToList();
  124. if (!string.IsNullOrEmpty(building))
  125. list = list.Where(it => it.building == building).ToList();
  126. if (!string.IsNullOrEmpty(floorid))
  127. list = list.Where(it => it.floorid == floorid).ToList();
  128. if (userinfo.isallproject == 0)
  129. list = list.Where(it => userinfo.projectlist.Contains(it.projectid)).ToList();
  130. return Success("获取成功", GetTreeList(list, null));
  131. }
  132. /// <summary>
  133. /// 循环获取树结构
  134. /// </summary>
  135. /// <param name="list"></param>
  136. /// <param name="pid"></param>
  137. /// <returns></returns>
  138. public object GetTreeList(List<Sys_Department> list, string depid)
  139. {
  140. var children = list.Where(p => p.parent_id == depid).Select(p => new
  141. {
  142. p.id,
  143. p.projectid,
  144. p.departmenname,
  145. p.sortnum,
  146. p.remark,
  147. children = GetTreeList(list, p.id)
  148. });
  149. return children;
  150. }
  151. /// <summary>
  152. /// 获取科室详情 by id
  153. /// </summary>
  154. /// <param name="id"></param>
  155. /// <returns></returns>
  156. [HttpGet("getdetailes")]
  157. public async Task<IActionResult> GetDetailsAsync(string id)
  158. {
  159. if (string.IsNullOrEmpty(id))
  160. return Error("参数错误");
  161. var model = await _sys_departmentrepository.GetSingle(id);
  162. if (model != null)
  163. {
  164. var result = new
  165. {
  166. id = model.id,
  167. projectid = model.projectid,
  168. building = model.building,
  169. floorid = model.floorid,
  170. departmenname = model.departmenname,
  171. remark = model.remark,
  172. telephone = model.telephone,
  173. mobile = model.mobile,
  174. email = model.email,
  175. sortnum = model.sortnum,
  176. createtime = model.createtime,
  177. };
  178. return Success("获取成功!", result);
  179. }
  180. return Error("获取失败");
  181. }
  182. #region 之前 - 不用部分
  183. ///// <summary>
  184. ///// 获取所有科室列表
  185. ///// </summary>
  186. ///// <returns></returns>
  187. //[HttpGet("getlistdrop")]
  188. //public async Task<IActionResult> GetListdrop(string projectid ,string floorid)
  189. //{
  190. // //排序字段
  191. // var sort = Builders<Sys_Department>.Sort.Descending("sortnum");
  192. // var list = await _sys_departmentrepository.Get(null, null, sort);
  193. // var redCount = await _sys_departmentrepository.CountAsync(null); //获取总数
  194. // //根据条件查询集合
  195. // var listfilter = new List<FilterDefinition<Sys_Department>>();
  196. // listfilter.Add(Builders<Sys_Department>.Filter.Eq("isdelete", 0));
  197. // //查询
  198. // if (!string.IsNullOrEmpty(projectid))
  199. // listfilter.Add(Builders<Sys_Department>.Filter.Where(s => s.projectid.Equals(projectid)));
  200. // if (!string.IsNullOrEmpty(floorid))
  201. // listfilter.Add(Builders<Sys_Department>.Filter.Where(s => s.floorid.Equals(floorid)));
  202. // if (listfilter.Count > 0)
  203. // {
  204. // var filter = Builders<Sys_Department>.Filter.And(listfilter);
  205. // list = await _sys_departmentrepository.Get(filter,null, sort);
  206. // }
  207. // //var list = await _sys_departmentrepository.Get(x => x.isdelete == 0);
  208. // //var listmodel = new List<Sys_Department>();
  209. // //foreach (var item in list)
  210. // //{
  211. // // var model = new DropListDto();
  212. // // model.id = item.id;
  213. // // model.text = item.project_name;
  214. // // listmodel.Add(model);
  215. // //}
  216. // return Success("成功", list);
  217. //}
  218. ///// <summary>
  219. ///// 获取科室列表 by page
  220. ///// </summary>
  221. ///// <param name="keyword"></param>
  222. ///// <param name="stime"></param>
  223. ///// <param name="etime"></param>
  224. ///// <param name="pageindex"></param>
  225. ///// <param name="pagesize"></param>
  226. ///// <returns></returns>
  227. //[HttpGet("getlistbypage")]
  228. //public async Task<IActionResult> GetListByPageAsync(string keyword, int pageindex = 1, int pagesize = 10)
  229. //{
  230. // #region 条件信息
  231. // //排序字段
  232. // var sort = Builders<Sys_Department>.Sort.Descending("sortnum");
  233. // var list = await _sys_departmentrepository.GetByPage(null, pageindex, pagesize, sort);
  234. // var redCount = await _sys_departmentrepository.CountAsync(null); //获取总数
  235. // //根据条件查询集合
  236. // var listfilter = new List<FilterDefinition<Sys_Department>>();
  237. // //模糊查询
  238. // if (!string.IsNullOrEmpty(keyword))
  239. // listfilter.Add(Builders<Sys_Department>.Filter.Where(s => s.departmenname.Contains(keyword)));
  240. // #endregion
  241. // int recordCount = 0;
  242. // if (listfilter.Count > 0)
  243. // {
  244. // var filter = Builders<Sys_Department>.Filter.And(listfilter);
  245. // list = await _sys_departmentrepository.GetByPage(filter, pageindex, pagesize, sort);
  246. // redCount = await _sys_departmentrepository.CountAsync(filter); //获取总数
  247. // }
  248. // recordCount = int.Parse(redCount.ToString());
  249. // var obj = new
  250. // {
  251. // rows = list,
  252. // total = recordCount,
  253. // };
  254. // return Success("成功", obj);
  255. // //return Content(obj.ToJson());
  256. //}
  257. ///// <summary>
  258. ///// 获取科室列表 by page - 关联查询
  259. ///// </summary>
  260. ///// <param name="keyword"></param>
  261. ///// <param name="stime"></param>
  262. ///// <param name="etime"></param>
  263. ///// <param name="pageindex"></param>
  264. ///// <param name="pagesize"></param>
  265. ///// <returns></returns>
  266. //[HttpGet("getlistsbypage")]
  267. //public IActionResult GetListsByPage(string keyword, string projectid, string floorid, int pageIndex = 1, int pageSize = 10)
  268. //{
  269. // int recordCount = 0;
  270. // var result = _sys_departmentrepository.GetListsByPage(keyword, projectid, floorid, pageIndex, pageSize, out recordCount);
  271. // var obj = new
  272. // {
  273. // rows = result,
  274. // total = recordCount,
  275. // };
  276. // return Success("获取成功", obj);
  277. //}
  278. ///// <summary>
  279. ///// 获取科室详情 by id
  280. ///// </summary>
  281. ///// <param name="id"></param>
  282. ///// <returns></returns>
  283. //[HttpGet("getdetailes")]
  284. //public async Task<IActionResult> GetDetailsAsync(string id)
  285. //{
  286. // if (string.IsNullOrEmpty(id))
  287. // return Error("参数错误");
  288. // var model = await _sys_departmentrepository.GetSingle(id);
  289. // if (model != null)
  290. // {
  291. // var result = new
  292. // {
  293. // id = model.id,
  294. // projectid = model.projectid,
  295. // floorid = model.floorid,
  296. // departmenname = model.departmenname,
  297. // sortnum = model.sortnum,
  298. // remark = model.remark,
  299. // telephone = model.telephone,
  300. // mobile = model.mobile,
  301. // elsephone = model.elsephone,
  302. // email = model.email,
  303. // createtime = model.createtime,
  304. // };
  305. // return Success("获取成功!", result);
  306. // }
  307. // return Error("获取失败");
  308. //}
  309. ///// <summary>
  310. ///// 获取项目管理详情 by id - 关联查询
  311. ///// </summary>
  312. ///// <param name="id"></param>
  313. ///// <returns></returns>
  314. //[HttpGet("getdetails")]
  315. //public IActionResult GetDetails(string id)
  316. //{
  317. // if (string.IsNullOrEmpty(id))
  318. // return Error("参数错误");
  319. // var model = _sys_departmentrepository.GetDetails(id);
  320. // if (model != null)
  321. // {
  322. // return Success("获取成功!", model);
  323. // }
  324. // return Error("获取失败");
  325. //}
  326. #endregion
  327. /// <summary>
  328. /// 添加科室
  329. /// </summary>
  330. /// <returns></returns>
  331. [HttpPost("add")]
  332. public async Task<IActionResult> AddAsync(string parentid, string projectid, string building, string floorid, string departmenname, int sortnum,string remark,string telephone,string mobile,string elsephone,string email)
  333. {
  334. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  335. if (string.IsNullOrEmpty(departmenname))
  336. return Error("科室名称不能为空");
  337. var model = new Sys_Department();
  338. model.parent_id = parentid;
  339. model.projectid = projectid;
  340. model.floorid = floorid;
  341. model.building = building;
  342. model.departmenname = departmenname;
  343. model.sortnum = sortnum;
  344. model.remark = remark;
  345. model.telephone = telephone;
  346. model.mobile = mobile;
  347. model.email = email;
  348. model.createtby = usercode;
  349. model.createtime = DateTime.Now.ToLocalTime();
  350. bool b = await _sys_departmentrepository.Add(model);
  351. if (b)
  352. return Success("添加成功");
  353. return Error("添加失败");
  354. }
  355. /// <summary>
  356. /// 修改科室信息
  357. /// </summary>
  358. /// <param name="id"></param>
  359. /// <param name="provincecode"></param>
  360. /// <param name="provincename"></param>
  361. /// <returns></returns>
  362. [HttpPost("update")]
  363. public async Task<IActionResult> UpdateAsync(string id, string parentid, string projectid, string building, string floorid, string departmenname,int sortnum, string remark, string telephone, string mobile, string elsephone, string email)
  364. {
  365. if (string.IsNullOrEmpty(id))
  366. return Error("参数错误");
  367. if (string.IsNullOrEmpty(departmenname))
  368. return Error("科室名称不能为空");
  369. var model = new Sys_Department();
  370. model = await _sys_departmentrepository.GetSingle(id);
  371. if (model == null)
  372. return Error("操作失败");
  373. model.parent_id = parentid;
  374. model.projectid = projectid;
  375. model.building = building;
  376. model.floorid = floorid;
  377. model.departmenname = departmenname;
  378. model.sortnum = sortnum;
  379. model.remark = remark;
  380. model.telephone = telephone;
  381. model.mobile = mobile;
  382. model.email = email;
  383. bool b = await _sys_departmentrepository.Update(model);
  384. if (b)
  385. return Success("保存成功");
  386. return Error("保存失败");
  387. }
  388. /// <summary>
  389. /// 删除科室信息 by ids
  390. /// </summary>
  391. /// <param name="ids">string[] id</param>
  392. /// <returns></returns>
  393. [HttpPost("delete")]
  394. public async Task<IActionResult> DeleteAsync(string[] ids)
  395. {
  396. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  397. var res = 0;
  398. if (ids != null && ids.Length > 0)
  399. {
  400. foreach (var item in ids)
  401. {
  402. var modelSun = await _sys_departmentrepository.GetSingle(x=>x.parent_id == item);
  403. if (modelSun != null)
  404. return Error("删除失败,此栏目下有子级信息");
  405. var ml = await _sys_departmentrepository.GetSingle(item);
  406. ml.isdelete = -1;
  407. ml.deleteby = usercode;
  408. ml.deletetime = DateTime.Now.ToLocalTime();
  409. if (_sys_departmentrepository.Update(ml).Result)
  410. res += 1;
  411. }
  412. if (res == ids.Length)
  413. return Success("删除成功");
  414. else if (res > 0 && res < ids.Length)
  415. return Error("部分删除失败,请查看后重新操作");
  416. else
  417. return Error("删除失败,请查看后重新操作");
  418. }
  419. else
  420. return Error("请选择要删除的记录");
  421. }
  422. }
  423. }