public IEnumerable <TreeDataView> GetDominationDepartmentTree()
        {
            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "管辖部门",
                Data  = new { isDept = 0 },
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-sitemap",
            };

            tree.Add(treeRoot);
            var    param    = new Dapper.DynamicParameters(new { _applicationContext.EmpUid });
            var    deptList = _dbContext.QueryWhere <OrgDept>("DeptManager=@EmpUid", param);
            string director = _configService.GetSysParamValue("org.permissions.director");

            if (director.ToBool())
            {
                deptList = deptList.Concat(_dbContext.QueryWhere <OrgDept>("Director=@EmpUid", param));
            }
            foreach (var dept in deptList.Distinct(new FapModelEqualityComparer <OrgDept>()))
            {
                var childs = _platformDomain.OrgDeptSet.Where(d => d.DeptCode.StartsWith(dept.DeptCode, StringComparison.OrdinalIgnoreCase))
                             .Select(t => new TreeDataView {
                    Id = t.Fid, Pid = (t.Fid == dept.Fid?"0":t.Pid), Text = t.DeptName, Data = new { isDept = 1 }, State = new NodeState {
                        Opened = true
                    }, Icon = "icon-folder blue ace-icon fa fa-folder-o "
                });
                TreeViewHelper.MakeTree(treeRoot.Children, childs, treeRoot.Id);
            }
            return(tree);
        }
        public List <TreeDataView> GetOrgJobGroupTree()
        {
            IEnumerable <OrgJobGroup> jobGroups    = _dbContext.QueryAll <OrgJobGroup>();
            List <TreeDataView>       oriGroupList = jobGroups.Select(t => new TreeDataView {
                Id = t.Fid, Pid = "0", Data = new { group = "1" }, Text = t.Name, Icon = "icon-folder orange ace-icon fa fa-users"
            }).ToList <TreeDataView>();
            IEnumerable <OrgJobGroupGrade> jobGroupGrades    = _dbContext.QueryAll <OrgJobGroupGrade>();
            List <TreeDataView>            oriGroupGradeList = jobGroupGrades.Select(t => new TreeDataView {
                Id = t.Fid, Pid = t.JobGroup, Data = new { group = "0" }, Text = t.Name, Icon = "icon-folder orange ace-icon fa fa-users"
            }).ToList <TreeDataView>();
            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "职族",
                Data  = new { group = "3" },
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-sitemap",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriGroupList.Union(oriGroupGradeList), treeRoot.Id);
            return(tree);
        }
Exemple #3
0
        public JsonResult GetBusinessType()
        {
            var businessTypes = _dbContext.Query <WfBusinessType>("select * from WfBusinessType");

            var oriList = businessTypes.Select(t => new TreeDataView {
                Id = t.Fid.ToString(), Pid = t.Pid, Data = new { group = "1", typecode = t.TypeCode, typename = t.TypeName }, Text = t.TypeName, Icon = "icon-folder purple ace-icon fa fa-share-alt"
            });


            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = _multiLangService.GetOrAndMultiLangValue(Core.MultiLanguage.MultiLanguageOriginEnum.MultiLangTag, "business_category", "业务分类"),
                Data  = new { group = "0" },
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-sitemap",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriList, treeRoot.Id);
            return(Json(tree));
        }
        // POST: api/Common
        public JsonResult GetHistoryOrgDepts(string date)
        {
            _dbContext.HistoryDateTime = date;
            IEnumerable <OrgDept> powerDepts = _dbContext.QueryAll <OrgDept>();

            _dbContext.HistoryDateTime = string.Empty;
            //将List<dynamic>转换成List<TreeDataView>
            List <TreeDataView> treeList = new List <TreeDataView>();

            foreach (var data in powerDepts)
            {
                treeList.Add(new TreeDataView()
                {
                    Id = data.Fid, Text = data.DeptName, Pid = data.Pid, Data = new { Code = data.DeptCode, selectable = !data.HasPartPower }, Icon = "icon-folder  ace-icon fa fa-folder orange"
                });
            }
            List <TreeDataView> tree = new List <TreeDataView>();
            string parentID          = "0";
            string _rootText         = "";
            var    pt = powerDepts.FirstOrDefault <OrgDept>(t => t.Pid == "0" || t.Pid.IsMissing() || t.Pid == "#" || t.Pid == "~");

            if (pt != null)
            {
                parentID  = pt.Fid;
                _rootText = pt.DeptName;
            }
            TreeDataView treeRoot = new TreeDataView()
            {
                Id    = parentID,
                Text  = _rootText,
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder purple ace-icon fa fa-sitemap",
            };

            if (parentID == "0")
            {
                treeRoot.Data = new { Code = "", selectable = false };
            }
            else
            {
                treeRoot.Data = new { Code = pt.DeptCode, selectable = !pt.HasPartPower };
            }
            TreeViewHelper.MakeTree(treeRoot.Children, treeList, treeRoot.Id);
            tree.Add(treeRoot);

            return(JsonIgnoreNull(tree));
        }
