ProvinceOrderSuperviseNotifyHandler.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Hotline.DataSharing.Province.Notifications;
  7. using Hotline.File;
  8. using Hotline.Orders;
  9. using Hotline.Settings;
  10. using MediatR;
  11. using Microsoft.AspNetCore.Http;
  12. using XF.Domain.Repository;
  13. namespace Hotline.Application.Handlers.Order
  14. {
  15. public class ProvinceOrderSuperviseNotifyHandler : INotificationHandler<ProvinceOrderSuperviseNotify>
  16. {
  17. private readonly IOrderRepository _orderRepository;
  18. private readonly IRepository<OrderSupervise> _orderSuperviseRepository;
  19. private readonly ISystemOrganizeRepository _organizeRepository;
  20. private readonly IFileRepository _fileRepository;
  21. public ProvinceOrderSuperviseNotifyHandler(
  22. IOrderRepository orderRepository,
  23. IRepository<OrderSupervise> orderSuperviseRepository,
  24. ISystemOrganizeRepository organizeRepository,
  25. IFileRepository fileRepository)
  26. {
  27. _orderRepository = orderRepository;
  28. _orderSuperviseRepository = orderSuperviseRepository;
  29. _organizeRepository = organizeRepository;
  30. _fileRepository = fileRepository;
  31. }
  32. /// <summary>Handles a notification</summary>
  33. /// <param name="notification">The notification</param>
  34. /// <param name="cancellationToken">Cancellation token</param>
  35. public async Task Handle(ProvinceOrderSuperviseNotify notification, CancellationToken cancellationToken)
  36. {
  37. var dto = notification.ProvinceOrderSuperviseDto;
  38. var files = notification.Files;
  39. var order = await _orderRepository.Queryable().Where(x => x.ProvinceNo == dto.CaseSerial).FirstAsync(cancellationToken);
  40. var org = await _organizeRepository.Queryable().Where(x => x.Name == dto.SuperviseRsvDept).FirstAsync(cancellationToken);
  41. var orderSupervise = await _orderSuperviseRepository.GetAsync(x => x.SuperviseSerial == dto.SuperviseSerial);
  42. if (orderSupervise is null)
  43. {
  44. var model = new OrderSupervise
  45. {
  46. OrderId = order.Id,
  47. ReplyLimitTime = dto.SuperviseReturnDate,
  48. OrgId = org.Id,
  49. OrgName = org.Name,
  50. LaunchOrgName = dto.SuperviseSendDept,
  51. State = 0,
  52. ApplyContent = dto.SuperviseContent,
  53. CrUser = dto.SupervisePerson,
  54. SuperviseSerial = dto.SuperviseSerial
  55. };
  56. model.InitId();
  57. if(files != null && files.Any()) model.FileJson = await _fileRepository.AddFileAsync(files, model.Id, cancellationToken);
  58. await _orderSuperviseRepository.AddAsync(model, cancellationToken);
  59. }
  60. else {
  61. if (files != null && files.Any()) orderSupervise.FileJson = await _fileRepository.AddFileAsync(files, orderSupervise.Id, cancellationToken);
  62. await _orderSuperviseRepository.UpdateAsync(orderSupervise, cancellationToken);
  63. }
  64. }
  65. }
  66. }