xf 10 місяців тому
батько
коміт
daec71c755

+ 68 - 2
src/Hotline.Api/Controllers/TestController.cs

@@ -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;
@@ -481,12 +482,77 @@ public class TestController : BaseController
     {
         var steps = await _workflowStepRepository.Queryable()
             .Includes(d => d.WorkflowTrace)
-            .Where(d => d.FlowAssignType == null)
+            .Where(d => d.FlowAssignType == null && d.Handlers.Count == 1)
             .ToListAsync(HttpContext.RequestAborted);
+        //foreach (var step in steps)
+        //{
+        //    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)
+        //    {
+
+        //    }
+        //    else
+        //    {
+        //        _logger.LogError($"无办理对象, {handlerCount}");
+        //    }
+        //}
+
+        foreach (var step in steps)
+        {
+            step.FlowAssignType =
+                        step.Handlers.First().Key.Length == 36 ? EFlowAssignType.User : EFlowAssignType.Org;
+            step.WorkflowTrace.FlowAssignType = step.FlowAssignType;
+        }
+
+        await _workflowStepRepository
+            .UpdateNav(steps)
+            .Include(d => d.WorkflowTrace)
+            .ExecuteCommandAsync();
+        //.UpdateRangeAsync(steps, HttpContext.RequestAborted);
+    }
+
+    /// <summary>
+    /// 赋值handlerId
+    /// </summary>
+    /// <returns></returns>
+    [AllowAnonymous]
+    [HttpPost("t4")]
+    public async Task TestExportExcel1()
+    {
+        var steps = await _workflowStepRepository.Queryable()
+            .Includes(d => d.WorkflowTrace)
+            .Where(d => d.Status != EWorkflowStepStatus.Handled && d.HandlerId == null && d.Handlers.Any())
+            .ToListAsync(HttpContext.RequestAborted);
+
         foreach (var step in steps)
         {
-            
+            var handler = step.Handlers.First();
+            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;
+            }
         }
+
+        await _workflowStepRepository
+            .UpdateNav(steps)
+            .Include(d => d.WorkflowTrace)
+            .ExecuteCommandAsync();
     }
 
     [HttpGet("rsa")]

+ 2 - 2
src/Hotline.Repository.SqlSugar/Extensions/DataPermissionExtensions.cs

@@ -25,8 +25,8 @@ namespace Hotline.Repository.SqlSugar.Extensions
                     .Where(step => step.ExternalId == d.Id &&
                             ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == session.RequiredUserId) ||
                                (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == session.RequiredOrgId) ||
-                               (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && session.Roles.Contains(step.RoleId))
-                               )).Any());
+                               (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && session.Roles.Contains(step.RoleId))))
+                    .Any());
 
             //return queryable.LeftJoin<WorkflowTrace>((d, step) => d.Id == step.ExternalId)
             //    .Where((d, step) => (step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == session.RequiredUserId) ||