Esempio n. 1
0
        /// <summary>
        /// 增加DBS节点
        /// </summary>
        /// <param name="define">DBS节点定义</param>
        public S_D_DBS AddChild(S_T_DBSDefine define)
        {
            var user  = FormulaHelper.GetUserInfo();
            var child = new S_D_DBS();

            child.ID                = FormulaHelper.CreateGuid();
            child.DBSCode           = define.DBSCode;
            child.Name              = define.Name;
            child.DBSType           = define.DBSType;
            child.MappingNodeUrl    = define.MappingNodeUrl;
            child.MappingType       = define.MappingType;
            child.CreateDate        = DateTime.Now;
            child.CreateUserID      = user.UserID;
            child.CreateUser        = user.UserName;
            child.InheritAuth       = define.InheritAuth;
            child.ParentID          = this.ID;
            child.FullID            = this.FullID + "." + child.ID;
            child.ProjectInfoID     = this.ProjectInfoID;
            child.S_I_ProjectInfo   = this.S_I_ProjectInfo;
            child.ConfigDBSID       = define.ID;
            child.ArchiveFolder     = define.ArchiveFolder;
            child.ArchiveFolderName = define.ArchiveFolderName;
            this.S_I_ProjectInfo.S_D_DBS.Add(child);
            foreach (var item in define.S_T_DBSSecurity.ToList())
            {
                var sec = new S_D_DBSSecurity();
                sec.ID          = FormulaHelper.CreateGuid();
                sec.RoleCode    = item.RoleCode;
                sec.RoleName    = item.RoleName;
                sec.AuthType    = item.AuthType;
                sec.RelateValue = "";
                child.S_D_DBSSecurity.Add(sec);
            }
            return(child);
        }
Esempio n. 2
0
        /// <summary>
        /// 复制DBS结构配置及权限
        /// </summary>
        /// <param name="rootDBS"></param>
        /// <param name="newRootDBS"></param>
        /// <param name="context"></param>
        private void CopyDBSDefine(S_T_DBSDefine rootDBS, S_T_DBSDefine newRootDBS, BaseConfigEntities context)
        {
            var childDBS = rootDBS.Children;

            foreach (var dbs in childDBS)
            {
                var newDBS = dbs.Clone <S_T_DBSDefine>();
                newDBS.ID       = FormulaHelper.CreateGuid();
                newDBS.ParentID = newRootDBS.ID;
                newDBS.FullID   = newRootDBS.FullID + "." + newDBS.ID;
                newDBS.ModeID   = newRootDBS.ModeID;
                context.Set <S_T_DBSDefine>().Add(newDBS);

                //DBS权限
                var dbsAuth = context.Set <S_T_DBSSecurity>().Where(c => c.DBSDefineID == dbs.ID);
                if (dbsAuth != null)
                {
                    foreach (var auth in dbsAuth)
                    {
                        var newAuth = auth.Clone <S_T_DBSSecurity>();
                        newAuth.ID          = FormulaHelper.CreateGuid();
                        newAuth.DBSDefineID = newDBS.ID;
                        context.Set <S_T_DBSSecurity>().Add(newAuth);
                    }
                }

                if (dbs.Children != null)
                {
                    CopyDBSDefine(dbs, newDBS, context);
                }
            }
        }
