Sfoglia il codice sorgente

甄别审批流程

田爽 1 anno fa
parent
commit
ef42d699bf

+ 18 - 4
src/Hotline.Application/Handlers/FlowEngine/EndWorkflowHandler.cs

@@ -9,10 +9,12 @@ using Hotline.Repository.SqlSugar.Orders;
 using Hotline.Settings;
 using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Mq;
 using MapsterMapper;
 using MediatR;
 using XF.Domain.Exceptions;
+using XF.Domain.Repository;
 
 namespace Hotline.Application.Handlers.FlowEngine;
 
@@ -27,8 +29,9 @@ public class EndWorkflowHandler : INotificationHandler<EndWorkflowNotify>
     private readonly IOrderRepository _orderRepository;
     private readonly ICapPublisher _capPublisher;
     private readonly IMapper _mapper;
+    private readonly IRepository<OrderScreen> _orderScreenRepository;
 
-    public EndWorkflowHandler(
+	public EndWorkflowHandler(
         IKnowledgeDomainService knowledgeDomainService,
         IOrderDomainService orderDomainService,
         ITelDomainService telDomainService,
@@ -36,7 +39,8 @@ public class EndWorkflowHandler : INotificationHandler<EndWorkflowNotify>
         ISystemOrganizeRepository orgRepository,
         IOrderRepository orderRepository,
         ICapPublisher capPublisher,
-        IMapper mapper
+        IMapper mapper,
+        IRepository<OrderScreen> orderScreenRepository
         )
     {
         _knowledgeDomainService = knowledgeDomainService;
@@ -47,7 +51,8 @@ public class EndWorkflowHandler : INotificationHandler<EndWorkflowNotify>
         _orderRepository = orderRepository;
         _capPublisher = capPublisher;
         _mapper = mapper;
-    }
+        _orderScreenRepository = orderScreenRepository;
+	}
 
     /// <summary>Handles a notification</summary>
     /// <param name="notification">The notification</param>
@@ -88,6 +93,15 @@ public class EndWorkflowHandler : INotificationHandler<EndWorkflowNotify>
                 }, cancellationToken: cancellationToken);
 
                 break;
-        }
+            case WorkflowModuleConsts.OrderScreen:
+	            var screen = await _orderScreenRepository.GetAsync(workflow.ExternalId, cancellationToken);
+	            if (screen != null)
+	            {
+		            screen.Status = EScreenStatus.End;
+                    screen.ReplyContent = workflow.ActualOpinion;
+					await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
+	            }
+	            break;
+		}
     }
 }

+ 17 - 4
src/Hotline.Application/Handlers/FlowEngine/NextStepHandler.cs

@@ -17,6 +17,7 @@ using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
 using XF.Domain.Entities;
 using XF.Domain.Exceptions;
+using XF.Domain.Repository;
 
 namespace Hotline.Application.Handlers.FlowEngine;
 
@@ -28,14 +29,16 @@ public class NextStepHandler : INotificationHandler<NextStepNotify>
     private readonly ICapPublisher _capPublisher;
     private readonly IMapper _mapper;
     private readonly ILogger<NextStepHandler> _logger;
+    private readonly IRepository<OrderScreen> _orderScreenRepository;
 
-    public NextStepHandler(
+	public NextStepHandler(
         IOrderDomainService orderDomainService,
         IKnowledgeDomainService knowledgeDomainService,
         IOrderRepository orderRepository,
         ICapPublisher capPublisher,
         IMapper mapper,
-        ILogger<NextStepHandler> logger)
+        ILogger<NextStepHandler> logger,
+        IRepository<OrderScreen> orderScreenRepository)
     {
         _orderDomainService = orderDomainService;
         _knowledgeDomainService = knowledgeDomainService;
@@ -43,7 +46,8 @@ public class NextStepHandler : INotificationHandler<NextStepNotify>
         _capPublisher = capPublisher;
         _mapper = mapper;
         _logger = logger;
-    }
+        _orderScreenRepository = orderScreenRepository;
+	}
 
     /// <summary>Handles a notification</summary>
     /// <param name="notification">The notification</param>
@@ -79,6 +83,15 @@ public class NextStepHandler : INotificationHandler<NextStepNotify>
             case WorkflowModuleConsts.KnowledgeDelete:
                 await _knowledgeDomainService.UpdateWorkAssign(notification.FlowAssignInfo, workflow.ExternalId, cancellationToken);
                 break;
-        }
+            case WorkflowModuleConsts.OrderScreen:
+                var screen = await _orderScreenRepository.GetAsync(workflow.ExternalId, cancellationToken);
+                if (screen != null)
+                {
+	                screen.Status = EScreenStatus.Approval;
+                    await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
+				}
+				break;
+
+		}
     }
 }

+ 18 - 4
src/Hotline.Application/Handlers/FlowEngine/RejectHandler.cs

@@ -3,10 +3,12 @@ using Hotline.FlowEngine.Notifications;
 using Hotline.FlowEngine.WfModules;
 using Hotline.Orders;
 using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Mq;
 using MapsterMapper;
 using MediatR;
 using Microsoft.Extensions.Logging;
+using XF.Domain.Repository;
 
 namespace Hotline.Application.Handlers.FlowEngine;
 
@@ -17,20 +19,23 @@ public class RejectHandler : INotificationHandler<RejectNotify>
     private readonly ICapPublisher _capPublisher;
     private readonly IMapper _mapper;
     private readonly ILogger<RejectHandler> _logger;
+    private readonly IRepository<OrderScreen> _orderScreenRepository;
 
-    public RejectHandler(
+	public RejectHandler(
         IOrderDomainService orderDomainService,
         IOrderRepository orderRepository,
         ICapPublisher capPublisher,
         IMapper mapper,
-        ILogger<RejectHandler> logger)
+        ILogger<RejectHandler> logger,
+        IRepository<OrderScreen> orderScreenRepository)
     {
         _orderDomainService = orderDomainService;
         _orderRepository = orderRepository;
         _capPublisher = capPublisher;
         _mapper = mapper;
         _logger = logger;
-    }
+        _orderScreenRepository = orderScreenRepository;
+	}
 
     /// <summary>Handles a notification</summary>
     /// <param name="notification">The notification</param>
@@ -45,6 +50,15 @@ public class RejectHandler : INotificationHandler<RejectNotify>
             case WorkflowModuleConsts.OrderDelay:
 
                 break;
-        }
+            case WorkflowModuleConsts.OrderScreen:
+	            var screen = await _orderScreenRepository.GetAsync(workflow.ExternalId, cancellationToken);
+	            if (screen != null)
+	            {
+		            screen.Status = EScreenStatus.Refuse;
+		            screen.ReplyContent = workflow.ActualOpinion;
+		            await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
+	            }
+	            break;
+		}
     }
 }