郑州市第一人民医院

Distri_Workorder_EvaluateRepository.cs 8.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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. using DistributionApi.Model.Dto;
  13. namespace DistributionApi.Repositories
  14. {
  15. public class Distri_Workorder_EvaluateRepository : BaseRepository<Distri_Workorder_Evaluate, string>, IDistri_Workorder_EvaluateRepository
  16. {
  17. protected readonly ILogger<BaseRepository<Distri_Workorder_Evaluate, string>> _logger;
  18. protected readonly IMongoCollection<Distri_Workorder> _collection_distri_workorder;
  19. protected readonly IMongoCollection<Distri_Workorder_Evaluate> _collection_distri_workorder_evaluate;
  20. protected readonly IMongoCollection<Pro_Project_Info> _collection_pro_project_info;
  21. public Distri_Workorder_EvaluateRepository(IOptions<MongodbOptions> settings,
  22. ILogger<BaseRepository<Distri_Workorder_Evaluate, string>> logger) : base(settings, logger)
  23. {
  24. _collection_distri_workorder = _context.GetCollection<Distri_Workorder>(); //获取集合
  25. _collection_distri_workorder_evaluate = _context.GetCollection<Distri_Workorder_Evaluate>(); //获取集合
  26. _collection_pro_project_info = _context.GetCollection<Pro_Project_Info>(); //获取集合
  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,string usercode,string stime,string etime, int pageIndex, int pageSize, out int recordCount)
  40. {
  41. //关联查询
  42. var query =
  43. from evaluate in _collection.AsQueryable()
  44. join proje in _collection_pro_project_info.AsQueryable() on evaluate.projectid equals proje.id into proje_Defa
  45. where evaluate.isdelete == 0
  46. orderby evaluate.createtime descending
  47. select new
  48. {
  49. evaluate.id,
  50. evaluate.woid,
  51. evaluate.wocode,
  52. evaluate.channel,
  53. evaluate.starnum,
  54. evaluate.evaluate,
  55. evaluate.label,
  56. evaluate.files,
  57. evaluate.projectid,
  58. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  59. evaluate.createuser,
  60. evaluate.createusername,
  61. evaluate.createtime
  62. };
  63. #region 查询条件
  64. if (!string.IsNullOrEmpty(projectid))
  65. query = query.Where(it => it.projectid == projectid);
  66. if (userinfo.isallproject == 0)
  67. query = query.Where(it => userinfo.projectlist.Contains(it.projectid));
  68. if (!string.IsNullOrEmpty(keyword))
  69. query = query.Where(it => it.evaluate == keyword || it.wocode == keyword || it.label.Contains(keyword));
  70. if (!string.IsNullOrEmpty(stime))
  71. query = query.Where(it => it.createtime >= Convert.ToDateTime(stime + " 00:00:00"));
  72. if (!string.IsNullOrEmpty(etime))
  73. query = query.Where(it => it.createtime <= Convert.ToDateTime(etime + " 23:59:59"));
  74. #endregion
  75. recordCount = query.Count();
  76. var list = query.Skip((pageIndex - 1) * pageSize).Take(pageSize);
  77. return list;
  78. }
  79. /// <summary>
  80. /// Linq 关联查询详情
  81. /// </summary>
  82. /// <param name="id"></param>
  83. /// <returns></returns>
  84. public object GetDetails(string id)
  85. {
  86. //关联查询
  87. var query =
  88. from evaluate in _collection.AsQueryable()
  89. join proje in _collection_pro_project_info.AsQueryable() on evaluate.projectid equals proje.id into proje_Defa
  90. where evaluate.isdelete == 0 && evaluate.id == id
  91. orderby evaluate.createtime descending
  92. select new
  93. {
  94. evaluate.id,
  95. evaluate.woid,
  96. evaluate.wocode,
  97. evaluate.channel,
  98. evaluate.starnum,
  99. evaluate.evaluate,
  100. evaluate.label,
  101. evaluate.files,
  102. evaluate.projectid,
  103. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  104. evaluate.createuser,
  105. evaluate.createusername,
  106. evaluate.createtime
  107. };
  108. var model = query.FirstOrDefault();
  109. if (model != null)
  110. {
  111. return model;
  112. }
  113. return null;
  114. }
  115. #region 我的工单评价
  116. /// <summary>
  117. /// 列表 - Linq 关联查询 分页
  118. /// </summary>
  119. /// <param name="keyword"></param>
  120. /// <param name="stime"></param>
  121. /// <param name="etime"></param>
  122. /// <param name="pageIndex"></param>
  123. /// <param name="pageSize"></param>
  124. /// <param name="recordCount"></param>
  125. /// <returns></returns>
  126. public IEnumerable<object> GetMyListsByPage(string keyword, string projectid, UserAccountInfoModel userinfo, string usercode, string stime, string etime, int pageIndex, int pageSize, out int recordCount)
  127. {
  128. //关联查询
  129. var query =
  130. from evaluate in _collection.AsQueryable()
  131. join diswo in _collection_distri_workorder.AsQueryable() on evaluate.woid equals diswo.id into diswo_Defa
  132. join proje in _collection_pro_project_info.AsQueryable() on evaluate.projectid equals proje.id into proje_Defa
  133. where evaluate.isdelete == 0
  134. orderby evaluate.createtime descending
  135. select new
  136. {
  137. evaluate.id,
  138. evaluate.woid,
  139. evaluate.wocode,
  140. evaluate.channel,
  141. evaluate.starnum,
  142. evaluate.evaluate,
  143. evaluate.label,
  144. evaluate.files,
  145. touser = diswo_Defa != null && diswo_Defa.Count() > 0 ? diswo_Defa.First().touser : null,
  146. evaluate.projectid,
  147. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  148. evaluate.createuser,
  149. evaluate.createusername,
  150. evaluate.createtime
  151. };
  152. #region 查询条件
  153. if (!string.IsNullOrEmpty(projectid))
  154. query = query.Where(it => it.projectid == projectid);
  155. if (userinfo.isallproject == 0)
  156. query = query.Where(it => userinfo.projectlist.Contains(it.projectid));
  157. if (!string.IsNullOrEmpty(keyword))
  158. query = query.Where(it => it.evaluate == keyword || it.wocode == keyword || it.label.Contains(keyword));
  159. if (!string.IsNullOrEmpty(usercode))
  160. query = query.Where(it => it.touser.Contains(usercode));
  161. if (!string.IsNullOrEmpty(stime))
  162. query = query.Where(it => it.createtime >= Convert.ToDateTime(stime + " 00:00:00"));
  163. if (!string.IsNullOrEmpty(etime))
  164. query = query.Where(it => it.createtime <= Convert.ToDateTime(etime + " 23:59:59"));
  165. #endregion
  166. recordCount = query.Count();
  167. var list = query.Skip((pageIndex - 1) * pageSize).Take(pageSize);
  168. return list;
  169. }
  170. #endregion
  171. }
  172. }