Employee_Power.cs 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Text;
  5. using System.Threading;
  6. using System.Windows.Forms;
  7. using UAS_MES_NEW.CustomControl.DataGrid_View;
  8. using UAS_MES_NEW.DataOperate;
  9. using UAS_MES_NEW.Entity;
  10. using UAS_MES_NEW.PublicForm;
  11. using UAS_MES_NEW.PublicMethod;
  12. namespace UAS_MES_NEW.Employee
  13. {
  14. public partial class Employee_Power : Form
  15. {
  16. DataHelper dh;
  17. DataTable dt;
  18. AutoSizeFormClass asc = new AutoSizeFormClass();
  19. LogStringBuilder sql = new LogStringBuilder();
  20. Thread thread;
  21. SetLoadingWindow stw;
  22. DataTable Dbfind;
  23. ItemObject item;
  24. string[] title = new string[] { "读权限", "写权限", "删除权限", "特殊权限", "全部权限" };
  25. string[] DataPreperty = new string[] { "ugp_ifread", "ugp_ifwrite", "ugp_ifdelete", "ugp_ifspecial", "ugp_ifall" };
  26. public Employee_Power()
  27. {
  28. InitializeComponent();
  29. try { UAS_MES_NEW.I18n.LanguageManager.Localize(this); } catch { }
  30. }
  31. public Employee_Power(string GroupCode, string GroupName)
  32. {
  33. InitializeComponent();
  34. ug_code.Text = GroupCode;
  35. sn_module.Text = GroupName;
  36. }
  37. private void 权限控制_Load(object sender, EventArgs e)
  38. {
  39. //不检测进程
  40. asc.controllInitializeSize(this);
  41. CheckForIllegalCrossThreadCalls = false;
  42. //界面加载时设置保存按钮不可见
  43. if (ug_code.Text == "")
  44. SavePower.Visible = false;
  45. dh = SystemInf.dh;
  46. ///手动插入四列含有列头勾选框的列
  47. for (int i = 0; i < title.Length; i++)
  48. {
  49. DataGridViewCheckBoxColumn dgvc = new DataGridViewCheckBoxColumn();
  50. dgvc.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
  51. dgvc.Width = 190;
  52. dgvc.Name = title[i];
  53. dgvc.DataPropertyName = DataPreperty[i];
  54. DataGridViewCheckBoxHeaderCell ch1 = new DataGridViewCheckBoxHeaderCell(GroupPowerDGV, dgvc);
  55. dgvc.HeaderCell = ch1;
  56. this.GroupPowerDGV.Columns.Insert(i + 3, dgvc);
  57. }
  58. //分组放大镜
  59. ug_code.FormName = Name;
  60. ug_code.TableName = "CS$USERGROUP";
  61. ug_code.SelectField = "ug_code # 分组编号,ug_name # 分组名称,ug_inman # 录入人,ug_indate #录入日期";
  62. ug_code.SetValueField = new string[] { "ug_code" };
  63. ug_code.DbChange += Ug_code_Dbchage;
  64. //由于需要额外添加一个全部值,需要手动添加Item
  65. dt = (DataTable)dh.ExecuteSql("select DISTINCT sn_module from CS$SYSNAVATION where sn_using=1", "select");
  66. item = new ItemObject("全部", "");
  67. sn_module.Items.Add(item);
  68. for (int i = 0; i < dt.Rows.Count; i++)
  69. {
  70. string sn_moudle = dt.Rows[i]["sn_module"].ToString();
  71. item = new ItemObject(sn_moudle, sn_moudle);
  72. sn_module.Items.Add(item);
  73. }
  74. //如果页面加载的时候通过传参的构造函数
  75. if (ug_code.Text != "")
  76. Screen.PerformClick();
  77. }
  78. private void Ug_code_Dbchage(object sender, EventArgs e)
  79. {
  80. Dbfind = ug_code.ReturnData;
  81. BaseUtil.SetFormValue(this.Controls, Dbfind);
  82. }
  83. private void Screen_Click(object sender, EventArgs e)
  84. {
  85. //拼接条件,获取按照用户输入条件的数据集
  86. sql.Clear();
  87. sql.Append("select sn_id,sn_module,sn_displayname,sn_caller,ugp_id,ugp_ifread,ugp_ifwrite,ugp_ifdelete,ugp_ifspecial,ugp_ifall ");
  88. sql.Append("from cs$sysnavation left join cs$usergrouppower on ugp_groupcode='" + ug_code.Text + "' ");
  89. 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");
  90. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  91. BaseUtil.FillDgvWithDataTable(GroupPowerDGV, dt);
  92. }
  93. private void SavePower_Click(object sender, EventArgs e)
  94. {
  95. //保存表格中变更的记录
  96. dt = (DataTable)GroupPowerDGV.DataSource;
  97. //删除之前的分组权限
  98. if (sn_module.Text == "" || sn_module.Text == "全部")
  99. {
  100. dh.ExecuteSql("delete from cs$usergrouppower where ugp_groupcode='" + ug_code.Text + "'", "delete");
  101. }
  102. else
  103. {
  104. dh.ExecuteSql("delete from cs$usergrouppower where ugp_groupcode='" + ug_code.Text + "' and ugp_module='" + sn_module.Text + "'", "delete");
  105. }
  106. 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)";
  107. //获取变化了得DataSource
  108. DataTable ChangedDT = dt.GetChanges();
  109. if (ChangedDT != null)
  110. {
  111. int ChangedRowCount = ChangedDT.Rows.Count;
  112. string[] caller = new string[ChangedRowCount];
  113. string[] ifread = new string[ChangedRowCount];
  114. string[] ifwrite = new string[ChangedRowCount];
  115. string[] ifdelete = new string[ChangedRowCount];
  116. string[] ifspecial = new string[ChangedRowCount];
  117. string[] ifall = new string[ChangedRowCount];
  118. for (int i = 0; i < ChangedRowCount; i++)
  119. {
  120. caller[i] = ChangedDT.Rows[i]["sn_caller"].ToString();
  121. ifread[i] = ChangedDT.Rows[i]["ugp_ifread"].ToString();
  122. ifwrite[i] = ChangedDT.Rows[i]["ugp_ifwrite"].ToString();
  123. ifdelete[i] = ChangedDT.Rows[i]["ugp_ifdelete"].ToString();
  124. ifspecial[i] = ChangedDT.Rows[i]["ugp_ifspecial"].ToString();
  125. ifall[i] = ChangedDT.Rows[i]["ugp_ifall"].ToString();
  126. }
  127. dh.BatchInsert(insertsql, new string[] { "ugp_caller", "ugp_ifread", "ugp_ifwrite", "ugp_ifdelete", "ugp_ifspecial", "ugp_ifall" }, caller, ifread, ifwrite, ifdelete, ifspecial, ifall);
  128. //保存后重新加载权限
  129. //保存后重置本地权限
  130. if (User.UserAccountType == "admin")
  131. {
  132. sql.Clear();
  133. sql.Append("select distinct sn_module,sn_caller ugp_caller,1 ugp_ifdelete,1 ugp_ifread,1 ugp_ifspecial,1 ugp_ifall,");
  134. sql.Append("1 ugp_ifwrite from CS$SYSNAVATION left join CS$USERGROUPPOWER on sn_caller=ugp_caller order by sn_module");
  135. }
  136. else
  137. {
  138. sql.Clear();
  139. sql.Append("select distinct sn_module,ugp_caller,ugp_ifdelete,ugp_ifread,ugp_ifspecial,ugp_ifwrite,ugp_ifall ");
  140. sql.Append("from CS$USERGROUPPOWER left join CS$SYSNAVATION on ");
  141. sql.Append("sn_caller=ugp_caller where ugp_groupcode in ( select eg_groupcode from cs$empgroup left join ");
  142. sql.Append("cs$userresource on ur_groupcode = eg_groupcode where eg_emcode = '" + User.UserCode + "') order by sn_module");
  143. }
  144. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  145. for (int i = 0; i < dt.Rows.Count; i++)
  146. {
  147. Dictionary<string, bool> dic = new Dictionary<string, bool>();
  148. dic.Add("IFDELETE", dt.Rows[i]["UGP_IFDELETE"].ToString() != "1" ? false : true);
  149. dic.Add("IFREAD", dt.Rows[i]["UGP_IFREAD"].ToString() != "1" ? false : true);
  150. dic.Add("IFWRITE", dt.Rows[i]["UGP_IFWRITE"].ToString() != "1" ? false : true);
  151. dic.Add("IFSPECIAL", dt.Rows[i]["UGP_IFSPECIAL"].ToString() != "1" ? false : true);
  152. dic.Add("IFALL", dt.Rows[i]["UGP_IFALL"].ToString() != "1" ? false : true);
  153. //之后通过Call来获取页面操作的权限
  154. if (!SystemInf.Caller.ContainsKey(dt.Rows[i]["ugp_caller"].ToString()))
  155. SystemInf.Caller.Add(dt.Rows[i]["ugp_caller"].ToString(), dic);
  156. }
  157. MessageBox.Show(UAS_MES_NEW.I18n.LanguageManager.T("保存成功!"));
  158. }
  159. }
  160. //加载页面的数据
  161. private void LoadData()
  162. {
  163. sql.Clear();
  164. sql.Append("select sn_id,sn_module,sn_displayname,sn_caller,ugp_id,ugp_ifread,ugp_ifwrite,ugp_ifdelete,ugp_ifspecial,ugp_ifall ");
  165. sql.Append("from cs$sysnavation left join cs$usergrouppower on ugp_groupcode='" + ug_code.Text + "' and ugp_caller=sn_caller ");
  166. sql.Append("where sn_using=1 and ugp_groupcode='" + ug_code.Text + "' order by sn_modulecode,sn_detno");
  167. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  168. BaseUtil.FillDgvWithDataTable(GroupPowerDGV, dt);
  169. }
  170. private void GroupPower_DataError(object sender, DataGridViewDataErrorEventArgs e) { }
  171. private void 权限控制_SizeChanged(object sender, EventArgs e)
  172. {
  173. asc.controlAutoSize(this);
  174. }
  175. private void ug_code_UserControlTextChanged(object sender, EventArgs e)
  176. {
  177. if (ug_code.Text == "")
  178. SavePower.Visible = false;
  179. else
  180. {
  181. SavePower.Visible = true;
  182. Screen.PerformClick();
  183. }
  184. }
  185. private void sn_module_SelectedIndexChanged(object sender, EventArgs e)
  186. {
  187. Screen.PerformClick();
  188. }
  189. }
  190. }