Exemple #5
0
        public IEnumerable <TreeDataView> GetAllDeptTree()
        {
            IEnumerable <OrgDept>      powerDepts = _rbacService.GetDeptInfoAuthority(_applicationContext.CurrentRoleUid);
            IEnumerable <TreeDataView> treeList   = powerDepts.Select(data => new TreeDataView()
            {
                Id = data.Fid, Text = data.DeptName, Pid = data.Pid, Data = new { Code = data.DeptCode, Ext1 = data.HasPartPower, Ext2 = "" }, Icon = data.HasPartPower ? "icon-folder  ace-icon fa fa-folder grey" : "icon-folder  ace-icon fa fa-folder orange"
            });
            string _rootText         = string.Empty;
            List <TreeDataView> tree = new List <TreeDataView>();
            string parentID          = "0";
            var    pt = powerDepts.FirstOrDefault <OrgDept>(t => t.Pid == "0" || t.Pid.IsMissing() || t.Pid == "#" || t.Pid == "~");

            if (pt != null)
            {
                _rootText = pt.DeptName;
                parentID  = pt.Fid;
            }
            else
            {
                _rootText = "无权限";
            }

            TreeDataView treeRoot = new TreeDataView()
            {
                Id    = parentID,
                Text  = _rootText,
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder purple ace-icon fa fa-sitemap",
            };

            if (parentID == "0")
            {
                treeRoot.Data = new { Code = "", Ext1 = false, Ext2 = "" };
            }
            else
            {
                treeRoot.Data = new { Code = pt.DeptCode, Ext1 = pt.HasPartPower, Ext2 = "" };
            }
            TreeViewHelper.MakeTree(treeRoot.Children, treeList, treeRoot.Id);
            tree.Add(treeRoot);
            return(tree);
        }
Exemple #6
0
        public IEnumerable <TreeDataView> GetModuleTree()
        {
            List <TreeDataView> moList = _platformDomain.ModuleSet.Select(t => new TreeDataView {
                Id = t.Fid.ToString(), Pid = t.Pid, Text = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Module, t.Fid), Icon = (t.Icon.IsMissing() ? "icon-folder green ace-icon fa fa-leaf" : "icon-folder green ace-icon " + t.Icon)
            }).ToList <TreeDataView>();

            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = _multiLangService.GetOrAndMultiLangValue(MultiLanguageOriginEnum.Page, "page_module_rootname", "系统模块"),
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder purple ace-icon fa fa-home bigger-160",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, moList, treeRoot.Id);
            return(tree);
        }
Exemple #7
0
        public IEnumerable <TreeDataView> GetUserGroupTree()
        {
            IEnumerable <FapUserGroup> userGroups = _rbacService.GetAllUserGroup();
            List <TreeDataView>        oriList    = userGroups.Select(t => new TreeDataView {
                Id = t.Fid.ToString(), Pid = t.Pid.ToString(), Data = new { group = "1" }, Text = t.UserGroupName, Icon = "icon-folder orange ace-icon fa fa-users"
            }).ToList <TreeDataView>();
            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "用户组",
                Data  = new { group = "0" },
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-sitemap",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriList, treeRoot.Id);
            return(tree);
        }
