Browse Source

fixed:批量归档traces未include查询出来

xf 5 tháng trước cách đây
mục cha
commit
33ef136ddf

+ 10 - 1
src/Hotline.Api/Controllers/OrderController.cs

@@ -3960,7 +3960,7 @@ public class OrderController : BaseController
     }
 
     /// <summary>
-    /// 批量归档
+    /// 批量归档(暂时只支持派单组节点操作)
     /// </summary>
     /// <returns>成功总量</returns>
     [HttpPost("batch-file")]
@@ -3975,6 +3975,15 @@ public class OrderController : BaseController
         var success = 0;
         foreach (var order in orders)
         {
+            //非派单组节点办理时不允许操作
+            var unhandleSteps = order.Workflow.Steps
+                .Where(d => d.Status != EWorkflowStepStatus.Handled)
+                .ToList();
+            if(unhandleSteps.Count == 0
+               || unhandleSteps.Count > 2 
+               || unhandleSteps.First().BusinessType!= EBusinessType.Send)
+                continue;
+            
             var startStep = order.Workflow.Steps.Where(d => d.StepType == EStepType.Start && d.IsOrigin)
                 .MaxBy(d => d.CreationTime);
             if (startStep?.Status is not EWorkflowStepStatus.Handled || string.IsNullOrEmpty(startStep.Opinion))

+ 3 - 0
src/Hotline/FlowEngine/Workflows/StepBasicEntity.cs

@@ -369,6 +369,9 @@ public abstract class StepBasicEntity : CreationEntity
     #endregion
     #endregion
 
+    [Navigate(NavigateType.ManyToOne, nameof(WorkflowId))]
+    public Workflow Workflow { get; set; }
+    
     #region method
 
     /// <summary>

+ 2 - 4
src/Hotline/FlowEngine/Workflows/Workflow.cs

@@ -387,18 +387,16 @@ public partial class Workflow
     public List<WorkflowCountersign> Countersigns { get; set; }
 
     /// <summary>
-    /// 节点,依据流转进度动态生成或删除
+    /// 节点,依据流转进度动态生成或删除
     /// </summary>
-    //[SugarColumn(IsIgnore = true)]
     [Navigate(NavigateType.OneToMany, nameof(WorkflowStep.WorkflowId))]
     public List<WorkflowStep> Steps { get; set; }
 
     /// <summary>
     /// 流转记录
     /// </summary>
-    //[SugarColumn(IsIgnore = true)]
     [Navigate(NavigateType.OneToMany, nameof(WorkflowTrace.WorkflowId))]
-    public List<WorkflowTrace> Traces { get; set; } = new();
+    public List<WorkflowTrace> Traces { get; set; }
 
     #region Method
 

+ 2 - 19
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -543,22 +543,13 @@ namespace Hotline.FlowEngine.Workflows
                 query = query.Includes(d => d.Countersigns, x => x.Members);
             if (withSteps)
                 query = query.Includes(d => d.Steps);
-            //if (withTraces)
-            //    query = query.Includes(d => d.Traces);
+            if (withTraces)
+                query = query.Includes(d => d.Traces);
 
             var workflow = await query.FirstAsync(cancellationToken);
             if (workflow is null)
                 throw new UserFriendlyException("无效workflowId");
 
-            //if (withSteps)
-            //{
-            //    var steps = await _workflowStepRepository.Queryable()
-            //        .Where(d => d.WorkflowId == workflow.Id)
-            //        .OrderBy(d => d.CreationTime)
-            //        .ToTreeAsync(d => d.Steps, d => d.ParentId, null);
-            //    workflow.Steps = steps;
-            //}
-
             if (withTracesTree)
             {
                 workflow.Traces = await _workflowTraceRepository.Queryable()
@@ -567,14 +558,6 @@ namespace Hotline.FlowEngine.Workflows
                     .ToTreeAsync(d => d.Traces, d => d.ParentId, null);
             }
 
-            if (withTraces)
-            {
-                workflow.Traces = await _workflowTraceRepository.Queryable()
-                    .Where(d => d.WorkflowId == workflow.Id)
-                    .OrderBy(d => d.CreationTime)
-                    .ToListAsync(cancellationToken);
-            }
-
             return workflow;
         }
 

+ 2 - 8
src/Hotline/FlowEngine/Workflows/WorkflowStep.cs

@@ -12,16 +12,10 @@ namespace Hotline.FlowEngine.Workflows;
 
 public class WorkflowStep : StepBasicEntity
 {
-    [Navigate(NavigateType.ManyToOne, nameof(WorkflowId))]
-    public Workflow Workflow { get; set; }
-
-    [Navigate(NavigateType.OneToOne, nameof(Id),
+   [Navigate(NavigateType.OneToOne, nameof(Id),
         nameof(Workflows.WorkflowTrace.StepId))]
     public WorkflowTrace WorkflowTrace { get; set; }
-
-    //[Navigate(NavigateType.OneToMany, nameof(WorkflowStepHandler.WorkflowStepId))]
-    //public List<WorkflowStepHandler> StepHandlers { get; set; }
-
+    
     #region Method
 
     /// <summary>