/// <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); }
/// <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); } } }
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); } } }
/// <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); }
/// <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(); }
/// <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(); }
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); } } }