瀏覽代碼

api get options: center can select all orgs

xf 1 年之前
父節點
當前提交
d3bdca5f52

+ 19 - 7
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -248,19 +248,31 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                 //当前操作人所属部门的下级部门并且属于配置orgLevel的部门
                 var levels = stepDefine.HandlerClassifies.Select(d => d.Id).Select(d => int.Parse(d));
                 var levelOneOrg = _sessionContext.RequiredOrgCode.GetUpperOrgCode();
-                var orgs1 = await _organizeRepository.QueryAsync(d =>
-                    d.IsEnable && d.OrgCode.StartsWith(levelOneOrg) &&
-                    levels.Contains(d.OrgLevel));
+                //var orgs1 = await _organizeRepository.QueryAsync(d =>
+                //    d.IsEnable && d.OrgCode.StartsWith(levelOneOrg) &&
+                //    levels.Contains(d.OrgLevel));
+
+                var orgs1 = await _organizeRepository.Queryable()
+                    .Where(d => d.IsEnable && levels.Contains(d.OrgLevel))
+                    .WhereIF(!levelOneOrg.IsCenter(), d => d.OrgCode.StartsWith(levelOneOrg))
+                    .ToListAsync(cancellationToken);
+
                 handlers = orgs1.Select(d => new IdName(d.OrgCode, d.OrgName)).ToList();
                 break;
             case EHandlerType.OrgType:
                 var types = stepDefine.HandlerClassifies.Select(d => d.Id)
                     .Select(d => Enum.Parse<EOrgType>(d));
                 var levelOneOrg1 = _sessionContext.RequiredOrgCode.GetUpperOrgCode();
-                var org2 = await _organizeRepository.QueryAsync(d =>
-                    d.IsEnable && d.OrgCode.StartsWith(levelOneOrg1) &&
-                    types.Contains(d.OrgType));
-                handlers = org2.Select(d => new IdName(d.OrgCode, d.OrgName)).ToList();
+                //var org2 = await _organizeRepository.QueryAsync(d =>
+                //    d.IsEnable && d.OrgCode.StartsWith(levelOneOrg1) &&
+                //    types.Contains(d.OrgType));
+
+                var orgs2 = await _organizeRepository.Queryable()
+                .Where(d => d.IsEnable && types.Contains(d.OrgType))
+                    .WhereIF(!levelOneOrg1.IsCenter(), d => d.OrgCode.StartsWith(levelOneOrg1))
+                    .ToListAsync(cancellationToken);
+
+                handlers = orgs2.Select(d => new IdName(d.OrgCode, d.OrgName)).ToList();
                 break;
             default:
                 throw new ArgumentOutOfRangeException();

+ 4 - 4
src/Hotline/SeedData/OrgSeedData.cs

@@ -6,17 +6,17 @@ namespace Hotline.SeedData
 {
     public class OrgSeedData : ISeedData<SystemOrganize>
     {
-        public static readonly string CallCenterId = "08dac6ae-3096-4156-828e-b34e9c1fb5da";
-        public static readonly string CallCenterCode = "001";
+        public static readonly string CenterId = "08dac6ae-3096-4156-828e-b34e9c1fb5da";
+        public static readonly string CenterCode = "001";
 
         public IEnumerable<SystemOrganize> HasData() =>
         new[]
         {
             new SystemOrganize
             {
-                Id = CallCenterId,
+                Id = CenterId,
                 OrgName = "12345政务服务便民热线",
-                OrgCode = CallCenterCode,
+                OrgCode = CenterCode,
                 OrgLevel = 0,
                 IsEnable = true,
             }

+ 2 - 2
src/Hotline/SeedData/UserSeedData.cs

@@ -16,8 +16,8 @@ public class UserSeedData : ISeedData<User>
             {
                 Id = SysAccountSeedData.Id,
                 Name = "系统管理员",
-                OrgId = OrgSeedData.CallCenterId,
-                OrgCode = OrgSeedData.CallCenterCode
+                OrgId = OrgSeedData.CenterId,
+                OrgCode = OrgSeedData.CenterCode
             }
         };
 }

+ 17 - 2
src/Hotline/Settings/SystemOrganize.cs

@@ -89,7 +89,7 @@ public static class OrgExtensions
     public static bool CheckIfOrgLevelIs(this string orgCode, int orgLevel)
     {
         ////中心算做一级部门
-        //if (orgLevel == 1 && orgCode == OrgSeedData.CallCenterCode)
+        //if (orgLevel == 1 && orgCode == OrgSeedData.CenterCode)
         //    return true;
 
         var level = orgCode.CalcOrgLevel();
@@ -107,7 +107,7 @@ public static class OrgExtensions
         if (string.IsNullOrEmpty(orgCode))
             throw UserFriendlyException.SameMessage("无效部门编码");
         ////中心算做一级部门
-        //if (orgLevel == 1 && orgCode == OrgSeedData.CallCenterCode) return orgCode;
+        //if (orgLevel == 1 && orgCode == OrgSeedData.CenterCode) return orgCode;
 
         return orgCode.Substring(0, 3 * orgLevel);
     }
@@ -121,4 +121,19 @@ public static class OrgExtensions
             throw new UserFriendlyException("非法部门编码");
         return orgCode.Substring(orgCode.Length - 3, 3);
     }
+
+    public static bool IsCenter(this string orgCode)
+    {
+        if (string.IsNullOrEmpty(orgCode))
+            throw UserFriendlyException.SameMessage("无效部门编码");
+        return orgCode == OrgSeedData.CenterCode;
+    }
+
+    public static bool IsBelongCenter(this string orgCode)
+    {
+        if (string.IsNullOrEmpty(orgCode))
+            throw UserFriendlyException.SameMessage("无效部门编码");
+        var upperOrg = orgCode.GetUpperOrgCode();
+        return IsCenter(upperOrg);
+    }
 }