|
@@ -26,6 +26,7 @@ using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Dtos.FlowEngine;
|
|
|
using Hotline.Share.Dtos.Order;
|
|
|
using Hotline.Share.Dtos.Realtime;
|
|
|
+using Hotline.Share.Enums.FlowEngine;
|
|
|
using Hotline.Share.Enums.Settings;
|
|
|
using Hotline.Share.Mq;
|
|
|
using Hotline.Tools;
|
|
@@ -90,6 +91,8 @@ public class TestController : BaseController
|
|
|
private readonly IExportApplication _exportApplication;
|
|
|
private readonly IAiVisitService _aiVisitService;
|
|
|
private readonly IRepository<WorkflowTrace> _workflowTraceRepository;
|
|
|
+
|
|
|
+ private readonly IRepository<WorkflowStep> _workflowStepRepository;
|
|
|
//private readonly IRepository<WorkflowStepHandler> _workflowStepHandleRepository;
|
|
|
|
|
|
private readonly IRepository<SystemOrganize> _systemOrganizeRepository;
|
|
@@ -129,6 +132,7 @@ public class TestController : BaseController
|
|
|
IExportApplication exportApplication,
|
|
|
IAiVisitService aiVisitService,
|
|
|
IRepository<WorkflowTrace> workflowTraceRepository,
|
|
|
+ IRepository<WorkflowStep> workflowStepRepository,
|
|
|
//IRepository<WorkflowStepHandler> workflowStepHandleRepository,
|
|
|
IRepository<SystemOrganize> systemOrganizeRepository,
|
|
|
IOrderRepository orderRepository,
|
|
@@ -159,6 +163,7 @@ public class TestController : BaseController
|
|
|
_exportApplication = exportApplication;
|
|
|
_aiVisitService = aiVisitService;
|
|
|
_workflowTraceRepository = workflowTraceRepository;
|
|
|
+ _workflowStepRepository = workflowStepRepository;
|
|
|
//_workflowStepHandleRepository = workflowStepHandleRepository;
|
|
|
_systemOrganizeRepository = systemOrganizeRepository;
|
|
|
_orderRepository = orderRepository;
|
|
@@ -467,96 +472,100 @@ public class TestController : BaseController
|
|
|
//await _workflowStepHandleRepository.AddRangeAsync(stepHandlers, HttpContext.RequestAborted);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 处理FlowAssignType
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
[AllowAnonymous]
|
|
|
[HttpPost("t3")]
|
|
|
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 handlerStepIds = await _workflowStepHandleRepository
|
|
|
- // .Queryable()
|
|
|
- // .Select(d=>d.WorkflowStepId)
|
|
|
- // .ToListAsync(HttpContext.RequestAborted);
|
|
|
- //_logger.LogInformation($"handler stepids: {handlerStepIds.Count}");
|
|
|
-
|
|
|
- //var items = await _workflowTraceRepository
|
|
|
- // .Queryable()
|
|
|
- // .Where(d => !handlerStepIds.Distinct().Contains(d.StepId))
|
|
|
- // .ToListAsync(HttpContext.RequestAborted);
|
|
|
- //_logger.LogInformation($"traces.count: {items.Count}");
|
|
|
-
|
|
|
- ////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 steps = await _workflowStepRepository.Queryable()
|
|
|
+ .Includes(d => d.WorkflowTrace)
|
|
|
+ .Where(d => SqlFunc.Exists(d.WorkflowTrace.Id) &&
|
|
|
+ d.FlowAssignType == null &&
|
|
|
+ SqlFunc.JsonArrayLength(d.Handlers) == 1)
|
|
|
+ .ToListAsync(HttpContext.RequestAborted);
|
|
|
+ //foreach (var step in steps)
|
|
|
//{
|
|
|
- // var trace = item;
|
|
|
- // foreach (var traceHandler in trace.Handlers)
|
|
|
+ // var handlerCount = step.Handlers.Count;
|
|
|
+ // if (handlerCount == 1)
|
|
|
+ // {
|
|
|
+ // step.FlowAssignType =
|
|
|
+ // step.Handlers.First().Key.Length == 36 ? EFlowAssignType.User : EFlowAssignType.Org;
|
|
|
+ // step.WorkflowTrace.FlowAssignType = step.FlowAssignType;
|
|
|
+ // }
|
|
|
+ // else if (handlerCount > 1)
|
|
|
// {
|
|
|
- // 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)
|
|
|
- // {
|
|
|
- // var stepHandler = WorkflowStepHandler.Create(trace.WorkflowId, trace.ExternalId,
|
|
|
- // trace.FlowAssignType.Value, user.Id, user.Name, user.OrgId, user.Organization.Name);
|
|
|
- // stepHandler.WorkflowStepId = trace.StepId;
|
|
|
- // handlers.Add(stepHandler);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // var org = orgs.FirstOrDefault(d => d.Id == traceHandler.Key);
|
|
|
- // if (org != null)
|
|
|
- // {
|
|
|
- // var stepHandler = WorkflowStepHandler.Create(trace.WorkflowId, trace.ExternalId,
|
|
|
- // trace.FlowAssignType.Value, orgId: org.Id, orgName: org.Name);
|
|
|
- // stepHandler.WorkflowStepId = trace.StepId;
|
|
|
- // handlers.Add(stepHandler);
|
|
|
- // }
|
|
|
- // }
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // _logger.LogError($"无办理对象, {handlerCount}");
|
|
|
// }
|
|
|
//}
|
|
|
|
|
|
- //_logger.LogInformation($"待更新traces: {updateTraces.Count}");
|
|
|
- //if (updateTraces.Any())
|
|
|
- // await _workflowTraceRepository.UpdateRangeAsync(updateTraces, HttpContext.RequestAborted);
|
|
|
-
|
|
|
- //_logger.LogInformation($"待更新traces: {handlers.Count}");
|
|
|
- //if (handlers.Any())
|
|
|
- // await _workflowStepHandleRepository.AddRangeAsync(handlers, HttpContext.RequestAborted);
|
|
|
+ var list = new List<WorkflowStep>();
|
|
|
+ foreach (var step in steps)
|
|
|
+ {
|
|
|
+ var handler = step.Handlers.First();
|
|
|
+ if (string.IsNullOrEmpty(handler.Key)) continue;
|
|
|
+ step.FlowAssignType =
|
|
|
+ handler.Key.Length == 36 ? EFlowAssignType.User : EFlowAssignType.Org;
|
|
|
+ step.WorkflowTrace.FlowAssignType = step.FlowAssignType;
|
|
|
+ list.Add(step);
|
|
|
+ }
|
|
|
|
|
|
- ///////
|
|
|
+ await _workflowStepRepository
|
|
|
+ .UpdateNav(list)
|
|
|
+ .Include(d => d.WorkflowTrace)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+ //.UpdateRangeAsync(steps, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
|
|
|
- var orders = await _orderRepository.Queryable(hasHandled: true)
|
|
|
- //.Where(entity=>entity.CreationTime>= DateTime.Now.AddMonths(-1))
|
|
|
+ /// <summary>
|
|
|
+ /// 赋值handlerId
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [AllowAnonymous]
|
|
|
+ [HttpPost("t4")]
|
|
|
+ public async Task TestExportExcel1()
|
|
|
+ {
|
|
|
+ var steps = await _workflowStepRepository.Queryable()
|
|
|
+ .Includes(d => d.WorkflowTrace)
|
|
|
+ .Where(d => SqlFunc.Exists(d.WorkflowTrace.Id) &&
|
|
|
+ d.Status != EWorkflowStepStatus.Handled &&
|
|
|
+ d.HandlerId == null &&
|
|
|
+ d.FlowAssignType != null &&
|
|
|
+ SqlFunc.JsonArrayLength(d.Handlers) == 1)
|
|
|
.ToListAsync(HttpContext.RequestAborted);
|
|
|
+
|
|
|
+ var list = new List<WorkflowStep>();
|
|
|
+ foreach (var step in steps)
|
|
|
+ {
|
|
|
+ var handler = step.Handlers.First();
|
|
|
+ if (string.IsNullOrEmpty(handler.Key)) continue;
|
|
|
+ if (step.FlowAssignType == EFlowAssignType.User)
|
|
|
+ {
|
|
|
+ step.HandlerId = handler.Key;
|
|
|
+ step.HandlerName = handler.Value;
|
|
|
+ step.WorkflowTrace.HandlerId = step.HandlerId;
|
|
|
+ step.WorkflowTrace.HandlerName = step.HandlerName;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ step.HandlerOrgId = handler.Key;
|
|
|
+ step.HandlerOrgName = handler.Value;
|
|
|
+ step.WorkflowTrace.HandlerOrgId = step.HandlerOrgId;
|
|
|
+ step.WorkflowTrace.HandlerOrgName = step.HandlerOrgName;
|
|
|
+ }
|
|
|
+ list.Add(step);
|
|
|
+ }
|
|
|
+
|
|
|
+ await _workflowStepRepository
|
|
|
+ .UpdateNav(list)
|
|
|
+ .Include(d => d.WorkflowTrace)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
}
|
|
|
|
|
|
[HttpGet("rsa")]
|