Newer
Older
GHFX_REFACTOR / FrmBSQStatis.cs
wxn on 4 Nov 2016 6 KB 标识器全区域统计
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Data.SqlClient;
using GeoScene.Data;
using GeoScene.Engine;
using GeoScene.Globe;
using System.Windows.Forms.DataVisualization.Charting;
using System.Data.OracleClient;

namespace Cyberpipe
{
    public partial class FrmBSQStatis : Office2007Form
    {
        public Dictionary<string, int> bsq = new Dictionary<string, int>();
        //SqlConnection conn;
        //public static List<typeList> typeLists;
        OracleConnection conn;
        string connectString;

        public FrmBSQStatis()
        {
            InitializeComponent();
            bsq = getBSQNameAndNumMap(null);
            //BSQNumStatis();
        }
        string[] codeStr = new string[50];
        string[] nameStr = new string[30];
        public static List<string> pipeLists = new List<string>();
 
        //private void BSQNumStatis()
        //{
        //    bool flag2 = false;
        //    for (int i = 0; i < Utility.listPipelineType.Count; i++)
        //    {

        //        for (int j = 0; j < pipeLists.Count; j++)
        //        {
        //            if (pipeLists[j] == Utility.listPipelineType[i].type)
        //            {
        //                flag2 = true;
        //                break;
        //            }
        //        }
        //        if (!flag2 && Utility.listPipelineType[i].type != "标识器")
        //        {
        //            pipeLists.Add(Utility.listPipelineType[i].type);
        //        }
        //        flag2 = false;
        //    }

        //    typeLists = new List<typeList>();
        //    for (int num = 0; num <pipeLists.Count; num++)
        //    {
        //        typeList ls = new typeList(0,pipeLists[num]);
        //        typeLists.Add(ls);
        //    }

        //    try
        //    {
        //        conn = OledbHelper.sqlConnection();
        //        conn.Open();
        //        OracleCommand cmd;
        //        cmd = new OracleCommand("select 对象名称 from 标识器", conn);
        //        OracleDataReader dr = cmd.ExecuteReader();
        //        bsq.Clear();

        //        while (dr.Read())
        //        {
        //            string str =Convert.ToString(dr["对象名称"]);
        //            codeStr = str.Split(',');
        //            for(int n=0;n<codeStr.Length;n++)
        //            {
        //               for (int i = 0; i < Utility.listPipelineType.Count; i++)
        //               {
        //                   if (Utility.listPipelineType[i].code == codeStr[n])
        //                   {
        //                       for (int m = 0; m < typeLists.Count; m++)
        //                       {
        //                           if (Utility.listPipelineType[i].type == typeLists[m].type)
        //                           {
        //                               typeLists[m].num++;
        //                               break;
        //                           }
        //                       }
        //                       break;
        //                   }
        //                }
        //            }
        //        }
        //        conn.Close();
        //        for (int i = 0; i < typeLists.Count; i++)
        //        {
        //            if (typeLists[i].num > 0)
        //                bsq.Add(typeLists[i].type, typeLists[i].num);
        //        }

        //    }
        //    catch (Exception ex)
        //    {

        //    }
        //}

        private void FrmBSQStatis_Load(object sender, EventArgs e)
        {
            
            try
            {
                chartStatis.Series.Add("标识器");
                chartStatis.ChartAreas["ChartArea1"].AxisX.Title = "标识器类型";
                chartStatis.ChartAreas["ChartArea1"].AxisY.Title = "标识器个数";
                chartStatis.ChartAreas["ChartArea1"].AxisX.Interval = 1;
                chartStatis.Series[0].ChartType = SeriesChartType.Column;

                chartStatis.Series[0]["DrawingStyle"] = "Cylinder";

                chartStatis.Series[0].Points.DataBindXY(bsq.Keys, bsq.Values);

                for (int m = 0; m < bsq.Values.Count; m++)
                {
                    if (chartStatis.Series[0].Points[m].YValues[0].ToString().Trim() != "0")
                    {
                        chartStatis.Series[0].Points[m].Label = chartStatis.Series[0].Points[m].YValues[0].ToString();
                    }
                }

            }
            catch (Exception ex)
            {
            }
        }

        //public class typeList
        //{
        //    public int num;
        //    public string type;

        //    public typeList(int _num, string _type)
        //    {
        //        num = _num;
        //        type = _type;
        //    }
        //}


        private Dictionary<string, int> getBSQNameAndNumMap(GSOGeoPolygon3D polygon)
        {

            Dictionary<string, int> result = new Dictionary<string, int>();
            Dictionary<string, string> codeAndType = new Dictionary<string, string>();
            //得到type的种类
            for (int i = 0; i < Utility.listPipelineType.Count; i++)
            {
                if (!result.ContainsKey(Utility.listPipelineType[i].type) && Utility.listPipelineType[i].type != "标识器")
                {
                    result.Add(Utility.listPipelineType[i].type, 0);
                    codeAndType.Add(Utility.listPipelineType[i].code, Utility.listPipelineType[i].type);
                } 

            }

            try
            {
                conn = OledbHelper.sqlConnection();
                conn.Open();
                OracleCommand cmd;
                cmd = new OracleCommand("select 对象类型 from 标识器", conn);
                OracleDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    string str = Convert.ToString(dr["对象类型"]);
                    if (str == null) continue;
                    foreach (string key in codeAndType.Keys)
                    {
                        if (str.Contains(key)) {
                            result[codeAndType[key]] += 1;
                        }
                    }
                }
                conn.Close();
            }
            catch (Exception ex)
            {

            }
            return result;
        }

    }
}