OrderMapperConfigs.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using Hotline.FlowEngine.Workflows;
  2. using Hotline.Orders;
  3. using Hotline.Share.Dtos.Ai;
  4. using Hotline.Share.Dtos.Order;
  5. using Hotline.Share.Dtos.Settings;
  6. using Hotline.Share.Enums.Order;
  7. using Mapster;
  8. namespace Hotline.Application.Mappers;
  9. public class OrderMapperConfigs : IRegister
  10. {
  11. public void Register(TypeAdapterConfig config)
  12. {
  13. config.ForType<Order, OrderDto>()
  14. .IgnoreIf((s, d) => s.OrderExtension == null, d => d.OrderExtension)
  15. .IgnoreIf((s, d) => s.Hotspot == null, d => d.Hotspot)
  16. ;
  17. config.ForType<AiOrderVisitDetail, AiOrderVisitDetailDto>()
  18. .IgnoreIf((s, d) => s.Order == null, d => d.No)
  19. .IgnoreIf((s, d) => s.Order == null, d => d.Title)
  20. .IgnoreIf((s, d) => s.Order == null, d => d.FromName)
  21. .IgnoreIf((s, d) => s.Order == null, d => d.FromGender)
  22. .IgnoreIf((s, d) => s.Order == null, d => d.StartTime)
  23. .IgnoreIf((s, d) => s.Order == null, d => d.FiledTime)
  24. .Map(d => d.No, s => s.Order.No)
  25. .Map(d => d.Title, s => s.Order.Title)
  26. .Map(d => d.FromName, s => s.Order.FromName)
  27. .Map(d => d.FromGender, s => s.Order.FromGender)
  28. .Map(d => d.StartTime, s => s.Order.StartTime)
  29. .Map(d => d.FiledTime, s => s.Order.FiledTime)
  30. .Map(d => d.RecordUrl, s => s.OrderVisit.RecordUrl)
  31. .AfterMapping((s, d) =>
  32. {
  33. d.SeatEvaluate = s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Seat)?.SeatEvaluate;
  34. d.OrgProcessingResults = s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org)?.OrgProcessingResults?.Value;
  35. d.IsContact = s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org)?.IsContact == true ? "是" : "否";
  36. d.Volved = s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org)?.Volved == true ? "是" : "否";
  37. d.IsSuccessText = s.IsSuccess == true ? "是" : "否";
  38. });
  39. config.ForType<OrderVisitDetail, OrgVisitDetailListResp>()
  40. //.IgnoreIf((s, d) => s.OrderVisit == null, d => d.VisitId)
  41. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.Id)
  42. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.No)
  43. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.ReTransactNum)
  44. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.HotspotSpliceName)
  45. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.OrgLevelOneName)
  46. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.ActualHandleOrgName)
  47. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.Title)
  48. .IgnoreIf((s, d) => s.OrderVisit.Employee == null, d => d.VisitUser)
  49. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.Content)
  50. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.FileOpinion)
  51. .IgnoreIf((s, d) => s.OrderVisit.Order == null, d => d.FiledTime)
  52. .Map(d => d.VisitId, s => s.OrderVisit.Id)
  53. .Map(d => d.Id, s => s.OrderVisit.Order.Id)
  54. .Map(d => d.No, s => s.OrderVisit.Order.No)
  55. .Map(d => d.ReTransactNum, s => s.OrderVisit.Order.ReTransactNum)
  56. .Map(d => d.HotspotSpliceName, s => s.OrderVisit.Order.HotspotSpliceName)
  57. .Map(d => d.OrgLevelOneName, s => s.OrderVisit.Order.OrgLevelOneName)
  58. .Map(d => d.ActualHandleOrgName, s => s.OrderVisit.Order.ActualHandleOrgName)
  59. .Map(d => d.Title, s => s.OrderVisit.Order.Title)
  60. .Map(d => d.VisitUser, s => s.OrderVisit.Employee.Name)
  61. .Map(d => d.VisitType, s => s.OrderVisit.VisitType)
  62. .Map(d => d.VisitTime, s => s.OrderVisit.VisitTime)
  63. .Map(d => d.Content, s => s.OrderVisit.Order.Content)
  64. .Map(d => d.FileOpinion, s => s.OrderVisit.Order.FileOpinion)
  65. .Map(d => d.FiledTime, s => s.OrderVisit.Order.FiledTime)
  66. .AfterMapping((s, d) =>
  67. {
  68. d.OrderScreenStatus = s.OrderVisit.Order.OrderScreens.OrderByDescending(q=>q.CreationTime).FirstOrDefault()?.Status;
  69. d.OrgProcessingResults = s.OrgProcessingResults.Value;
  70. });
  71. config.ForType<AddOrderDto, Order>()
  72. .IgnoreIf((s, d) => s.OrderExtension == null, d => d.OrderExtension)
  73. .Map(d => d.Additions, s => s.Files)
  74. .IgnoreIf((s, d) => !s.ExpiredTime.HasValue, d => d.ExpiredTime)
  75. .IgnoreIf((s, d) => !s.NearlyExpiredTime.HasValue, d => d.NearlyExpiredTime)
  76. .IgnoreIf((s, d) => !s.NearlyExpiredTimeOne.HasValue, d => d.NearlyExpiredTimeOne)
  77. .IgnoreIf((s, d) => string.IsNullOrEmpty(s.TimeLimit), d => d.TimeLimit)
  78. .IgnoreIf((s, d) => !s.TimeLimitCount.HasValue, d => d.TimeLimitCount)
  79. .IgnoreIf((s, d) => !s.TimeLimitUnit.HasValue, d => d.TimeLimitUnit)
  80. ;
  81. config.ForType<UpdateOrderDto, Order>()
  82. .Inherits<AddOrderDto, Order>()
  83. .Map(d => d.OrderExtension.Id, x => x.Id);
  84. config.ForType<Workflow, Order>()
  85. .Map(d => d.WorkflowId, s => s.Id)
  86. .Map(d => d.StartTime, s => s.CreationTime)
  87. .Ignore(d => d.Status)
  88. .Ignore(d => d.Title)
  89. .Ignore(d => d.AcceptorId)
  90. .Ignore(d => d.AcceptorName)
  91. .Ignore(d => d.AcceptorStaffNo)
  92. //.AfterMapping((s, d) =>
  93. // {
  94. // d.UpdateHandlingStatus(s.IsInCountersign);
  95. // })
  96. ;
  97. config.ForType<Order, PublishDto>()
  98. .Inherits<Order, OrderDto>()
  99. .IgnoreIf((s, d) => s.OrderPublish == null, d => d.PublishState)
  100. .IgnoreIf((s, d) => s.OrderPublish == null, d => d.ArrangeContent)
  101. .IgnoreIf((s, d) => s.OrderPublish == null, d => d.PublishTime)
  102. .IgnoreIf((s, d) => s.OrderPublish == null, d => d.PublishMan)
  103. .Map(d => d.PublishState, s => s.OrderPublish.PublishState)
  104. .Map(d => d.ArrangeContent, s => s.OrderPublish.ArrangeContent)
  105. .Map(d => d.PublishTime, s => s.OrderPublish.CreationTime)
  106. .Map(d => d.PublishMan, s => s.OrderPublish.CreatorName);
  107. config.ForType<OrderPublish, PublishedDto>()
  108. .Map(d => d.PublishState, s => s.PublishState)
  109. .Map(d => d.ArrangeContent, s => s.ArrangeContent)
  110. .Map(d => d.PublishTime, s => s.CreationTime)
  111. .Map(d => d.PublishMan, s => s.CreatorName);
  112. config.ForType<Order, OrderWaitedDto>()
  113. .Inherits<Order, OrderDto>();
  114. config.ForType<OrderVisit, OrderVisitDto>()
  115. .IgnoreIf((s, d) => s.Employee == null, d => d.EmployeeName)
  116. .Map(d => d.EmployeeName, s => s.Employee.Name);
  117. config.ForType<VisitDetailDto, OrderVisitDetail>()
  118. .Map(d => d.VoiceEvaluate, s => s.VoiceEvaluate)
  119. .Map(d => d.SeatEvaluate, s => s.SeatEvaluate);
  120. config.ForType<OrderDelay, OrderDelayDto>()
  121. //.Inherits<Order, OrderDto>()
  122. .Map(d => d.CurrentStepName, s => s.Workflow.ActualHandleStepName)
  123. .Map(d => d.ActualHandlerName, s => s.Workflow.ActualHandlerName)
  124. .IgnoreIf((s, d) => s.Workflow == null, d => d.CurrentStepName)
  125. .IgnoreIf((s, d) => s.Workflow == null, d => d.ActualHandlerName);
  126. config.ForType<ExpiredTimeWithConfig, UpdateOrderDto>()
  127. .Map(d => d.TimeLimit, s => s.TimeText)
  128. .Map(d => d.TimeLimitCount, s => s.Count)
  129. .Map(d => d.TimeLimitUnit, s => s.TimeType);
  130. config.ForType<ExpiredTimeWithConfig, Order>()
  131. .Map(d => d.TimeLimit, s => s.TimeText)
  132. .Map(d => d.TimeLimitCount, s => s.Count)
  133. .Map(d => d.TimeLimitUnit, s => s.TimeType);
  134. config.ForType<OrderScreen, OrderScreenListDto>()
  135. .IgnoreIf((s, d) => s.VisitDetail == null, d => d.VisitDetail)
  136. ;
  137. }
  138. }