xfe 3 weeks ago
parent
commit
5ff36e59a0

+ 15 - 15
src/Hotline.Application/Handlers/FlowEngine/WorkflowEndHandler.cs

@@ -315,21 +315,21 @@ public class WorkflowEndHandler : INotificationHandler<EndWorkflowNotify>
                     // await _enforcementApplication.AddPassTheBuckOrderAsync(order, _sessionContext.OrgId, _sessionContext.OrgName, cancellationToken);
                     break;
                 case WorkflowModuleConsts.OrderDelay:
-                    var delay = await _orderDelayRepository.GetAsync(workflow.ExternalId, cancellationToken);
-                    if (delay != null)
-                    {
-                        //delay.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
-                        delay.DelayState = isReviewPass ? EDelayState.Pass : EDelayState.NoPass;
-                        await _orderDelayRepository.Updateable(delay)
-                            .UpdateColumns(d => d.DelayState)
-                            .ExecuteCommandAsync(cancellationToken);
-                        if (isReviewPass)
-                        {
-                            //处理工单延期
-                            await _orderApplication.DelayOrderExpiredTimeAsync(delay.OrderId, delay.DelayNum,
-                                delay.DelayUnit, delay.IsProDelay, cancellationToken);
-                        }
-                    }
+                    // var delay = await _orderDelayRepository.GetAsync(workflow.ExternalId, cancellationToken);
+                    // if (delay != null)
+                    // {
+                    //     //delay.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
+                    //     delay.DelayState = isReviewPass ? EDelayState.Pass : EDelayState.NoPass;
+                    //     await _orderDelayRepository.Updateable(delay)
+                    //         .UpdateColumns(d => d.DelayState)
+                    //         .ExecuteCommandAsync(cancellationToken);
+                    //     if (isReviewPass)
+                    //     {
+                    //         //处理工单延期
+                    //         await _orderApplication.DelayOrderExpiredTimeAsync(delay.OrderId, delay.DelayNum,
+                    //             delay.DelayUnit, delay.IsProDelay, cancellationToken);
+                    //     }
+                    // }
                     break;
                 case WorkflowModuleConsts.OrderTerminate:
                     var orderTerminate = await _orderTerminateRepository.Queryable()

+ 9 - 9
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -637,9 +637,9 @@ namespace Hotline.FlowEngine.Workflows
             nextDto.WorkflowId = workflow.Id;
             nextDto.StepId = startStep.Id;
             var (_, _, _, nextSteps) = await NextAsync(workflow, nextDto,
-                    expiredTime: expiredTime,
-                    isAutoFillSummaryOpinion: true,
-                    newStepConfig: newStepConfig, cancellationToken: cancellationToken);
+                expiredTime: expiredTime,
+                isAutoFillSummaryOpinion: true,
+                newStepConfig: newStepConfig, cancellationToken: cancellationToken);
             return nextSteps;
         }
 
