WorkflowMapperConfigs.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using Hotline.FlowEngine.Definitions;
  2. using Hotline.FlowEngine.Workflows;
  3. using Hotline.Share.Dtos.FlowEngine;
  4. using Hotline.Share.Dtos.FlowEngine.Definition;
  5. using Hotline.Share.Dtos.FlowEngine.Workflow;
  6. using Hotline.Share.Enums.FlowEngine;
  7. using Mapster;
  8. namespace Hotline.Application.Mappers;
  9. public class WorkflowMapperConfigs : IRegister
  10. {
  11. public void Register(TypeAdapterConfig config)
  12. {
  13. config.ForType<UpdateDefinitionDto, WorkflowDefinition>()
  14. .Ignore(d => d.Id);
  15. config.ForType<WorkflowStep, WorkflowStep>()
  16. .Ignore(d => d.Id)
  17. .Ignore(d => d.PrevStepId)
  18. .Ignore(d => d.IsMain)
  19. .Ignore(d => d.Status)
  20. //.Ignore(d => d.ParentId)
  21. .Ignore(d => d.Handlers)
  22. //.Ignore(d => d.Steps)
  23. .Ignore(d => d.StartCountersignId)
  24. .Ignore(d => d.CountersignId)
  25. .Ignore(d => d.IsStartedCountersignEnd)
  26. .Ignore(d => d.IsOrigin)
  27. .Ignore(d => d.NextHandlers)
  28. .Ignore(d => d.NextMainHandler)
  29. .Ignore(d => d.NextStepCode)
  30. .Ignore(d => d.BackToCountersignEnd)
  31. .Ignore(d => d.IsSms)
  32. .Ignore(d => d.Opinion)
  33. .Ignore(d => d.FileJson)
  34. //.Ignore(d => d.StepExpiredTime)
  35. .Ignore(d => d.Workflow)
  36. .Ignore(d => d.WorkflowTrace)
  37. //.IgnoreIf((d, s) => s.StepHandlers == null || !s.StepHandlers.Any(), d => d.StepHandlers)
  38. ;
  39. config.ForType<WorkflowStep, WorkflowTrace>()
  40. .Ignore(d => d.ParentId)
  41. .Ignore(d => d.TraceType)
  42. .Map(d => d.StepId, s => s.Id)
  43. .AfterMapping((s, d) => d.Id = s.Id)
  44. ;
  45. config.ForType<WorkflowSupplement, WorkflowSupplementDto>()
  46. .Map(d => d.CreationTime, x => x.CreationTime)
  47. .Map(d => d.Additions, x => x.Additions)
  48. .Map(d => d.Opinion, x => x.Opinion)
  49. .Map(d => d.Creator.Name, x => x.Creator.Name)
  50. .IgnoreNonMapped(true)
  51. ;
  52. config.ForType<Workflow, WorkflowDto>()
  53. //.IgnoreIf((s, d) => s.Assigns == null || !s.Assigns.Any(), d => d.AssignOrgs)
  54. .IgnoreIf((s, d) => s.Supplements == null || !s.Supplements.Any(), d => d.Supplements)
  55. .IgnoreIf((s, d) => s.Traces == null || !s.Traces.Any(), d => d.Traces)
  56. //.IgnoreIf((s, d) => s.StepBoxes == null || !s.StepBoxes.Any(), d => d.StepBoxes)
  57. //.IgnoreIf((s, d) => s.Definition == null, d => d.Definition)
  58. //.Map(d => d.AssignOrgs, s => string.Join(',', s.Assigns.Select(d => d.OrgName)))
  59. .Ignore(d => d.Definition)
  60. .Ignore(d => d.StepBoxes)
  61. //.Ignore(d=>d.Supplements)
  62. //.Ignore(d => d.Traces)
  63. ;
  64. config.ForType<NextWorkflowDto, Workflow>()
  65. .Map(d => d.RealHandlerPhone, s => s.RealHandlerPhone)
  66. .Map(d => d.RealHandlerName, s => s.RealHandlerName)
  67. .Map(d => d.RealCommunicationMode, s => s.RealCommunicationMode)
  68. .Map(d => d.RealCommunicationTime, s => s.RealCommunicationTime)
  69. .Map(d => d.RealCommunicationAddress, s => s.RealCommunicationAddress)
  70. .Map(d => d.RealIsContacted, s => s.RealIsContacted)
  71. .Map(d => d.RealContactLocale, s => s.RealContactLocale)
  72. .IgnoreNonMapped(true);
  73. config.ForType<Workflow, WorkflowStep>()
  74. .Map(d => d.WorkflowId, s => s.Id)
  75. .Map(d => d.ExternalId, s => s.ExternalId)
  76. .Map(d => d.ModuleId, s => s.ModuleId)
  77. .Map(d => d.ModuleCode, s => s.ModuleCode)
  78. .Map(d => d.ModuleName, s => s.ModuleName)
  79. .IgnoreNonMapped(true)
  80. ;
  81. config.ForType<WorkflowTrace, WorkflowTraceDto>()
  82. .Map(d => d.Handler, s => s.GetHandler().Value)
  83. .IgnoreIf((s, d) => s.Status != EWorkflowStepStatus.Handled, d => d.HandlerName)
  84. ;
  85. }
  86. }