ソースを参照

优化延期审核流程和代码结构

在 `OrderController.cs` 中,增加了对 `XF.Domain.Entities` 的引用。
注释掉了 `OrderController` 类中的 `[LogFilterAlpha("延期审核")]`。
在 `BatchAuditDelay` 方法中,增加了对 `delays` 列表是否为空的检查。
将 `currentStep` 的定义移到了 `foreach` 循环外部。
在 `dto.IsPass` 为 `true` 时,增加了对 `next.Steps` 中是否包含 `workflowDto.NextStepName` 的检查。
删除了重复的 `step` 定义和相关的检查逻辑。
增加了一个新的方法注释,描述了延期查询流程办理下一步可选节点的功能。
xf 2 週間 前
コミット
816ab7857d
1 ファイル変更21 行追加15 行削除
  1. 21 15
      src/Hotline.Api/Controllers/OrderController.cs

+ 21 - 15
src/Hotline.Api/Controllers/OrderController.cs

@@ -74,6 +74,7 @@ using System.Text;
 using System.Text.Json;
 using XF.Domain.Authentications;
 using XF.Domain.Cache;
+using XF.Domain.Entities;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
 using XF.Utility.EnumExtensions;
@@ -2455,7 +2456,7 @@ public class OrderController : BaseController
 
     [HttpPost("delay/batch_audit")]
     [LogFilter("批量审批延期")]
-    [LogFilterAlpha("延期审核")]
+    //[LogFilterAlpha("延期审核")]
     public async Task<string> BatchAuditDelay([FromBody] BatchDelayNextFlowDto dto)
     {
         var result = new StringBuilder();
@@ -2471,15 +2472,18 @@ public class OrderController : BaseController
             .Where(x => dto.DelayId.Contains(x.Id))
             .ToListAsync(HttpContext.RequestAborted);
 
+        if (!delays.Any())
+            return string.Empty;
+
+        var currentStep = delays.First().Workflow.Steps.FirstOrDefault(d =>
+            d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
+
         var updateDelays = new List<OrderDelay>();
         var updateOrders = new List<Order>();
         foreach (var delay in delays)
         {
             try
             {
-                var currentStep = delay.Workflow.Steps.FirstOrDefault(d =>
-                    d.Status == EWorkflowStepStatus.WaitForAccept || d.Status == EWorkflowStepStatus.WaitForHandle);
-
                 NextStepsWithOpinionDto<NextStepOption> next = null;
 
                 try
@@ -2522,6 +2526,17 @@ public class OrderController : BaseController
 
                 if (dto.IsPass)
                 {
+                    var step = next.Steps.FirstOrDefault(x => x.Value == workflowDto.NextStepName);
+                    if (step is null)
+                    {
+                        result.Append("无权审核:" + delay.No);
+                        fail++;
+                        continue;
+                    }
+
+                    workflowDto.NextStepCode = step.Key;
+                    workflowDto.NextStepName = step.Value;
+
                     //处理工单延期
                     var order = delay.Order;
                     var expiredTimeBase = DateTime.Now;
@@ -2550,17 +2565,6 @@ public class OrderController : BaseController
 
                     updateOrders.Add(order);
 
-                    var step = next.Steps.FirstOrDefault(x => x.Value == workflowDto.NextStepName);
-                    if (step is null)
-                    {
-                        result.Append("无权审核:" + delay.No);
-                        fail++;
-                        continue;
-                    }
-
-                    workflowDto.NextStepCode = step.Key;
-                    workflowDto.NextStepName = step.Value;
-
                     await _workflowDomainService.NextAsync(delay.Workflow, workflowDto,
                         expiredTime: order.ExpiredTime,
                         cancellationToken: HttpContext.RequestAborted);
@@ -2604,6 +2608,8 @@ public class OrderController : BaseController
         return $"总共: {dto.DelayId.Length}, 成功: {success}, 失败: {fail}, 失败原因: {result}";
     }
 
+
+
     /// <summary>
     ///  延期查询流程办理下一步可选节点
     /// </summary>