Newer
Older
EMS_REFACTOR / FrmHotFuncStat.cs
nn-203 on 26 Jul 2017 12 KB first commit
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using Cyberpipe.HFS_logicfile;
using DevComponents.DotNetBar;

namespace Cyberpipe
{
    public partial class FrmHotFuncStat : Office2007Form
    {
        List<string> funcNames = new List<string>();
        List<string> funcGroupNames = new List<string>(); 
        List<string> xData = new List<string>();
        List<int> yData = new List<int>();

        Image img1;
        Image img2;
        Image img3;
        HFS_Affair HFSClass = new HFS_Affair();//实例化ModuleClass文件夹下的FrmAffairClass公共类.

        public FrmHotFuncStat()
        {
            InitializeComponent();
            //加载人员列表
            loadUsers();
            //初始化功能分类
            initFunctions();
            //初始化统计一周内的热点功能
            statHotFuncInit();
        }
        //初始化功能分类
        private void initFunctions() { 
            funLists.Items.Clear();

            funLists.Items.Add("全部");
            funLists.SelectedItem = "全部";
            funLists.Items.Add("基础管理");
            funLists.Items.Add("一键审核");
            funLists.Items.Add("红线审核");
            funLists.Items.Add("双屏对比");
            funLists.Items.Add("模拟设计");
            funLists.Items.Add("数据处理");
            funLists.Items.Add("查询统计");
        }

        //加载用户列表
        private void loadUsers()
        {
            userLists.Items.Clear();

            userLists.Items.Add("全部");
            userLists.SelectedItem = "全部";
            string sql = "select casic_userinfotest.\"USERNAME\" from casic_userinfotest";

            DataTable table = OledbHelper.QueryTable(sql);

            if (table == null) return;
            for (int i = 0; i < table.Rows.Count; i++)
            {
                userLists.Items.Add(table.Rows[i][0].ToString());
            }
        }
        //统计结果
        private void statBtn_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            dataGridView1.ReadOnly = true;
            //统计操作 
            string sqloper = "";

            if (funLists.Text != "全部")
            {
                sqloper = "select casic_funclist.\"OPERNAME\" from casic_funclist join casic_loginfo on"
                + " casic_funclist.\"OPERID\"=casic_loginfo.\"LOGOPER\" where casic_loginfo.\"LOGDATE\""
                + " between to_date('" + datetime1.Value.ToString("yyyy-MM-dd") + "','yyyy-MM-dd') and "
                + " to_date('" + datetime2.Value.ToString("yyyy-MM-dd") + "','yyyy-MM-dd')";
                if (userLists.Text != "全部")
                {
                    sqloper += " and casic_loginfo.\"LOGUSERNAME\" = '" + userLists.Text + "'";
                } 
                sqloper += " and casic_funclist.\"OPERGROUP\" = '" + funLists.Text + "'";
                sqloper += " group by casic_funclist.\"OPERNAME\"";
            }
            else {
                sqloper = "select casic_funclist.\"OPERGROUP\" from casic_funclist join casic_loginfo on"
                    + " casic_funclist.\"OPERID\"= casic_loginfo.\"LOGOPER\" where casic_loginfo.\"LOGDATE\""
                    + " between to_date('" + datetime1.Value.ToString("yyyy-MM-dd") + "','yyyy-MM-dd') and "
                    + " to_date('" + datetime2.Value.AddDays(1).ToString("yyyy-MM-dd") + "','yyyy-MM-dd')";
                
                if (userLists.Text != "全部")
                {
                    sqloper += " and casic_loginfo.\"LOGUSERNAME\" = '" + userLists.Text + "'";
                }
                sqloper += " group by casic_funclist.\"OPERGROUP\"";

            } 
            DataTable table = OledbHelper.QueryTable(sqloper);

            funcNames.Clear();
            int recount = table.Rows.Count;
            if (table != null)
            {
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    funcNames.Add(table.Rows[i][0].ToString());
                    // MessageBox.Show(table.Rows[i][0].ToString());
                }
            }

            Dictionary<string, int> dic = new Dictionary<string, int>();

