Newer
Older
GHFX_REFACTOR / FrmShResult.cs
xiaowei on 18 Nov 2016 8 KB 重构一键审核代码
using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using GeoScene.Data;
using GeoScene.Engine;
using GeoScene.Globe;

namespace Cyberpipe
{
    public partial class FrmShResult : Office2007Form
    {
        public string layername;
        private GSOGlobeControl globleControl1;
        int count=0;
        GSOFeature hlfeature = null;
        List<string> m_PipelineLayerNames = new List<string>();
        MainFrm mainfrm;

        public FrmShResult(string _layername, GSOGlobeControl _globleControl1,
            List<string> _PipelineLayerNames)
        {
            layername = _layername;
            globleControl1 = _globleControl1;
            m_PipelineLayerNames = _PipelineLayerNames;

            InitializeComponent();
        }

        void addDataToDataGridView(List<ClassDataTableParam> dt, DataGridView dataGridVeiw)
        {
            for (int i = 0; i < dt.Count; i++)
            {
                int id = dataGridVeiw.Rows.Add();
                dataGridVeiw.Rows[id].Cells[0].Value = dt[i].selectedFeatureCaption;
                dataGridVeiw.Rows[id].Cells[1].Value = dt[i].selectedFeatureName;
                dataGridVeiw.Rows[id].Cells[2].Value = dt[i].targetFeatureCaption;
                dataGridVeiw.Rows[id].Cells[3].Value = dt[i].targetFeatureName;
                dataGridVeiw.Rows[id].Cells[4].Value = dt[i].resultDis;
                dataGridVeiw.Rows[id].Cells[5].Value = dt[i].dis;
            }
        }

        public void analysis()
        {
            mainfrm = (MainFrm)Owner;

            List<ClassDataTableParam> dtV = new List<ClassDataTableParam>();
            List<ClassDataTableParam> dtH = new List<ClassDataTableParam>();

            GSOLayer layer = globleControl1.Globe.Layers.GetLayerByCaption(layername);//审核图层
            if (layer == null) return;
            GSOFeatures feats = layer.GetAllFeatures();
            if (feats == null) return;
            
            for (int i = 0; i < feats.Length; i++)
            {
                ClassYJSHAlgorithm.distanceAnalysis(feats[i], m_PipelineLayerNames, globleControl1,out dtV, out dtH);
                addDataToDataGridView(dtH, dgridShHResult);
                addDataToDataGridView(dtV, dgridShVResult);
            }

            mainfrm.shresultLists = initMainfrmShList();

            recordHistory(dgridShVResult,"V");
            recordHistory(dgridShHResult,"H");
        }

        private ArrayList initMainfrmShList()
        {
            List<string> m_vqLayer = new List<string>();
            List<string> m_hqLayer = new List<string>();
            ArrayList shresultLists = new ArrayList();

            for (int i = 0; i < dgridShVResult.RowCount; i++)
            {
                if (m_vqLayer.Contains(dgridShVResult.Rows[i].Cells[1].Value.ToString())) continue;

                m_vqLayer.Add(dgridShVResult.Rows[i].Cells[1].Value.ToString());
                shresultLists.Add(new ShResult(dgridShVResult.Rows[i].Cells[1].Value.ToString(), "垂直净距不符合要求"));
            }
            for (int i = 0; i < dgridShHResult.RowCount; i++)
            {
                if (m_hqLayer.Contains(dgridShHResult.Rows[i].Cells[1].Value.ToString())) continue;

                m_hqLayer.Add(dgridShHResult.Rows[i].Cells[1].Value.ToString());
                shresultLists.Add(new ShResult(dgridShHResult.Rows[i].Cells[1].Value.ToString(), "水平净距不符合要求"));
            }
            return shresultLists;
        }

