管道基础大数据平台系统开发-【CS】-ExportMap
13693261870
2023-10-23 2fd93008d2ce0052353e5016f2c15d1890ffd2e6
ExportMap/cs/TBUtils.cs
@@ -41,6 +41,8 @@
            }
        }
        private static bool isBusy = false;
        /// <summary>
        /// 创建Mpt
        /// </summary>
@@ -50,6 +52,9 @@
            try
            {
                if (isBusy) throw new Exception("已有一个生成Mpt的任务正在执行");
                isBusy = true;
                string targetPath = Path.Combine(Tools.TempDir, time);
                if (!Directory.Exists(targetPath)) Directory.CreateDirectory(targetPath);
@@ -59,23 +64,21 @@
                string cmd = string.Format("\"C:\\Program Files\\Skyline\\TerraBuilder\\TerraBuilder.exe\" -script \"{0}\"", js); // -DisablePrint
                ReloadTB();
                err = Tools.ExecCmd(cmd, false, false);
                if (File.Exists(MptPath))
                {
                    return MoveMpt(MptPath, sourcePath);
                }
                err = Tools.ExecCmdForWin(new List<string> { cmd });
                isBusy = false;
                return null;
                return File.Exists(MptPath) ? MoveMpt(MptPath, sourcePath) : null;
            }
            catch (Exception ex)
            {
                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
                err = ex.Message;
                isBusy = false;
                return null;
            }
            finally
            {
                ending(time);
                ending(time, sourcePath);
            }
        }
@@ -97,15 +100,16 @@
        /// </summary>
        private static void MoveFilesToTemp(string sourcePath, string targetPath)
        {
            CopyFolder(Path.Combine(sourcePath, "数字正射影像图"), Path.Combine(targetPath, "img"));
            CopyFolder(Path.Combine(sourcePath, "数字高程模型"), Path.Combine(targetPath, "dem"));
            CopyFolder(Path.Combine(sourcePath, "中线裁剪范围"), Path.Combine(targetPath, "shp"));
            LogOut.Info("TB.移动文件 -> " + sourcePath);
            MoveFolder(Path.Combine(sourcePath, "数字正射影像图"), Path.Combine(targetPath, "img"));
            MoveFolder(Path.Combine(sourcePath, "数字高程模型"), Path.Combine(targetPath, "dem"));
            MoveFolder(Path.Combine(sourcePath, "中线裁剪范围"), Path.Combine(targetPath, "shp"));
        }
        /// <summary>
        /// 复制目录
        /// 移动目录
        /// </summary>
        private static void CopyFolder(string sourcePath, string targetPath)
        private static void MoveFolder(string sourcePath, string targetPath)
        {
            if (!Directory.Exists(targetPath)) Directory.CreateDirectory(targetPath);
@@ -161,10 +165,10 @@
        {
            List<string> list = new List<string>();
            list.Add("taskkill /f /t /im TerraBuilder.exe");
            list.Add("taskkill /f /t /im TBFuser.exe");
            list.Add("start /d \"C:\\Program Files\\Skyline\\TerraBuilder Fuser\" TBFuser.exe");
            //list.Add("taskkill /f /t /im TBFuser.exe");
            //list.Add("start /d \"C:\\Program Files\\Skyline\\TerraBuilder Fuser\" TBFuser.exe /b");
            Tools.ExecCmd(list, false);
            Tools.ExecCmd(list);
        }
        /// <summary>
@@ -191,19 +195,36 @@
        /// <summary>
        /// 收尾工作
        /// </summary>
        private static void ending(string time)
        private static void ending(string time, string sourcePath)
        {
            try
            {
                string targetPath = Path.Combine(Tools.TempDir, time);
                if (!Directory.Exists(targetPath)) return;
                string path = Path.Combine(Tools.TempDir, time);
                if (!Directory.Exists(path)) return;
                //
                string img = GetFilePath(Path.Combine(path, "img"), "*.tif");
                if (null != img) MoveFile(img, Path.Combine(sourcePath, "数字正射影像图"));
                string dem = GetFilePath(Path.Combine(path, "dem"), "*.tif");
                if (null != dem) MoveFile(dem, Path.Combine(sourcePath, "数字高程模型"));
                MoveFolder(Path.Combine(path, "shp"), Path.Combine(sourcePath, "中线裁剪范围"));
                Directory.Delete(path, true);
            }
            catch (Exception ex)
            {
                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
            }
        }
        /// <summary>
        /// 移动文件
        /// </summary>
        private static void MoveFile(string file, string targetPath)
        {
            FileInfo fi = new FileInfo(file);
            File.Move(file, Path.Combine(targetPath, fi.Name));
        }
    }
}