AiOrderVisitApplication.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using Hotline.Orders;
  2. using Hotline.Share.Dtos;
  3. using Hotline.Share.Dtos.Ai;
  4. using Microsoft.AspNetCore.Http;
  5. using SqlSugar;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using XF.Domain.Dependency;
  12. using XF.Domain.Repository;
  13. namespace Hotline.Application.Orders
  14. {
  15. public class AiOrderVisitApplication : IAiOrderVisitApplication, IScopeDependency
  16. {
  17. private readonly IRepository<AiOrderVisit> _aiOrderVisitRepository;
  18. private readonly IRepository<AiOrderVisitDetail> _aiOrderVisitDetailRepository;
  19. public AiOrderVisitApplication(IRepository<AiOrderVisit> aiOrderVisitRepository, IRepository<AiOrderVisitDetail> aiOrderVisitDetailRepository)
  20. {
  21. _aiOrderVisitRepository = aiOrderVisitRepository;
  22. _aiOrderVisitDetailRepository = aiOrderVisitDetailRepository;
  23. }
  24. public ISugarQueryable<AiOrderVisit> QuerysAiOrderVisit(AiVisitListDto dto)
  25. {
  26. return _aiOrderVisitRepository.Queryable()
  27. .WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.Name.Contains(dto.Keyword))
  28. .WhereIF(dto.AiOrderVisitTaskState != null, x => x.TaskState == dto.AiOrderVisitTaskState)
  29. .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
  30. .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
  31. .OrderByDescending(x => x.CreationTime);
  32. }
  33. public ISugarQueryable<AiOrderVisitDetail> QueryAiOrderVisitDetail(AiVisitDetailListDto dto)
  34. {
  35. return _aiOrderVisitDetailRepository.Queryable()
  36. .Includes(x => x.OrderVisit, x => x.OrderVisitDetails)
  37. .Includes(x => x.Order)
  38. .Where(x => x.AiOrderVisitId == dto.Id)
  39. .WhereIF(dto.AiOrderVisitState.HasValue, x => x.AiOrderVisitState == dto.AiOrderVisitState)
  40. .WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.Order.No.Contains(dto.Keyword) || x.Order.Title.Contains(dto.Keyword))
  41. .OrderByDescending(x => x.CreationTime);
  42. }
  43. }
  44. }