ObservationPieceApplication.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. using Hotline.Application.FlowEngine;
  2. using Hotline.Application.OrderApp;
  3. using Hotline.Configurations;
  4. using Hotline.File;
  5. using Hotline.FlowEngine.Workflows;
  6. using Hotline.Orders;
  7. using Hotline.Share.Dtos.ObservationPiece;
  8. using MapsterMapper;
  9. using Microsoft.Extensions.Options;
  10. using SqlSugar;
  11. using XF.Domain.Authentications;
  12. using XF.Domain.Dependency;
  13. using XF.Domain.Repository;
  14. namespace Hotline.Application.ObservationPiece
  15. {
  16. public class ObservationPieceApplication : IObservationPieceApplication, IScopeDependency
  17. {
  18. private readonly ISessionContext _sessionContext;
  19. private readonly IMapper _mapper;
  20. private readonly IFileRepository _fileRepository;
  21. private readonly IWorkflowApplication _workflowApplication;
  22. private readonly IRepository<Workflow> _workflowRepository;
  23. private readonly IWorkflowDomainService _workflowDomainService;
  24. private readonly IOrderRepository _orderRepository;
  25. private readonly IOrderDomainService _orderDomainService;
  26. private readonly IOrderTerminateRepository _orderTerminateRepository;
  27. private readonly IOrderApplication _orderApplication;
  28. private readonly IOptionsSnapshot<AppConfiguration> _appOptions;
  29. private readonly IRepository<Hotline.Orders.ObservationPiece> _observationPieceRepository;
  30. public ObservationPieceApplication(
  31. ISessionContext sessionContext,
  32. IMapper mapper,
  33. IFileRepository fileRepository,
  34. IWorkflowApplication workflowApplication,
  35. IRepository<Workflow> workflowRepository,
  36. IWorkflowDomainService workflowDomainService,
  37. IOrderRepository orderRepository,
  38. IOrderDomainService orderDomainService,
  39. IOrderTerminateRepository orderTerminateRepository,
  40. IOrderApplication orderApplication,
  41. IOptionsSnapshot<AppConfiguration> appOptions,
  42. IRepository<Hotline.Orders.ObservationPiece> observationPieceRepository
  43. )
  44. {
  45. _sessionContext = sessionContext;
  46. _mapper = mapper;
  47. _fileRepository = fileRepository;
  48. _workflowApplication = workflowApplication;
  49. _workflowRepository = workflowRepository;
  50. _workflowDomainService = workflowDomainService;
  51. _orderRepository = orderRepository;
  52. _orderDomainService = orderDomainService;
  53. _orderTerminateRepository = orderTerminateRepository;
  54. _orderApplication = orderApplication;
  55. _appOptions = appOptions;
  56. _observationPieceRepository = observationPieceRepository;
  57. }
  58. /// <summary>
  59. /// 观察件回复
  60. /// </summary>
  61. /// <param name="dto"></param>
  62. /// <returns></returns>
  63. public ISugarQueryable<ObservationPieceListDto> GetObservationPieceReplyList(ObservationPieceRequestDto dto)
  64. {
  65. var query = _observationPieceRepository.Queryable()
  66. .Includes(p => p.Order)
  67. .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.No.Contains(dto.No))
  68. .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title.Contains(dto.Title))
  69. .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), p => p.Order.AcceptTypeCode == dto.AcceptType) //受理类型
  70. .WhereIF(dto.AcceptanceStartTime.HasValue, p => p.Order.CreationTime >= dto.AcceptanceStartTime)
  71. .WhereIF(dto.AcceptanceEndTime.HasValue, p => p.Order.CreationTime <= dto.AcceptanceEndTime)
  72. .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), p => p.Order.HotspotSpliceName != null && p.Order.HotspotSpliceName.Contains(dto.Hotspot))
  73. .WhereIF(dto.ExpiredStartTime.HasValue, p => p.Order.ExpiredTime >= dto.ExpiredStartTime) //期满时间开始
  74. .WhereIF(dto.ExpiredEndTime.HasValue, p => p.Order.ExpiredTime <= dto.ExpiredEndTime) //期满时间结束
  75. .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), p => p.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
  76. .WhereIF(dto.FiledStartTime.HasValue, p => p.Order.FiledTime >= dto.FiledStartTime) //办结时间开始
  77. .WhereIF(dto.FiledEndTime.HasValue, p => p.Order.FiledTime <= dto.FiledEndTime) //办结时间结束
  78. .WhereIF(dto.ReplyStartTime.HasValue, p => p.ReplyTime >= dto.ReplyStartTime) //回复时间开始
  79. .WhereIF(dto.ReplyEndTime.HasValue, p => p.ReplyTime <= dto.ReplyEndTime) //回复时间结束
  80. .WhereIF(!string.IsNullOrEmpty(dto.ReplyUserName), p => p.ReplyUserName.Contains(dto.ReplyUserName))
  81. .WhereIF(dto.CreationStartTime.HasValue, p => p.CreationTime >= dto.CreationStartTime) //设置时间开始
  82. .WhereIF(dto.CreationEndTime.HasValue, p => p.CreationTime <= dto.CreationEndTime) //设置时间结束
  83. .WhereIF(!string.IsNullOrEmpty(dto.CreatorName), p => p.CreatorName.Contains(dto.CreatorName))
  84. .WhereIF(dto.IsReply.HasValue && dto.IsReply == true, p => p.IsReply == true) //是否设置
  85. .WhereIF(dto.IsReply.HasValue && dto.IsReply == false, p => p.IsReply == false)
  86. .WhereIF(!string.IsNullOrEmpty(dto.Type) && dto.Type == "0", p => p.IsReply == false)//查询类型 待回复或者已回复
  87. .WhereIF(!string.IsNullOrEmpty(dto.Type) && dto.Type == "1", p => p.IsReply == true)
  88. .WhereIF(_sessionContext.OrgIsCenter == false && dto.Type == "0" && dto.DataSoure == "0", p => p.ObserveOrgId.StartsWith(_sessionContext.RequiredOrgId))
  89. .WhereIF(dto.Type == "0" && dto.DataSoure == "1", p => p.ObserveOrgId == _sessionContext.RequiredOrgId)
  90. .WhereIF(_sessionContext.OrgIsCenter == false && dto.Type == "1" && dto.DataSoure == "0", p => p.ReplyOrgId.StartsWith(_sessionContext.RequiredOrgId))
  91. .WhereIF(dto.Type == "1" && dto.DataSoure == "1", p => p.ObserveOrgId == _sessionContext.RequiredOrgId)
  92. .Select(p => new ObservationPieceListDto
  93. {
  94. No = p.No,
  95. Title = p.Order.Title,
  96. AcceptType = p.Order.AcceptType,
  97. HotspotName = p.Order.HotspotName,
  98. HotspotSpliceName = p.Order.HotspotSpliceName,
  99. AcceptanceTime = p.Order.CreationTime,
  100. ExpiredTime = p.Order.ExpiredTime,
  101. ActualHandleOrgName = p.Order.ActualHandleOrgName,
  102. CurrentStepAcceptTime = p.Order.CurrentStepAcceptTime,
  103. FiledTime = p.Order.FiledTime,
  104. CreationTime = p.CreationTime,
  105. CreatorName = p.CreatorName,
  106. ReplyTime = p.ReplyTime,
  107. ReplyUserId = p.ReplyUserId,
  108. ReplyUserName = p.ReplyUserName,
  109. ReplyOrgId = p.ReplyOrgId,
  110. ReplyOrgName = p.ReplyOrgName,
  111. IsReply = p.IsReply
  112. })
  113. .OrderByIF(dto.Type == "1", p => p.ReplyTime, OrderByType.Desc)
  114. .OrderByIF(dto.Type == "0", p => p.CreationTime, OrderByType.Desc);
  115. return query;
  116. }
  117. /// <summary>
  118. /// 观察件列表
  119. /// </summary>
  120. /// <param name="dto"></param>
  121. /// <returns></returns>
  122. public ISugarQueryable<ObservationPieceListDto> GetObservationPieceList(ObservationPieceRequestDto dto)
  123. {
  124. var query = _observationPieceRepository.Queryable()
  125. .Includes(p => p.Order)
  126. .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.No.Contains(dto.No))
  127. .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title.Contains(dto.Title))
  128. .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), p => p.Order.AcceptTypeCode == dto.AcceptType) //受理类型
  129. .WhereIF(dto.AcceptanceStartTime.HasValue, p => p.Order.CreationTime >= dto.AcceptanceStartTime)
  130. .WhereIF(dto.AcceptanceEndTime.HasValue, p => p.Order.CreationTime <= dto.AcceptanceEndTime)
  131. .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), p => p.Order.HotspotSpliceName != null && p.Order.HotspotSpliceName.Contains(dto.Hotspot))
  132. .WhereIF(dto.ExpiredStartTime.HasValue, p => p.Order.ExpiredTime >= dto.ExpiredStartTime) //期满时间开始
  133. .WhereIF(dto.ExpiredEndTime.HasValue, p => p.Order.ExpiredTime <= dto.ExpiredEndTime) //期满时间结束
  134. .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), p => p.Order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门(综合查询模糊)
  135. .WhereIF(dto.FiledStartTime.HasValue, p => p.Order.FiledTime >= dto.FiledStartTime) //办结时间开始
  136. .WhereIF(dto.FiledEndTime.HasValue, p => p.Order.FiledTime <= dto.FiledEndTime) //办结时间结束
  137. .WhereIF(dto.ReplyStartTime.HasValue, p => p.ReplyTime >= dto.ReplyStartTime) //回复时间开始
  138. .WhereIF(dto.ReplyEndTime.HasValue, p => p.ReplyTime <= dto.ReplyEndTime) //回复时间结束
  139. .WhereIF(!string.IsNullOrEmpty(dto.ReplyUserName), p => p.ReplyUserName.Contains(dto.ReplyUserName))
  140. .WhereIF(dto.CreationStartTime.HasValue, p => p.CreationTime >= dto.CreationStartTime) //设置时间开始
  141. .WhereIF(dto.CreationEndTime.HasValue, p => p.CreationTime <= dto.CreationEndTime) //设置时间结束
  142. .WhereIF(!string.IsNullOrEmpty(dto.CreatorName), p => p.CreatorName.Contains(dto.CreatorName))
  143. .WhereIF(dto.IsReply.HasValue && dto.IsReply == true, p => p.IsReply == true) //是否设置
  144. .WhereIF(dto.IsReply.HasValue && dto.IsReply == false, p => p.IsReply == false)
  145. .WhereIF(!string.IsNullOrEmpty(dto.Type) && dto.Type == "0", p => p.IsReply == false)//查询类型 待回复或者已回复
  146. .WhereIF(!string.IsNullOrEmpty(dto.Type) && dto.Type == "1", p => p.IsReply == true)
  147. .WhereIF(_sessionContext.OrgIsCenter == false, p => p.ObserveOrgId.StartsWith(_sessionContext.RequiredOrgId))
  148. .Select(p => new ObservationPieceListDto
  149. {
  150. No = p.No,
  151. Title = p.Order.Title,
  152. AcceptType = p.Order.AcceptType,
  153. HotspotName = p.Order.HotspotName,
  154. HotspotSpliceName = p.Order.HotspotSpliceName,
  155. AcceptanceTime = p.Order.CreationTime,
  156. ExpiredTime = p.Order.ExpiredTime,
  157. ActualHandleOrgName = p.Order.ActualHandleOrgName,
  158. CurrentStepAcceptTime = p.Order.CurrentStepAcceptTime,
  159. FiledTime = p.Order.FiledTime,
  160. CreationTime = p.CreationTime,
  161. CreatorName = p.CreatorName,
  162. ReplyTime = p.ReplyTime,
  163. ReplyUserId = p.ReplyUserId,
  164. ReplyUserName = p.ReplyUserName,
  165. ReplyOrgId = p.ReplyOrgId,
  166. ReplyOrgName = p.ReplyOrgName,
  167. IsReply = p.IsReply
  168. })
  169. .OrderByDescending(p => p.CreationTime);
  170. return query;
  171. }
  172. }
  173. }