Procházet zdrojové kódy

fixed: dynamic 上级部门可选择平级

xf před 1 rokem
rodič
revize
d18f09c162

+ 9 - 5
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -915,7 +915,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
     {
         int orgLevel;
         List<Kv> items;
-        var levelOneOrgCode = _sessionContext.RequiredOrgId.GetHigherOrgId();
+        string upperOrgId;
         switch (policy)
         {
             case EDynamicPolicy.OrgUpCenterTop:
@@ -931,8 +931,10 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                 }
                 else
                 {
+                    //上级部门Id
+                    upperOrgId = _sessionContext.RequiredOrgId.GetHigherOrgId(orgLevel);
                     items = await _organizeRepository.Queryable()
-                        .Where(d => !d.IsCenter && d.Level == orgLevel && d.Id.StartsWith(levelOneOrgCode))
+                        .Where(d => d.Id == upperOrgId)
                         .Select(d => new Kv { Key = d.Id, Value = d.Name })
                         .ToListAsync(cancellationToken);
                 }
@@ -941,8 +943,10 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
             case EDynamicPolicy.OrgUp:
                 orgLevel = _sessionContext.OrgLevel - 1;
                 if (orgLevel <= 0) orgLevel = 1;
+                //上级部门Id
+                upperOrgId = _sessionContext.RequiredOrgId.GetHigherOrgId(orgLevel);
                 items = await _organizeRepository.Queryable()
-                    .Where(d => d.Level == orgLevel && d.Id.StartsWith(levelOneOrgCode))
+                    .Where(d => d.Id == upperOrgId)
                     .Select(d => new Kv { Key = d.Id, Value = d.Name })
                     .ToListAsync(cancellationToken);
                 break;
@@ -959,7 +963,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                 {
                     orgLevel = _sessionContext.OrgLevel + 1;
                     items = await _organizeRepository.Queryable()
-                        .Where(d => !d.IsCenter && d.Level == orgLevel && d.Id.StartsWith(levelOneOrgCode))
+                        .Where(d => !d.IsCenter && d.Level == orgLevel && d.Id.StartsWith(_sessionContext.RequiredOrgId))
                         .Select(d => new Kv { Key = d.Id, Value = d.Name })
                         .ToListAsync(cancellationToken);
                 }
@@ -968,7 +972,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
             case EDynamicPolicy.OrgDown:
                 orgLevel = _sessionContext.OrgLevel + 1;
                 items = await _organizeRepository.Queryable()
-                    .Where(d => d.Level == orgLevel && d.Id.StartsWith(levelOneOrgCode))
+                    .Where(d => d.Level == orgLevel && d.Id.StartsWith(_sessionContext.RequiredOrgId))
                     .Select(d => new Kv { Key = d.Id, Value = d.Name })
                     .ToListAsync(cancellationToken);
                 break;