Exemple #8
0
        public JsonResult WorkflowProcessGroup()
        {
            IEnumerable <WfProcessGroup> processGroups = _dbContext.QueryAll <WfProcessGroup>();
            List <TreeDataView>          oriList       = processGroups.Select(t => new TreeDataView {
                Id = t.Fid.ToString(), Pid = t.Pid.ToString(), Text = t.GroupName, Icon = "icon-folder orange ace-icon fa fa-users"
            }).ToList <TreeDataView>();

            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = _multiLangService.GetOrAndMultiLangValue(Core.MultiLanguage.MultiLanguageOriginEnum.MultiLangTag, "workflow_category", "流程分类"),
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-sitemap",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriList, treeRoot.Id);
            return(Json(tree));
        }
        public List <TreeDataView> GetOrgJobTree()
        {
            IEnumerable <OrgJob> jobGroups = _dbContext.QueryAll <OrgJob>();
            List <TreeDataView>  oriList   = jobGroups.Select(t => new TreeDataView {
                Id = t.Fid, Pid = t.Pid, Data = new { group = "1", isfinal = t.IsFinal, fullname = t.FullName }, Text = t.JobName, Icon = "icon-folder orange ace-icon fa fa-users"
            }).ToList <TreeDataView>();
            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "职位层级",
                Data  = new { group = "0", isfinal = 0, fullname = "" },
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-sitemap",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriList, treeRoot.Id);
            return(tree);
        }
Exemple #10
0
        public IEnumerable <TreeDataView> GetSchemeCategoryTree()
        {
            IEnumerable <dynamic> prmCategory = _dbContext.Query("select * from PerfProgramCategory");
            List <TreeDataView>   oriList     = prmCategory.Select(t => new TreeDataView {
                Id = t.Fid.ToString(), Pid = t.Pid.ToString(), Data = new { group = "1" }, Text = t.Name, Icon = "icon-folder blue ace-icon fa fa-file-word-o"
            }).ToList <TreeDataView>();
            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "方案分类",
                Data  = new { group = "0" },
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-sitemap",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriList, treeRoot.Id);
            return(tree);
        }
        // POST: api/Common
        public JsonResult GetOrgDepts(string pid)
        {
            IEnumerable <OrgDept> listDepts = null;
            OrgDept pDept = null;

            if (pid.IsMissing())
            {
                pDept = _dbContext.QueryFirstOrDefaultWhere <OrgDept>("(Pid='' or Pid='~' or Pid='0')");
                var listDept = _dbContext.QueryAll <OrgDept>().AsList();
                listDept.Remove(pDept);
                listDepts = listDept;
            }
            else
            {
                pDept     = _dbContext.Get <OrgDept>(pid);
                listDepts = _dbContext.QueryWhere <OrgDept>("DeptCode like '" + pDept.DeptCode + "%'");
            }

            List <TreeDataView> oriList = listDepts.Select(t => new TreeDataView {
                Id = t.Fid.ToString(), Pid = t.Pid.ToString(), Data = new { deptCode = t.DeptCode }, Text = t.DeptName, Icon = "icon-folder orange ace-icon fa fa-folder"
            }).ToList <TreeDataView>();

            List <TreeDataView> tree = new List <TreeDataView>();

            TreeDataView treeRoot = new TreeDataView()
            {
                Id    = pDept.Fid,
                Text  = pDept.DeptName,
                Data  = new { deptCode = pDept.DeptCode },
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder orange ace-icon fa fa-folder",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriList, treeRoot.Id);
            return(JsonIgnoreNull(tree));
        }
Exemple #12
0
        public IEnumerable <TreeDataView> GetConfigGroupTree()
        {
            IEnumerable <FapConfigGroup> configGroups = _configService.GetAllFapConfigGroup();
            List <TreeDataView>          oriList      = configGroups.Select(t => new TreeDataView {
                Id = t.Fid.ToString(), Pid = t.Pid.ToString(), Data = new { group = "1" }, Text = t.CfName, Icon = "icon-folder  ace-icon fa fa-cog"
            }).ToList <TreeDataView>();

            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "配置组",
                Data  = new { group = "0" },
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-cogs",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriList, treeRoot.Id);
            return(tree);
        }
Exemple #13
0
        public IEnumerable <TreeDataView> GetBusinessRoleTree()
        {
            IEnumerable <FapBizRole> bizRoles = _rbacService.GetAllBizRole();
            List <TreeDataView>      oriList  = bizRoles.Select(t => new TreeDataView {
                Id = t.Fid.ToString(), Pid = t.Pid.ToString(), Data = new { isRole = true }, Text = t.BizRoleName, Icon = "icon-folder orange ace-icon fa fa-users"
            }).ToList <TreeDataView>();

            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "业务角色",
                Data  = new { isRole = false },
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-sitemap",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriList, treeRoot.Id);
            return(tree);
        }
Exemple #14
0
        // POST: api/Common
        public JsonResult DictCategory()
        {
            var listCat = _dbContext.Query <FapDict>("select Category,CategoryName from FapDict group by Category,CategoryName");
            List <TreeDataView> oriList = listCat.Select(t => new TreeDataView {
                Id = t.Category, Pid = "0", Text = t.CategoryName, Icon = "icon-folder orange ace-icon fa fa-leaf"
            }).ToList <TreeDataView>();

            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "字典分类",
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder blue ace-icon fa fa-sitemap",
            };

            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, oriList, treeRoot.Id);

            return(Json(tree));
        }