        private void recordHistory(DataGridView datagridview,string type)
        {
            String sql = "";
            string now = DateTime.Now.ToString("yyyy-MM-dd");

            if (datagridview.Rows.Count > 0)
            {
                for (int i = 0; i < datagridview.Rows.Count; i++)
                {
                    sql = "insert into casic_audit_result(SH_LAYER,SH_NO,WT_LAYER,WT_NO,DISTANCE," +
                          "KIND,SH_STAFF,SH_TIME) values('"
                          + datagridview.Rows[i].Cells[0].Value + "','"
                          + datagridview.Rows[i].Cells[1].Value + "','"
                          + datagridview.Rows[i].Cells[2].Value + "','"
                          + datagridview.Rows[i].Cells[3].Value + "','"
                          + datagridview.Rows[i].Cells[4].Value + "','" + type + "','"
                          + Utility.userName + "'," + "to_date('" + now + "','yyyy-MM-dd'))";

                    OledbHelper.sqlExecuteNonQuery(sql);
                }
            }
        }

        /// <summary>
        /// 双击后围绕问题对象旋转
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgridShVResult_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex != -1)
            {
                GSOLayer gsoLayer = globleControl1.Globe.Layers.GetLayerByCaption(
                    dgridShVResult.Rows[e.RowIndex].Cells[0].Value.ToString());
                GSOFeatures gsoFeatures = gsoLayer.GetFeatureByName(
                    dgridShVResult.Rows[e.RowIndex].Cells[1].Value.ToString(), false);

                ClassSearchAnalysis.AddMakerToLineFeature(globleControl1, gsoFeatures[0]);
                highlight(gsoFeatures[0]);
            }
        }
        /// <summary>
        /// 双击后围绕问题对象旋转
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgridShHResult_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex != -1)
            {
                GSOLayer gsoLayer = globleControl1.Globe.Layers.GetLayerByCaption(
                    dgridShHResult.Rows[e.RowIndex].Cells[0].Value.ToString());
                GSOFeatures gsoFeatures = gsoLayer.GetFeatureByName(
                    dgridShHResult.Rows[e.RowIndex].Cells[1].Value.ToString(), false);

                ClassSearchAnalysis.AddMakerToLineFeature(globleControl1, gsoFeatures[0]);
                highlight(gsoFeatures[0]);
            }
        }

        public void highlight(GSOFeature feature)
        {
            hlfeature = feature;
            timer1.Start();
        }
        /// <summary>
        /// 使用timer实现管线的闪烁效果
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            GSOFeature rowFeature = hlfeature;
            if (rowFeature == null) return;

            if (count >= 40)
            {
                timer1.Stop();
                rowFeature.HighLight = false;
                count = 0;
            }
            else
            {
                count++;
                if (count%2 != 0)
                {
                    rowFeature.HighLight = true;
                    globleControl1.Refresh();
                }
                else
                {
                    rowFeature.HighLight = false;
                    globleControl1.Refresh();
                }
            }
        }

        private void FrmShResult_FormClosed(object sender, FormClosedEventArgs e)
        {
            mainfrm.boolfrmShResult = false;
            globleControl1.Globe.MemoryLayer.RemoveAllFeature();
            timer1.Stop();
        }

        /// <summary>
        /// 一键审核导出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonExp1_Click(object sender, EventArgs e)
        {
            if (dgridShHResult.Rows.Count <= 0 && dgridShVResult.Rows.Count <= 0)
            {
                MessageBox.Show("表格内容为空!", "提示");
                return;
            }
            string strSaveFile = string.Empty;
            SaveFileDialog savefiledialog = new SaveFileDialog();
            savefiledialog.Filter = "Excel文件|*.xls,*.xlsx";
            savefiledialog.AddExtension = true;
            savefiledialog.FileName = "一键审核" + DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.Hour +
                                      DateTime.Now.Minute + DateTime.Now.Second;
            if (savefiledialog.ShowDialog() != DialogResult.OK) return;
            else strSaveFile = savefiledialog.FileName;

            ExpEXCEL.ExpToExcel(dgridShHResult, dgridShVResult, strSaveFile);
            MessageBox.Show("导出成功!");

        }

    }
}