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("请选择文件进行操作。"); } } } }