@@ -1069,7 +1069,7 @@ namespace Hotline.FlowEngine.Workflows
             PreviousAsync(PreviousWorkflowDto dto,
                 EHandleMode handleMode = EHandleMode.Previous,
                 Action<Workflow, WorkflowStep, StepDefine, WorkflowStep, WorkflowStep>? newStepConfig = null,
-            CancellationToken cancellationToken = default)
+                CancellationToken cancellationToken = default)
         {
             var workflow = await GetWorkflowAsync(dto.WorkflowId, withDefine: true, withSteps: true,
                 withTraces: true, withCountersigns: true, cancellationToken: cancellationToken);
@@ -1415,10 +1415,10 @@ namespace Hotline.FlowEngine.Workflows
         {
             //根据汇总对象id找到被汇总节点
             var summaryTargetStep = workflow.Steps.Where(d =>
-                d.StepType == EStepType.Normal &&
-                d.Code == summaryTargetStepCode &&
-                d.Status == EWorkflowStepStatus.Handled &&
-                d.IsOrigin)
+                    d.StepType == EStepType.Normal &&
+                    d.Code == summaryTargetStepCode &&
+                    d.Status == EWorkflowStepStatus.Handled &&
+                    d.IsOrigin)
                 .MaxBy(d => d.CreationTime);
             if (summaryTargetStep is null)
                 throw UserFriendlyException.SameMessage("未查询到汇总对象节点");
@@ -3513,7 +3513,7 @@ namespace Hotline.FlowEngine.Workflows
         }
 
         private async Task<WorkflowTrace> CreateVisitTraceAsync(WorkflowTrace pubTrace, UserInfo acceptor, string orderVisitId,
-          DateTime creationTime, CancellationToken cancellation)
+            DateTime creationTime, CancellationToken cancellation)
         {
             if (string.IsNullOrEmpty(orderVisitId))
                 throw new UserFriendlyException($"参数异常,orderVisitId不能为空, pubTraceId: {pubTrace.Id}");

+ 11 - 4
test/Hotline.Tests/Controller/OrderDelayControllerTest.cs

@@ -12,6 +12,7 @@ using Microsoft.Extensions.DependencyInjection;
 using XF.Domain.Cache;
 using XF.Domain.Repository;
 using Hotline.Orders;
+using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.FlowEngine.Workflow;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.FlowEngine;
@@ -58,7 +59,7 @@ namespace Hotline.Tests.Controller
             SetZuoXi();
 
             var delayIds = new List<string>();
-            for (int i = 0; i < 1; i++)
+            for (int i = 0; i < 10; i++)
             {
                 var orderId = _orderServiceMock.CreateOrder()
                     .办理到一级部门()
@@ -71,21 +72,27 @@ namespace Hotline.Tests.Controller
                 delayIds.Add(delayId);
             }
 
+            var delay = await _orderDelayRepository.GetAsync(delayIds.First());
+            
+            Set一级部门();
+            var option =  _orderController.OrderDelayNextsteps(delay.WorkflowId).Result as NextStepsWithOpinionDto<NextStepOption>;
+            var step = option.Steps.First();
+            
             var req = new BatchDelayNextFlowDto
             {
                 DelayId = delayIds.ToArray(),
                 IsPass = true,
                 NextWorkflow = new NextWorkflowDto
                 {
-
+                    NextStepCode = step.Key,
+                    NextStepName = step.Value,
                 }
             };
 
-            Set一级部门();
             _testOutputHelper.WriteLine($"开始审批");
             var sw = new Stopwatch();
             sw.Start();
-            var result = await _orderController.BatchAuditDelay(req);
+            var result = await _orderController.BatchAuditDelay1(req);
             sw.Stop();
             
             _testOutputHelper.WriteLine($"耗时:{sw.ElapsedMilliseconds}ms");

+ 10 - 1
test/Hotline.Tests/Mock/OrderServiceMock.cs

@@ -641,11 +641,20 @@ public class OrderServiceMock
     public string 申请延期(Action action = null)
     {
         action?.Invoke();
+        var options = _orderController.GetDelayFlowStartOptions().Result as NextStepsDto<NextStepOption>;
+        var step = options.Steps.First();
         var req = new StartWorkflowDto<ApplyDelayDto>
         {
             Workflow = new BasicWorkflowDto
             {
-                Opinion = "单元测试延期申请"
+                NextStepCode = step.Key,
+                NextStepName = step.Value,
+                NextHandlers = new List<StepAssignInfo>{step.Items.First()},
+                Opinion = "单元测试延期申请",
+                FlowDirection = step.FlowDirection,
+                BackToCountersignEnd = step.BackToCountersignEnd,
+                HandlerType = step.HandlerType,
+                BusinessType = step.BusinessType,
             },
             Data = new ApplyDelayDto
             {

+ 1 - 1
test/Hotline.Tests/TestBase.cs

@@ -115,7 +115,7 @@ public class TestBase
 
     public void Set二级部门()
     {
-        SetOperator("部门经办人", "测试部门/测试二级部门", "cs21", "001094001", "13408389849", EUserType.Seat, TestSettingConstants.SecondOrgAccountName);
+        SetOperator("部门经办人", "测试部门/测试二级部门", "cs21", "001094001", "13408389849", EUserType.Normal, TestSettingConstants.SecondOrgAccountName);
     }
 
     public void Set班长()