WorkflowMapperConfigs.cs 3.5 KB

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