private void cmiSatTask_Click(object sender, EventArgs e) { if (Main.MainInterface.SelectedNodeSat == null) //如果未选中任何结点,则显示观测方案管理界面 { MessageBox.Show("请先选择要显示的观测方案下的具体观测任务再进行操作!"); return; } else { try { string tag = Main.MainInterface.SelectedNodeSat.Tag.ToString(); if (tag.StartsWith("S")) //显示观测任务所对应的观测方案信息 { MessageBox.Show("请先选择要显示的观测任务再进行操作!"); } else if (tag.StartsWith("T")) //显示观测任务所对应的观测方案信息 { int id; int.TryParse(Main.MainInterface.SelectedNodeSat.Tag.ToString().Substring(3), out id); Main.Program.SetStatusLabel("正在加载任务... ..."); Core.Model.TASK_LAYOUT_LIST taskLayoutList = new Core.Model.TASK_LAYOUT_LIST(); Core.DAL.TASK_LAYOUT_LIST dal_taskLayoutList = new Core.DAL.TASK_LAYOUT_LIST(); taskLayoutList = dal_taskLayoutList.GetModel(id); //读取并图上显示卫星观测区信息 Core.Map.MapHelper map = new Core.Map.MapHelper(Main.Program.myMap); //map.ClearAllElement(); Coverage.SatelliteResaultHelper.LoadSatelliteTaskArea(map, taskLayoutList); Coverage.SatelliteResaultHelper.PositionTaskArea(Main.Program.myMap, id); } else if (tag.StartsWith("I")) //显示具体的观测结果信息 { int id; int.TryParse(Main.MainInterface.SelectedNodeSat.Tag.ToString().Substring(3), out id); Main.Program.SetStatusLabel("正在加载任务... ..."); Core.Model.TASK_LAYOUT_LIST taskLayoutList = new Core.Model.TASK_LAYOUT_LIST(); Core.DAL.TASK_LAYOUT_LIST dal_taskLayoutList = new Core.DAL.TASK_LAYOUT_LIST(); Core.DAL.ImgLayoutTempTimewindow dal_imgTimeWindow = new Core.DAL.ImgLayoutTempTimewindow(); taskLayoutList = dal_taskLayoutList.GetModel(Convert.ToInt32(dal_imgTimeWindow.GetModel(id.ToString()).TASKID)); //读取并图上显示卫星观测区信息 Core.Map.MapHelper map = new Core.Map.MapHelper(Main.Program.myMap); //map.ClearAllElement(); Coverage.SatelliteResaultHelper.LoadSatelliteTaskArea(map, taskLayoutList); } Main.Program.SetStatusLabel("就绪."); } catch (Exception ex) { MessageBox.Show("错误:" + ex); } } }
/// <summary> /// 加载观测区域列表 /// </summary> /// <param name="pnode"></param> public static void LoadSatelliteResaultList(ESRI.ArcGIS.Controls.AxMapControl pMapCtr, TreeNode pnode, bool timeChecked) { int pid; int.TryParse(pnode.Tag.ToString().Substring(3), out pid); Core.DAL.SatelliteResault dal = new Core.DAL.SatelliteResault(); List <Core.Model.SatelliteResault> list_model = new List <Core.Model.SatelliteResault>(); TreeNode node; try { if (timeChecked) { list_model = dal.GetListByTaskIDTime(pid); } else { list_model = dal.GetListByTaskID(pid); } if (list_model.Count != 0) { pnode.Nodes.Clear(); } foreach (Core.Model.SatelliteResault model in list_model) { Core.Model.ImgLayoutTempTimewindow imgLayoutTempTimewindow = new Core.Model.ImgLayoutTempTimewindow(); Core.DAL.ImgLayoutTempTimewindow dal_imgLayoutTempTimewindow = new Core.DAL.ImgLayoutTempTimewindow(); imgLayoutTempTimewindow = dal_imgLayoutTempTimewindow.GetModel(model.LSTR_SEQID.ToString()); node = new TreeNode(); node.Text = imgLayoutTempTimewindow.STARTTIME.ToString("yyyy-MM-dd HH:mm:ss") + "\\" + imgLayoutTempTimewindow.SAT_STKNAME + "\\" + imgLayoutTempTimewindow.SENSOR_STKNAME; node.Tag = "I1|" + model.LSTR_SEQID;//I--表示观测结果,model.LSTR_SEQID--表示为观测结果ID node.ImageIndex = 4; node.SelectedImageIndex = 5; pnode.Nodes.Add(node); } } catch (Exception ex) { throw (ex); } finally { list_model = null; dal = null; } }
/// <summary> /// 生成word文档订单 /// </summary> /// <param name="path"></param> public void genOrder(string path) { try { Core.Model.TASK_SCHEME_LIST taskSchemeList = new Core.Model.TASK_SCHEME_LIST(); List <Core.Model.TASK_LAYOUT_LIST> taskLayoutList = new List <Core.Model.TASK_LAYOUT_LIST>(); List <Core.Model.ImgLayoutTempTimewindow> resaultList = new List <Core.Model.ImgLayoutTempTimewindow>(); List <Core.Model.Satellite> satelliteList = new List <Core.Model.Satellite>(); Core.DAL.TASK_SCHEME_LIST dal_taskSchemeList = new Core.DAL.TASK_SCHEME_LIST(); Core.DAL.TASK_LAYOUT_LIST dal_taskLayoutList = new Core.DAL.TASK_LAYOUT_LIST(); Core.DAL.ImgLayoutTempTimewindow dal_imgLayoutTempTimewindow = new Core.DAL.ImgLayoutTempTimewindow(); Core.DAL.Satellite dal_satellite = new Core.DAL.Satellite(); Core.DAL.SatelliteSensor dal_satelliteSensor = new Core.DAL.SatelliteSensor(); taskSchemeList = dal_taskSchemeList.GetModel(Convert.ToInt32(schemeid)); taskLayoutList = dal_taskLayoutList.GetList(Convert.ToInt32(schemeid)); string satSchemeName = taskSchemeList.SCHEMENAME; string satSchemeStart = taskSchemeList.SCHEMEBTIME.ToString("yyyy年MM月dd日 HH时mm分ss秒"); string satSchemeEnd = taskSchemeList.SCHEMEETIME.ToString("yyyy年MM月dd日 HH时mm分ss秒"); string taskNum = taskLayoutList.Count.ToString(); string countryText = ""; string timeText = ""; int taskCount = 1; //1.载入模板 Task.WordHelper report = new Task.WordHelper(); report.CreateNewDocument(System.Windows.Forms.Application.StartupPath + @"\\卫星订单模板.doc"); //模板路径 //2.在卫星观测方案处插入值 report.InsertValue("SatScheme", satSchemeName, 11, WdColor.wdColorBlack, 5, WdParagraphAlignment.wdAlignParagraphLeft); //在书签“SatScheme”处插入值 report.InsertValue("SatSchemeStart", satSchemeStart, 11, WdColor.wdColorBlack, 5, WdParagraphAlignment.wdAlignParagraphLeft); //在书签“SatScheme”处插入值 report.InsertValue("SatSchemeEnd", satSchemeEnd, 11, WdColor.wdColorBlack, 5, WdParagraphAlignment.wdAlignParagraphLeft); //在书签“SatScheme”处插入值 report.InsertValue("SatSchemeDetail", taskNum, 11, WdColor.wdColorBlack, 5, WdParagraphAlignment.wdAlignParagraphLeft); //3.在卫星观测任务处插入值,首先创建一个表格 int tableNum = 1; report.InsertValue("SatTask", "表" + tableNum + " 卫星观测任务详情", 11, WdColor.wdColorBlack, 5, WdParagraphAlignment.wdAlignParagraphCenter); //在书签“SatTask”处插入值 Microsoft.Office.Interop.Word.Table tableTask = report.InsertTable("SatTask", 2, 4, 0); //在书签“Bookmark_table”处插入2行4列行宽最大的表 //合并单元格 report.MergeCell(tableTask, 1, 1, 1, 4); //表名,开始行号,开始列号,结束行号,结束列号 //在单元格中插入值 report.InsertCell(tableTask, 1, 1, satSchemeName); //表名,行号,列号,值 //给表格插入一行数据 string[] values = { "任务名称", "开始时间", "结束时间", "目标类型" }; report.InsertCell(1, 2, 4, values); //给模板中第一个表格的第二行的4列分别插入数据 int rowNum = 3; //设置进度条 tempProgressBar.Refresh(); tempProgressBar.Visible = true; tempProgressBar.Minimum = 1; tempProgressBar.Maximum = (dataGridViewTimewindow.RowCount * taskLayoutList.Count * 2); tempProgressBar.Step = 1; foreach (Core.Model.TASK_LAYOUT_LIST tll in taskLayoutList) { string[] tasks = new string[4]; tasks[0] = tll.TASKNAME; tasks[1] = tll.STARTTIME.ToString("yyyy-MM-dd HH:mm:ss"); tasks[2] = tll.ENDTIME.ToString("yyyy-MM-dd HH:mm:ss"); tasks[3] = tll.TASKTYPE == 1 ? "区域目标" : "点目标:(" + tll.LON + "," + tll.LAT + ")"; report.AddRow(tableTask); //表名 report.InsertCell(1, rowNum, 4, tasks); //给模板中第一个表格的第三行的4列分别插入数据 rowNum++; //4.在卫星观测结果处插入值 #region 插入统计信息 #region 获取按国家排序的统计信息 //子标题 countryText += "(" + taskCount + ") " + tll.TASKNAME + "\r\n"; //查询卫星条件 strwhere = "SAT_ID IN (0,"; //查询当前任务id string taskid = ""; //遍历dataGridView,获取选中数据的卫星id,存入查询卫星条件 for (int row = 0; row <= dataGridViewTimewindow.RowCount - 1; row++) { tempProgressBar.PerformStep(); taskid = dataGridViewTimewindow.Rows[row].Cells["TASK_ID"].Value.ToString().Trim(); if (((DataGridViewCheckBoxCell)dataGridViewTimewindow.Rows[row].Cells[15]).Value != null && (bool)((DataGridViewCheckBoxCell)dataGridViewTimewindow.Rows[row].Cells[15]).Value && taskid == tll.TASKID.ToString()) { strwhere += dataGridViewTimewindow.Rows[row].Cells["SATID"].Value.ToString().Trim() + ","; } } strwhere = strwhere.Substring(0, strwhere.Length - 1); strwhere += ")"; strwhere += " ORDER BY SAT_COUNTRY,SAT_SHORTNAME"; //获取卫星列表 satelliteList = dal_satellite.GetList(strwhere); //临时国家标记,用于标记顺序遍历时国家是否变化 string countryName = ""; //遍历卫星列表,给插入值赋值 foreach (Core.Model.Satellite satellite in satelliteList) { if (countryName != satellite.SAT_COUNTRY) { countryName = satellite.SAT_COUNTRY; countryText += countryName + ":\r\n"; } countryText += " " + satellite.SAT_SHORTNAME + "\r\n"; } #endregion 获取按国家排序的统计信息 #region 获取按时间的统计信息 timeText += "(" + taskCount + ")" + tll.TASKNAME + "\r\n"; strwhere = "LSTR_SEQID IN (0,"; //遍历dataGridView,获取选中数据的卫星id,存入查询卫星条件 for (int row = 0; row <= dataGridViewTimewindow.RowCount - 1; row++) { tempProgressBar.PerformStep(); if (((DataGridViewCheckBoxCell)dataGridViewTimewindow.Rows[row].Cells[15]).Value != null && (bool)((DataGridViewCheckBoxCell)dataGridViewTimewindow.Rows[row].Cells[15]).Value) { strwhere += dataGridViewTimewindow.Rows[row].Cells[0].Value.ToString().Trim() + ","; } } strwhere = strwhere.Substring(0, strwhere.Length - 1); strwhere += ")"; //获取时间窗口列表 resaultList = dal_imgLayoutTempTimewindow.GetListByTaskID(tll.TASKID, strwhere, "STARTTIME, SAT_STKNAME"); //临时国家标记,用于标记顺序遍历时国家是否变化 string timeDate = ""; //遍历卫星列表,给插入值赋值 foreach (Core.Model.ImgLayoutTempTimewindow resault in resaultList) { if (timeDate != resault.STARTTIME.ToShortDateString()) { timeDate = resault.STARTTIME.ToShortDateString(); timeText += timeDate + ":\r\n"; } timeText += " " + resault.SAT_STKNAME + "\r\n"; } #endregion 获取按时间的统计信息 taskCount++; #endregion 插入统计信息 #region 插入卫星任务规划表格 /*** * //按照卫星名称分类 * tableNum++;//表格计数加一 * report.InsertValue("SatResault" + (tableNum - 1).ToString(), "\r\n", 11, WdColor.wdColorBlack, 5, WdParagraphAlignment.wdAlignParagraphCenter); * report.InsertValue("SatResault" + (tableNum - 1).ToString(), "表" + tableNum + " " + tll.TASKNAME + "(按卫星名称排序)", 11, WdColor.wdColorBlack, 5, WdParagraphAlignment.wdAlignParagraphCenter);//在书签“SatResault”处插入值 * Table tableResault = report.InsertTable("SatResault" + (tableNum - 1).ToString(), 1, 9, 0); //在书签“SatResault”处插入1行9列行宽最大的表 * * //给表格插入一行数据 * string[] resaultValues = { "序号","卫星名称", "载荷名称", "开始时间", "结束时间", "时长(秒)", "倾斜角度(度)", "分辨率(米)", "灾后时间" }; * report.InsertCell(tableNum, 1, 9, resaultValues); //给模板中第一个表格的第二行的4列分别插入数据 * int tableResaultNum = 1;//表格行数计数 * //获取卫星观测结果列表 * resaultList = dal_imgLayoutTempTimewindow.GetListByTaskID(Convert.ToInt32(tll.TASKID), strwhere, "SAT_STKNAME,STARTTIME"); * * * //给观测结果表格填充内容 * foreach (Core.Model.ImgLayoutTempTimewindow iltt in resaultList) * { * tempProgressBar.PerformStep(); * report.AddRow(tableNum, 1); * string[] resault = new string[9]; * resault[0] = tableResaultNum.ToString(); * resault[1] = dal_satellite.GetModel(iltt.SATID).SAT_SHORTNAME; * resault[2] = dal_satelliteSensor.GetModel(iltt.SENSOR_ID.ToString()).SENSOR_NAME; * resault[3] = iltt.STARTTIME.ToString(); * resault[4] = iltt.ENDTIME.ToString(); * resault[5] = iltt.TIMELONG.ToString(); * resault[6] = iltt.SANGLE.ToString(); * resault[7] = iltt.GSD.ToString(); * resault[8] = Convert.ToString(iltt.STARTTIME - tll.STARTTIME); * tableResaultNum++; * report.InsertCell(tableNum, tableResaultNum, 9, resault); * } * //按照时间顺序分类 * tableNum++;//表格计数加一 * report.InsertValue("SatResault" + (tableNum - 1).ToString(), "\r\n", 11, WdColor.wdColorBlack, 5, WdParagraphAlignment.wdAlignParagraphCenter); * report.InsertValue("SatResault" + (tableNum - 1).ToString(), "表" + tableNum + " " + tll.TASKNAME + "(按时间排序)", 11, WdColor.wdColorBlack, 5, WdParagraphAlignment.wdAlignParagraphCenter);//在书签“SatResault”处插入值 * Table tableResault2 = report.InsertTable("SatResault" + (tableNum - 1).ToString(), 1, 9, 0); //在书签“SatResault”处插入1行8列行宽最大的表 * * //给表格插入一行数据 * string[] resaultValues2 = { "序号", "卫星名称", "载荷名称", "开始时间", "结束时间", "时长(秒)", "倾斜角度(度)", "分辨率(米)", "灾后时间" }; * report.InsertCell(tableNum, 1, 9, resaultValues); //给模板中第一个表格的第二行的4列分别插入数据 * int tableResaultNum2 = 1;//表格行数计数 * //获取卫星观测结果列表 * resaultList = dal_imgLayoutTempTimewindow.GetListByTaskID(Convert.ToInt32(tll.TASKID), strwhere,"STARTTIME"); * //给观测结果表格填充内容 * foreach (Core.Model.ImgLayoutTempTimewindow iltt in resaultList) * { * tempProgressBar.PerformStep(); * report.AddRow(tableNum, 1); * string[] resault = new string[9]; * resault[0] = tableResaultNum2.ToString(); * resault[1] = dal_satellite.GetModel(iltt.SATID).SAT_SHORTNAME; * resault[2] = dal_satelliteSensor.GetModel(iltt.SENSOR_ID.ToString()).SENSOR_NAME; * resault[3] = iltt.STARTTIME.ToString(); * resault[4] = iltt.ENDTIME.ToString(); * resault[5] = iltt.TIMELONG.ToString(); * resault[6] = iltt.SANGLE.ToString(); * resault[7] = iltt.GSD.ToString(); * resault[8] = Convert.ToString(iltt.STARTTIME - tll.STARTTIME); * tableResaultNum2++; * report.InsertCell(tableNum, tableResaultNum2, 9, resault); * } ***/ #endregion 插入卫星任务规划表格 } report.InsertValue("SatResaultCountry", countryText, 11, WdColor.wdColorBlack, 1, WdParagraphAlignment.wdAlignParagraphLeft); //在书签“SatResaultCountry”处插入值 report.InsertValue("SatResaultTime", timeText, 11, WdColor.wdColorBlack, 1, WdParagraphAlignment.wdAlignParagraphLeft); //在书签“SatResaultCountry”处插入值 //隐藏进度条 tempProgressBar.Visible = false; //5.最后保存文档 //string path = Server.MapPath(p_SavePath) + "\\Testing_" + DateTime.Now.ToShortDateString() + ".doc"; path += "\\" + satSchemeName + "规划结果" + DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒") + ".doc"; report.SaveDocument(path); MessageBox.Show("订单生成成功!"); } catch (System.Exception ex) { MessageBox.Show("订单生成失败!失败原因:" + ex.ToString()); } }