Prechádzať zdrojové kódy

重构批量审核延迟方法

在 `OrderController.cs` 中,将 `BatchAuditDelay` 方法注释掉,并将其内容移至 `BatchAuditDelay1` 方法中。
xf 3 týždňov pred
rodič
commit
9d8ced92eb

+ 104 - 103
src/Hotline.Api/Controllers/OrderController.cs

@@ -2265,113 +2265,114 @@ public class OrderController : BaseController
     /// <summary>
     /// 批量审批延期
     /// </summary>
+    
+    //public async Task<string> BatchAuditDelay([FromBody] BatchDelayNextFlowDto dto)
+    //{
+    //    var result = new StringBuilder();
+    //    var fail = 0;
+    //    var success = 0;
+    //    var workflow = dto.NextWorkflow;
+    //    foreach (var item in dto.DelayId)
+    //    {
+    //        try
+    //        {
+    //            if (workflow.NextHandlers.Any() && workflow.NextHandlers.Count() == 1)
+    //            {
+    //                var handler = workflow.NextHandlers.FirstOrDefault();
+    //                if (string.IsNullOrEmpty(handler.UserId))
+    //                {
+    //                    workflow.NextHandlers = new List<StepAssignInfo>();
+    //                }
+    //            }
+
+    //            var delay = await _orderDelayRepository.Queryable().Includes(x => x.Order).Where(x => x.Id == item)
+    //                .FirstAsync(HttpContext.RequestAborted);
+    //            workflow.WorkflowId = delay.WorkflowId;
+    //            var workflowEntuty = await _workflowDomainService.GetWorkflowAsync(workflow.WorkflowId, withDefine: true, withSteps: true,
+    //                cancellationToken: HttpContext.RequestAborted);
+    //            var currentStep = workflowEntuty.Steps.FirstOrDefault(d =>
+    //                d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
+
+    //            NextStepsWithOpinionDto<NextStepOption> next = null;
+
+    //            try
+    //            {
+    //                next = await _workflowApplication.GetNextStepsAsync(delay.WorkflowId, HttpContext.RequestAborted);
+    //            }
+    //            catch (UserFriendlyException e)
+    //            {
+    //                if (e.Message.Contains("未找到对应节点"))
+    //                {
+    //                    result.Append("无权审核:" + delay.No);
+    //                    fail++;
+    //                }
+    //                else
+    //                {
+    //                    throw;
+    //                }
+    //            }
+
+    //            if (next == null) continue;
+
+    //            if (!delay.Order.IsProvince)
+    //            {
+    //                if (next.Steps.Any(x => x.Value == "省审批"))
+    //                {
+    //                    next.Steps.Remove(next.Steps.First(x => x.Value == "省审批"));
+    //                }
+    //            }
+
+    //            if (!_sessionContext.OrgIsCenter && currentStep.Name != "中心初审")
+    //            {
+    //                if (next.Steps.Any(x => x.Value == "中心终审"))
+    //                {
+    //                    next.Steps.Remove(next.Steps.First(x => x.Value == "中心终审"));
+    //                }
+    //            }
+
+    //            workflow.StepId = next.StepId;
+    //            workflow.ReviewResult = dto.IsPass ? EReviewResult.Approval : EReviewResult.Failed;
+
+    //            if (workflow.ReviewResult == EReviewResult.Approval)
+    //            {
+    //                var isBatch = next.Steps.Where(x => x.Value == workflow.NextStepName).Any();
+    //                if (isBatch)
+    //                {
+    //                    var step = next.Steps.Where(x => x.Value == workflow.NextStepName).FirstOrDefault();
+    //                    workflow.NextStepCode = step.Key;
+    //                    workflow.NextStepName = step.Value;
+    //                }
+    //                else
+    //                {
+    //                    result.Append("无权审核:" + delay.No);
+    //                    fail++;
+    //                    continue;
+    //                }
+
+    //                await _workflowDomainService.NextAsync(workflow, cancellationToken: HttpContext.RequestAborted);
+    //            }
+    //            else
+    //            {
+    //                var reject = workflow.Adapt<RejectDto>();
+    //                await _workflowApplication.RejectAsync(reject, HttpContext.RequestAborted);
+    //            }
+
+    //            success++;
+    //        }
+    //        catch (UserFriendlyException e)
+    //        {
+    //            result.Append(e.Message);
+    //            fail++;
+    //        }
+    //    }
+
+    //    return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result.ToString()}";
+    //}
+
     [HttpPost("delay/batch_audit")]
     [LogFilter("批量审批延期")]
     [LogFilterAlpha("延期审核")]
     public async Task<string> BatchAuditDelay([FromBody] BatchDelayNextFlowDto dto)
