using System; using System.Collections.Generic; using System.Data; using System.Text; using System.Threading; using System.Windows.Forms; using UAS_MES_NEW.CustomControl.DataGrid_View; using UAS_MES_NEW.DataOperate; using UAS_MES_NEW.Entity; using UAS_MES_NEW.PublicForm; using UAS_MES_NEW.PublicMethod; namespace UAS_MES_NEW.Employee { public partial class Employee_Power : Form { DataHelper dh; DataTable dt; AutoSizeFormClass asc = new AutoSizeFormClass(); LogStringBuilder sql = new LogStringBuilder(); Thread thread; SetLoadingWindow stw; DataTable Dbfind; ItemObject item; string[] title = new string[] { "读权限", "写权限", "删除权限", "特殊权限", "全部权限" }; string[] DataPreperty = new string[] { "ugp_ifread", "ugp_ifwrite", "ugp_ifdelete", "ugp_ifspecial", "ugp_ifall" }; public Employee_Power() { InitializeComponent(); } public Employee_Power(string GroupCode, string GroupName) { InitializeComponent(); ug_code.Text = GroupCode; sn_module.Text = GroupName; } private void 权限控制_Load(object sender, EventArgs e) { //不检测进程 asc.controllInitializeSize(this); CheckForIllegalCrossThreadCalls = false; //界面加载时设置保存按钮不可见 if (ug_code.Text == "") SavePower.Visible = false; dh = SystemInf.dh; ///手动插入四列含有列头勾选框的列 for (int i = 0; i < title.Length; i++) { DataGridViewCheckBoxColumn dgvc = new DataGridViewCheckBoxColumn(); dgvc.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; dgvc.Width = 190; dgvc.Name = title[i]; dgvc.DataPropertyName = DataPreperty[i]; DataGridViewCheckBoxHeaderCell ch1 = new DataGridViewCheckBoxHeaderCell(GroupPowerDGV, dgvc); dgvc.HeaderCell = ch1; this.GroupPowerDGV.Columns.Insert(i + 3, dgvc); } //分组放大镜 ug_code.FormName = Name; ug_code.TableName = "CS$USERGROUP"; ug_code.SelectField = "ug_code # 分组编号,ug_name # 分组名称,ug_inman # 录入人,ug_indate #录入日期"; ug_code.SetValueField = new string[] { "ug_code" }; ug_code.DbChange += Ug_code_Dbchage; //由于需要额外添加一个全部值,需要手动添加Item dt = (DataTable)dh.ExecuteSql("select DISTINCT sn_module from CS$SYSNAVATION where sn_using=1", "select"); item = new ItemObject("全部", ""); sn_module.Items.Add(item); for (int i = 0; i < dt.Rows.Count; i++) { string sn_moudle = dt.Rows[i]["sn_module"].ToString(); item = new ItemObject(sn_moudle, sn_moudle); sn_module.Items.Add(item); } //如果页面加载的时候通过传参的构造函数 if (ug_code.Text != "") Screen.PerformClick(); } private void Ug_code_Dbchage(object sender, EventArgs e) { Dbfind = ug_code.ReturnData; BaseUtil.SetFormValue(this.Controls, Dbfind); } private void Screen_Click(object sender, EventArgs e) { //拼接条件,获取按照用户输入条件的数据集 sql.Clear(); sql.Append("select sn_id,sn_module,sn_displayname,sn_caller,ugp_id,ugp_ifread,ugp_ifwrite,ugp_ifdelete,ugp_ifspecial,ugp_ifall "); sql.Append("from cs$sysnavation left join cs$usergrouppower on ugp_groupcode='" + ug_code.Text + "' "); sql.Append("and ugp_caller=sn_caller where sn_using=1 and sn_module like '%" + (sn_module.Text == "全部" ? "" : sn_module.Text) + "%' order by sn_modulecode,sn_detno"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); BaseUtil.FillDgvWithDataTable(GroupPowerDGV, dt); } private void SavePower_Click(object sender, EventArgs e) { //保存表格中变更的记录 dt = (DataTable)GroupPowerDGV.DataSource; //删除之前的分组权限 if (sn_module.Text == "" || sn_module.Text == "全部") { dh.ExecuteSql("delete from cs$usergrouppower where ugp_groupcode='" + ug_code.Text + "'", "delete"); } else { dh.ExecuteSql("delete from cs$usergrouppower where ugp_groupcode='" + ug_code.Text + "' and ugp_module='" + sn_module.Text + "'", "delete"); } string insertsql = "Insert into cs$usergrouppower (ugp_id,ugp_module,ugp_groupcode,ugp_caller,ugp_ifread,ugp_ifwrite,ugp_ifdelete,ugp_ifspecial,ugp_ifall) values(cs$usergrouppower_seq.nextval,'"+sn_module.Text+"','" + ug_code.Text + "',:ugp_caller,:ugp_ifread,:ugp_ifwrite,:ugp_ifdelete,:ugp_ifspecial,:ugp_ifall)"; //获取变化了得DataSource DataTable ChangedDT = dt.GetChanges(); if (ChangedDT != null) { int ChangedRowCount = ChangedDT.Rows.Count; string[] caller = new string[ChangedRowCount]; string[] ifread = new string[ChangedRowCount]; string[] ifwrite = new string[ChangedRowCount]; string[] ifdelete = new string[ChangedRowCount]; string[] ifspecial = new string[ChangedRowCount]; string[] ifall = new string[ChangedRowCount]; for (int i = 0; i < ChangedRowCount; i++) { caller[i] = ChangedDT.Rows[i]["sn_caller"].ToString(); ifread[i] = ChangedDT.Rows[i]["ugp_ifread"].ToString(); ifwrite[i] = ChangedDT.Rows[i]["ugp_ifwrite"].ToString(); ifdelete[i] = ChangedDT.Rows[i]["ugp_ifdelete"].ToString(); ifspecial[i] = ChangedDT.Rows[i]["ugp_ifspecial"].ToString(); ifall[i] = ChangedDT.Rows[i]["ugp_ifall"].ToString(); } dh.BatchInsert(insertsql, new string[] { "ugp_caller", "ugp_ifread", "ugp_ifwrite", "ugp_ifdelete", "ugp_ifspecial", "ugp_ifall" }, caller, ifread, ifwrite, ifdelete, ifspecial, ifall); //保存后重新加载权限 //保存后重置本地权限 if (User.UserAccountType == "admin") { sql.Clear(); sql.Append("select distinct sn_module,sn_caller ugp_caller,1 ugp_ifdelete,1 ugp_ifread,1 ugp_ifspecial,1 ugp_ifall,"); sql.Append("1 ugp_ifwrite from CS$SYSNAVATION left join CS$USERGROUPPOWER on sn_caller=ugp_caller order by sn_module"); } else { sql.Clear(); sql.Append("select distinct sn_module,ugp_caller,ugp_ifdelete,ugp_ifread,ugp_ifspecial,ugp_ifwrite,ugp_ifall "); sql.Append("from CS$USERGROUPPOWER left join CS$SYSNAVATION on "); sql.Append("sn_caller=ugp_caller where ugp_groupcode in ( select eg_groupcode from cs$empgroup left join "); sql.Append("cs$userresource on ur_groupcode = eg_groupcode where eg_emcode = '" + User.UserCode + "') order by sn_module"); } dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); for (int i = 0; i < dt.Rows.Count; i++) { Dictionary dic = new Dictionary(); dic.Add("IFDELETE", dt.Rows[i]["UGP_IFDELETE"].ToString() != "1" ? false : true); dic.Add("IFREAD", dt.Rows[i]["UGP_IFREAD"].ToString() != "1" ? false : true); dic.Add("IFWRITE", dt.Rows[i]["UGP_IFWRITE"].ToString() != "1" ? false : true); dic.Add("IFSPECIAL", dt.Rows[i]["UGP_IFSPECIAL"].ToString() != "1" ? false : true); dic.Add("IFALL", dt.Rows[i]["UGP_IFALL"].ToString() != "1" ? false : true); //之后通过Call来获取页面操作的权限 if (!SystemInf.Caller.ContainsKey(dt.Rows[i]["ugp_caller"].ToString())) SystemInf.Caller.Add(dt.Rows[i]["ugp_caller"].ToString(), dic); } MessageBox.Show("保存成功!"); } } //加载页面的数据 private void LoadData() { sql.Clear(); sql.Append("select sn_id,sn_module,sn_displayname,sn_caller,ugp_id,ugp_ifread,ugp_ifwrite,ugp_ifdelete,ugp_ifspecial,ugp_ifall "); sql.Append("from cs$sysnavation left join cs$usergrouppower on ugp_groupcode='" + ug_code.Text + "' and ugp_caller=sn_caller "); sql.Append("where sn_using=1 and ugp_groupcode='" + ug_code.Text + "' order by sn_modulecode,sn_detno"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); BaseUtil.FillDgvWithDataTable(GroupPowerDGV, dt); } private void GroupPower_DataError(object sender, DataGridViewDataErrorEventArgs e) { } private void 权限控制_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void ug_code_UserControlTextChanged(object sender, EventArgs e) { if (ug_code.Text == "") SavePower.Visible = false; else { SavePower.Visible = true; Screen.PerformClick(); } } private void sn_module_SelectedIndexChanged(object sender, EventArgs e) { Screen.PerformClick(); } } }