管道基础大数据平台系统开发-【CS】-ExportMap
13693261870
2023-08-21 8482a6fef58c0d699795435ef525a8f188e502a1
ExportMap/cs/Tools.cs
@@ -60,7 +60,7 @@
            {
                if (null == _dbHelper)
                {
                    _dbHelper = new PostgreHelper(DbEnum.langfang);
                    _dbHelper = new PostgreHelper();
                }
                return _dbHelper;
@@ -171,7 +171,7 @@
        /// <param name="isPy">是否为QGIS Py脚本</param>
        /// <param name="isOut">是否输出错误</param>
        /// <returns>执行结果或出错信息</returns>
        public static string ExecCmd(SysTask task, string cmd, bool isPy = false)
        public static string ExecCmd(SysTask task, string cmd, bool isPy = false, bool isOut = false)
        {
            List<string> list = new List<string>();
            if (isPy)
@@ -183,7 +183,7 @@
            }
            list.Add(cmd);
            string str = ExecCmd(task, list);
            string str = ExecCmd(task, list, isOut);
            return str;
        }
@@ -195,7 +195,7 @@
        /// <param name="list">命令集合</param>
        /// <param name="isOut">是否输出错误</param>
        /// <returns>执行结果或出错信息</returns>
        public static string ExecCmd(SysTask task, List<string> list)
        public static string ExecCmd(SysTask task, List<string> list, bool isOut = false)
        {
            string str = null;
            try
@@ -206,12 +206,15 @@
                p.StartInfo.CreateNoWindow = true;
                //p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardOutput = isOut;
                p.StartInfo.RedirectStandardError = true;
                p.Start();
                task.pid = p.Id;
                task.id = TaskDBHelper.Insert(task);
                StreamWriter si = p.StandardInput; // 标准输入流 
                //StreamReader so = isOut ? p.StandardOutput : null; // 标准输出流
                StreamReader so = isOut ? p.StandardOutput : null; // 标准输出流
                StreamReader se = p.StandardError; // 标准错误流
                LogOut.Info("cmd = " + string.Join(",", list));
@@ -222,15 +225,22 @@
                }
                si.WriteLine("exit");
                //string info = null == so ? null : so.ReadToEnd();
                string info = null == so ? null : so.ReadToEnd();
                str = se.ReadToEnd();
                //if (!string.IsNullOrEmpty(info)) LogOut.Debug(info);
                if (!string.IsNullOrEmpty(str)) LogOut.Error(str);
                if (!string.IsNullOrEmpty(str) && !str.Contains("@jit(cache=True, nogil=True)")) LogOut.Error(str);
                if (p.HasExited == false) p.Kill();
                task = TaskDBHelper.SelectById(task.id);
                if (null != task && task.status < 2)
                {
                    task.status = 2;
                    TaskDBHelper.Update(task);
                }
                if (null != so) so.Close();
                se.Close();
                //so.Close();
                si.Close();
                p.Close();
            }
@@ -238,6 +248,13 @@
            {
                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
                str = ex.Message;
                task = TaskDBHelper.SelectById(task.id);
                if (null != task && task.status < 2)
                {
                    task.err = ex.Message;
                    task.status = 4;
                    TaskDBHelper.Update(task);
                }
            }
            return str;