田爽 1 rok temu
rodzic
commit
9ff9127822

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

@@ -6,6 +6,7 @@ using Hotline.FlowEngine.Notifications;
 using Hotline.FlowEngine.WorkflowModules;
 using Hotline.KnowledgeBase;
 using Hotline.Orders;
+using Hotline.Repository.SqlSugar.Knowledge;
 using Hotline.Settings.TimeLimits;
 using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.FlowEngine.Workflow;
@@ -44,6 +45,7 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
     private readonly IMediator _mediator;
     private readonly ILogger<WorkflowEndHandler> _logger;
     private readonly IKnowledgeRepository _knowledgeRepository;
+    private readonly IKnowledgeWorkFlowRepository _knowledgeWorkFlowRepository;
 
 	public WorkflowEndHandler(
         IKnowledgeDomainService knowledgeDomainService,
@@ -66,6 +68,7 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
         ITimeLimitDomainService timeLimitDomainService,
         IMediator mediator,
         IKnowledgeRepository knowledgeRepository,
+        IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository,
 		ILogger<WorkflowEndHandler> logger)
     {
         _knowledgeDomainService = knowledgeDomainService;
@@ -88,6 +91,7 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
         _mediator = mediator;
         _logger = logger;
         _knowledgeRepository = knowledgeRepository;
+        _knowledgeWorkFlowRepository = knowledgeWorkFlowRepository;
 	}
 
     /// <summary>Handles a notification</summary>
@@ -104,8 +108,9 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
             case WorkflowModuleConsts.KnowledgeAdd://新增知识库
             case WorkflowModuleConsts.KnowledgeUpdate://修改知识库
             case WorkflowModuleConsts.KnowledgeDelete://删除知识库
-	            var knowledge = await _knowledgeRepository.Queryable().Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
-	            knowledge.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
+				var knowledgeWork = await _knowledgeWorkFlowRepository.Queryable().Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
+				var knowledge = await _knowledgeRepository.Queryable().Where(x => x.Id == knowledgeWork.KnowledgeId).FirstAsync(cancellationToken);
+				knowledge.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
 	            await _knowledgeRepository.UpdateAsync(knowledge, cancellationToken);
 				if (isReviewPass)
                 {

+ 5 - 2
src/Hotline.Application/Handlers/FlowEngine/WorkflowNextHandler.cs

@@ -36,6 +36,7 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
     private readonly IQualityApplication _qualityApplication;
     private readonly IOrderDelayRepository _orderDelayRepository;
     private readonly IKnowledgeRepository _knowledgeRepository;
+    private readonly IKnowledgeWorkFlowRepository _knowledgeWorkFlowRepository;
 
 	public WorkflowNextHandler(
         IOrderDomainService orderDomainService,
@@ -49,6 +50,7 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
         IOrderScreenRepository orderScreenRepository,
         IQualityApplication qualityApplication,
         IKnowledgeRepository knowledgeRepository,
+        IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository,
 		IOrderDelayRepository orderDelayRepository)
     {
         _orderDomainService = orderDomainService;
@@ -63,7 +65,7 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
         _qualityApplication = qualityApplication;
         _orderDelayRepository = orderDelayRepository;
         _knowledgeRepository = knowledgeRepository;
-
+        _knowledgeWorkFlowRepository = knowledgeWorkFlowRepository;
 	}
 
     /// <summary>Handles a notification</summary>
@@ -141,7 +143,8 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
             case WorkflowModuleConsts.KnowledgeAdd:
             case WorkflowModuleConsts.KnowledgeUpdate:
             case WorkflowModuleConsts.KnowledgeDelete:
-                var knowledge = await _knowledgeRepository.Queryable().Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
+                var knowledgeWork = await _knowledgeWorkFlowRepository.Queryable().Where(x=>x.Id==workflow.ExternalId).FirstAsync(cancellationToken);
+				var knowledge = await _knowledgeRepository.Queryable().Where(x => x.Id == knowledgeWork.KnowledgeId).FirstAsync(cancellationToken);
                 knowledge.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
                 await _knowledgeRepository.UpdateAsync(knowledge, cancellationToken);
 				break;