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("数据处理"); 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.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() { 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.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) { 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); } 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; } } }