|
@@ -460,7 +460,70 @@ public class TestController : BaseController
|
|
[HttpPost("t3")]
|
|
[HttpPost("t3")]
|
|
public async Task TestExportExcel()
|
|
public async Task TestExportExcel()
|
|
{
|
|
{
|
|
-
|
|
|
|
|
|
+ var items = await _workflowTraceRepository.Queryable()
|
|
|
|
+ .Where(d => !SqlFunc.Subqueryable<WorkflowStepHandler>().Where(x => x.WorkflowStepId == d.StepId).Any())
|
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
|
+
|
|
|
|
+ var a = items.Select(d => d.StepId).ToList();
|
|
|
|
+
|
|
|
|
+ //var items = await _workflowTraceRepository.Queryable()
|
|
|
|
+ // .LeftJoin<WorkflowStepHandler>((t, h) => t.StepId == h.WorkflowStepId)
|
|
|
|
+ // .Where((t, h) => h == null)
|
|
|
|
+ // .Select((t, h) => new { t, h })
|
|
|
|
+ // .ToListAsync(HttpContext.RequestAborted);
|
|
|
|
+
|
|
|
|
+ var handlerIds = items.Select(d => d)
|
|
|
|
+ .SelectMany(d => d.Handlers)
|
|
|
|
+ .Select(d => d.Key)
|
|
|
|
+ .Distinct()
|
|
|
|
+ .ToList();
|
|
|
|
+ var users = await _userRepository.Queryable()
|
|
|
|
+ .Includes(d => d.Organization)
|
|
|
|
+ .Where(d => handlerIds.Contains(d.Id))
|
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
|
+ var orgs = await _systemOrganizeRepository.Queryable()
|
|
|
|
+ .Where(d => handlerIds.Contains(d.Id))
|
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
|
+
|
|
|
|
+ var handlers = new List<WorkflowStepHandler>();
|
|
|
|
+ var updateTraces = new List<WorkflowTrace>();
|
|
|
|
+ foreach (var item in items)
|
|
|
|
+ {
|
|
|
|
+ var trace = item;
|
|
|
|
+ foreach (var traceHandler in trace.Handlers)
|
|
|
|
+ {
|
|
|
|
+ if (!trace.FlowAssignType.HasValue)
|
|
|
|
+ {
|
|
|
|
+ trace.FlowAssignType = traceHandler.Key.Length == 36 ? EFlowAssignType.User : EFlowAssignType.Org;
|
|
|
|
+ updateTraces.Add(trace);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (trace.FlowAssignType == EFlowAssignType.User)
|
|
|
|
+ {
|
|
|
|
+ var user = users.FirstOrDefault(d => d.Id == traceHandler.Key);
|
|
|
|
+ if (user != null)
|
|
|
|
+ {
|
|
|
|
+ handlers.Add(WorkflowStepHandler.Create(trace.WorkflowId, trace.ExternalId, trace.FlowAssignType.Value,
|
|
|
|
+ user.Id, user.Name, user.OrgId, user.Organization.Name));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ var org = orgs.FirstOrDefault(d => d.Id == traceHandler.Key);
|
|
|
|
+ if (org != null)
|
|
|
|
+ {
|
|
|
|
+ handlers.Add(WorkflowStepHandler.Create(trace.WorkflowId, trace.ExternalId, trace.FlowAssignType.Value,
|
|
|
|
+ orgId: org.Id, orgName: org.Name));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (updateTraces.Any())
|
|
|
|
+ await _workflowTraceRepository.UpdateRangeAsync(updateTraces, HttpContext.RequestAborted);
|
|
|
|
+
|
|
|
|
+ if (handlers.Any())
|
|
|
|
+ await _workflowStepHandleRepository.AddRangeAsync(handlers, HttpContext.RequestAborted);
|
|
}
|
|
}
|
|
|
|
|
|
[HttpGet("rsa")]
|
|
[HttpGet("rsa")]
|