Esempio n. 3
0
        void _createISOMappingFolder(S_D_DBS parent, string parentDefineCode, List <Dictionary <string, object> > folderDefines, List <S_D_DBS> existFolderList,
                                     S_T_ISODefine objMode, S_T_DBSDefine defineInfo, IFormExport export)
        {
            var folderDefine = folderDefines.FirstOrDefault(d => d["ParentID"].ToString() == parentDefineCode);

            if (folderDefine == null)
            {
                return;
            }
            var value = objMode.GetPropertyString(folderDefine.GetValue("FieldName"));

            if (String.IsNullOrEmpty(value))
            {
                return;
            }
            if (!String.IsNullOrEmpty(folderDefine.GetValue("EnumKey")))
            {
                var enumService = FormulaHelper.GetService <IEnumService>();
                value = enumService.GetEnumText(folderDefine.GetValue("EnumKey"), value);
            }
            var folder = existFolderList.FirstOrDefault(d => d.Name == value && d.ParentID == parent.ID);

            if (folder == null)
            {
                folder                   = new S_D_DBS();
                folder.ID                = FormulaHelper.CreateGuid();
                folder.Name              = value;
                folder.DBSCode           = objMode.ID;
                folder.DBSType           = Project.Logic.DBSType.Mapping.ToString();
                folder.ConfigDBSID       = defineInfo.ID + "." + folderDefine.GetValue("FieldName");
                folder.ArchiveFolder     = folderDefine.GetValue("ArchiveFolder");
                folder.MappingType       = parent.MappingType;
                folder.ArchiveFolderName = folderDefine.GetValue("ArchiveFolderName");
                folder.SortIndex         = objMode.SortIndex;
                parent.AddChild(folder);
                existFolderList.Add(folder);
            }
            bool addOnDocument = Convert.ToBoolean(folderDefine.GetValue("AddProduct"));

            if (addOnDocument)
            {
                if (folder.DBSCode == objMode.ID)
                {
                    _createISOForm(objMode, folder, export);
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 增加DBS模板根节点
        /// </summary>
        public void AddRootDBSDefine()
        {
            if (this.S_T_DBSDefine.FirstOrDefault(d => d.DBSType == DBSType.Root.ToString()) != null)
            {
                return;
            }
            var dbsDefine = new S_T_DBSDefine();

            dbsDefine.ID          = FormulaHelper.CreateGuid();
            dbsDefine.DBSType     = DBSType.Root.ToString();
            dbsDefine.DBSCode     = DBSType.Root.ToString();
            dbsDefine.FullID      = dbsDefine.ID;
            dbsDefine.Level       = dbsDefine.FullID.Split('.').Length;
            dbsDefine.Name        = "DBS根目录";
            dbsDefine.InheritAuth = true.ToString();
            this.S_T_DBSDefine.Add(dbsDefine);
        }
Esempio n. 5
0
        /// <summary>
        /// 集成指定目录的权限
        /// </summary>
        /// <param name="dbsDefine">指定的DBS目录</param>
        public void InheritNodeAuth(S_T_DBSDefine dbsDefine)
        {
            var entities = FormulaHelper.GetEntities <BaseConfigEntities>();

            entities.S_T_DBSSecurity.Delete(d => d.DBSDefineID == this.ID);
            foreach (var security in dbsDefine.S_T_DBSSecurity.ToList())
            {
                var sec = new S_T_DBSSecurity();
                sec.ID          = FormulaHelper.CreateGuid();
                sec.RoleCode    = security.RoleCode;
                sec.RoleName    = security.RoleName;
                sec.AuthType    = security.AuthType;
                sec.RoleType    = security.RoleType;
                sec.DBSDefineID = this.ID;
                this.S_T_DBSSecurity.Add(sec);
                sec.S_T_DBSDefine = this;
            }
            this.InheritAuth = true.ToString();
        }
Esempio n. 6
0
 /// <summary>
 /// 增加DBS定义子节点
 /// </summary>
 /// <param name="child">DBS定义子节点</param>
 public void AddChild(S_T_DBSDefine child)
 {
     if (this.S_T_ProjectMode.S_T_DBSDefine.FirstOrDefault(d => d.DBSCode == child.DBSCode && d.ID != child.ID) != null)
     {
         throw new Formula.Exceptions.BusinessException("已经存在编号为【" + child.DBSCode + "】的DBS节点,不能重复添加");
     }
     if (String.IsNullOrEmpty(child.ID))
     {
         child.ID = FormulaHelper.CreateGuid();
     }
     child.ParentID = this.ID;
     child.FullID   = this.FullID + "." + child.ID;
     child.Level    = child.FullID.Split('.').Length;
     if (String.IsNullOrEmpty(child.DBSType))
     {
         child.DBSType = Project.Logic.DBSType.Folder.ToString();
     }
     this.S_T_ProjectMode.S_T_DBSDefine.Add(child);
     child.InhertParentAuth();
 }
Esempio n. 7
0
        void _createProductMappingFolder(S_D_DBS parent, string parentDefineCode, List <Dictionary <string, object> > folderDefines, List <S_D_DBS> existFolderList,
                                         S_E_Product product, S_T_DBSDefine defineInfo)
        {
            var folderDefine = folderDefines.FirstOrDefault(d => d["ParentID"].ToString() == parentDefineCode);

            if (folderDefine == null)
            {
                return;
            }
            var value = product.GetPropertyString(folderDefine.GetValue("FieldName"));

            if (String.IsNullOrEmpty(value))
            {
                _createProductMappingFolder(parent, folderDefine.GetValue("FieldName"), folderDefines, existFolderList, product, defineInfo);
            }
            else
            {
                if (!String.IsNullOrEmpty(folderDefine.GetValue("EnumKey")))
                {
                    var enumService = FormulaHelper.GetService <IEnumService>();
                    value = enumService.GetEnumText(folderDefine.GetValue("EnumKey"), value);
                }
                var folder = existFolderList.FirstOrDefault(d => d.Name == value && d.ParentID == parent.ID);
                if (folder == null)
                {
                    folder                   = new S_D_DBS();
                    folder.ID                = FormulaHelper.CreateGuid();
                    folder.Name              = value;
                    folder.DBSCode           = folderDefine.GetValue("FieldName");
                    folder.DBSType           = Project.Logic.DBSType.Mapping.ToString();
                    folder.MappingType       = parent.MappingType;
                    folder.ConfigDBSID       = defineInfo.ID + "." + folderDefine.GetValue("FieldName");
                    folder.ArchiveFolder     = folderDefine.GetValue("ArchiveFolder");
                    folder.ArchiveFolderName = folderDefine.GetValue("ArchiveFolderName");
                    parent.AddChild(folder);
                    existFolderList.Add(folder);
                }

                bool addOnDocument = true;// Convert.ToBoolean(folderDefine.GetValue("AddProduct"));
                //根据归档结构决定是否添加成果
                var ansestorFolders = existFolderList.Where(d => folder.FullID.StartsWith(d.FullID)).OrderBy(d => d.FullID).ToList();
                var preFlag         = true;
                for (int i = 0; i < folderDefines.Count; i++)
                {
                    var fd      = folderDefines[i];
                    var pdValue = product.GetPropertyString(fd.GetValue("FieldName"));//成果的结构所属字段对应值(阶段、子项、专业、工作包)
                    if (!String.IsNullOrEmpty(fd.GetValue("EnumKey")))
                    {
                        var enumService = FormulaHelper.GetService <IEnumService>();
                        pdValue = enumService.GetEnumText(fd.GetValue("EnumKey"), pdValue);
                    }
                    if (preFlag)
                    {
                        if (!string.IsNullOrEmpty(pdValue) && !ansestorFolders.Any(a => a.Name == pdValue)) //非空校验处理,成果只有阶段、专业属性情况
                        {
                            addOnDocument = false;                                                          //成果不属于当前分支,继续创建分支
                            break;
                        }
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(pdValue)) //专业下有成果、工作包下也有成果,只有成果的工作包属性是空时,才归档在专业下
                        {
                            addOnDocument = false;
                            break;
                        }
                    }
                    if (fd == folderDefine)
                    {
                        preFlag = false;
                    }
                }
                if (addOnDocument)
                {
                    #region 增加成果至归档目录
                    _archiveProduct(folder, product);
                    #endregion
                }
                else
                {
                    _createProductMappingFolder(folder, folderDefine.GetValue("FieldName"), folderDefines, existFolderList, product, defineInfo);
                }
            }
        }