田爽 9 hónapja
szülő
commit
76ea707aa4

+ 8 - 8
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -148,9 +148,9 @@ namespace Hotline.Api.Controllers
                 var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
                 startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeAdd;
                 startDto.Title = "知识库新增";
-                await _workflowApplication.StartWorkflowAsync(startDto, _sessionContext, kn.Id, cancellationToken: HttpContext.RequestAborted);
+                //await _workflowApplication.StartWorkflowAsync(startDto, _sessionContext, kn.Id, cancellationToken: HttpContext.RequestAborted);
 
-				//await StartFlow(kn.Id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, startDto);
+                await StartFlow(kn.Id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, startDto);
                 //var knowledge = await _knowledgeRepository.GetAsync(kn.Id);
                 //knowledge.Status = EKnowledgeStatus.Auditing;
                 //await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
@@ -271,16 +271,16 @@ namespace Hotline.Api.Controllers
                     var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
                     startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeAdd;
                     startDto.Title = "知识库新增";
-                    await _workflowApplication.StartWorkflowAsync(startDto, _sessionContext, knowledge.Id, cancellationToken: HttpContext.RequestAborted);
-					//await StartFlow(knowledge.Id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, startDto);
+                    //await _workflowApplication.StartWorkflowAsync(startDto, _sessionContext, knowledge.Id, cancellationToken: HttpContext.RequestAborted);
+                    await StartFlow(knowledge.Id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, startDto);
                 }
                 else
                 {
                     var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
                     startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeUpdate;
                     startDto.Title = "知识库修改";
-                    await _workflowApplication.StartWorkflowAsync(startDto, _sessionContext, knowledge.Id, cancellationToken: HttpContext.RequestAborted);
-					//await StartFlow(knowledge.Id, WorkflowModuleConsts.KnowledgeUpdate, EKnowledgeApplyType.Update, startDto);
+                    //await _workflowApplication.StartWorkflowAsync(startDto, _sessionContext, knowledge.Id, cancellationToken: HttpContext.RequestAborted);
+                    await StartFlow(knowledge.Id, WorkflowModuleConsts.KnowledgeUpdate, EKnowledgeApplyType.Update, startDto);
                 }
             }
             
@@ -310,8 +310,8 @@ namespace Hotline.Api.Controllers
                 var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
                 startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeDelete;
                 startDto.Title = "知识库删除";
-                await _workflowApplication.StartWorkflowAsync(startDto, _sessionContext, knowledge.Id, cancellationToken: HttpContext.RequestAborted);
-				//await StartFlow(delete.Id, WorkflowModuleConsts.KnowledgeDelete, EKnowledgeApplyType.Delete, startDto);
+                //await _workflowApplication.StartWorkflowAsync(startDto, _sessionContext, knowledge.Id, cancellationToken: HttpContext.RequestAborted);
+                await StartFlow(delete.Id, WorkflowModuleConsts.KnowledgeDelete, EKnowledgeApplyType.Delete, startDto);
             }
         }
 

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

@@ -221,24 +221,10 @@ namespace Hotline.Application.Handlers.FlowEngine
                     case WorkflowModuleConsts.KnowledgeAdd:
                     case WorkflowModuleConsts.KnowledgeUpdate:
                     case WorkflowModuleConsts.KnowledgeDelete:
-                        //await _knowledgeDomainService.UpdateWorkFlowId(workflow.ExternalId, workflow.Id,
-                        //    workflow.HandlerUsers, workflow.HandlerOrgs, workflow.FlowedUserIds, workflow.FlowedOrgIds,
-                        //    cancellationToken);
-                        //var knowledge = await _knowledgeRepository.Queryable().Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
-                        //knowledge.WorkflowId = workflow.Id;
-                        //knowledge.Status = EKnowledgeStatus.Auditing;
-                        //knowledge.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
-                        //await _knowledgeRepository.UpdateAsync(knowledge, cancellationToken);
-                        await _knowledgeRepository.Updateable().SetColumns(x => new KnowledgeBase.Knowledge()
-                        {
-                            WorkflowId = workflow.Id,
-                            Status = EKnowledgeStatus.Auditing,
-                            FlowedUserIds = workflow.FlowedUserIds,
-                            FlowedOrgIds = workflow.FlowedOrgIds,
-                            HandlerUsers = workflow.HandlerUsers,
-                            HandlerOrgs = workflow.HandlerOrgs
-                        }).Where(x=>x.Id == workflow.ExternalId).ExecuteCommandAsync(cancellationToken);
-						break;
+                        await _knowledgeDomainService.UpdateWorkFlowId(workflow.ExternalId, workflow.Id,
+                            workflow.HandlerUsers, workflow.HandlerOrgs, workflow.FlowedUserIds, workflow.FlowedOrgIds,
+                            cancellationToken);
+                        break;
                     //case WorkflowModuleConsts.OrderScreen:
                     //    var screen = await _orderScreenRepository.Queryable().Includes(x => x.Order)
                     //        .Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);