            //遍历每一个功能,获得其个数 
            for (int i = 0; i < recount; i++)
            { 
                DataGridViewRow row = new DataGridViewRow();

                int index = dataGridView1.Rows.Add(row);
                row = dataGridView1.Rows[index];
                row.Cells["Column1"].Value = funcNames[i];
                int count = 0;
                if (funLists.Text != "全部")
                {
                    count = getCountByName(funcNames[i], datetime1.Value.ToString("yyyy-MM-dd"), datetime2.Value.AddDays(1).ToString("yyyy-MM-dd"), userLists.Text);
                }
                else {
                    count = getCountByGroupName(funcNames[i], datetime1.Value.ToString("yyyy-MM-dd"), datetime2.Value.AddDays(1).ToString("yyyy-MM-dd"), "全部");
                }
                
                row.Cells["Column2"].Value = count.ToString();

                // xData.Add(funcNames[i]);
                // yData.Add(count);
                dic.Add(row.Cells["Column1"].Value.ToString(), count);
            }

            //绘图表
            if (chart1.Series.Count > 0)
            {
                chart1.Series.Clear();
            }
            if (chart1.Legends.Count > 0)
            {
                chart1.Legends.Clear();
            }
            for (int i = 0; i < funcNames.Count; i++)
            {
                chart1.Legends.Add(funcNames[i]);
                chart1.Legends[i].Docking = Docking.Bottom;
            } 

            chart1.Series.Add("功能");
             
            chart1.Series["功能"].ChartType = SeriesChartType.Pie;
            chart1.Series["功能"]["DrawingStyle"] = "";
            chart1.Series["功能"]["PieLabelStyle"] = "outside";
            chart1.Series["功能"]["PieLineColor"] = "black";
            chart1.Series["功能"].IsValueShownAsLabel = true;

            ArrayList xlist = new ArrayList();
            ArrayList ylist = new ArrayList();

