郑州市第一人民医院

Distri_GoodsRepository.cs 9.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. using DistributionApi.IRepositories;
  2. using MadRunFabric.Common;
  3. using MadRunFabric.Common.Options;
  4. using MadRunFabric.Model;
  5. using Microsoft.Extensions.Logging;
  6. using Microsoft.Extensions.Options;
  7. using MongoDB.Driver;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Text;
  11. using System.Linq;
  12. namespace DistributionApi.Repositories
  13. {
  14. public class Distri_GoodsRepository : BaseRepository<Distri_Goods, string>, IDistri_GoodsRepository
  15. {
  16. protected readonly ILogger<BaseRepository<Distri_Goods, string>> _logger;
  17. protected readonly IMongoCollection<Distri_Goods_Type> _collection_distri_goods_type;
  18. protected readonly IMongoCollection<Pro_Project_Info> _collection_pro_project_info;
  19. protected readonly IMongoCollection<Sys_Building> _collection_sys_building;
  20. protected readonly IMongoCollection<Sys_Floor> _collection_sys_floor;
  21. public Distri_GoodsRepository(IOptions<MongodbOptions> settings, ILogger<BaseRepository<Distri_Goods, string>> logger) : base(settings, logger)
  22. {
  23. _collection_distri_goods_type = _context.GetCollection<Distri_Goods_Type>(); //获取集合
  24. _collection_pro_project_info = _context.GetCollection<Pro_Project_Info>(); //获取集合
  25. _collection_sys_building = _context.GetCollection<Sys_Building>();
  26. _collection_sys_floor = _context.GetCollection<Sys_Floor>();
  27. _logger = logger;
  28. }
  29. /// <summary>
  30. /// 列表 - Linq 关联查询 分页
  31. /// </summary>
  32. /// <param name="keyword"></param>
  33. /// <param name="stime"></param>
  34. /// <param name="etime"></param>
  35. /// <param name="pageIndex"></param>
  36. /// <param name="pageSize"></param>
  37. /// <param name="recordCount"></param>
  38. /// <returns></returns>
  39. public IEnumerable<object> GetListsByPage(string keyword, string projectid, UserAccountInfoModel userinfo, List<string> kindids, int pageIndex, int pageSize, out int recordCount)
  40. {
  41. //关联查询
  42. var query =
  43. from goods in _collection.AsQueryable()
  44. join proje in _collection_pro_project_info.AsQueryable() on goods.projectid equals proje.id into proje_Defa
  45. join goodstype in _collection_distri_goods_type.AsQueryable() on goods.kindid equals goodstype.id into goodstype_Defa
  46. join building in _collection_sys_building.AsQueryable() on goods.buildingid equals building.id into building_Defa
  47. join floor in _collection_sys_floor.AsQueryable() on goods.floorid equals floor.id into floDefa
  48. where goods.isdelete == 0
  49. orderby goods.createtime descending
  50. select new
  51. {
  52. goods.id,
  53. goods.goodsname,
  54. goods.projectid,
  55. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  56. goods.kindid,
  57. kindidname = goodstype_Defa != null && goodstype_Defa.Count() > 0 ? goodstype_Defa.First().kindname : null,
  58. goods.typeid,
  59. goods.isremind,
  60. goods.buildingid,
  61. buildingname = building_Defa != null && building_Defa.Count() > 0 ? building_Defa.First().buildname : null,
  62. goods.floorid,
  63. floorname = floDefa != null && floDefa.Count() > 0 ? floDefa.First().floorname : null,
  64. departmentname = floDefa != null && floDefa.Count() > 0 ? floDefa.First().remark : null,
  65. goods.remark,
  66. goods.sortnum,
  67. goods.createtby,
  68. goods.isdelete,
  69. goods.createtime
  70. };
  71. #region 查询条件
  72. if (!string.IsNullOrEmpty(keyword))
  73. query = query.Where(it => it.goodsname.Contains(keyword)); //物品名称
  74. if (!string.IsNullOrEmpty(projectid))
  75. query = query.Where(it => it.projectid == projectid);
  76. if (kindids != null && kindids.Count > 0)
  77. query = query.Where(it => kindids.Contains(it.kindid));
  78. if (userinfo != null)
  79. {
  80. if (userinfo.isallproject == 0)
  81. query = query.Where(it => userinfo.projectlist.Contains(it.projectid));
  82. }
  83. #endregion
  84. recordCount = query.Count();
  85. var list = query.Skip((pageIndex - 1) * pageSize).Take(pageSize);
  86. return list;
  87. }
  88. /// <summary>
  89. /// 列表 - Linq 关联查询 分页
  90. /// </summary>
  91. /// <param name="keyword"></param>
  92. /// <param name="stime"></param>
  93. /// <param name="etime"></param>
  94. /// <param name="pageIndex"></param>
  95. /// <param name="pageSize"></param>
  96. /// <param name="recordCount"></param>
  97. /// <returns></returns>
  98. public IEnumerable<object> GetLists(string keyword, string projectid, UserInfoModel userinfo, List<string> kindids)
  99. {
  100. //关联查询
  101. var query =
  102. from goods in _collection.AsQueryable()
  103. join proje in _collection_pro_project_info.AsQueryable() on goods.projectid equals proje.id into proje_Defa
  104. join goodstype in _collection_distri_goods_type.AsQueryable() on goods.kindid equals goodstype.id into goodstype_Defa
  105. join building in _collection_sys_building.AsQueryable() on goods.buildingid equals building.id into building_Defa
  106. join floor in _collection_sys_floor.AsQueryable() on goods.floorid equals floor.id into floDefa
  107. where goods.isdelete == 0
  108. orderby goods.createtime descending
  109. select new
  110. {
  111. goods.id,
  112. goods.goodsname,
  113. goods.projectid,
  114. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  115. goods.kindid,
  116. kindidname = goodstype_Defa != null && goodstype_Defa.Count() > 0 ? goodstype_Defa.First().kindname : null,
  117. goods.typeid,
  118. goods.isremind,
  119. goods.buildingid,
  120. buildingname = building_Defa != null && building_Defa.Count() > 0 ? building_Defa.First().buildname : null,
  121. goods.floorid,
  122. floorname = floDefa != null && floDefa.Count() > 0 ? floDefa.First().floorname : null,
  123. departmentname = floDefa != null && floDefa.Count() > 0 ? floDefa.First().remark : null,
  124. goods.remark,
  125. goods.sortnum,
  126. goods.createtby,
  127. goods.isdelete,
  128. goods.createtime
  129. };
  130. #region 查询条件
  131. if (!string.IsNullOrEmpty(keyword))
  132. query = query.Where(it => it.goodsname.Contains(keyword)); //物品名称
  133. if (!string.IsNullOrEmpty(projectid))
  134. query = query.Where(it => it.projectid == projectid);
  135. if (kindids != null && kindids.Count > 0)
  136. query = query.Where(it => kindids.Contains(it.kindid));
  137. if (userinfo.isallproject == 0)
  138. query = query.Where(it => userinfo.projectlist.Contains(it.projectid));
  139. #endregion
  140. var list = query;
  141. return list;
  142. }
  143. /// <summary>
  144. /// Linq 关联查询详情
  145. /// </summary>
  146. /// <param name="id"></param>
  147. /// <returns></returns>
  148. public object GetDetails(string id)
  149. {
  150. //关联查询
  151. var query =
  152. from goods in _collection.AsQueryable()
  153. join proje in _collection_pro_project_info.AsQueryable() on goods.projectid equals proje.id into proje_Defa
  154. join goodstype in _collection_distri_goods_type.AsQueryable() on goods.kindid equals goodstype.id into goodstype_Defa
  155. join building in _collection_sys_building.AsQueryable() on goods.buildingid equals building.id into building_Defa
  156. join floor in _collection_sys_floor.AsQueryable() on goods.floorid equals floor.id into floDefa
  157. where goods.isdelete == 0 && goods.id == id
  158. orderby goods.createtime descending
  159. select new
  160. {
  161. goods.id,
  162. goods.goodsname,
  163. goods.projectid,
  164. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  165. goods.kindid,
  166. kindidname = goodstype_Defa != null && goodstype_Defa.Count() > 0 ? goodstype_Defa.First().kindname : null,
  167. goods.typeid,
  168. goods.isremind,
  169. goods.remark,
  170. goods.buildingid,
  171. buildingname = building_Defa != null && building_Defa.Count() > 0 ? building_Defa.First().buildname : null,
  172. goods.floorid,
  173. floorname = floDefa != null && floDefa.Count() > 0 ? floDefa.First().floorname : null,
  174. goods.sortnum,
  175. goods.createtby,
  176. goods.isdelete,
  177. goods.createtime
  178. };
  179. var model = query.FirstOrDefault();
  180. if (model != null)
  181. {
  182. return model;
  183. }
  184. return null;
  185. }
  186. }
  187. }