/// <summary> /// 找TC的文件位置,如果没有则创建。 /// 如:"10原材料-1011钢材",分隔符为"-",根目录为"XY"。 /// 最终会返回 XY-->10原材料文件夹目录中的1011钢材文件夹。 /// XY /// | /// --10原材料 /// | /// ---1011钢材 /// </summary> /// <param name="FolderName">文件夹路径</param> /// <param name="RootFolder">根目录</param> /// <param name="SplitStr">文件夹路径分隔符</param> /// <returns></returns> public ModelObject findFolder(string FolderName, ModelObject RootFolder, string SplitStr) { ModelObject resul = null; var arry = Regex.Split(FolderName, SplitStr, RegexOptions.IgnoreCase); //取第一层级 var CurrentFolderName = arry[0]; DataManagementService dmService = DataManagementService.getService(Session.getConnection()); dmService.GetProperties(new ModelObject[] { RootFolder }, new string[] { "contents" }); var contents = ((Teamcenter.Soa.Client.Model.Strong.Folder)RootFolder).Contents; for (int i = 0, len = contents.Length; i < len; i++) { if (contents[i].Object_string.Equals(CurrentFolderName) && null != findModel(cfg.get("query_builder_folder_name") , new string[] { cfg.get("query_builder_folder_queryKey1"), cfg.get("query_builder_folder_queryKey2") } , new string[] { CurrentFolderName, "XY_GROUP" })) { resul = contents[i]; break; } } if (null == resul) { //创建文件夹 var cf = new Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateFolderInput(); cf.Name = CurrentFolderName; cf.Desc = @"XY_GROUP"; Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateFoldersResponse cfr = dmService.CreateFolders(new Teamcenter.Services.Strong.Core._2006_03.DataManagement.CreateFolderInput[] { cf }, RootFolder, "child"); resul = cfr.Output[0].Folder; } //如果分组后数组大于1,则递归 if (arry.Length > 1) { arry[0] = ""; string RestStr = string.Join(SplitStr, arry); RestStr = RestStr.Substring(SplitStr.Length, RestStr.Length - SplitStr.Length); return(findFolder(RestStr, resul, SplitStr)); } else { return(resul); } }