예제 #1
0
        /// <summary>
        /// 创建一颗树
        /// </summary>
        /// <param name="treeID">树标识</param>
        /// <param name="treeName">树名称</param>
        /// <param name="leafLimit">叶数量上限</param>
        /// <param name="depthLimit">深度上限</param>
        /// <param name="shareToAll">是否为共享树</param>
        /// <param name="treeType">树类型默认:2=一般树</param>
        /// <param name="entityAttrTBName">一般属性表</param>
        /// <param name="nodeAttrTBLName">结点属性表</param>
        /// <param name="orderByMode">排序规则1-代码2-名称3-自定义</param>
        /// <param name="entityCodeName">实体代码名称</param>
        /// <param name="alternateCodeName">替代代码名称</param>
        /// <param name="uniqueEntityCode">实体代码是否唯一</param>
        /// <param name="uniqueNodeCode">结点代码是否唯一</param>
        /// <param name="autoCodeGenerating">是否自动编码</param>
        /// <param name="communityIndependent">社区独立性</param>
        /// <param name="exclusiveLevel">是否排他</param>
        public void CreateATree(int treeID, string treeName, int leafLimit, int depthLimit, bool shareToAll, byte treeType,
                                string entityAttrTBName, string nodeAttrTBLName, int orderByMode, string entityCodeName, string alternateCodeName,
                                bool uniqueEntityCode, bool uniqueNodeCode, bool autoCodeGenerating, bool communityIndependent, byte exclusiveLevel)
        {
            ModelTreeEntity treeEntity = null;

            if (treeID > 100)
            {
                treeEntity = treesRepoBiz.Table.FirstOrDefault(c => c.TreeID == treeID);
            }
            else
            {
                treeEntity = treesRepoSys.Table.FirstOrDefault(c => c.TreeID == treeID);
            }
            if (treeEntity != null)
            {
                throw new Exception($"已存在Tree={treeID}");
            }

            int nameID          = GetNameID(treeName);
            int entityNameID    = GetNameID(entityCodeName);
            int alternateNameID = GetNameID(alternateCodeName);
            var etree           = new ModelTreeEntity()
            {
                TreeID               = (short)treeID,
                NameID               = nameID,
                LeafLimit            = leafLimit,
                DepthLimit           = depthLimit,
                ShareToAll           = shareToAll,
                TreeType             = treeType,
                LastUpdatedTime      = DateTime.Now,
                EntityAttrTBName     = entityAttrTBName,
                NodeAttrTBName       = nodeAttrTBLName,
                ExclusiveLevel       = exclusiveLevel,
                CommunityIndependent = communityIndependent,
                AlternateCodeNameID  = alternateNameID,
                AutoCodeGenerating   = autoCodeGenerating,
                OrderByMode          = (byte)orderByMode,
                EntityCodeNameID     = entityNameID
            };

            if (treeID > 100)
            {
                ModelBizTreeEntity e = etree.CopyTo <ModelBizTreeEntity>();
                treesRepoBiz.Insert(e);
                treesRepoBiz.SaveChanges();
            }
            else
            {
                ModelSysTreeEntity e = etree.CopyTo <ModelSysTreeEntity>();
                treesRepoSys.Insert(e);
                treesRepoSys.SaveChanges();
            }

            return;
        }
예제 #2
0
        /// <summary>
        /// 获取一棵树
        /// </summary>
        /// <param name="treeID">树标识</param>
        /// <returns></returns>
        public ModelTreeEntity GetATree(int treeID)
        {
            ModelTreeEntity treeEntity = null;

            if (treeID > 100)
            {
                treeEntity = treesRepoBiz.Table.FirstOrDefault(c => c.TreeID == treeID);
            }
            else
            {
                treeEntity = treesRepoSys.Table.FirstOrDefault(c => c.TreeID == treeID);
            }
            if (treeEntity == null)
            {
                throw new Exception($"不存在Tree={treeID}");
            }
            return(treeEntity);
        }
예제 #3
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="treeID">树标识</param>
        public IRAPTreeModel(int treeID)
        {
            db = DBContextFactory.Instance.CreateContext("IRAPContext");
            if (treeID > 100)
            {
                mdmDb       = DBContextFactory.Instance.CreateContext("IRAPMDMContext");
                _treeEntity = mdmDb.Set <ModelBizTreeEntity>().FirstOrDefault(c => c.TreeID == treeID);
            }
            else
            {
                _treeEntity = db.Set <ModelSysTreeEntity>().FirstOrDefault(c => c.TreeID == treeID);
            }

            if (_treeEntity == null)
            {
                throw new Exception($"第 {treeID} 棵树不存在,请使用IRAPTreeModelSet类先创建树");
            }
            _treeID       = treeID;
            _classifySet  = db.Set <ModelTreeClassfiyEntity>().Where(c => c.TreeID == _treeID);
            _transientSet = db.Set <ModelTreeTransient>().Where(c => c.TreeID == _treeID);
            _namespaces   = db.Set <SysNameSpaceEntity>().Where(c => c.PartitioningKey == 0 && c.LanguageID == 30);
            _statusSet    = db.Set <ModelTreeStatus>().Where(c => c.TreeID == _treeID);
        }
예제 #4
0
        /// <summary>
        /// 创建一颗树
        /// </summary>
        /// <param name="treeID">树标识</param>
        /// <param name="treeName">树名称</param>
        /// <param name="leafLimit">叶数量上限</param>
        /// <param name="depthLimit">深度上限</param>
        /// <param name="shareToAll">是否为共享树</param>
        /// <param name="treeType">树类型默认:2=一般树</param>
        public void CreateATree(int treeID, string treeName, int leafLimit, int depthLimit, bool shareToAll, byte treeType = 2)
        {
            var treeEntity = treesRepo.Table.FirstOrDefault(c => c.TreeID == treeID);

            if (treeEntity != null)
            {
                throw new Exception($"已存在Tree={treeID}");
            }
            IIRAPNamespaceSet nameSet = IRAPNamespaceSetFactory.CreatInstance(Enums.NamespaceType.Sys);
            int nameID = nameSet.GetNameID(0, treeName, 30);
            var etree  = new ModelTreeEntity()
            {
                TreeID     = (short)treeID,
                NameID     = nameID,
                LeafLimit  = leafLimit,
                DepthLimit = depthLimit,
                ShareToAll = shareToAll,
                TreeType   = treeType
            };

            treesRepo.Insert(etree);
            treesRepo.SaveChanges();
            return;
        }