+ 36 - 12
src/Hotline/KnowledgeBase/KnowledgeDomainService.cs

@@ -105,13 +105,13 @@ namespace Hotline.KnowledgeBase
         {
             if (string.IsNullOrEmpty(workflowExternalId))
                 throw UserFriendlyException.SameMessage("无效知识编号");
-            //var knowledgeFlow =
-            //    await _knowledgeWorkFlowRepository.Queryable().Where(x=>x.Id == workflowExternalId).FirstAsync(cancellationToken);
-            //if (knowledgeFlow == null)
-            //    throw new UserFriendlyException($"无效知识编号, knowledgeFlowId: {workflowExternalId}", "无效知识编号");
-            //knowledgeFlow.WorkflowId = workflowId;
-            //knowledgeFlow.Flowed(flowedUserIds, flowedOrgIds, handlerUsers, handlerOrgs);
-            //await _knowledgeWorkFlowRepository.UpdateAsync(knowledgeFlow, cancellationToken);
+            var knowledgeFlow =
+                await _knowledgeWorkFlowRepository.Queryable().Where(x => x.KnowledgeId == workflowExternalId).FirstAsync(cancellationToken);
+            if (knowledgeFlow == null)
+                throw new UserFriendlyException($"无效知识编号, knowledgeFlowId: {workflowExternalId}", "无效知识编号");
+            knowledgeFlow.WorkflowId = workflowId;
+            knowledgeFlow.Flowed(flowedUserIds, flowedOrgIds, handlerUsers, handlerOrgs);
+            await _knowledgeWorkFlowRepository.UpdateAsync(knowledgeFlow, cancellationToken);
             var knowledge = await _knowledgeRepository.Queryable().Where(x=>x.Id == workflowExternalId).FirstAsync(cancellationToken);
             if (knowledge == null)
                 throw new UserFriendlyException($"无效知识编号, knowledgeId: {workflowExternalId}", "无效知识编号");
@@ -203,10 +203,21 @@ namespace Hotline.KnowledgeBase
         /// <exception cref="UserFriendlyException"></exception>
         public async Task TerminateWorkKnowledge(Workflow workflow, CancellationToken cancellationToken)
         {
-            //根据审批主表知识ID查询当前知识
-            var knowledge = await _knowledgeRepository.GetAsync(p => p.Id == workflow.ExternalId, cancellationToken);
-            if (knowledge == null)
-                throw new UserFriendlyException($"知识查询失败");
+	        //根据审批主表知识ID查询当前知识
+	        var knowledge = await _knowledgeRepository.GetAsync(p => p.Id == workflow.ExternalId, cancellationToken);
+	        if (knowledge == null)
+		        throw new UserFriendlyException($"知识查询失败");
+
+	        //修改主表审批状态  根据流程ID查询审批主表
+	        var workFlow = await _knowledgeWorkFlowRepository.GetAsync(p => p.KnowledgeId == workflow.ExternalId, cancellationToken);
+	        if (workFlow == null)
+		        throw new UserFriendlyException($"知识查询失败, workflowId: {workflow.ExternalId}", "无效流程编号");
+
+			//修改业务数据状态
+			workFlow.WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Revoke;
+	        workFlow.ActualOpinion = workflow.ActualOpinion;
+	        await _knowledgeWorkFlowRepository.UpdateAsync(workFlow, cancellationToken);
+
 
             //现有知识状态更改为已撤回
             knowledge.Status = EKnowledgeStatus.Revert;
@@ -239,7 +250,20 @@ namespace Hotline.KnowledgeBase
         public async Task EndWorkKnowledge(Workflow workflow, CancellationToken cancellationToken)
         {
 
-            var knowledge = await _knowledgeRepository.Queryable(false, false, false)
+	        //修改主表审批状态  根据流程ID查询审批主表
+	        var workFlow = await _knowledgeWorkFlowRepository.GetAsync(p => p.KnowledgeId == workflow.ExternalId, cancellationToken);
+	        if (workFlow == null)
+		        throw new UserFriendlyException($"知识查询失败, workflowId: {workflow.ExternalId}", "无效流程编号");
+
+	        //根据审批主表知识ID查询当前知识
+	        //  var knowledge = await _knowledgeRepository.GetAsync(p => p.Id == workFlow.KnowledgeId, cancellationToken);
+
+	        workFlow.HandleTime = DateTime.Now;
+	        workFlow.WorkFlowApplyStatus = EKnowledgeWorkFlowStatus.Success;
+	        workFlow.ActualOpinion = workflow.ActualOpinion;
+	        await _knowledgeWorkFlowRepository.UpdateAsync(workFlow, cancellationToken);
+
+			var knowledge = await _knowledgeRepository.Queryable(false, false, false)
                 .Includes(it => it.SystemOrganize)
                 .Includes(it => it.HotspotType)
                 .Includes(it => it.User)