ucNewChemelEment.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using Core.Mes.Client.Comm.Control;
  10. using Core.Mes.Client.Comm.Server;
  11. using CoreFS.CA06;
  12. using Infragistics.Win;
  13. using Infragistics.Win.UltraWinGrid;
  14. namespace Core.StlMes.Client.LgCommon.公共自定义控件.化学成分
  15. {
  16. public partial class ucNewChemelEment : UserControl
  17. {
  18. public ucNewChemelEment()
  19. {
  20. InitializeComponent();
  21. //ClsControlPack.SetUltraGridAppearance(this);
  22. }
  23. public void SetData(string StoveNo, string Pline, LG_PROCESS Process, string CraftNo, OpeBase ob)
  24. {
  25. RefreshData(StoveNo, Pline, Process, CraftNo, ob);
  26. ClsControlPack.RefreshAndAutoSize(ulgridElement);
  27. ClsControlPack.SetReadOnly(ulgridElement);
  28. ulgridElement.DisplayLayout.Bands[0].Columns[0].CellAppearance.FontData.Bold = DefaultableBoolean.True;
  29. }
  30. public void RefreshData(string StoveNo, string Pline, LG_PROCESS Process, string CraftNo, OpeBase ob)
  31. {
  32. DataTable dt = ServerHelper.GetData("Core.LgMes.Server.LgDeviceManager.StlChemical.GetStlChemicalStd",
  33. new object[] {CraftNo}, ob);
  34. dtChem.Rows.Clear();
  35. foreach (var colums in ulgridElement.DisplayLayout.Bands[0].Columns)
  36. {
  37. colums.Hidden = true;
  38. }
  39. ulgridElement.DisplayLayout.Bands[0].Columns["SAMPLE_NO"].Hidden = false;
  40. if (dt != null)
  41. {
  42. foreach (DataRow dataRow in dt.Rows)
  43. {
  44. string chemsKey = dataRow["CHEM_NAME"].ToString().Replace(" ", "").Replace("/", "");
  45. if (!dtChem.Columns.Contains(chemsKey.ToUpper()) && !string.IsNullOrEmpty(chemsKey))
  46. {
  47. DataColumn newDc = new DataColumn
  48. {
  49. ColumnName = chemsKey.ToUpper(),
  50. Caption = chemsKey
  51. };
  52. dtChem.Columns.Add(newDc);
  53. }
  54. ulgridElement.DisplayLayout.Bands[0].Columns[chemsKey.ToUpper()].Hidden = false;
  55. }
  56. }
  57. DataRow drMax = dtChem.NewRow();
  58. DataRow drMin = dtChem.NewRow();
  59. drMax["SAMPLE_NO"] = "上限";
  60. drMin["SAMPLE_NO"] = "下限";
  61. if (dt != null)
  62. {
  63. foreach (DataRow dataRow in dt.Rows)
  64. {
  65. string columnsName = dataRow["CHEM_NAME"].ToString().ToUpper().Replace(" ", "").Replace("/", "");
  66. drMax[columnsName] = dataRow["STDMAX_SIGN"] + dataRow["STDMAX"].ToString();
  67. drMin[columnsName] = dataRow["STDMIN_SIGN"] + dataRow["STDMIN"].ToString();
  68. ulgridElement.DisplayLayout.Bands[0].Columns[columnsName].Tag = dataRow["CHEM_FORMULA"];
  69. }
  70. }
  71. dtChem.Rows.Add(drMax);
  72. dtChem.Rows.Add(drMin);
  73. DataTable dtData = ServerHelper.GetData("Core.LgMes.Server.LgDeviceManager.StlChemical.GetStlChemicalData",
  74. new object[] {StoveNo, Pline, Process}, ob);
  75. if (dtData != null)
  76. {
  77. foreach (DataRow dataRow in dtData.Rows)
  78. {
  79. foreach (DataColumn dc in dtData.Columns)
  80. {
  81. string columnsName = dc.ColumnName;
  82. if (columnsName.Equals("SAMPLE_NO")) continue;
  83. if (!dtChem.Columns.Contains(columnsName.ToUpper().Replace("ASN", "AS")) &&
  84. dataRow[columnsName] != null &&
  85. string.IsNullOrEmpty((dataRow[columnsName].ToString())))
  86. {
  87. DataColumn newDc = new DataColumn();
  88. newDc.ColumnName = columnsName.ToUpper();
  89. newDc.Caption = columnsName;
  90. dtChem.Columns.Add(newDc);
  91. }
  92. }
  93. DataRow tempRow = dtChem.NewRow();
  94. tempRow["SAMPLE_NO"] = dataRow["SAMPLE_NO"];
  95. foreach (DataColumn DataColumn in dtData.Columns)
  96. {
  97. if (dtChem.Columns.Contains(DataColumn.ColumnName.Replace("ASN", "AS")))
  98. {
  99. tempRow[DataColumn.ColumnName.Replace("ASN", "AS")] = dataRow[DataColumn.ColumnName];
  100. if (dataRow[DataColumn.ColumnName] != null &&
  101. !string.IsNullOrEmpty(dataRow[DataColumn.ColumnName].ToString()))
  102. ulgridElement.DisplayLayout.Bands[0].Columns[DataColumn.ColumnName.Replace("ASN", "AS")]
  103. .Hidden = false;
  104. }
  105. }
  106. foreach (UltraGridColumn column in ulgridElement.DisplayLayout.Bands[0].Columns)
  107. {
  108. if (column.Hidden || column.Tag == null || string.IsNullOrEmpty(column.Tag.ToString())) continue;
  109. string ChemFormula = column.Tag.ToString().ToUpper();
  110. foreach (DataColumn DataColumn in dtData.Columns)
  111. {
  112. if (dataRow[DataColumn.ColumnName] == null) continue;
  113. ChemFormula = ChemFormula.Replace(DataColumn.ColumnName.Replace("ASN", "AS"),
  114. dataRow[DataColumn.ColumnName].ToString());
  115. }
  116. try
  117. {
  118. tempRow[column.Key] = Math.Round(double.Parse(new DataTable().Compute(ChemFormula, null).ToString()),4);
  119. }
  120. catch (Exception)
  121. {
  122. tempRow[column.Key] = null;
  123. }
  124. }
  125. dtChem.Rows.Add(tempRow);
  126. }
  127. }
  128. ClsControlPack.SaftRefreshUI(ulgridElement, () =>
  129. {
  130. // ulgridElement.DataSource = dsChem;
  131. ulgridElement.Refresh();
  132. ClsControlPack.RefreshAndAutoSize(ulgridElement);
  133. });
  134. }
  135. public void ResetData()
  136. {
  137. // if(targerTable!=null) targerTable.Rows.Clear();
  138. }
  139. private void ulgridElement_InitializeRow(object sender, InitializeRowEventArgs e)
  140. {
  141. if(e.Row.Index<2) return;
  142. foreach (var Cell in e.Row.Cells)
  143. {
  144. string ColumnsName = Cell.Column.Key;
  145. if (ColumnsName.Equals("SAMPLE_NO")) continue;
  146. int Result = CompareChem(Cell.Value, ulgridElement.Rows[0].Cells[ColumnsName].Value,
  147. ulgridElement.Rows[1].Cells[ColumnsName].Value);
  148. if (Result == 2) Cell.Appearance.ResetBackColor();
  149. else if (Result > 0) Cell.Appearance.BackColor = Color.Red;
  150. else if (Result < 0) Cell.Appearance.BackColor = Color.Yellow;
  151. else Cell.Appearance.BackColor = Color.LightGreen;
  152. }
  153. }
  154. private int CompareChem(object CurrentVaule, object Max, object Min)
  155. {
  156. if (CurrentVaule == null) return -1;
  157. double vaule;
  158. if (!double.TryParse(CurrentVaule.ToString(), out vaule)) return -1;
  159. if ((Max == null || Max.ToString() == "") && (Min == null || Min.ToString() == "")) return 2;
  160. if (Max != null && !CompareVaule(vaule, Max.ToString(), true))
  161. {
  162. return 1;
  163. }
  164. if (Min != null && !CompareVaule(vaule, Min.ToString(), false))
  165. {
  166. return -1;
  167. }
  168. return 0;
  169. }
  170. private bool CompareVaule(double value, string format,bool Max)
  171. {
  172. if (string.IsNullOrEmpty(format)) return true;
  173. double dFormat;
  174. if (format.StartsWith("<="))
  175. {
  176. if (!double.TryParse(format.Replace("<=", ""), out dFormat)) return false;
  177. return value <= dFormat;
  178. }
  179. if (format.StartsWith("<"))
  180. {
  181. if (!double.TryParse(format.Replace("<", ""), out dFormat)) return false;
  182. return value < dFormat;
  183. }
  184. if (format.StartsWith(">="))
  185. {
  186. if (!double.TryParse(format.Replace(">=", ""), out dFormat)) return false;
  187. return value >= dFormat;
  188. }
  189. if (format.StartsWith(">"))
  190. {
  191. if (!double.TryParse(format.Replace(">", ""), out dFormat)) return false;
  192. return value > dFormat;
  193. }
  194. if (!double.TryParse(format, out dFormat)) return false;
  195. if (Max) return value < dFormat;
  196. return value > dFormat;
  197. }
  198. }
  199. }