ucChemicalComposition.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  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 Core.StlMes.Client.PlnSaleOrd.BaseMethod;
  12. using CoreFS.CA06;
  13. using Infragistics.Win;
  14. using Infragistics.Win.UltraWinGrid;
  15. namespace Core.StlMes.Client.PlnSaleOrd.炼钢计划.control
  16. {
  17. public partial class ucChemicalComposition : UserControl
  18. {
  19. public ucChemicalComposition()
  20. {
  21. InitializeComponent();
  22. CurrentChem = null;
  23. }
  24. public DataRow CurrentChem { get; private set; }
  25. public void RefreshCurrentChemical(OpeBase Ob,string CraftNo,string StoveNo)
  26. {
  27. if(Ob==null) return;
  28. DataTable InternalStandard = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.StlChemical.GetStlChemicalStd",
  29. new object[] { CraftNo }, Ob);
  30. dtChem.Rows.Clear();
  31. foreach (var colums in ulgridElement.DisplayLayout.Bands[0].Columns)
  32. {
  33. colums.Hidden = true;
  34. }
  35. ulgridElement.DisplayLayout.Bands[0].Columns["SAMPLE_NO"].Hidden = false;
  36. if (InternalStandard != null)
  37. {
  38. foreach (DataRow dataRow in InternalStandard.Rows)
  39. {
  40. string chemsKey = dataRow["CHEM_NAME"].ToString().Replace(" ", "").Replace("/", "");
  41. if (!dtChem.Columns.Contains(chemsKey.ToUpper()) && !string.IsNullOrEmpty(chemsKey))
  42. {
  43. DataColumn newDc = new DataColumn
  44. {
  45. ColumnName = chemsKey.ToUpper(),
  46. Caption = chemsKey
  47. };
  48. dtChem.Columns.Add(newDc);
  49. }
  50. ulgridElement.DisplayLayout.Bands[0].Columns[chemsKey.ToUpper()].Hidden = false;
  51. }
  52. }
  53. DataRow drMax = dtChem.NewRow();
  54. DataRow drMin = dtChem.NewRow();
  55. drMax["SAMPLE_NO"] = "上限";
  56. drMin["SAMPLE_NO"] = "下限";
  57. if (InternalStandard != null)
  58. {
  59. foreach (DataRow dataRow in InternalStandard.Rows)
  60. {
  61. string columnsName = dataRow["CHEM_NAME"].ToString().ToUpper().Replace(" ", "").Replace("/", "");
  62. drMax[columnsName] = dataRow["STDMAX_SIGN"] + dataRow["STDMAX"].ToString();
  63. drMin[columnsName] = dataRow["STDMIN_SIGN"] + dataRow["STDMIN"].ToString();
  64. ulgridElement.DisplayLayout.Bands[0].Columns[columnsName].Tag = dataRow["CHEM_FORMULA"];
  65. }
  66. }
  67. dtChem.Rows.Add(drMax);
  68. dtChem.Rows.Add(drMin);
  69. DataTable dtData = ServerHelper.GetData("com.steering.pss.plnsaleord.steelMarkingPlan.StlChemical.GetStlChemicalData",
  70. new object[] { StoveNo }, Ob);
  71. if (dtData != null && dtData.Rows.Count>0)
  72. {
  73. CurrentChem = dtData.Rows[0];
  74. foreach (DataRow dataRow in dtData.Rows)
  75. {
  76. foreach (DataColumn dc in dtData.Columns)
  77. {
  78. string columnsName = dc.ColumnName;
  79. if (columnsName.Equals("SAMPLE_NO")) continue;
  80. if (!dtChem.Columns.Contains(columnsName.ToUpper().Replace("ASN", "AS")) &&
  81. dataRow[columnsName] != null &&
  82. !string.IsNullOrEmpty((dataRow[columnsName].ToString())))
  83. {
  84. DataColumn newDc = new DataColumn();
  85. newDc.ColumnName = columnsName.ToUpper();
  86. newDc.Caption = columnsName;
  87. dtChem.Columns.Add(newDc);
  88. }
  89. }
  90. DataRow tempRow = dtChem.NewRow();
  91. tempRow["SAMPLE_NO"] = dataRow["SAMPLE_NO"];
  92. foreach (DataColumn DataColumn in dtData.Columns)
  93. {
  94. if (dtChem.Columns.Contains(DataColumn.ColumnName.Replace("ASN", "AS")))
  95. {
  96. tempRow[DataColumn.ColumnName.Replace("ASN", "AS")] = dataRow[DataColumn.ColumnName];
  97. if (dataRow[DataColumn.ColumnName] != null &&
  98. !string.IsNullOrEmpty(dataRow[DataColumn.ColumnName].ToString()))
  99. {
  100. ulgridElement.DisplayLayout.Bands[0].Columns[DataColumn.ColumnName.Replace("ASN", "AS")]
  101. .Hidden = false;
  102. }
  103. }
  104. }
  105. foreach (UltraGridColumn column in ulgridElement.DisplayLayout.Bands[0].Columns)
  106. {
  107. if (column.Hidden || column.Tag == null || string.IsNullOrEmpty(column.Tag.ToString())) continue;
  108. string ChemFormula = column.Tag.ToString().ToUpper();
  109. foreach (DataColumn DataColumn in dtData.Columns)
  110. {
  111. if (dataRow[DataColumn.ColumnName] == null) continue;
  112. ChemFormula = ChemFormula.Replace(DataColumn.ColumnName.Replace("ASN", "AS"),
  113. dataRow[DataColumn.ColumnName].ToString());
  114. }
  115. try
  116. {
  117. tempRow[column.Key] = Math.Round(double.Parse(new DataTable().Compute(ChemFormula, null).ToString()), 4);
  118. }
  119. catch (Exception)
  120. {
  121. tempRow[column.Key] = null;
  122. }
  123. }
  124. dtChem.Rows.Add(tempRow);
  125. }
  126. }
  127. ulgridElement.Refresh();
  128. BaseHelper.setOtherColumnReadOnly(ulgridElement, new[] { "Check" });
  129. GridHelper.RefreshAndAutoSize(ulgridElement);
  130. ulgridElement.DisplayLayout.Bands[0].Columns[0].CellAppearance.FontData.Bold = DefaultableBoolean.True;
  131. }
  132. private void ulgridElement_InitializeRow(object sender, InitializeRowEventArgs e)
  133. {
  134. if (e.Row.Index < 2) return;
  135. foreach (var Cell in e.Row.Cells)
  136. {
  137. string ColumnsName = Cell.Column.Key;
  138. if (ColumnsName.Equals("SAMPLE_NO")) continue;
  139. int Result = SteelManagementHelper.CompareChem(Cell.Value, ulgridElement.Rows[0].Cells[ColumnsName].Value,
  140. ulgridElement.Rows[1].Cells[ColumnsName].Value);
  141. if (Result == 2) Cell.Appearance.ResetBackColor();
  142. else if (Result > 0) Cell.Appearance.BackColor = Color.Red;
  143. else if (Result < 0) Cell.Appearance.BackColor = Color.Yellow;
  144. else Cell.Appearance.BackColor = Color.LightGreen;
  145. }
  146. }
  147. }
  148. }