ObservationPieceApplication.cs 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. using Hotline.Share.Dtos.ObservationPiece;
  2. using SqlSugar;
  3. using XF.Domain.Authentications;
  4. using XF.Domain.Dependency;
  5. using XF.Domain.Repository;
  6. namespace Hotline.Application.ObservationPiece
  7. {
  8. public class ObservationPieceApplication : IObservationPieceApplication, IScopeDependency
  9. {
  10. private readonly ISessionContext _sessionContext;
  11. private readonly IRepository<Hotline.Orders.ObservationPiece> _observationPieceRepository;
  12. public ObservationPieceApplication(
  13. ISessionContext sessionContext,
  14. IRepository<Hotline.Orders.ObservationPiece> observationPieceRepository
  15. )
  16. {
  17. _sessionContext = sessionContext;
  18. _observationPieceRepository = observationPieceRepository;
  19. }
  20. /// <summary>
  21. /// 观察件回复
  22. /// </summary>
  23. /// <param name="dto"></param>
  24. /// <returns></returns>
  25. public ISugarQueryable<ObservationPieceListDto> GetObservationPieceReplyList(ObservationPieceRequestDto dto)
  26. {
  27. var query = _observationPieceRepository.Queryable()
  28. .Includes(p => p.Order)
  29. .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.No.Contains(dto.No))
  30. .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title.Contains(dto.Title))
  31. .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), p => p.Order.AcceptTypeCode == dto.AcceptType) //受理类型
  32. .WhereIF(dto.AcceptanceStartTime.HasValue, p => p.Order.CreationTime >= dto.AcceptanceStartTime)
  33. .WhereIF(dto.AcceptanceEndTime.HasValue, p => p.Order.CreationTime <= dto.AcceptanceEndTime)
  34. .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), p => p.Order.HotspotSpliceName != null && p.Order.HotspotSpliceName.Contains(dto.Hotspot))
  35. .WhereIF(dto.ExpiredStartTime.HasValue, p => p.Order.ExpiredTime >= dto.ExpiredStartTime) //期满时间开始
  36. .WhereIF(dto.ExpiredEndTime.HasValue, p => p.Order.ExpiredTime <= dto.ExpiredEndTime) //期满时间结束
  37. .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), p => p.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
  38. .WhereIF(dto.FiledStartTime.HasValue, p => p.Order.FiledTime >= dto.FiledStartTime) //办结时间开始
  39. .WhereIF(dto.FiledEndTime.HasValue, p => p.Order.FiledTime <= dto.FiledEndTime) //办结时间结束
  40. .WhereIF(dto.ReplyStartTime.HasValue, p => p.ReplyTime >= dto.ReplyStartTime) //回复时间开始
  41. .WhereIF(dto.ReplyEndTime.HasValue, p => p.ReplyTime <= dto.ReplyEndTime) //回复时间结束
  42. .WhereIF(!string.IsNullOrEmpty(dto.ReplyUserName), p => p.ReplyUserName.Contains(dto.ReplyUserName))
  43. .WhereIF(dto.CreationStartTime.HasValue, p => p.CreationTime >= dto.CreationStartTime) //设置时间开始
  44. .WhereIF(dto.CreationEndTime.HasValue, p => p.CreationTime <= dto.CreationEndTime) //设置时间结束
  45. .WhereIF(!string.IsNullOrEmpty(dto.CreatorName), p => p.CreatorName.Contains(dto.CreatorName))
  46. .WhereIF(dto.IsReply.HasValue && dto.IsReply == true, p => p.IsReply == true) //是否设置
  47. .WhereIF(dto.IsReply.HasValue && dto.IsReply == false, p => p.IsReply == false)
  48. .WhereIF(!string.IsNullOrEmpty(dto.Type) && dto.Type == "0", p => p.IsReply == false)//查询类型 待回复或者已回复
  49. .WhereIF(!string.IsNullOrEmpty(dto.Type) && dto.Type == "1", p => p.IsReply == true)
  50. .WhereIF(_sessionContext.OrgIsCenter == false && dto.Type == "0" && dto.DataSoure == "0", p => p.ObserveOrgId.StartsWith(_sessionContext.RequiredOrgId))
  51. .WhereIF(dto.Type == "0" && dto.DataSoure == "1", p => p.ObserveOrgId == _sessionContext.RequiredOrgId)
  52. .WhereIF(_sessionContext.OrgIsCenter == false && dto.Type == "1" && dto.DataSoure == "0", p => p.ReplyOrgId.StartsWith(_sessionContext.RequiredOrgId))
  53. .WhereIF(dto.Type == "1" && dto.DataSoure == "1", p => p.ObserveOrgId == _sessionContext.RequiredOrgId)
  54. .Select(p => new ObservationPieceListDto
  55. {
  56. Id = p.Id,
  57. OrderId = p.OrderId,
  58. No = p.No,
  59. Title = p.Order.Title,
  60. AcceptType = p.Order.AcceptType,
  61. HotspotName = p.Order.HotspotName,
  62. HotspotSpliceName = p.Order.HotspotSpliceName,
  63. AcceptanceTime = p.Order.CreationTime,
  64. ExpiredTime = p.Order.ExpiredTime,
  65. ActualHandleOrgName = p.Order.ActualHandleOrgName,
  66. CurrentStepAcceptTime = p.Order.CurrentStepAcceptTime,
  67. FiledTime = p.Order.FiledTime,
  68. CreationTime = p.CreationTime,
  69. CreatorName = p.CreatorName,
  70. ReplyTime = p.ReplyTime,
  71. ReplyUserId = p.ReplyUserId,
  72. ReplyUserName = p.ReplyUserName,
  73. ReplyOrgId = p.ReplyOrgId,
  74. ReplyOrgName = p.ReplyOrgName,
  75. IsReply = p.IsReply
  76. })
  77. .OrderByIF(dto.Type == "1", p => p.ReplyTime, OrderByType.Desc)
  78. .OrderByIF(dto.Type == "0", p => p.CreationTime, OrderByType.Desc);
  79. return query;
  80. }
  81. /// <summary>
  82. /// 观察件列表
  83. /// </summary>
  84. /// <param name="dto"></param>
  85. /// <returns></returns>
  86. public ISugarQueryable<ObservationPieceListDto> GetObservationPieceList(ObservationPieceRequestDto dto)
  87. {
  88. var query = _observationPieceRepository.Queryable()
  89. .Includes(p => p.Order)
  90. .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.No.Contains(dto.No))
  91. .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title.Contains(dto.Title))
  92. .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), p => p.Order.AcceptTypeCode == dto.AcceptType) //受理类型
  93. .WhereIF(dto.AcceptanceStartTime.HasValue, p => p.Order.CreationTime >= dto.AcceptanceStartTime)
  94. .WhereIF(dto.AcceptanceEndTime.HasValue, p => p.Order.CreationTime <= dto.AcceptanceEndTime)
  95. .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), p => p.Order.HotspotSpliceName != null && p.Order.HotspotSpliceName.Contains(dto.Hotspot))
  96. .WhereIF(dto.ExpiredStartTime.HasValue, p => p.Order.ExpiredTime >= dto.ExpiredStartTime) //期满时间开始
  97. .WhereIF(dto.ExpiredEndTime.HasValue, p => p.Order.ExpiredTime <= dto.ExpiredEndTime) //期满时间结束
  98. .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), p => p.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
  99. .WhereIF(dto.FiledStartTime.HasValue, p => p.Order.FiledTime >= dto.FiledStartTime) //办结时间开始
  100. .WhereIF(dto.FiledEndTime.HasValue, p => p.Order.FiledTime <= dto.FiledEndTime) //办结时间结束
  101. .WhereIF(dto.ReplyStartTime.HasValue, p => p.ReplyTime >= dto.ReplyStartTime) //回复时间开始
  102. .WhereIF(dto.ReplyEndTime.HasValue, p => p.ReplyTime <= dto.ReplyEndTime) //回复时间结束
  103. .WhereIF(!string.IsNullOrEmpty(dto.ReplyUserName), p => p.ReplyUserName.Contains(dto.ReplyUserName))
  104. .WhereIF(dto.CreationStartTime.HasValue, p => p.CreationTime >= dto.CreationStartTime) //设置时间开始
  105. .WhereIF(dto.CreationEndTime.HasValue, p => p.CreationTime <= dto.CreationEndTime) //设置时间结束
  106. .WhereIF(!string.IsNullOrEmpty(dto.CreatorName), p => p.CreatorName.Contains(dto.CreatorName))
  107. .WhereIF(dto.IsReply.HasValue && dto.IsReply == true, p => p.IsReply == true) //是否设置
  108. .WhereIF(dto.IsReply.HasValue && dto.IsReply == false, p => p.IsReply == false)
  109. .WhereIF(!string.IsNullOrEmpty(dto.Type) && dto.Type == "0", p => p.IsReply == false)//查询类型 待回复或者已回复
  110. .WhereIF(!string.IsNullOrEmpty(dto.Type) && dto.Type == "1", p => p.IsReply == true)
  111. .WhereIF(_sessionContext.OrgIsCenter == false, p => p.ObserveOrgId.StartsWith(_sessionContext.RequiredOrgId))
  112. .Select(p => new ObservationPieceListDto
  113. {
  114. Id = p.Id,
  115. OrderId = p.OrderId,
  116. No = p.No,
  117. Title = p.Order.Title,
  118. AcceptType = p.Order.AcceptType,
  119. HotspotName = p.Order.HotspotName,
  120. HotspotSpliceName = p.Order.HotspotSpliceName,
  121. AcceptanceTime = p.Order.CreationTime,
  122. ExpiredTime = p.Order.ExpiredTime,
  123. ActualHandleOrgName = p.Order.ActualHandleOrgName,
  124. CurrentStepAcceptTime = p.Order.CurrentStepAcceptTime,
  125. FiledTime = p.Order.FiledTime,
  126. CreationTime = p.CreationTime,
  127. CreatorName = p.CreatorName,
  128. ReplyTime = p.ReplyTime,
  129. ReplyUserId = p.ReplyUserId,
  130. ReplyUserName = p.ReplyUserName,
  131. ReplyOrgId = p.ReplyOrgId,
  132. ReplyOrgName = p.ReplyOrgName,
  133. IsReply = p.IsReply
  134. })
  135. .OrderByDescending(p => p.CreationTime);
  136. return query;
  137. }
  138. }
  139. }