颐和api

Distri_Workorder_PlanRepository.cs 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  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_PlanRepository : BaseRepository<Distri_Workorder_Plan, string>, IDistri_Workorder_PlanRepository
  16. {
  17. protected readonly ILogger<BaseRepository<Distri_Workorder_Plan, string>> _logger;
  18. protected readonly IMongoCollection<Sys_DictionaryValue> _collection_sys_dictionaryvalue;
  19. protected readonly IMongoCollection<Pro_Project_Info> _collection_pro_project_info;
  20. protected readonly IMongoCollection<Distri_Workorder_PlanTask> _collection_distri_workorder_plantask;
  21. protected readonly IMongoCollection<Distri_Workorder> _collection_distri_workorder;
  22. protected readonly IMongoCollection<Sys_SystemConfig> _collection_sys_systemconfig;
  23. public Distri_Workorder_PlanRepository(IOptions<MongodbOptions> settings, ILogger<BaseRepository<Distri_Workorder_Plan, string>> logger) : base(settings, logger)
  24. {
  25. _collection_sys_dictionaryvalue = _context.GetCollection<Sys_DictionaryValue>(); //获取集合
  26. _collection_pro_project_info = _context.GetCollection<Pro_Project_Info>(); //获取集合
  27. _collection_distri_workorder_plantask = _context.GetCollection<Distri_Workorder_PlanTask>(); //获取集合
  28. _collection_distri_workorder = _context.GetCollection<Distri_Workorder>(); //获取集合
  29. _collection_sys_systemconfig = _context.GetCollection<Sys_SystemConfig>();
  30. _logger = logger;
  31. }
  32. /// <summary>
  33. /// 列表 - Linq 关联查询 分页
  34. /// </summary>
  35. /// <param name="keyword"></param>
  36. /// <param name="stime"></param>
  37. /// <param name="etime"></param>
  38. /// <param name="pageIndex"></param>
  39. /// <param name="pageSize"></param>
  40. /// <param name="recordCount"></param>
  41. /// <returns></returns>
  42. public IEnumerable<Distri_Workorder_PlanDto> GetListsByPage(string keyword, string projectid, int planstate, UserAccountInfoModel userinfo, int pageIndex, int pageSize, out int recordCount)
  43. {
  44. //关联查询
  45. var query =
  46. from plan in _collection.AsQueryable()
  47. join proje in _collection_pro_project_info.AsQueryable() on plan.projectid equals proje.id into proje_Defa
  48. where plan.isdelete == 0
  49. orderby plan.createtime descending
  50. select new Distri_Workorder_PlanDto
  51. {
  52. id = plan.id,
  53. channel = plan.channel,
  54. planname = plan.planname,
  55. plancontent = plan.plancontent,
  56. planstate = plan.planstate,
  57. hangfireid = plan.hangfireid,
  58. startdate = plan.startdate,
  59. enddate = plan.enddate,
  60. projectid = plan.projectid,
  61. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  62. goodslist = plan.goodslist,
  63. //plan.receiverlist,
  64. deliverylist = plan.deliverylist,
  65. deliveryname = plan.deliveryname,
  66. deliverytel = plan.deliverytel,
  67. dealby = plan.dealby,
  68. dealtime = plan.dealtime,
  69. createtby = plan.createtby,
  70. createtime = plan.createtime
  71. };
  72. #region 查询条件
  73. if (!string.IsNullOrEmpty(keyword))
  74. query = query.Where(it => it.planname.Contains(keyword) || it.plancontent.Contains(keyword)); //计划名称,内容
  75. if (!string.IsNullOrEmpty(projectid))
  76. query = query.Where(it => it.projectid == projectid);
  77. if (planstate >= 0)
  78. query = query.Where(it => it.planstate == planstate);
  79. if (userinfo.isallproject == 0)
  80. query = query.Where(it => userinfo.projectlist.Contains(it.projectid));
  81. #endregion
  82. recordCount = query.Count();
  83. var list = query.Skip((pageIndex - 1) * pageSize).Take(pageSize);
  84. return list;
  85. }
  86. /// <summary>
  87. /// Linq 关联查询详情
  88. /// </summary>
  89. /// <param name="id"></param>
  90. /// <returns></returns>
  91. public Distri_Workorder_PlanDto GetDetails(string id)
  92. {
  93. //关联查询
  94. var query =
  95. from plan in _collection.AsQueryable()
  96. join proje in _collection_pro_project_info.AsQueryable() on plan.projectid equals proje.id into proje_Defa
  97. where plan.isdelete == 0 && plan.id == id
  98. orderby plan.createtime descending
  99. select new Distri_Workorder_PlanDto
  100. {
  101. id = plan.id,
  102. channel = plan.channel,
  103. planname = plan.planname,
  104. plancontent = plan.plancontent,
  105. planstate = plan.planstate,
  106. hangfireid = plan.hangfireid,
  107. startdate = plan.startdate,
  108. enddate = plan.enddate,
  109. projectid = plan.projectid,
  110. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  111. goodslist = plan.goodslist,
  112. //plan.receiverlist,
  113. deliverylist = plan.deliverylist,
  114. deliveryname = plan.deliveryname,
  115. deliverytel = plan.deliverytel,
  116. dealby = plan.dealby,
  117. dealtime = plan.dealtime,
  118. createtby = plan.createtby,
  119. createtime = plan.createtime
  120. };
  121. var model = query.FirstOrDefault();
  122. if (model != null)
  123. {
  124. return model;
  125. }
  126. return null;
  127. }
  128. /// <summary>
  129. /// 抢单时效 / 待配送工单滞留时效
  130. /// </summary>
  131. /// <param name="code">编号</param>
  132. /// <returns></returns>
  133. public int GetLimitCount(string code)
  134. {
  135. int m = 0;
  136. //1、配送岗 抢单时效 3分钟(某单子此时间内没人抢,系统强制分配)
  137. var model = _collection_sys_systemconfig.Find(p => p.paramcode == code).FirstOrDefault();
  138. if (model != null)
  139. {
  140. m = Int32.Parse(model.paramvalue);
  141. }
  142. return m;
  143. }
  144. #region 计划任务
  145. /// <summary>
  146. /// 列表 - Linq 关联查询 分页
  147. /// </summary>
  148. /// <param name="keyword"></param>
  149. /// <param name="stime"></param>
  150. /// <param name="etime"></param>
  151. /// <param name="pageIndex"></param>
  152. /// <param name="pageSize"></param>
  153. /// <param name="recordCount"></param>
  154. /// <returns></returns>
  155. public IEnumerable<object> GetPlanTaskListsByPage(string keyword, string projectid, string stime, string etime, int planwostate, UserAccountInfoModel userinfo, int pageIndex, int pageSize, out int recordCount)
  156. {
  157. //关联查询
  158. var query =
  159. from planwo in _collection_distri_workorder_plantask.AsQueryable()
  160. join proje in _collection_pro_project_info.AsQueryable() on planwo.projectid equals proje.id into proje_Defa
  161. where planwo.isdelete == 0
  162. orderby planwo.createtime descending
  163. select new
  164. {
  165. planwo.id,
  166. planwo.channel,
  167. planwo.wocode,
  168. planwo.name,
  169. planwo.content,
  170. planwo.planwostate,
  171. planwo.projectid,
  172. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  173. planwo.joinuserlist,
  174. planwo.goodslist,
  175. //planwo.receiverlist,
  176. planwo.deliverylist,
  177. planwo.deliveryname,
  178. planwo.deliverytel,
  179. planwo.dealby,
  180. planwo.dealtime,
  181. planwo.createtby,
  182. planwo.createtime
  183. };
  184. #region 查询条件
  185. if (!string.IsNullOrEmpty(keyword))
  186. query = query.Where(it => it.wocode.Contains(keyword) || it.name.Contains(keyword) || it.content.Contains(keyword) || it.dealby.Contains(keyword)); //计划名称,内容
  187. if (!string.IsNullOrEmpty(projectid))
  188. query = query.Where(it => it.projectid == projectid);
  189. if (planwostate >= 0)
  190. query = query.Where(it => it.planwostate == planwostate);
  191. if (userinfo.isallproject == 0)
  192. query = query.Where(it => userinfo.projectlist.Contains(it.projectid));
  193. #endregion
  194. recordCount = query.Count();
  195. var list = query.Skip((pageIndex - 1) * pageSize).Take(pageSize);
  196. return list;
  197. }
  198. /// <summary>
  199. /// Linq 关联查询详情
  200. /// </summary>
  201. /// <param name="id"></param>
  202. /// <returns></returns>
  203. public Distri_Workorder_PlanTaskDto GetPlanTaskDetails(string id)
  204. {
  205. //关联查询
  206. var query =
  207. from planwo in _collection_distri_workorder_plantask.AsQueryable()
  208. join proje in _collection_pro_project_info.AsQueryable() on planwo.projectid equals proje.id into proje_Defa
  209. where planwo.isdelete == 0 && planwo.id == id
  210. orderby planwo.createtime descending
  211. select new Distri_Workorder_PlanTaskDto
  212. {
  213. id = planwo.id,
  214. planid = planwo.planid,
  215. channel = planwo.channel,
  216. wocode = planwo.wocode,
  217. name = planwo.name,
  218. content = planwo.content,
  219. planwostate = planwo.planwostate,
  220. projectid = planwo.projectid,
  221. projectname = proje_Defa != null && proje_Defa.Count() > 0 ? proje_Defa.First().project_name : null,
  222. joinuserlist = planwo.joinuserlist,
  223. goodslist = planwo.goodslist,
  224. //receiverlist=planwo.receiverlist,
  225. deliverylist = planwo.deliverylist,
  226. deliveryname = planwo.deliveryname,
  227. deliverytel = planwo.deliverytel,
  228. statetime = planwo.statetime,
  229. dealby = planwo.dealby,
  230. dealtime = planwo.dealtime,
  231. createtby = planwo.createtby,
  232. createtime = planwo.createtime
  233. };
  234. var model = query.FirstOrDefault();
  235. if (model != null)
  236. {
  237. return model;
  238. }
  239. return null;
  240. }
  241. #endregion
  242. }
  243. }