|
@@ -3917,17 +3917,31 @@ public class OrderController : BaseController
|
|
|
/// <summary>
|
|
|
/// 批量归档
|
|
|
/// </summary>
|
|
|
+ /// <returns>成功总量</returns>
|
|
|
[HttpPost("batch-file")]
|
|
|
- public async Task BatchFile([FromBody]OrderBatchFileDto dto)
|
|
|
+ public async Task<int> BatchFile([FromBody]OrderBatchFileDto dto)
|
|
|
{
|
|
|
var orders = await _orderRepository.Queryable()
|
|
|
+ .Includes(w=>w.Workflow,d => d.WorkflowDefinition)
|
|
|
+ .Includes(w=>w.Workflow,d => d.Steps)
|
|
|
+ .Includes(w=>w.Workflow,d => d.Traces)
|
|
|
.Where(d => dto.OrderIds.Contains(d.Id))
|
|
|
.ToListAsync(HttpContext.RequestAborted);
|
|
|
+ var success = 0;
|
|
|
foreach (var order in orders)
|
|
|
{
|
|
|
- await _workflowDomainService.JumpToEndAsync(_sessionContext, order.WorkflowId,dto.Opinion,dto.Files,
|
|
|
+ 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))
|
|
|
+ continue;
|
|
|
+ var opinion = startStep.Opinion;
|
|
|
+
|
|
|
+ await _workflowDomainService.JumpToEndAsync(_sessionContext, order.Workflow, opinion, dto.Files,
|
|
|
order.ExpiredTime, cancellationToken: HttpContext.RequestAborted);
|
|
|
+ success++;
|
|
|
}
|
|
|
+
|
|
|
+ return success;
|
|
|
}
|
|
|
|
|
|
#endregion
|