            foreach (string key in dic.Keys)
            {
                if (dic[key] != 0)
                {
                    xlist.Add(key);
                    ylist.Add(dic[key]);
                }
            } 
            chart1.Series["功能"].Points.DataBindXY(xlist, ylist);
        }

        //初始化统计
        private void statHotFuncInit() {
            dataGridView1.ReadOnly = true;
            dataGridView1.Rows.Clear();
             
            //MessageBox.Show(datetime1.Value.ToString());
            //统计操作
            string sqloper =  "select casic_funclist.\"OPERGROUP\" from casic_funclist join casic_loginfo on"
                + " casic_funclist.\"OPERID\"=casic_loginfo.\"LOGOPER\" where casic_loginfo.\"LOGDATE\" between"
                + " to_date('"+datetime2.Value.AddDays(-6).ToString("yyyy-MM-dd")+"','yyyy-MM-dd') and "
                + " to_date('"+datetime2.Value.AddDays(1).ToString("yyyy-MM-dd")+"','yyyy-MM-dd')"
                + " group by casic_funclist.\"OPERGROUP\"";
            DataTable table = OledbHelper.QueryTable(sqloper);

            funcNames.Clear();
            int recount =  table.Rows.Count;
            if (table != null)
            {
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    funcNames.Add(table.Rows[i][0].ToString());
                }
            }
            Dictionary<string, int> dic = new Dictionary<string, int>();  
              
            //遍历每一个功能,获得其个数 
            for(int i = 0;i<recount;i++){ 
                DataGridViewRow row = new DataGridViewRow();
                
                int index = dataGridView1.Rows.Add(row);
                row = dataGridView1.Rows[index];
                row.Cells["Column1"].Value = funcNames[i];
                int count = getCountByGroupName(funcNames[i], datetime1.Value.AddDays(1).ToString("yyyy-MM-dd"), datetime2.Value.AddDays(1).ToString("yyyy-MM-dd"), "全部");
                row.Cells["Column2"].Value = count.ToString();
                 
                dic.Add(row.Cells["Column1"].Value.ToString(), count);
            }
            
            //绘图表
            if (chart1.Series.Count > 0)
            {
                chart1.Series.Clear();
            }
            if (chart1.Legends.Count > 0)
            {
                chart1.Legends.Clear();
            }
            for (int i = 0; i < funcNames.Count; i++)
            { 
                chart1.Legends.Add(funcNames[i]);
                chart1.Legends[i].Docking = Docking.Bottom; 
            } 
              
            chart1.Series.Add("功能"); 
            chart1.Series["功能"].ChartType=SeriesChartType.Pie;
            chart1.Series["功能"]["DrawingStyle"] = "";
            chart1.Series["功能"]["PieLabelStyle"] = "outside";
            chart1.Series["功能"]["PieLineColor"] = "black";
            chart1.Series["功能"].IsValueShownAsLabel = true;

            ArrayList xlist = new ArrayList();
            ArrayList ylist = new ArrayList();

            foreach (string key in dic.Keys)
            {
                if (dic[key] != 0)
                {
                    xlist.Add(key);
                    ylist.Add(dic[key]);
                }
            } 
            chart1.Series["功能"].Points.DataBindXY(xlist, ylist);
        }

        //通过功能名称获得使用次数
        private int getCountByName(string funcname, string logdate1, string logdate2, string username)
        {
            //MessageBox.Show(logdate1+"="+logdate2+"="+username);
            int count = 0;
            string sql = "";

            sql = "select count(casic_loginfo.\"LOGOPER\") from casic_loginfo join casic_funclist on "
            + "casic_funclist.\"OPERID\"=casic_loginfo.\"LOGOPER\" where casic_funclist.\"OPERNAME\" = '"+funcname+"'"
            + " and casic_loginfo.\"LOGDATE\" between to_date('"+logdate1+"','yyyy-MM-dd') and to_date('"+logdate2+"','yyyy-MM-dd')";
            if (username != "全部")
            {
                sql = sql + " and casic_loginfo.\"LOGUSERNAME\" = '"+username+"'";
            } 
            DataTable table = OledbHelper.QueryTable(sql);
            //count = (int)table.Rows[0][0];
            count = int.Parse(table.Rows[0][0].ToString());
            string cc = table.Rows[0][0].ToString();
            //count = atoi(cc);
            return count;
        }
        //通过功能组获得使用次数
        private int getCountByGroupName(string funcGroupNames, string logdate1, string logdate2, string username)
        {
            int count = 0; 
            string sql = "";

            sql = "select count(casic_loginfo.\"LOGOPER\") from casic_loginfo join casic_funclist on "
                + " casic_loginfo.\"LOGOPER\"= casic_funclist.\"OPERID\" where casic_funclist.\"OPERGROUP\""
                + " = '" + funcGroupNames + "' and casic_loginfo.\"LOGDATE\" between "
                + " to_date('"+logdate1+"','yyyy-MM-dd') and to_date('"+logdate2+"','yyyy-MM-dd')" ;

            if (username != "全部")
            {
                sql = sql + " and casic_funclist.\"LOGUSERNAME\" = '" + username + "'";
            } 
            DataTable table = OledbHelper.QueryTable(sql);
            count = int.Parse(table.Rows[0][0].ToString()); 
            return count; 
        }
        
        
        private void FrmHotFuncStat_Load(object sender, EventArgs e)
        {
            datetime1.Value = datetime2.Value.AddDays(-6);
             
            string appUrl = "";
            appUrl = Application.StartupPath;// Directory.GetCurrentDirectory();

            img1 = Image.FromFile(appUrl + "/Resource/00.png");
            img2 = Image.FromFile(appUrl + "/Resource/01.png");
            img3 = Image.FromFile(appUrl + "/Resource/03.png");
            IL_HFS.Images.Add(img1);
            IL_HFS.Images.Add(img2);
            IL_HFS.Images.Add(img3);

        }

        private void exportBtn_Click(object sender, EventArgs e)
        {
            string title = datetime1.Value.ToString("MM-dd") + "至" + datetime2.Value.ToString("MM-dd") 
                + "热点功能统计专题图-" + DateTime.Now.ToString("yyyyMMdd");

            FrmHotFuncStatTitle frmHfst = new FrmHotFuncStatTitle(chart1,title); 
            frmHfst.Show();
        }
      

        private void TV_HFSSrchRslt_AfterCollapse(object sender, TreeViewEventArgs e)
        {
            e.Node.ImageIndex = 0;
        }

      
    }
}