管道基础大数据平台系统开发-【CS】-ExportMap
1
13693261870
2023-08-03 2e2f1f542db7d709813efd6dcce14e3bc076bfa0
1
已修改5个文件
111 ■■■■■ 文件已修改
ExportMap/cs/CommonUtils.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/ConvertUtils.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/Tools.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/db/TaskDBHelper.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/export.html 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/CommonUtils.cs
@@ -61,10 +61,16 @@
                {
                    if (ip != task.ip || task.status > 1) continue;
                    task.err = KillProcess(task.id);
                    task.status = 3;
                    task.update_user = args.userId;
                    TaskDBHelper.Update(task);
                    list.Add(task.id);
                    task.err = KillProcess(task.pid);
                    if (!string.IsNullOrEmpty(task.err))
                    {
                        TaskDBHelper.Update(task);
                    }
                }
            }
            catch (Exception ex)
@@ -85,7 +91,7 @@
            string cmd = string.Format("taskkill /f /t /pid {0}", processId);
            list.Add(cmd);
            return Tools.ExecCmd(list, false);
            return Tools.ExecCmd(list);
        }
    }
}
ExportMap/cs/ConvertUtils.cs
@@ -100,13 +100,18 @@
                // 让组件无限期地等待关联进程退出
                p.WaitForExit();
                task.status = 2;
                TaskDBHelper.Update(task);
                task = TaskDBHelper.SelectById(task.id);
                if (null != task && task.status < 2)
                {
                    task.status = 2;
                    TaskDBHelper.Update(task);
                }
            }
            catch (Exception ex)
            {
                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
                if (task.id > 0 && task.status < 2)
                task = TaskDBHelper.SelectById(task.id);
                if (null != task && task.status < 2)
                {
                    task.err = ex.Message;
                    task.status = 4;
@@ -118,7 +123,6 @@
                if (p != null)
                {
                    p.Close();
                    p.Dispose();
                    p = null;
                }
            }
ExportMap/cs/Tools.cs
@@ -166,9 +166,12 @@
        /// <summary>
        /// 执行CMD
        /// </summary>
        /// <param name="task">任务</param>
        /// <param name="cmd">命令行</param>
        /// <param name="isPy">是否为QGIS Py脚本</param>
        /// <param name="isOut">是否输出错误</param>
        /// <returns>执行结果或出错信息</returns>
        public static string ExecCmd(string cmd, bool isPy = false, bool isOut = false)
        public static string ExecCmd(SysTask task, string cmd, bool isPy = false, bool isOut = false)
        {
            List<string> list = new List<string>();
            if (isPy)
@@ -180,7 +183,7 @@
            }
            list.Add(cmd);
            string str = ExecCmd(list, isOut);
            string str = ExecCmd(task, list, isOut);
            return str;
        }
@@ -188,9 +191,11 @@
        /// <summary>
        /// 执行CMD
        /// </summary>
        /// <param name="task">任务</param>
        /// <param name="list">命令集合</param>
        /// <param name="isOut">是否输出错误</param>
        /// <returns>执行结果或出错信息</returns>
        public static string ExecCmd(List<string> list, bool isOut = false)
        public static string ExecCmd(SysTask task, List<string> list, bool isOut = false)
        {
            string str = null;
            try
@@ -204,6 +209,8 @@
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardError = true;
                p.Start();
                //p.Id;
                StreamWriter si = p.StandardInput; // 标准输入流 
                StreamReader so = isOut ? p.StandardOutput : null; // 标准输出流 
@@ -239,6 +246,56 @@
        }
        /// <summary>
        /// 执行命令
        /// </summary>
        /// <param name="list">命令集合</param>
        public static string ExecCmd(List<string> list)
        {
            string str = null;
            Process p = null;
            try
            {
                p = new Process();
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardError = true;
                p.Start();
                StreamWriter si = p.StandardInput;
                StreamReader se = p.StandardError;
                LogOut.Info("cmd = " + string.Join(",", list));
                si.AutoFlush = true;
                foreach (string cmd in list)
                {
                    si.WriteLine(cmd);
                }
                si.WriteLine("exit");
                str = se.ReadToEnd();
                se.Close();
                si.Close();
            }
            catch (Exception ex)
            {
                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
                str = ex.Message;
            }
            finally
            {
                if (p != null)
                {
                    p.Close();
                    p = null;
                }
            }
            return str;
        }
        /// <summary>
        /// 创建数据发布类
        /// </summary>
        public static SysPublish NewPublish(SysMeta meta, XYZArgs args, string url, string path)
ExportMap/db/TaskDBHelper.cs
@@ -12,13 +12,26 @@
    public class TaskDBHelper
    {
        /// <summary>
        /// 根据ID查询
        /// </summary>
        public static SysTask SelectById(int id)
        {
            string sql = string.Format("select * from lf.sys_task where id = {0} order by id desc", id);
            DataTable dt = Tools.DBHelper.GetDataTable(sql);
            List<SysTask> list = ModelHandler.FillModel<SysTask>(dt);
            return null == list || list.Count == 0 ? null : list[0];
        }
        /// <summary>
        /// 根据ID集合查询
        /// </summary>
        public static List<SysTask> SelectByIds(List<int> ids)
        {
            string sql = string.Format("select * from lf.sys_task where id in ({0}) order by id desc", string.Join(",", ids.ToArray()));
            DataTable dt = SQLiteHelper.GetDataTable(sql);
            DataTable dt = Tools.DBHelper.GetDataTable(sql);
            List<SysTask> list = ModelHandler.FillModel<SysTask>(dt);
            return list;
ExportMap/export.html
@@ -177,6 +177,15 @@
        console.log(rs);
      });
    }
    // 结束任务
    function deleteTask() {
      var data = { token: token, ids: [$("#taskId").val()], dircode: "00" };
      ajax("Convert/DeleteTask", "POST", JSON.stringify(data), null, null, function (rs) {
        alert("code = " + rs.code + ", msg = " + rs.msg + ", result = " + rs.result);
        console.log(rs);
      });
    }
  </script>
</head>
<body>
@@ -205,5 +214,7 @@
  <br /><br />
  
  <input type="button" value="读取Las坐标系" onclick="ReadLasCs();" />
  <input id="taskId" value="0" />
  <input type="button" value="结束任务" onclick="deleteTask();" />
</body>
</html>