xf il y a 1 an
Parent
commit
3b4f03b971

+ 2 - 0
src/Hotline.Application/Handlers/FlowEngine/WorkflowEndHandler.cs

@@ -138,6 +138,7 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
                 var screen = await _orderScreenRepository.GetAsync(workflow.ExternalId, cancellationToken);
                 if (screen != null)
                 {
+                    screen.Assign(workflow.FlowedOrgIds, workflow.FlowedUserIds);
                     if (isReviewPass)
                     {
                         screen.Status = EScreenStatus.End;
@@ -203,6 +204,7 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
                 var delay = await _orderDelayRepository.GetAsync(workflow.ExternalId, cancellationToken);
                 if (delay != null)
                 {
+                    delay.Assign(workflow.FlowedOrgIds, workflow.FlowedUserIds);
                     if (isReviewPass)
                     {
                         delay.DelayState = isReviewPass ? EDelayState.Pass : EDelayState.NoPass;

+ 25 - 1
src/Hotline.Application/Handlers/FlowEngine/WorkflowStartHandler.cs

@@ -28,6 +28,8 @@ namespace Hotline.Application.Handlers.FlowEngine
         private readonly ILogger<WorkflowStartHandler> _logger;
         private readonly IQualityApplication _qualityApplication;
         private readonly IRepository<TrCallRecord> _trCallRecordRepository;
+        private readonly IOrderScreenRepository _orderScreenRepository;
+        private readonly IOrderDelayRepository _orderDelayRepository;
 
         public WorkflowStartHandler(
             IOrderDomainService orderDomainService,
@@ -38,7 +40,9 @@ namespace Hotline.Application.Handlers.FlowEngine
             IQualityApplication qualityApplication,
             IMapper mapper,
             ILogger<WorkflowStartHandler> logger,
-            IRepository<TrCallRecord> trCallRecordRepository
+            IRepository<TrCallRecord> trCallRecordRepository,
+            IOrderScreenRepository orderScreenRepository,
+            IOrderDelayRepository orderDelayRepository
         )
         {
             _orderDomainService = orderDomainService;
@@ -50,6 +54,8 @@ namespace Hotline.Application.Handlers.FlowEngine
             _mapper = mapper;
             _logger = logger;
             _trCallRecordRepository = trCallRecordRepository;
+            _orderScreenRepository = orderScreenRepository;
+            _orderDelayRepository = orderDelayRepository;
         }
 
         /// <summary>Handles a notification</summary>
@@ -100,6 +106,24 @@ namespace Hotline.Application.Handlers.FlowEngine
                     await _telDomainService.TelRestFlowStartAsync(notification.FlowAssignInfo, workflow.ExternalId,
                         workflow.Id, cancellationToken);
                     break;
+                case WorkflowModuleConsts.OrderScreen:
+                    var screen = await _orderScreenRepository.Queryable().Includes(x => x.Order)
+                        .Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
+                    if (screen != null)
+                    {
+                        screen.Assign(workflow.FlowedOrgIds, workflow.FlowedUserIds);
+                        await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
+                    }
+                    break;
+                case WorkflowModuleConsts.OrderDelay:
+                    var orderDelay = await _orderDelayRepository.Queryable()
+                        .Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
+                    if (orderDelay != null)
+                    {
+                        orderDelay.Assign(workflow.FlowedOrgIds, workflow.FlowedUserIds);
+                        await _orderDelayRepository.UpdateAsync(orderDelay, cancellationToken);
+                    }
+                    break;
             }
         }
     }