LotNoGroupInfoQueryFrm.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. using Core.StlMes.Client.Judge.Commons;
  2. using CoreFS.CA06;
  3. using Infragistics.Win.UltraWinGrid;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Drawing;
  8. using System.Linq;
  9. namespace Core.StlMes.Client.Judge.Forms
  10. {
  11. public partial class LotNoGroupInfoQueryFrm : FrmBase
  12. {
  13. private Dal _d;
  14. public LotNoGroupInfoQueryFrm(string lotNo, OpeBase ob)
  15. {
  16. InitializeComponent();
  17. _d = new Dal(ob);
  18. Query(lotNo);
  19. }
  20. protected override void OnLoad(EventArgs e)
  21. {
  22. base.OnLoad(e);
  23. //ultraGrid1.DisplayLayout.UseFixedHeaders = true;
  24. //ultraGrid1.DisplayLayout.Bands[0].Columns["lotNoGroup"].Header.Fixed = true;
  25. //ultraGrid1.DisplayLayout.Bands[0].Columns["judgeStoveNo"].Header.Fixed = true;
  26. //ultraGrid1.DisplayLayout.Override.FixedHeaderAppearance.BackColor = Color.LightYellow;
  27. //ultraGrid1.DisplayLayout.Override.FixedHeaderAppearance.ForeColor = Color.Blue;
  28. }
  29. private void Query(string lotNo)
  30. {
  31. DataTable dt = _d.GetTableByXmlId("JdgPlnZyRclM.queryLotNoGroupInfo", lotNo);
  32. //处理试样组
  33. var groupPhy = dt.AsEnumerable().GroupBy(a => new { phyNameMin = a["phyNameMax"].ToString(), craftSource = a["craftSource"].ToString() })
  34. .Select(a => new { phyNameMin = a.Key.phyNameMin, craftSource = a.Key.craftSource }).OrderByDescending(a => a.craftSource).ToArray();
  35. bool flag0 = false;
  36. bool flag1 = false;
  37. foreach (var groupRow in groupPhy)
  38. {
  39. //创建
  40. DataColumn dc = new DataColumn();
  41. dc.ColumnName = groupRow.phyNameMin + groupRow.craftSource;
  42. if (groupRow.craftSource == "1")
  43. {
  44. dc.Caption = groupRow.phyNameMin + "(首日检)";
  45. }
  46. else
  47. {
  48. dc.Caption = groupRow.phyNameMin;
  49. }
  50. dataTable1.Columns.Add(dc);
  51. //if (groupRow.craftSource == "1")
  52. //{
  53. // flag1 = true;
  54. // UltraGridColumn gridDc = new UltraGridColumn(dc.ColumnName);
  55. // gridDc.Header.Caption = dc.Caption;
  56. // gridDc.RowLayoutColumnInfo.ParentGroupIndex = flag1Index;
  57. // gridDc.RowLayoutColumnInfo.ParentGroupKey = "0";
  58. // gridDc.RowLayoutColumnInfo.OriginX = flag1Index;
  59. // gridDc.RowLayoutColumnInfo.OriginY = 0;
  60. // gridDc.RowLayoutColumnInfo.SpanX = 1;
  61. // gridDc.RowLayoutColumnInfo.SpanY = 1;
  62. // ultraGrid1.DisplayLayout.Bands[0].Columns.Add(gridDc);
  63. // flag1Index++;
  64. //}
  65. //else if (groupRow.craftSource == "0")
  66. //{
  67. // flag0 = true;
  68. // UltraGridColumn gridDc = new UltraGridColumn(dc.ColumnName);
  69. // gridDc.Header.Caption = dc.Caption;
  70. // gridDc.RowLayoutColumnInfo.ParentGroupIndex = flag0Index;
  71. // gridDc.RowLayoutColumnInfo.ParentGroupKey = "1";
  72. // gridDc.RowLayoutColumnInfo.OriginX = flag1Index;
  73. // gridDc.RowLayoutColumnInfo.OriginY = 0;
  74. // gridDc.RowLayoutColumnInfo.SpanX = 1;
  75. // gridDc.RowLayoutColumnInfo.SpanY = 1;
  76. // ultraGrid1.DisplayLayout.Bands[0].Columns.Add(gridDc);
  77. // flag0Index++;
  78. //}
  79. }
  80. //UltraGridGroup group1 = ultraGrid1.DisplayLayout.Bands[0].Groups.Add("1", "首日检");
  81. //group1.RowLayoutGroupInfo.OriginX = 2;
  82. //group1.RowLayoutGroupInfo.OriginY = 0;
  83. //group1.RowLayoutGroupInfo.PreferredLabelSize = new System.Drawing.Size(0, 54);
  84. //group1.RowLayoutGroupInfo.SpanX = flag1Index;
  85. //group1.RowLayoutGroupInfo.SpanY = 1;
  86. //UltraGridGroup group0 = ultraGrid1.DisplayLayout.Bands[0].Groups.Add("0", "生产样");
  87. //group0.RowLayoutGroupInfo.OriginX = 3;
  88. //group0.RowLayoutGroupInfo.OriginY = 0;
  89. //group0.RowLayoutGroupInfo.PreferredLabelSize = new System.Drawing.Size(0, 54);
  90. //group0.RowLayoutGroupInfo.SpanX = flag0Index;
  91. //group0.RowLayoutGroupInfo.SpanY = 1;
  92. //bool flag0 = false;
  93. //bool flag1 = false;
  94. //int flag0Index = 0;
  95. //int flag1Index = 0;
  96. //foreach (UltraGridColumn dc in ultraGrid1.DisplayLayout.Bands[0].Columns)
  97. //{
  98. // if (dc.Key.EndsWith("1"))
  99. // {
  100. // flag1 = true;
  101. // dc.RowLayoutColumnInfo.ParentGroupIndex = flag1Index;
  102. // dc.RowLayoutColumnInfo.ParentGroupKey = "NewGroup0";
  103. // dc.RowLayoutColumnInfo.OriginX = flag1Index;
  104. // dc.RowLayoutColumnInfo.OriginY = 0;
  105. // flag1Index++;
  106. // }
  107. // else if (dc.Key.EndsWith("0"))
  108. // {
  109. // flag0 = true;
  110. // dc.RowLayoutColumnInfo.ParentGroupIndex = flag0Index;
  111. // dc.RowLayoutColumnInfo.ParentGroupKey = "NewGroup1";
  112. // dc.RowLayoutColumnInfo.OriginX = flag0Index;
  113. // dc.RowLayoutColumnInfo.OriginY = 0;
  114. // flag0Index++;
  115. // }
  116. //}
  117. if (!flag1)
  118. {
  119. //ultraGrid1.DisplayLayout.Bands[0].Groups.Remove(ultraGrid1.DisplayLayout.Bands[0].Groups["NewGroup0"]);
  120. }
  121. if (!flag0)
  122. {
  123. //ultraGrid1.DisplayLayout.Bands[0].Groups.Remove(ultraGrid1.DisplayLayout.Bands[0].Groups["NewGroup1"]);
  124. }
  125. //ultraGrid1.DisplayLayout.UseFixedHeaders = true;
  126. //foreach (UltraGridColumn col in ultraGrid1.DisplayLayout.Bands[0].Columns)
  127. //{
  128. // if (col.Key == "lotNoGroup" || col.Key == "judgeStoveNo" || col.Key == "夹杂物1")
  129. // {
  130. // col.Header.Fixed = true;
  131. // }
  132. //}
  133. var groupData = dt.AsEnumerable().GroupBy(a => new { lotNo = a["lotNo"].ToString(), lotNoGroup = a["lotNoGroup"].ToString(), judgeStoveNo = a["judgeStoveNo"].ToString() })
  134. .Select(a => new { lotNo = a.Key.lotNo, judgeStoveNo = a.Key.judgeStoveNo, lotNoGroup = a.Key.lotNoGroup }).OrderBy(a => a.lotNoGroup, new MyCompare()).ThenBy(a => a.judgeStoveNo).ToArray();
  135. foreach (var groupRow in groupData)
  136. {
  137. DataRow dr = dataTable1.NewRow();
  138. dr["lotNo"] = groupRow.lotNo;
  139. dr["lotNoGroup"] = groupRow.lotNoGroup;
  140. dr["judgeStoveNo"] = groupRow.judgeStoveNo;
  141. DataRow[] drPhys = dt.Select("lotNoGroup = '" + groupRow.lotNoGroup + "' and judgeStoveNo = '" + groupRow.judgeStoveNo + "'");
  142. foreach (DataRow drPhy in drPhys)
  143. {
  144. dr[drPhy["phyNameMax"].ToString() + drPhy["craftSource"]] = "√";
  145. }
  146. dataTable1.Rows.Add(dr);
  147. }
  148. foreach (UltraGridColumn col in ultraGrid1.DisplayLayout.Bands[0].Columns)
  149. {
  150. if (col.Key == "lotNo")
  151. {
  152. col.Width = 50;
  153. }
  154. if (col.Key == "lotNoGroup")
  155. {
  156. col.Width = 60;
  157. }
  158. else if (col.Key == "judgeStoveNo")
  159. {
  160. col.Width = 50;
  161. }
  162. else
  163. {
  164. col.Width = 130;
  165. }
  166. col.CellActivation = Activation.ActivateOnly;
  167. }
  168. }
  169. private void ultraGrid1_InitializeLayout(object sender, InitializeLayoutEventArgs e)
  170. {
  171. e.Layout.UseFixedHeaders = true;
  172. e.Layout.Bands[0].Columns["lotNo"].Header.Fixed = true;
  173. e.Layout.Bands[0].Columns["lotNoGroup"].Header.Fixed = true;
  174. e.Layout.Bands[0].Columns["judgeStoveNo"].Header.Fixed = true;
  175. e.Layout.Override.FixedCellAppearance.BackColor = Color.LightYellow;
  176. e.Layout.Override.FixedHeaderIndicator = FixedHeaderIndicator.None;
  177. }
  178. private class SortEntity
  179. {
  180. public string CraftSource
  181. {
  182. get;
  183. set;
  184. }
  185. public string JudgeStoveNo
  186. {
  187. get;
  188. set;
  189. }
  190. }
  191. private class MyCompare : IComparer<string>
  192. {
  193. public int Compare(string x, string y)
  194. {
  195. if (x == y)
  196. {
  197. return 0;
  198. }
  199. else if (x == "A")
  200. {
  201. return -1;
  202. }
  203. else if (y == "A")
  204. {
  205. return 1;
  206. }
  207. else if (x == "" || y == "")
  208. {
  209. return 1;
  210. }
  211. else
  212. {
  213. int ix = int.Parse(x);
  214. int iy = int.Parse(y);
  215. return ix - iy;
  216. }
  217. }
  218. }
  219. }
  220. }