ExportMap/cs/CommonUtils.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ExportMap/cs/ConvertUtils.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ExportMap/cs/Tools.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ExportMap/db/TaskDBHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ExportMap/export.html | ●●●●● 补丁 | 查看 | 原始文档 | 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>