EnterpriseApplication.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using DocumentFormat.OpenXml.Office2010.Excel;
  2. using DocumentFormat.OpenXml.Office2010.PowerPoint;
  3. using Hotline.Enterprise;
  4. using Hotline.Orders;
  5. using Hotline.Share.Dtos.Order;
  6. using Hotline.Share.Dtos.Users;
  7. using Hotline.Users;
  8. using SqlSugar;
  9. using XF.Domain.Authentications;
  10. using XF.Domain.Dependency;
  11. using XF.Domain.Repository;
  12. namespace Hotline.Application.Enterprise;
  13. public class EnterpriseApplication : IEnterpriseApplication, IScopeDependency
  14. {
  15. private readonly IRepository<EnterpriseSpecialist> _enterpriseSpecialistRepository;
  16. private readonly IRepository<User> _userRepository;
  17. private readonly IRepository<Order> _orderRepository;
  18. private readonly ISessionContext _sessionContext;
  19. public EnterpriseApplication(
  20. IRepository<EnterpriseSpecialist> enterpriseSpecialistRepository,
  21. IRepository<User> userRepository,
  22. IRepository<Order> orderRepository,
  23. ISessionContext sessionContext)
  24. {
  25. _enterpriseSpecialistRepository = enterpriseSpecialistRepository;
  26. _userRepository = userRepository;
  27. _orderRepository = orderRepository;
  28. _sessionContext = sessionContext;
  29. }
  30. public ISugarQueryable<User> QueryUsersForSpecialist(UserPagedDto request)
  31. {
  32. return _userRepository.Queryable()
  33. .Includes(d=>d.Account)
  34. .Where(d => SqlFunc.Subqueryable<EnterpriseSpecialist>().Where(x => x.Id == d.Id).NotAny())
  35. .WhereIF(!string.IsNullOrEmpty(request.PhoneNo), d => d.PhoneNo == request.PhoneNo)
  36. .WhereIF(!string.IsNullOrEmpty(request.Name), d => d.Name == request.Name);
  37. }
  38. public async Task<ISugarQueryable<Order>> QueryEnterpriseSpecialistOrdersAsync(QueryOrderDto dto, CancellationToken cancellationToken)
  39. {
  40. var currentId = _sessionContext.RequiredUserId;
  41. var memberIds = await _enterpriseSpecialistRepository.Queryable()
  42. .Where(d => d.Id == currentId || d.ParentId == currentId)
  43. .Select(d => d.Id)
  44. .ToListAsync(cancellationToken);
  45. return _orderRepository.Queryable()
  46. .Where(d => memberIds.Contains(d.CreatorId))
  47. .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.Title.Contains(dto.No!))
  48. .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.Contains(dto.Keyword!))
  49. .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
  50. .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
  51. .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo), d => d.AcceptorName == dto.NameOrNo! || d.AcceptorStaffNo == dto.NameOrNo!) //受理人/坐席
  52. ;
  53. }
  54. }