颐和api

Call_OutTaskRepository.cs 4.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using CallCenterApi.IRepositories;
  2. using MadRunFabric.Model;
  3. using Microsoft.Extensions.Options;
  4. using MadRunFabric.Common.Options;
  5. using MongoDB.Driver;
  6. using Microsoft.Extensions.Logging;
  7. using MongoDB.Bson;
  8. using MadRunFabric.Common;
  9. using MadRunFabric.Model.CallCenterApi;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. namespace CallCenterApi.Repositories
  13. {
  14. public class Call_OutTaskRepository : BaseRepository<Call_OutTask, string>, ICall_OutTaskRepository
  15. {
  16. private readonly ILogger<BaseRepository<Call_OutTask, string>> _logger;
  17. //private readonly IMongoCollection<Call_OutTask> _call_outtaskRepository;
  18. private readonly IMongoCollection<Call_OutTaskTelNum> _collection_call_outtasktelnum;
  19. private readonly IMongoCollection<Call_OutTaskFP> _collection_call_outtaskfp;
  20. private readonly IMongoCollection<MW_Autocall_Call_Record> _collection_mw_autocall_call_record;
  21. private readonly IMongoCollection<Call_OutTaskTelNumRecord> _collection_call_outtasktelnumrecord;
  22. public Call_OutTaskRepository(IOptions<MongodbOptions> settings, ILogger<BaseRepository<Call_OutTask, string>> logger) : base(settings, logger)
  23. {
  24. _logger = logger;
  25. //_call_outtaskRepository = _context.GetCollection<Call_OutTask>();// call_outtaskRepository;
  26. _collection_call_outtasktelnum = _context.GetCollection<Call_OutTaskTelNum>();
  27. _collection_call_outtaskfp = _context.GetCollection<Call_OutTaskFP>();
  28. _collection_mw_autocall_call_record = _context.GetCollection<MW_Autocall_Call_Record>();
  29. _collection_call_outtasktelnumrecord = _context.GetCollection<Call_OutTaskTelNumRecord>();
  30. }
  31. /// <summary>
  32. /// Linq 关联查询 分页
  33. /// </summary>
  34. /// <param name="keyword"></param>
  35. /// <param name="provincecode"></param>
  36. /// <param name="citycode"></param>
  37. /// <param name="projectid"></param>
  38. /// <param name="protype"></param>
  39. /// <param name="systemid"></param>
  40. /// <param name="pageIndex"></param>
  41. /// <param name="pageSize"></param>
  42. /// <param name="recordCount"></param>
  43. /// <returns></returns>
  44. public IEnumerable<object> GetListsByPage(string taskid, int pageindex, int pagesize, out int recordCount)
  45. {
  46. //关联查询
  47. var query =
  48. from record in _collection_call_outtasktelnumrecord.AsQueryable()
  49. join cot in _collection.AsQueryable() on record.taskid equals cot.id into cotinfo
  50. //join role in _collection_sysroleinfo.AsQueryable() on usa.role_id equals role.id into roleinfo
  51. //where record.delete_flag == false && usa.type != 2
  52. //orderby usa.create_time descending
  53. select new
  54. {
  55. record.id,
  56. record.taskid ,
  57. record.phone,
  58. record.userid,
  59. record.iscallout,
  60. record.iscalloutsuccess,
  61. taskname = cotinfo.Count() > 0 ? cotinfo.First().taskname : null,
  62. tasktotal= cotinfo.Count() > 0 ? cotinfo.First().totalnum : 0,
  63. successnum = cotinfo.Count() > 0 ? cotinfo.First().successnum : 0,
  64. surplusnum = cotinfo.Count() > 0 ? cotinfo.First().surplusnum : 0,
  65. createtime= cotinfo.Count() > 0 ? cotinfo.First().createtime : null,
  66. deleteflag= cotinfo.Count() > 0 ? cotinfo.First().deleteflag : 0
  67. };
  68. #region 查询条件
  69. if (!string.IsNullOrEmpty(taskid))
  70. query = query.Where(s => s.taskid.Contains(taskid));
  71. //if (type != -1)
  72. // query = query.Where(it => it.type.Equals(type));
  73. //if (!string.IsNullOrEmpty(deptid))
  74. // query = query.Where(it => it.dept_id.Equals(deptid));
  75. //if (!string.IsNullOrEmpty(roleid))
  76. // query = query.Where(it => it.role_id.Equals(roleid));
  77. //if (!string.IsNullOrEmpty(projectid))
  78. // query = query.Where(it => it.projectlist.Contains(projectid));
  79. #endregion
  80. recordCount = query.Count();
  81. var list = query.Skip((pageindex - 1) * pagesize).Take(pagesize);
  82. return list;
  83. }
  84. }
  85. }