-    {
-        var result = new StringBuilder();
-        var fail = 0;
-        var success = 0;
-        var workflow = dto.NextWorkflow;
-        foreach (var item in dto.DelayId)
-        {
-            try
-            {
-                if (workflow.NextHandlers.Any() && workflow.NextHandlers.Count() == 1)
-                {
-                    var handler = workflow.NextHandlers.FirstOrDefault();
-                    if (string.IsNullOrEmpty(handler.UserId))
-                    {
-                        workflow.NextHandlers = new List<StepAssignInfo>();
-                    }
-                }
-
-                var delay = await _orderDelayRepository.Queryable().Includes(x => x.Order).Where(x => x.Id == item)
-                    .FirstAsync(HttpContext.RequestAborted);
-                workflow.WorkflowId = delay.WorkflowId;
-                var workflowEntuty = await _workflowDomainService.GetWorkflowAsync(workflow.WorkflowId, withDefine: true, withSteps: true,
-                    cancellationToken: HttpContext.RequestAborted);
-                var currentStep = workflowEntuty.Steps.FirstOrDefault(d =>
-                    d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
-
-                NextStepsWithOpinionDto<NextStepOption> next = null;
-
-                try
-                {
-                    next = await _workflowApplication.GetNextStepsAsync(delay.WorkflowId, HttpContext.RequestAborted);
-                }
-                catch (UserFriendlyException e)
-                {
-                    if (e.Message.Contains("未找到对应节点"))
-                    {
-                        result.Append("无权审核:" + delay.No);
-                        fail++;
-                    }
-                    else
-                    {
-                        throw;
-                    }
-                }
-
-                if (next == null) continue;
-
-                if (!delay.Order.IsProvince)
-                {
-                    if (next.Steps.Any(x => x.Value == "省审批"))
-                    {
-                        next.Steps.Remove(next.Steps.First(x => x.Value == "省审批"));
-                    }
-                }
-
-                if (!_sessionContext.OrgIsCenter && currentStep.Name != "中心初审")
-                {
-                    if (next.Steps.Any(x => x.Value == "中心终审"))
-                    {
-                        next.Steps.Remove(next.Steps.First(x => x.Value == "中心终审"));
-                    }
-                }
-
-                workflow.StepId = next.StepId;
-                workflow.ReviewResult = dto.IsPass ? EReviewResult.Approval : EReviewResult.Failed;
-
-                if (workflow.ReviewResult == EReviewResult.Approval)
-                {
-                    var isBatch = next.Steps.Where(x => x.Value == workflow.NextStepName).Any();
-                    if (isBatch)
-                    {
-                        var step = next.Steps.Where(x => x.Value == workflow.NextStepName).FirstOrDefault();
-                        workflow.NextStepCode = step.Key;
-                        workflow.NextStepName = step.Value;
-                    }
-                    else
-                    {
-                        result.Append("无权审核:" + delay.No);
-                        fail++;
-                        continue;
-                    }
-
-                    await _workflowDomainService.NextAsync(workflow, cancellationToken: HttpContext.RequestAborted);
-                }
-                else
-                {
-                    var reject = workflow.Adapt<RejectDto>();
-                    await _workflowApplication.RejectAsync(reject, HttpContext.RequestAborted);
-                }
-
-                success++;
-            }
-            catch (UserFriendlyException e)
-            {
-                result.Append(e.Message);
-                fail++;
-            }
-        }
-
-        return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result.ToString()}";
-    }
-
-    public async Task<string> BatchAuditDelay1([FromBody] BatchDelayNextFlowDto dto)
     {
         var result = new StringBuilder();
         var fail = 0;

+ 1 - 1
test/Hotline.Tests/Controller/OrderDelayControllerTest.cs

@@ -92,7 +92,7 @@ namespace Hotline.Tests.Controller
             _testOutputHelper.WriteLine($"开始审批");
             var sw = new Stopwatch();
             sw.Start();
-            var result = await _orderController.BatchAuditDelay1(req);
+            var result = await _orderController.BatchAuditDelay(req);
             sw.Stop();
             
             _testOutputHelper.WriteLine($"耗时:{sw.ElapsedMilliseconds}ms");