ObservationPieceController.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using Hotline.Application.ObservationPiece;
  2. using Hotline.Orders;
  3. using Hotline.Repository.SqlSugar.Extensions;
  4. using Hotline.Share.Dtos;
  5. using Hotline.Share.Dtos.ObservationPiece;
  6. using Hotline.Share.Dtos.Order;
  7. using Hotline.Tools;
  8. using MapsterMapper;
  9. using Microsoft.AspNetCore.Mvc;
  10. using SqlSugar;
  11. using XF.Domain.Authentications;
  12. using XF.Domain.Exceptions;
  13. using XF.Domain.Repository;
  14. namespace Hotline.Api.Controllers
  15. {
  16. public class ObservationPieceController : BaseController
  17. {
  18. private readonly ISessionContext _sessionContext;
  19. private readonly IMapper _mapper;
  20. private readonly IRepository<ObservationPiece> _observationPieceRepository;
  21. private readonly IObservationPieceApplication _observationPieceApplication;
  22. public ObservationPieceController(
  23. ISessionContext sessionContext,
  24. IMapper mapper,
  25. IRepository<ObservationPiece> observationPieceRepository,
  26. IObservationPieceApplication observationPieceApplication
  27. )
  28. {
  29. _sessionContext = sessionContext;
  30. _mapper = mapper;
  31. _observationPieceRepository = observationPieceRepository;
  32. _observationPieceApplication = observationPieceApplication;
  33. }
  34. /// <summary>
  35. /// 回复
  36. /// </summary>
  37. /// <param name="dto"></param>
  38. /// <returns></returns>
  39. [HttpPost("add-observation-piece-reply")]
  40. public async Task AddObservationPieceReply([FromBody] AddObservationPieceReply dto)
  41. {
  42. if (dto.ReplyContent == null)
  43. throw UserFriendlyException.SameMessage("回复内容不能为空!");
  44. if (dto.CompletionTime.HasValue == false)
  45. throw UserFriendlyException.SameMessage("完成时间不能为空!");
  46. var data = await _observationPieceRepository.GetAsync(p => p.Id == dto.Id, HttpContext.RequestAborted);
  47. if (data == null)
  48. throw UserFriendlyException.SameMessage("数据查询失败!");
  49. data.ReplyContent = dto.ReplyContent;
  50. data.CompletionTime = dto.CompletionTime;
  51. data.ReplyTime = DateTime.Now;
  52. data.IsReply = true;
  53. data.ReplyUserId = _sessionContext.UserId;
  54. data.ReplyUserName = _sessionContext.UserName;
  55. data.ReplyOrgId = _sessionContext.OrgId;
  56. data.ReplyOrgName = _sessionContext.OrgName;
  57. await _observationPieceRepository.UpdateAsync(data, HttpContext.RequestAborted);
  58. }
  59. /// <summary>
  60. /// 获取详情
  61. /// </summary>
  62. /// <param name="id"></param>
  63. /// <returns></returns>
  64. [HttpGet("get-observation-piece-detail/{id}")]
  65. public async Task<ObservationPiece> GetObservationPieceDetail(string id)
  66. {
  67. var data = await _observationPieceRepository.GetAsync(p => p.Id == id, HttpContext.RequestAborted);
  68. return data;
  69. }
  70. /// <summary>
  71. /// 观察件回复
  72. /// </summary>
  73. /// <param name="dto"></param>
  74. /// <returns></returns>
  75. [HttpGet("get-observation-piece-reply-list")]
  76. public async Task<PagedDto<ObservationPieceListDto>> GetObservationPieceReplyList([FromQuery] ObservationPieceRequestDto dto)
  77. {
  78. var (total, items) = await _observationPieceApplication.GetObservationPieceReplyList(dto)
  79. .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
  80. return new PagedDto<ObservationPieceListDto>(total, _mapper.Map<IReadOnlyList<ObservationPieceListDto>>(items));
  81. }
  82. /// <summary>
  83. /// 观察件回复导出
  84. /// </summary>
  85. /// <param name="dto"></param>
  86. /// <returns></returns>
  87. [HttpPost("get-observation-piece-reply-list-export")]
  88. public async Task<FileStreamResult> GetObservationPieceReplyListExport([FromBody] ExportExcelDto<ObservationPieceRequestDto> dto)
  89. {
  90. var query = _observationPieceApplication.GetObservationPieceReplyList(dto.QueryDto);
  91. List<ObservationPieceListDto> data;
  92. if (dto.IsExportAll)
  93. {
  94. data = await query.ToListAsync(HttpContext.RequestAborted);
  95. }
  96. else
  97. {
  98. var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
  99. data = items;
  100. }
  101. dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass<ObservationPieceListDto>(dto.ColumnInfos);
  102. var dtos = data
  103. .Select(stu => _mapper.Map(stu, typeof(ObservationPieceListDto), dynamicClass))
  104. .Cast<object>()
  105. .ToList();
  106. var stream = ExcelHelper.CreateStream(dtos);
  107. return ExcelStreamResult(stream, "观察件回复");
  108. }
  109. /// <summary>
  110. /// 观察件列表
  111. /// </summary>
  112. /// <param name="dto"></param>
  113. /// <returns></returns>
  114. [HttpGet("get-observation-piece-list")]
  115. public async Task<PagedDto<ObservationPieceListDto>> GetObservationPieceList([FromQuery] ObservationPieceRequestDto dto)
  116. {
  117. var (total, items) = await _observationPieceApplication.GetObservationPieceList(dto)
  118. .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
  119. return new PagedDto<ObservationPieceListDto>(total, _mapper.Map<IReadOnlyList<ObservationPieceListDto>>(items));
  120. }
  121. /// <summary>
  122. /// 观察件列表导出
  123. /// </summary>
  124. /// <param name="dto"></param>
  125. /// <returns></returns>
  126. [HttpPost("get-observation-piece-list-export")]
  127. public async Task<FileStreamResult> GetObservationPieceListExport([FromBody] ExportExcelDto<ObservationPieceRequestDto> dto)
  128. {
  129. var query = _observationPieceApplication.GetObservationPieceList(dto.QueryDto);
  130. List<ObservationPieceListDto> data;
  131. if (dto.IsExportAll)
  132. {
  133. data = await query.ToListAsync(HttpContext.RequestAborted);
  134. }
  135. else
  136. {
  137. var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
  138. data = items;
  139. }
  140. dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass<ObservationPieceListDto>(dto.ColumnInfos);
  141. var dtos = data
  142. .Select(stu => _mapper.Map(stu, typeof(ObservationPieceListDto), dynamicClass))
  143. .Cast<object>()
  144. .ToList();
  145. var stream = ExcelHelper.CreateStream(dtos);
  146. return ExcelStreamResult(stream, "观察件列表");
  147. }
  148. }
  149. }