FrmComBaseChemRatio.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. using Core.Mes.Client.Comm.Control;
  2. using Core.Mes.Client.Comm.Format;
  3. using Core.Mes.Client.Comm.Server;
  4. using Core.Mes.Client.Comm.Tool;
  5. using Core.StlMes.Client.Qcm.model;
  6. using CoreFS.CA06;
  7. using Infragistics.Win.UltraWinEditors;
  8. using Infragistics.Win.UltraWinGrid;
  9. using System;
  10. using System.Collections;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Drawing;
  14. using System.Windows.Forms;
  15. namespace Core.StlMes.Client.Qcm
  16. {
  17. public partial class FrmComBaseChemRatio : FrmBase
  18. {
  19. public FrmComBaseChemRatio()
  20. {
  21. InitializeComponent();
  22. }
  23. private void FrmComBaseChemRatio_Load(object sender, EventArgs e)
  24. {
  25. Init();
  26. }
  27. private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
  28. {
  29. EntityHelper.ShowGridCaption<ComBaseChemRatioEntity>(e.Layout.Bands[0]);
  30. }
  31. private void Init()
  32. {
  33. UltraComboEditor uceMinSign = new UltraComboEditor();
  34. UltraComboEditor uceMaxSign = new UltraComboEditor();
  35. UltraComboEditor uceChem = new UltraComboEditor();
  36. UltraComboEditor uceRatio = new UltraComboEditor();
  37. this.Controls.Add(uceMinSign);
  38. this.Controls.Add(uceMaxSign);
  39. this.Controls.Add(uceChem);
  40. this.Controls.Add(uceRatio);
  41. uceMinSign.Visible = false;
  42. uceMaxSign.Visible = false;
  43. uceChem.Visible = false;
  44. uceRatio.Visible = false;
  45. QcmBaseQuery.NitializeSignMin(uceMinSign);
  46. QcmBaseQuery.NitializeSignMax(uceMaxSign);
  47. QcmBaseCommon.InitDrop(uceChem, "com.steering.pss.qcm.CoreComBaseChemRatio.getChem", "CHEM_NAME", "CHEM_CODE", true, this.ob);
  48. QcmBaseCommon.InitDrop(uceRatio, "com.steering.pss.qcm.CoreComBaseChemRatio.getRatio", "BASENAME", "BASECODE", false, this.ob);
  49. QcmBaseQuery.BindColumn(uceMinSign, "MinSign", ultraGrid1.DisplayLayout.Bands[0]);
  50. QcmBaseQuery.BindColumn(uceMaxSign, "MaxSign", ultraGrid1.DisplayLayout.Bands[0]);
  51. QcmBaseQuery.BindColumn(uceChem, "ChemCode", ultraGrid1.DisplayLayout.Bands[0]);
  52. QcmBaseQuery.BindColumn(uceRatio, "RatioCode", ultraGrid1.DisplayLayout.Bands[0]);
  53. }
  54. public override void ToolBar_Click(object sender, string ToolbarKey)
  55. {
  56. switch (ToolbarKey)
  57. {
  58. case "Query":
  59. DoQuery(true);
  60. break;
  61. case "QueryV":
  62. DoQuery(false);
  63. break;
  64. case "Save":
  65. DoSave();
  66. break;
  67. case "Delete":
  68. DeleteOrResume(true);
  69. break;
  70. case "Resume":
  71. DeleteOrResume(false);
  72. break;
  73. case "Refresh":
  74. Init();
  75. break;
  76. case "Close":
  77. this.Close();
  78. break;
  79. }
  80. }
  81. private void DoQuery(bool flag)
  82. {
  83. List<ComBaseChemRatioEntity> list = EntityHelper.GetData<ComBaseChemRatioEntity>("com.steering.pss.qcm.CoreComBaseChemRatio.query", new object[] { flag }, this.ob);
  84. comBaseChemRatioEntityBindingSource.DataSource = list;
  85. }
  86. private void DoSave()
  87. {
  88. ultraGrid1.UpdateData();
  89. ArrayList list = new ArrayList();
  90. foreach (UltraGridRow row in ultraGrid1.Rows)
  91. {
  92. if (Convert.ToBoolean(row.Cells["CHK"].Value))
  93. {
  94. ComBaseChemRatioEntity com = (ComBaseChemRatioEntity)row.ListObject;
  95. if (!ValidInput(com))
  96. {
  97. MessageUtil.ShowWarning(errMsg);
  98. row.Activate();
  99. return;
  100. }
  101. com.CreateName = UserInfo.GetUserName();
  102. com.UpdateName = UserInfo.GetUserName();
  103. list.Add(JSONFormat.Format(com));
  104. }
  105. }
  106. if (GridHelper.GetRowsWithKey(ultraGrid1, new string[] { "CHK" }, new string[] { "True" }).Length <= 0)
  107. {
  108. MessageUtil.ShowWarning("请选择要操作的记录!");
  109. return;
  110. }
  111. if (MessageBox.Show("是否确认保存数据?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  112. {
  113. return;
  114. }
  115. int count = ServerHelper.SetData("com.steering.pss.qcm.CoreComBaseChemRatio.save", new object[] { list }, this.ob);
  116. if (count > 0)
  117. {
  118. MessageUtil.ShowTips("数据保存成功!");
  119. DoQuery(true);
  120. }
  121. }
  122. string errMsg = "";
  123. private bool ValidInput(ComBaseChemRatioEntity com)
  124. {
  125. if (com.Validflag.ToString() != "" && com.Validflag.ToString() != "有效")
  126. {
  127. errMsg = "无效数据无法保存!";
  128. return false;
  129. }
  130. if (com.ChemName.ToString() == "")
  131. {
  132. errMsg = "请选择化学元素!";
  133. return false;
  134. }
  135. if (com.MinSign.ToString() == "=")
  136. {
  137. if (com.MaxSign.ToString() != "")
  138. {
  139. errMsg = "下限符号为等号,不能存在上限符号!";
  140. return false;
  141. }
  142. }
  143. if (com.MinSign.ToString() == "" && com.MaxSign.ToString() == "")
  144. {
  145. errMsg = "元素范围上下限符号至少选一个!";
  146. return false;
  147. }
  148. //-----下限----
  149. if (com.MinSign.ToString() != "" && com.MinValue.ToString() == "")
  150. {
  151. errMsg = "请输入元素范围下限值";
  152. return false;
  153. }
  154. if (com.MinValue.ToString() != "" && com.MinSign.ToString() == "")
  155. {
  156. errMsg = "元素范围下限值不为空,请选择元素范围下限符号";
  157. return false;
  158. }
  159. if (com.MinValue.ToString() != "" && !StringUtil.IsNumber(com.MinValue.ToString()))
  160. {
  161. errMsg = "元素范围下限值请输入数字!";
  162. return false;
  163. }
  164. //------上限-----
  165. if (com.MaxSign.ToString() != "" && com.MaxValue.ToString() == "")
  166. {
  167. errMsg = "请输入元素范围上限值";
  168. return false;
  169. }
  170. if (com.MaxValue.ToString() != "" && com.MaxSign.ToString() == "")
  171. {
  172. errMsg = "元素范围上限值不为空,请选择元素范围上限符号";
  173. return false;
  174. }
  175. if (com.MaxValue.ToString() != "" && !StringUtil.IsNumber(com.MaxValue.ToString()))
  176. {
  177. errMsg = "元素范围上限值请输入数字!";
  178. return false;
  179. }
  180. //---都不为空
  181. if (com.MinValue.ToString() != "" && com.MaxValue.ToString() != "")
  182. {
  183. if (com.MinValue.ToString() == com.MaxValue.ToString())
  184. {
  185. if (!com.MinSign.ToString().Contains("=") && !com.MaxSign.ToString().Contains("="))
  186. {
  187. errMsg = "上下限值相等,请选择'>='和'<='的符号!";
  188. return false;
  189. }
  190. }
  191. else if (Convert.ToDouble(com.MinValue) > Convert.ToDouble(com.MaxValue))
  192. {
  193. errMsg = "元素范围下限值不能大于上限值!";
  194. return false;
  195. }
  196. }
  197. if (com.RatioName.ToString() == "")
  198. {
  199. errMsg = "请选择系数名称!";
  200. return false;
  201. }
  202. if (com.RatioValue.ToString() == "")
  203. {
  204. errMsg = "请输入系数值!";
  205. return false;
  206. }
  207. if (!StringUtil.IsNumber(com.RatioValue.ToString()))
  208. {
  209. errMsg = "系数值:请输入数字!";
  210. return false;
  211. }
  212. if (com.Validflag.ToString() == "")
  213. {
  214. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreComBaseChemRatio.isReapt", new object[] { com.ChemCode.ToString(), com.GroupText.ToString(), com.RatioCode.ToString() }, this.ob);
  215. if (dt != null && dt.Rows.Count > 0)
  216. {
  217. errMsg = "化学元素:" + com.ChemName + ",系数名称:" + com.RatioName + ",范围组合" + com.GroupText + " 对应的记录已经存在!";
  218. return false;
  219. }
  220. }
  221. else
  222. {
  223. if (com.ChemCode.ToString() != com.ChemCodeOld.ToString() || com.GroupText.ToString() != com.GroupTextOld.ToString()
  224. || com.RatioCode.ToString() != com.RatioCodeOld.ToString())
  225. {
  226. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreComBaseChemRatio.isReapt", new object[] { com.ChemCode.ToString(), com.GroupText.ToString(), com.RatioCode.ToString() }, this.ob);
  227. if (dt != null && dt.Rows.Count > 0)
  228. {
  229. errMsg = "化学元素:" + com.ChemName + ",系数名称:" + com.RatioName + ",范围组合" + com.GroupText + " 对应的记录已经存在!";
  230. return false;
  231. }
  232. }
  233. }
  234. return true;
  235. }
  236. private void DeleteOrResume(bool flag)
  237. {
  238. ultraGrid1.UpdateData();
  239. ArrayList list = new ArrayList();
  240. foreach (UltraGridRow row in ultraGrid1.Rows)
  241. {
  242. if (Convert.ToBoolean(row.Cells["CHK"].Value))
  243. {
  244. if (flag && row.Cells["VALIDFLAG"].Value.ToString() != "有效")
  245. {
  246. MessageUtil.ShowWarning("非有效记录无法作废!");
  247. return;
  248. }
  249. else if (flag == false && row.Cells["VALIDFLAG"].Value.ToString() != "无效")
  250. {
  251. MessageUtil.ShowWarning("非无效记录无法恢复!");
  252. return;
  253. }
  254. ComBaseChemRatioEntity com = (ComBaseChemRatioEntity)row.ListObject;
  255. com.DeleteName = UserInfo.GetUserName();
  256. list.Add(JSONFormat.Format(com));
  257. }
  258. }
  259. if (GridHelper.GetRowsWithKey(ultraGrid1, new string[] { "CHK" }, new string[] { "True" }).Length <= 0)
  260. {
  261. MessageUtil.ShowWarning("请选择需要操作的记录!");
  262. return;
  263. }
  264. if (MessageBox.Show("是否确认" + (flag ? "作废" : "恢复") + "所选的记录", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  265. {
  266. return;
  267. }
  268. int count = ServerHelper.SetData("com.steering.pss.qcm.CoreComBaseChemRatio.deleteOrResume", new object[] { list, flag }, this.ob);
  269. if (count > 0)
  270. {
  271. MessageUtil.ShowWarning("数据" + (flag ? "作废" : "恢复") + "成功!");
  272. DoQuery(true);
  273. }
  274. }
  275. private void ultraGrid1_InitializeRow(object sender, InitializeRowEventArgs e)
  276. {
  277. if (e.Row.Cells["VALIDFLAG"].Value.ToString().Equals("无效"))
  278. {
  279. e.Row.Appearance.ForeColor = Color.Red;
  280. }
  281. else
  282. {
  283. e.Row.Appearance.ForeColor = Color.Black;
  284. }
  285. }
  286. private void ultraGrid1_CellChange(object sender, CellEventArgs e)
  287. {
  288. ultraGrid1.UpdateData();
  289. UltraGridRow ugr = ultraGrid1.ActiveRow;
  290. if (ugr == null)
  291. return;
  292. ComBaseChemRatioEntity com = (ComBaseChemRatioEntity)ugr.ListObject;
  293. if (e.Cell.Column.Key.Equals("ChemCode"))
  294. {
  295. com.ChemName = e.Cell.Text;
  296. }
  297. else if (e.Cell.Column.Key.Equals("RatioCode"))
  298. {
  299. ugr.Cells["RatioName"].Value = e.Cell.Text;
  300. }
  301. else if (e.Cell.Column.Key.Equals("MinSign"))
  302. {
  303. ugr.Cells["GroupText"].Value = ugr.Cells["MinSign"].Value.ToString() + ugr.Cells["MinValue"].Value.ToString()
  304. + ugr.Cells["MaxSign"].Value.ToString() + ugr.Cells["MaxValue"].Value.ToString();
  305. }
  306. else if (e.Cell.Column.Key.Equals("MinValue"))
  307. {
  308. ugr.Cells["GroupText"].Value = ugr.Cells["MinSign"].Value.ToString() + ugr.Cells["MinValue"].Value.ToString()
  309. + ugr.Cells["MaxSign"].Value.ToString() + ugr.Cells["MaxValue"].Value.ToString();
  310. }
  311. else if (e.Cell.Column.Key.Equals("MaxSign"))
  312. {
  313. ugr.Cells["GroupText"].Value = ugr.Cells["MinSign"].Value.ToString() + ugr.Cells["MinValue"].Value.ToString()
  314. + ugr.Cells["MaxSign"].Value.ToString() + ugr.Cells["MaxValue"].Value.ToString();
  315. }
  316. else if (e.Cell.Column.Key.Equals("MaxValue"))
  317. {
  318. ugr.Cells["GroupText"].Value = ugr.Cells["MinSign"].Value.ToString() + ugr.Cells["MinValue"].Value.ToString()
  319. + ugr.Cells["MaxSign"].Value.ToString() + ugr.Cells["MaxValue"].Value.ToString();
  320. }
  321. else if (e.Cell.Column.Key.Equals("CHK"))
  322. {
  323. if (!Convert.ToBoolean(e.Cell.Value))
  324. {
  325. for (int i = 0; i < ugr.Cells.Count; i++)
  326. {
  327. if (!ugr.Cells[i].Column.Key.Equals("CHK"))
  328. ugr.Cells[i].Activation = Activation.ActivateOnly;
  329. }
  330. }
  331. else
  332. {
  333. for (int i = 0; i < ugr.Cells.Count; i++)
  334. {
  335. ugr.Cells[i].Activation = Activation.AllowEdit;
  336. }
  337. }
  338. }
  339. }
  340. private void ultraGrid1_AfterRowInsert(object sender, RowEventArgs e)
  341. {
  342. ultraGrid1.Update();
  343. UltraGridRow ugr = ultraGrid1.ActiveRow;
  344. if (!Convert.ToBoolean(ugr.Cells["CHK"].Value))
  345. {
  346. for (int i = 0; i < ugr.Cells.Count; i++)
  347. {
  348. if (!ugr.Cells[i].Column.Key.Equals("CHK"))
  349. ugr.Cells[i].Activation = Activation.ActivateOnly;
  350. }
  351. }
  352. else
  353. {
  354. for (int i = 0; i < ugr.Cells.Count; i++)
  355. {
  356. ugr.Cells[i].Activation = Activation.AllowEdit;
  357. }
  358. }
  359. }
  360. private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
  361. {
  362. ultraGrid1.Update();
  363. UltraGridRow ugr = ultraGrid1.ActiveRow;
  364. if (ugr == null)
  365. return;
  366. if (!Convert.ToBoolean(ugr.Cells["CHK"].Value))
  367. {
  368. for (int i = 0; i < ugr.Cells.Count; i++)
  369. {
  370. if (!ugr.Cells[i].Column.Key.Equals("CHK"))
  371. ugr.Cells[i].Activation = Activation.ActivateOnly;
  372. }
  373. }
  374. else
  375. {
  376. for (int i = 0; i < ugr.Cells.Count; i++)
  377. {
  378. ugr.Cells[i].Activation = Activation.AllowEdit;
  379. }
  380. }
  381. }
  382. }
  383. }