Newer
Older
EMS_SZ / FrmHotFuncStat.cs
root on 21 Mar 2016 21 KB first
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using DevComponents.DotNetBar;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using System.Collections;
using System.IO;

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>();

        System.Drawing.Image img1;
        System.Drawing.Image img2;
        System.Drawing.Image img3;
        HFS_logicfile.HFS_Affair HFSClass = new Cyberpipe.HFS_logicfile.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("规划文档管理"); 
        }

        //加载用户列表
        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)
            {
                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();
            this.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.Top;
            } 

            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() {
            this.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.Top; 
            } 
              
            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(li.LogOper) from Loginfo as li,FuncList fl where fl.operid = li.LogOper and  fl.opername = '" + funcname + "'"
            // + " and li.LogDate between '" + logdate1 + "' and '" + logdate2 + "' ";
            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(li.logoper) from loginfo as li,funclist fl where fl.operid = li.logoper and  fl.opergroup = '" + funcgroupnames + "'"
            // + " and li.LogDate between '" + logdate1 + "' and '" + logdate2 + "' ";
            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)
        {
            this.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");
            this.IL_HFS.Images.Add(img1);
            this.IL_HFS.Images.Add(img2);
            this.IL_HFS.Images.Add(img3);

            HFSClass.Itemtoshow(LV_Proj, TV_Files, LV_HFSAllFiles, true); 
        }

        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 新建ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (LV_Proj.Visible)
            {
                //PASAClass.Table_name(TSL_item);
                HFSClass.Proj_edit("T", LV_Proj, int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));//        实例化对象.

            }
        }

        private void LV_Proj_DoubleClick(object sender, MouseEventArgs e)
        {
            if (LV_Proj.SelectedItems != null)
            {
                Cyberpipe.HFS_logicfile.HFS_Affair.BaseNode = LV_Proj.SelectedItems[0].SubItems[0].Text.Trim();
                HFSClass.ShowTree(TV_Files, Cyberpipe.HFS_logicfile.HFS_Affair.BaseNode);
                HFSClass.Itemtoshow(LV_Proj, TV_Files, LV_HFSAllFiles, false); 
                
            }
        }

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

        private void TV_Files_AfterExpand(object sender, TreeViewEventArgs e)
        {
            HFSClass.ADD_TreeNode(TV_Files, e.Node);
            e.Node.ImageIndex = 1;
        }

        private void TV_Files_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                ((TreeView)sender).SelectedNode = ((TreeView)sender).GetNodeAt(e.X, e.Y);
            }
            e.Node.SelectedImageIndex = e.Node.ImageIndex;
            if (e.Button == MouseButtons.Left)
            {
                HFSClass.Show_AllFile(int.Parse(e.Node.Tag.ToString()), e.Node.Text, LV_HFSAllFiles, PB_Display, 0);//null 为所要进行的操作,例如显示图片
                //PB_Display = null;
                //文件预览时不能删除与修改名称
            }
            Cyberpipe.HFS_logicfile.HFS_Affair.Redact_N = "";
            Cyberpipe.HFS_logicfile.HFS_Affair.Redact_N = e.Node.Text;
            Cyberpipe.HFS_logicfile.HFS_Affair.Redact_M = e.Node.Tag.ToString();
            Cyberpipe.HFS_logicfile.HFS_Affair.BaseNode = "";
        }

        private void TV_Files_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
           // HFSClass.Show_AllFile(int.Parse(e.Node.Tag.ToString()), e.Node.Text, LV_HFSAllFiles, PB_Display, 2);//此处为显示图片操作
            if ((TV_Files.SelectedNode != null) && (TV_Files.SelectedNode.Parent != null))
            {
                if (MessageBox.Show("是否要导出该文件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    HFSClass.GuideEdit_form("G", TV_Files, 2);//int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));
                }
            } 
        }

        private void HFS_Pnew_Click(object sender, EventArgs e)
        {
            if (LV_Proj.Visible)
            { 
                HFSClass.Proj_edit("T", LV_Proj, int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));//        实例化对象.

            }
       }
        private void HFS_Pmodify_Click(object sender, EventArgs e) 
        {
            if (LV_Proj.SelectedItems.Count > 0)
            {
                HFS_Pnew_Click(sender, e);
            }
        }
        private void HFS_Pdelete_Click(object sender, EventArgs e)
        {

            if (PB_Display.Image != null)
            {
                Image image = PB_Display.Image;
                PB_Display.Image = null;
                image.Dispose();
            } 
            if (LV_Proj.Focused)
            {
                if (LV_Proj.SelectedItems.Count > 0)
                {
                    HFS_Pnew_Click(sender, e);
                }
            }
         
        }
        private void HFS_Pderive_Click(object sender, EventArgs e)
        { 
            if (TV_Files.SelectedNode != null)
            {
                HFSClass.GuideEdit_form("G", TV_Files, int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));
            }
        }

        private void 导入ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if ((TV_Files.SelectedNode != null) && (TV_Files.SelectedNode.Parent == null))
            {
                HFSClass.FileEdit_form("W", TV_Files, int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));
            }
            else
            {
                MessageBox.Show("请在上层文件夹使用右键进行操作。");
            }
        }

        private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (PB_Display.Image != null)
            {
                Image image = PB_Display.Image;
                PB_Display.Image = null;
                image.Dispose();
            }
            if (TV_Files.SelectedNode != null)
            {
                PB_Display.Image = null;
                HFSClass.FileEdit_form("W", TV_Files, int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));
               
            } 
        }

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (PB_Display.Image != null) {
                Image image = PB_Display.Image;
                PB_Display.Image = null;
                image.Dispose();            
            }
            if (TV_Files.SelectedNode != null)
            {
                PB_Display.Image = null;
                HFSClass.FileEdit_form("W", TV_Files, int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));
            }
        }

        private void 导出ToolStripMenuItem_Click(object sender, EventArgs e)
        { 
            if (TV_Files.SelectedNode != null)
            {
                HFSClass.GuideEdit_form("G", TV_Files, int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));
            }
        }
        //查询
        private void BT_HFSSch_Click(object sender, EventArgs e)
        {
            HFSClass.Find_File(TV_HFSSrchRslt, null, TB_HFSSchFN.Text.Trim());//查找文件
            
            sideBar1.ExpandedPanel = sideBarPanelItem2;
            
            //string fnName = TB_HFSSchFN.Text;
            //string sql = "";

            //sql = "select * from HFS where NodeName like '%" + fnName + "%' and NodeType = 0 order by NodePID";
            
            //DataTable table = OledbHelper.QueryTable(sql);
             
            ////获得结果后,按工程和文件、工程和文件加载结果
            //HFSClass.Resulttoshow(TV_HFSSrchRslt, LV_HFSAllFiles, false, table);
             
            //sideBar1.ExpandedPanel = sideBarPanelItem2;
        }

        //点击图片后预览
          
        private void tabControl2_SelectedIndexChanged(object sender, EventArgs e)
        {
            HFSClass.Itemtoshow(LV_Proj, TV_Files, LV_HFSAllFiles, true);  
        }

        private void 返回ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.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");
            this.IL_HFS.Images.Add(img1);
            this.IL_HFS.Images.Add(img2);
            this.IL_HFS.Images.Add(img3);

            HFSClass.Itemtoshow(LV_Proj, TV_Files, LV_HFSAllFiles, true); 
        }

        private void 导出ToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            if (TV_Files.SelectedNode != null)
            {
                HFSClass.GuideEdit_form("G", TV_Files, int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));
            }
        }

        private void 导出ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            导出ToolStripMenuItem2_Click(sender, e);
        }

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

        private void TV_HFSSrchRslt_AfterExpand(object sender, TreeViewEventArgs e)
        {
            HFSClass.ADD_TreeNode(TV_Files, e.Node);
            e.Node.ImageIndex = 1;
        }
        
        private void 导出ToolStripMenuItem1_Click_1(object sender, EventArgs e)
        {
            if ((TV_HFSSrchRslt.SelectedNode != null) && (TV_HFSSrchRslt.SelectedNode.Parent != null))
            {
                HFSClass.GuideEdit_form("G", TV_HFSSrchRslt, int.Parse(((ToolStripMenuItem)sender).Tag.ToString()));
            }
            else
            {
                MessageBox.Show("请选择文件进行操作。");
            }
        }
    }
}