Exemple #1
0
        /// <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);
            }
        }