Exemple #15
0
        public IEnumerable <TreeDataView> GetMenuButtonTree()
        {
            var menuButtons = _platformDomain.MenuButtonSet;

            var tree  = GetModuleAndMenuTree();
            var mmtor = tree.GetEnumerator();

            AddMenuButton(mmtor);
            return(tree);

            void AddMenuButton(IEnumerator <TreeDataView> menuEmumertor)
            {
                while (menuEmumertor.MoveNext())
                {
                    TreeDataView curr = menuEmumertor.Current;
                    if (curr.Children.Any())
                    {
                        AddMenuButton(curr.Children.GetEnumerator());
                    }
                    if (curr.Data.IsMenu)
                    {
                        var children = AddOperNode(curr);
                        if (children.Any())
                        {
                            curr.Children = children.ToList();
                        }
                    }
                }
            }

            IEnumerable <TreeDataView> AddOperNode(TreeDataView menuNode)
            {
                var    opers   = typeof(OperEnum).EnumItems(_multiLangService);
                string menuUid = menuNode.Id;

                if (!_applicationContext.IsAdministrator)
                {
                    //权限中获取
                    var roleButtons = _rbacService.GetRoleButtonList(_applicationContext.CurrentRoleUid);
                    if (roleButtons.Any())
                    {
                        var rbtns = roleButtons.Where(r => r.MenuUid == menuUid);
                        foreach (var btn in rbtns.Where(b => b.ButtonType == FapMenuButtonType.Grid || b.ButtonType == FapMenuButtonType.Tree))
                        {
                            var button = menuButtons.FirstOrDefault(b => b.MenuUid == btn.MenuUid && b.ButtonID == btn.ButtonId);
                            if (button != null)
                            {
                                string langkey = $"{menuUid}_{button.ButtonID}";
                                button.Description = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.ButtonTag, langkey);
                                TreeDataView toper = new TreeDataView()
                                {
                                    Id   = button.Fid,
                                    Data = new { IsBtn = false, IsMenu = false },
                                    Pid  = menuNode.Id,
                                    Text = button.Description,
                                    Icon = btn.ButtonType == FapMenuButtonType.Grid ? "fa fa-table" : "fa fa-code-fork"
                                };

                                foreach (var oper in btn.ButtonValue.SplitComma())
                                {
                                    OperEnum     operEnum = (OperEnum)oper.ToInt();
                                    TreeDataView tcol     = new TreeDataView();
                                    tcol.Id   = $"{menuNode.Id}|{button.ButtonType}|{ button.ButtonID }|{oper}";
                                    tcol.Data = new { IsBtn = true, IsMenu = false };
                                    tcol.Pid  = toper.Id;
                                    tcol.Text = operEnum.Description();
                                    tcol.Icon = GetOperIcon(operEnum);
                                    toper.Children.Add(tcol);
                                }
                                yield return(toper);
                            }
                        }
                        var buttons = rbtns.Where(b => b.ButtonType == FapMenuButtonType.Link || b.ButtonType == FapMenuButtonType.Button);
                        foreach (var btn in buttons)
                        {
                            var          button = menuButtons.FirstOrDefault(b => b.MenuUid == btn.MenuUid && b.ButtonID == btn.ButtonId);
                            TreeDataView toper  = new TreeDataView()
                            {
                                Id   = $"{menuNode.Id}|button|{ button.ButtonID }|1",
                                Icon = "fa  fa-bolt",
                                Data = new { IsBtn = true, IsMenu = false },
                                Pid  = menuNode.Id,
                                Text = button.Description,
                            };
                            yield return(toper);
                        }
                    }
                }
                else
                {
                    if (menuButtons.TryGetValue(menuUid, out IEnumerable <FapMenuButton> buttons))
                    {
                        foreach (var button in buttons)
                        {
                            string langkey = $"{menuUid}_{button.ButtonID}";
                            button.Description = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.ButtonTag, langkey);
                            TreeDataView toper = new TreeDataView()
                            {
                                Id   = button.Fid,
                                Data = new { IsBtn = false, IsMenu = false },
                                Pid  = menuNode.Id,
                                Text = button.Description
                            };
                            if (button.ButtonType == FapMenuButtonType.Grid)
                            {
                                toper.Icon = " fa fa-table";
                                foreach (var oper in opers)
                                {
                                    TreeDataView tcol = new TreeDataView();
                                    tcol.Id   = $"{menuNode.Id}|{button.ButtonType}|{ button.ButtonID }|{oper.Key}";
                                    tcol.Data = new { IsBtn = true, IsMenu = false };
                                    tcol.Pid  = toper.Id;
                                    tcol.Text = oper.Description;
                                    tcol.Icon = GetOperIcon(oper.Value.ParseEnum <OperEnum>());
                                    toper.Children.Add(tcol);
                                }
                            }
                            else if (button.ButtonType == FapMenuButtonType.Tree)
                            {
                                toper.Icon = " fa fa-code-fork";
                                foreach (var oper in opers)
                                {
                                    if (oper.Key == (int)OperEnum.Add ||
                                        oper.Key == (int)OperEnum.Update ||
                                        oper.Key == (int)OperEnum.Delete ||
                                        oper.Key == (int)OperEnum.Refresh)
                                    {
                                        TreeDataView tcol = new TreeDataView();
                                        tcol.Id   = $"{menuNode.Id}|{button.ButtonType}|{ button.ButtonID }|{oper.Key}";
                                        tcol.Data = new { IsBtn = true, IsMenu = false };
                                        tcol.Pid  = toper.Id;
                                        tcol.Text = oper.Description;
                                        tcol.Icon = GetOperIcon(oper.Value.ParseEnum <OperEnum>());
                                        toper.Children.Add(tcol);
                                    }
                                }
                            }
                            else if (button.ButtonType == FapMenuButtonType.Link || button.ButtonType == FapMenuButtonType.Button)
                            {
                                toper.Id   = $"{menuNode.Id}|button|{ button.ButtonID }|1";
                                toper.Icon = "fa  fa-bolt";
                                toper.Data = new { IsBtn = true, IsMenu = false };
                            }
                            yield return(toper);
                        }
                    }
                }
            }
        }
        public IActionResult TreeGridComponent(string fid, string multi)
        {
            FapComponent      fc    = _dbContext.Get <FapComponent>(fid);
            TreeGridViewModel model = new TreeGridViewModel();

            model.TreeGridId          = fid;
            model.IsMulti             = multi.ToBool();
            model.TreeFilterCondition = fc.TreeFilterCondition;
            model.TreeTitle           = fc.TreeTitle;
            model.GridTitle           = fc.GridTitle;
            #region 表
            QuerySet qs = new QuerySet();
            qs.TableName = fc.GridTableName;
            qs.QueryCols = fc.GridDisplayFields;
            qs.InitWhere = fc.TableCondition;

            model.GridModel = new JqGridViewModel
            {
                QuerySet = qs
            };
            model.TempData.Add("returnfields", fc.ReturnFields);

            #endregion

            #region 树
            //将List<dynamic>转换成List<TreeDataView>
            List <TreeDataView> treeList = new List <TreeDataView>();
            string icon = "icon-folder  ace-icon fa fa-folder blue";
            if (!fc.TreeTableName.EqualsWithIgnoreCase("orgdept"))
            {
                if (!string.IsNullOrWhiteSpace(fc.TreeNodeIcon))
                {
                    icon = fc.TreeNodeIcon;
                }
                string sql = string.Format("select Fid as Id,{0} as Text,Pid,'{1}' as Icon from {2} ", fc.TreeDisplayField, icon, fc.TreeTableName);
                if (!string.IsNullOrWhiteSpace(fc.TreeCondition))
                {
                    sql += " where " + fc.TreeCondition;
                }
                if (!string.IsNullOrWhiteSpace(fc.TreeOrder))
                {
                    sql += " order by " + fc.TreeOrder;
                }
                var dataList = _dbContext.Query(sql);


                foreach (var data in dataList)
                {
                    treeList.Add(new TreeDataView()
                    {
                        Id = data.Id, Text = data.Text, Pid = data.Pid, Icon = data.Icon, Data = new { selectable = true }
                    });
                }
            }
            else
            {
                IEnumerable <OrgDept> powerDepts = _rbacService.GetDeptInfoAuthority(_applicationContext.CurrentRoleUid);
                if (powerDepts != null && powerDepts.Any())
                {
                    foreach (var data in powerDepts)
                    {
                        TreeDataView tdv = new TreeDataView()
                        {
                            Id = data.Fid, Text = data.DeptName, State = new NodeState {
                                Opened = false
                            }, Pid = data.Pid, Icon = icon, Data = new { selectable = !data.HasPartPower }
                        };
                        if (data.HasPartPower)
                        {
                            tdv.Icon = "icon-folder  ace-icon fa fa-ban orange";
                        }
                        treeList.Add(tdv);
                    }
                }
            }
            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "请选择",
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder purple ace-icon fa 	fa-flag",
            };
            TreeViewHelper.MakeTree(treeRoot.Children, treeList, treeRoot.Id);
            tree.Add(treeRoot);

            string rej = tree.ToJsonIgnoreNullValue();
            model.JsonData = rej;
            #endregion


            return(View(model));
        }
        /// <summary>
        /// 树参照
        /// </summary>
        /// <returns></returns>
        public IActionResult TreeReference(string fid)
        {
            string formid = "frm";
            string ctrlid = "ctrl";

            if (Request.Query.ContainsKey("frmid"))
            {
                formid = Request.Query["frmid"].ToString();
            }
            if (Request.Query.ContainsKey("ctrlid"))
            {
                ctrlid = Request.Query["ctrlid"].ToString();
            }
            string refcondition = string.Empty;

            _platformDomain.ColumnSet.TryGetValue(fid, out FapColumn fc);
            //fc.RefCondition替换参数的值
            if (fc.RefCondition.IsPresent())
            {
                refcondition = fc.RefCondition;
                string fieldName = string.Empty;
                //
                Regex regex = new Regex(FapPlatformConstants.VariablePattern, RegexOptions.IgnoreCase);
                var   mat   = regex.Matches(fc.RefCondition);
                foreach (Match item in mat)
                {
                    fieldName    = item.ToString().Substring(2, item.ToString().Length - 3);
                    refcondition = refcondition.Replace(item.ToString(), Request.Query[fieldName].ToString());
                }
            }

            string icon = "icon-folder  ace-icon fa fa-folder blue";

            List <string> refCols = new List <string>();
            List <string> frmCols = new List <string>();
            //参照名称
            List <string> refRefCols = new List <string>();
            List <string> frmRefCols = new List <string>();
            List <string> refMcSqls  = new List <string>();

            if (fc.RefReturnMapping.IsPresent())
            {
                JArray arrMapping = JArray.Parse(fc.RefReturnMapping);
                foreach (JObject item in arrMapping)
                {
                    string refCol = item.GetStringValue("RefCol");
                    refCols.Add(refCol);
                    string frmCol = item.GetStringValue("FrmCol");
                    frmCols.Add(frmCol);
                    string refTable = fc.RefTable;
                    //针对参照列的特殊处理
                    var refColumn = _dbContext.Column(refTable, refCol);
                    var frmColumn = _dbContext.Column(fc.TableName, frmCol);
                    if (refColumn != null && frmColumn != null)
                    {
                        if (refColumn.CtrlType == FapColumn.CTRL_TYPE_REFERENCE && frmColumn.CtrlType == FapColumn.CTRL_TYPE_REFERENCE)
                        {
                            refMcSqls.Add($"(select {refColumn.RefName} from {refColumn.RefTable} where {refColumn.RefTable}.{refColumn.RefID}={refColumn.TableName}.{refColumn.ColName} ) as {refColumn.ColName}MC");

                            refRefCols.Add(refColumn.ColName + "MC");
                            frmRefCols.Add(frmColumn.TableName + frmColumn.ColName + "MC");
                        }
                    }
                }
            }
            List <TreeDataView> treeList = new List <TreeDataView>();

            //非部门参照
            if (!fc.RefTable.EqualsWithIgnoreCase("orgdept"))
            {
                string sql = string.Format("select {0} as Id,{1} as Text,Pid,'{2}' as Icon from {3} ", fc.RefID, fc.RefName, icon, fc.RefTable);
                if (refCols.Any())
                {
                    sql = $"select {fc.RefID} as Id,{fc.RefName} as Text,Pid,{ string.Join(",", refCols)},";
                    if (refMcSqls.Any())
                    {
                        sql += $"{ string.Join(",", refMcSqls)},";
                    }
                    sql += $"'{icon}' as Icon from { fc.RefTable}";
                }
                if (!string.IsNullOrWhiteSpace(fc.RefCondition))
                {
                    sql += " where " + refcondition;
                }
                var dataList = _dbContext.Query(sql);

                //将List<dynamic>转换成List<TreeDataView>

                foreach (var data in dataList)
                {
                    TreeDataView tdv = new TreeDataView()
                    {
                        Id = data.Id, Text = data.Text, State = new NodeState {
                            Opened = false
                        }, Pid = data.Pid, Icon = data.Icon
                    };
                    if (refCols.Count > 0)
                    {
                        IDictionary <string, object> d = data as IDictionary <string, object>;
                        List <string> refValues        = new List <string>();
                        foreach (var col in refCols)
                        {
                            refValues.Add(d[col] + "");
                        }
                        //参照列
                        if (refRefCols.Any())
                        {
                            foreach (var col in refRefCols)
                            {
                                refValues.Add(d[col] + "");
                            }
                        }
                        tdv.Data = new { ext = string.Join("^-^", refValues), selectable = true };
                    }
                    else
                    {
                        tdv.Data = new { ext = "", selectable = true };
                    }
                    treeList.Add(tdv);
                }
            }
            else
            {
                IEnumerable <OrgDept> powerDepts = _rbacService.GetDeptInfoAuthority(_applicationContext.CurrentRoleUid);
                if (powerDepts != null && powerDepts.Any())
                {
                    foreach (var data in powerDepts)
                    {
                        TreeDataView tdv = new TreeDataView()
                        {
                            Id = data.Fid, Text = data.DeptName, State = new NodeState {
                                Opened = false
                            }, Pid = data.Pid, Icon = icon
                        };
                        if (refCols.Count > 0)
                        {
                            List <string> refValues = new List <string>();
                            foreach (var col in refCols)
                            {
                                refValues.Add(data.GetType().GetProperty(col).GetValue(data, null) + "");
                            }
                            //参照列
                            if (refRefCols.Any())
                            {
                                foreach (var col in refRefCols)
                                {
                                    refValues.Add(data.GetType().GetProperty(col).GetValue(data, null) + "");
                                }
                            }

                            tdv.Data = new { ext = string.Join("^-^", refValues), selectable = !data.HasPartPower };
                            if (data.HasPartPower)
                            {
                                tdv.Icon = "icon-folder  ace-icon fa fa-ban orange";
                            }
                        }
                        else
                        {
                            tdv.Data = new { ext = "", selectable = !data.HasPartPower };
                        }
                        treeList.Add(tdv);
                    }
                }
            }

            List <TreeDataView> tree     = new List <TreeDataView>();
            TreeDataView        treeRoot = new TreeDataView()
            {
                Id    = "0",
                Text  = "请选择",
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder purple ace-icon fa 	fa-flag",
            };

            TreeViewHelper.MakeTree(treeRoot.Children, treeList, treeRoot.Id);
            tree.Add(treeRoot);

            string rej = tree.ToJsonIgnoreNullValue();

            //包含参照列
            if (refRefCols.Any())
            {
                refCols.AddRange(refRefCols);
                frmCols.AddRange(frmRefCols);
            }
            JsTreeViewModel treeModel = new JsTreeViewModel();

            treeModel.CtrlName = formid + ctrlid + fc.TableName + fc.ColName;
            treeModel.JsonData = rej;
            treeModel.TempData.Add("refid", fc.RefID);
            treeModel.TempData.Add("refcode", fc.RefCode);
            treeModel.TempData.Add("refname", fc.RefName);
            treeModel.TempData.Add("frmCols", string.Join(",", frmCols));
            treeModel.TempData.Add("refCols", string.Join(",", refCols));
            return(View(treeModel));
        }
        // POST: api/Common
        public JsonResult GetHistoryOrgDepts(string date)
        {
            //权限
            IEnumerable <OrgDept> powerDepts = _rbacService.GetDeptInfoAuthority(_applicationContext.CurrentRoleUid);// _dbContext.QueryEntityByWhere<OrgDept>(where, null, null, false, date);

            if (powerDepts != null && powerDepts.Any())
            {
                //将List<dynamic>转换成List<TreeDataView>
                List <TreeDataView> treeList = new List <TreeDataView>();
                foreach (var data in powerDepts)
                {
                    treeList.Add(new TreeDataView()
                    {
                        Id = data.Fid, Text = data.DeptName, Pid = data.Pid, Data = new { Code = data.DeptCode, selectable = !data.HasPartPower }, Icon = "icon-folder  ace-icon fa fa-folder orange"
                    });
                }

                List <TreeDataView> tree = new List <TreeDataView>();
                string parentID          = "0";
                string _rootText         = "";
                var    pt = powerDepts.FirstOrDefault <OrgDept>(t => t.Pid == "0" || t.Pid.IsMissing() || t.Pid == "#" || t.Pid == "~");
                if (pt != null)
                {
                    parentID  = pt.Fid;
                    _rootText = pt.DeptName;
                }
                TreeDataView treeRoot = new TreeDataView()
                {
                    Id    = parentID,
                    Text  = _rootText,
                    State = new NodeState {
                        Opened = true
                    },
                    Icon = "icon-folder purple ace-icon fa fa-sitemap",
                };

                if (parentID == "0")
                {
                    treeRoot.Data = new { Code = "", selectable = false };
                }
                else
                {
                    treeRoot.Data = new { Code = pt.DeptCode, selectable = !pt.HasPartPower };
                }
                TreeViewHelper.MakeTree(treeRoot.Children, treeList, treeRoot.Id);
                tree.Add(treeRoot);

                return(JsonIgnoreNull(tree));
            }
            else
            {
                List <TreeDataView> tree     = new List <TreeDataView>();
                TreeDataView        treeRoot = new TreeDataView()
                {
                    Id    = "0",
                    Text  = "部门未建立或无权限",
                    Data  = new { selectable = false },
                    State = new NodeState {
                        Opened = true
                    },
                    Icon = "icon-folder orange ace-icon fa  fa-ban",
                };
                tree.Add(treeRoot);
                return(JsonIgnoreNull(tree));
            }
        }
        // POST: api/Common
        public JsonResult GetOrgDeptsPower(string power)
        {
            IEnumerable <OrgDept> powerDepts = null;

            if (power.ToBool())
            {
                powerDepts = _rbacService.GetDeptInfoAuthority(_applicationContext.CurrentRoleUid);
            }
            else
            {
                powerDepts = _platformDomain.OrgDeptSet.OrderBy(d => d.DeptOrder);
            }
            //将List<dynamic>转换成List<TreeDataView>
            List <TreeDataView> treeList = new List <TreeDataView>();

            foreach (var data in powerDepts)
            {
                treeList.Add(new TreeDataView()
                {
                    Id = data.Fid, Text = data.DeptName, Pid = data.Pid, Data = new { Code = data.DeptCode, Ext1 = data.HasPartPower, Ext2 = "" }, Icon = "icon-folder  ace-icon fa fa-folder orange"
                });
            }
            List <TreeDataView> tree = new List <TreeDataView>();
            string parentID          = "0";
            var    pt        = powerDepts.FirstOrDefault <OrgDept>(t => t.Pid == "0" || t.Pid.IsMissing() || t.Pid == "#" || t.Pid == "~");
            string _rootText = "组织架构";

            if (_rootText.IsMissing())
            {
                if (pt != null)
                {
                    _rootText = pt.DeptName;
                    parentID  = pt.Fid;
                }
                else
                {
                    _rootText = "无权限";
                }
            }
            TreeDataView treeRoot = new TreeDataView()
            {
                Id    = parentID,
                Text  = _rootText,
                State = new NodeState {
                    Opened = true
                },
                Icon = "icon-folder purple ace-icon fa fa-sitemap",
            };

            if (parentID == "0")
            {
                treeRoot.Data = new { Code = "", Ext1 = false, Ext2 = "" };
            }
            else
            {
                treeRoot.Data = new { Code = pt.DeptCode, Ext1 = pt.HasPartPower, Ext2 = "" };
            }
            tree.Add(treeRoot);
            TreeViewHelper.MakeTree(treeRoot.Children, treeList, treeRoot.Id);

            return(Json(tree));
        }