WorkflowMapperConfigs.cs 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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.ParentId)
  43. .Ignore(d => d.TraceType)
  44. .Map(d => d.StepId, s => s.Id)
  45. .AfterMapping((s, d) => d.Id = s.Id)
  46. ;
  47. config.ForType<WorkflowSupplement, WorkflowSupplementDto>()
  48. .Map(d => d.CreationTime, x => x.CreationTime)
  49. .Map(d => d.Additions, x => x.Additions)
  50. .Map(d => d.Opinion, x => x.Opinion)
  51. .Map(d => d.Creator.Name, x => x.Creator.Name)
  52. .IgnoreNonMapped(true)
  53. ;
  54. config.ForType<Workflow, WorkflowDto>()
  55. //.IgnoreIf((s, d) => s.Assigns == null || !s.Assigns.Any(), d => d.AssignOrgs)
  56. .IgnoreIf((s, d) => s.Supplements == null || !s.Supplements.Any(), d => d.Supplements)
  57. .IgnoreIf((s, d) => s.Traces == null || !s.Traces.Any(), d => d.Traces)
  58. //.IgnoreIf((s, d) => s.StepBoxes == null || !s.StepBoxes.Any(), d => d.StepBoxes)
  59. //.IgnoreIf((s, d) => s.Definition == null, d => d.Definition)
  60. //.Map(d => d.AssignOrgs, s => string.Join(',', s.Assigns.Select(d => d.OrgName)))
  61. .Ignore(d => d.Definition)
  62. .Ignore(d => d.StepBoxes)
  63. //.Ignore(d=>d.Supplements)
  64. //.Ignore(d => d.Traces)
  65. ;
  66. config.ForType<Workflow, WorkflowStep>()
  67. .Map(d => d.WorkflowId, s => s.Id)
  68. .Map(d => d.ExternalId, s => s.ExternalId)
  69. .Map(d => d.ModuleId, s => s.ModuleId)
  70. .Map(d => d.ModuleCode, s => s.ModuleCode)
  71. .Map(d => d.ModuleName, s => s.ModuleName)
  72. .IgnoreNonMapped(true)
  73. ;
  74. config.ForType<WorkflowTrace, WorkflowTraceDto>()
  75. .Map(d => d.Handler, s => s.GetHandler().Value)
  76. .IgnoreIf((s, d) => s.Status != EWorkflowStepStatus.Handled, d => d.HandlerName)
  77. ;
  78. }
  79. }