Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        /// <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;
            }
        }
Ejemplo n.º 3
0
        /// <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());
            }
        }