FrmGetBatchAndSamples.cs 94 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using CoreFS.CA06;
  10. using Core.Mes.Client.Comm.Tool;
  11. using Core.Mes.Client.Comm.Control;
  12. using System.Collections;
  13. using Core.Mes.Client.Comm.Server;
  14. using Infragistics.Win.UltraWinGrid;
  15. using Core.StlMes.Client.ZGMil.Entity;
  16. namespace Core.StlMes.Client.ZGMil.Result
  17. {
  18. public partial class FrmGetBatchAndSamples : FrmBase
  19. {
  20. private string PlineCode = "";//产线
  21. private DataTable m_dtPipeNo;//管号队列
  22. private DataTable m_dtPipeNo_LOG;//管号队列
  23. private DataTable m_dtSampleNo;//试样号队列
  24. private DataTable m_dtSampleNo_LOG;//试样号队列
  25. private DataTable m_dtSampleReq_LOG;//参考取样要求队列
  26. public FrmGetBatchAndSamples()
  27. {
  28. InitializeComponent();
  29. }
  30. private void FrmGetSample_Load(object sender, EventArgs e)
  31. {
  32. InitColumnsDataTable();
  33. m_dtSampleNo = dataTable5.Clone();
  34. NativeMethodNew na = new NativeMethodNew(this.ob);
  35. PlineCode = na.GetPCode(UserInfo.GetDepartment());//获取 用户 对应的产线
  36. BindProcessDesc();//绑定工序
  37. //QueryLotNoAndStoveNo();
  38. }
  39. protected override void OnLoad(EventArgs e)
  40. {
  41. base.OnLoad(e);
  42. ultraGrid1.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框
  43. ultraGrid2.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.False;
  44. ultraGrid2.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
  45. ultraGrid3.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
  46. ultraGrid4.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
  47. ultraGrid5.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框
  48. ultraGrid6.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.False;//不显示行头
  49. ultraGrid6.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框
  50. ultraGrid7.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.False;//不显示行头
  51. ultraGrid7.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框
  52. ultraGrid8.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框
  53. ultraGrid9.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框
  54. ultraGrid10.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框
  55. ultraGrid11.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
  56. }
  57. private void InitColumnsDataTable()
  58. {
  59. //生产批号、炉号队列
  60. string[] arrColumnsLot = new string[] { "LOT_NO", "JUDGE_STOVE_NO", "PLINE_CODE" };
  61. string[] arrCaptionLot = new string[] { "生产批号", "炉号", "产线" };
  62. InitColumns(arrColumnsLot, arrCaptionLot, dataTable1);
  63. setColumnShowOrHidden(ultraGrid1, new string[] { "PLINE_CODE" }, false);//不需要显示的行
  64. InitColumns(arrColumnsLot, arrCaptionLot, dataTable6);
  65. setColumnShowOrHidden(ultraGrid6, new string[] { "PLINE_CODE" }, false);//不需要显示的行
  66. //管号队列
  67. string[] arrColumnsPipe = new string[] { "PIPE_NO", "SEQ", "ISVALID" };
  68. string[] arrCaptionPipe = new string[] { "管号", "序号", "是否有效" };
  69. InitColumns(arrColumnsPipe, arrCaptionPipe, dataTable2);
  70. InitColumns(arrColumnsPipe, arrCaptionPipe, dataTable2);
  71. setColumnShowOrHidden(ultraGrid2, new string[] { "SEQ" }, false);
  72. InitColumns(arrColumnsPipe, arrCaptionPipe, dataTable7);
  73. setColumnShowOrHidden(ultraGrid7, new string[] { "SEQ" }, false);//不需要显示的行
  74. //性能批号队列
  75. string[] arrColumnsBatch = new string[] { "BATCH_NO", "START_PIPE_NO", "START_SEQ", "END_PIPE_NO", "END_SEQ", "PIPE_NUM" };
  76. string[] arrCaptionBatch = new string[] { "性能批号", "起始管号", "起始序号", "结束管号", "结束序号", "有效管数" };
  77. InitColumns(arrColumnsBatch, arrCaptionBatch, dataTable3);
  78. setColumnShowOrHidden(ultraGrid3, new string[] { "START_SEQ", "END_SEQ" }, false);//不需要显示的行
  79. InitColumns(arrColumnsBatch, arrCaptionBatch, dataTable8);
  80. setColumnShowOrHidden(ultraGrid8, new string[] { "START_SEQ", "END_SEQ" }, false);//不需要显示的行
  81. //试样号队列
  82. string[] arrColumnsSample = new string[] { "BATCH_NO", "SAMPLE_NO", "PIPE_NO", "SEQ", "DESC_POSITION" };
  83. string[] arrCaptionSample = new string[] { "性能批号", "试样号", "管号", "序号", "取样位置" };
  84. InitColumns(arrColumnsSample, arrCaptionSample, dataTable9);
  85. setColumnShowOrHidden(ultraGrid9, new string[] { "SEQ" }, false);//不需要显示的行
  86. //取样要求队列
  87. string[] arrColumnsSampleReq = new string[] { "PHY_CODE_MAX", "PHY_NAME_MAX", "PHY_CODE_MIN", "PHY_NAME_MIN", "SAMPLE_STYLE", "STD_CODE", "STD_NAME", "LENGTH", "DESC_LENGTH", "RATE", "DESC_RATE", "POSITION", "DESC_POSITION", "DESC_COUNT", "SAMPLE_COUNT" };
  88. string[] arrCaptionSampleReq = new string[] { "检验项代码", "检验项", "取样码", "取样码描述", "样片类型", "标准代码", "标准名称", "取样长度代码", "取样长度", "取样频率代码", "取样频率", "取样位置代码", "取样位置", "取样数量", "试验样条数" };
  89. InitColumns(arrColumnsSampleReq, arrCaptionSampleReq, dataTable4);
  90. setColumnShowOrHidden(ultraGrid4, new string[] { "PHY_CODE_MAX", "PHY_CODE_MIN", "STD_CODE", "STD_NAME", "LENGTH", "RATE", "POSITION" }, false);//不需要显示的行
  91. InitColumns(arrColumnsSampleReq, arrCaptionSampleReq, dataTable10);
  92. setColumnShowOrHidden(ultraGrid10, new string[] { "PHY_CODE_MAX", "PHY_CODE_MIN", "STD_CODE", "STD_NAME", "LENGTH", "RATE", "POSITION" }, false);//不需要显示的行
  93. }
  94. //初始化列
  95. public void InitColumns(object[] arrColumns, object[] arrCaption, DataTable dataTable1)
  96. {
  97. if (arrColumns.Length == 0 || arrColumns.Length != arrCaption.Length)
  98. {
  99. return;
  100. }
  101. dataTable1.Columns.Clear();//先清除
  102. DataColumn dc;
  103. for (int i = 0; i < arrColumns.Length; i++)
  104. {
  105. try
  106. {
  107. dc = new DataColumn(arrColumns[i].ToString());
  108. dc.Caption = arrCaption[i].ToString();
  109. dataTable1.Columns.Add(dc);
  110. if (dc.ColumnName == "CHK")
  111. {
  112. dc.DataType = typeof(bool);
  113. dc.DefaultValue = "False";
  114. }
  115. }
  116. catch
  117. {
  118. continue;
  119. }
  120. }
  121. }
  122. /// <summary>
  123. /// UltraGrid列是否隐藏
  124. /// </summary>isShow 为true则显示其他隐藏,false则隐藏其他显示
  125. /// <param name="ugr">UltraGrid</param>
  126. /// <param name="keys">隐藏列</param>
  127. public static void setColumnShowOrHidden(UltraGrid ugr, string[] keys, bool isShow)
  128. {
  129. if (keys == null || keys.Length == 0)
  130. {
  131. foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
  132. {
  133. ugc.Hidden = false;
  134. }
  135. }
  136. else
  137. {
  138. keys.ToArray();
  139. foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
  140. {
  141. if (keys.Contains(ugc.Key))
  142. {
  143. if (isShow)
  144. {
  145. ugc.Hidden = false;
  146. }
  147. else
  148. {
  149. ugc.Hidden = true;
  150. }
  151. }
  152. else
  153. {
  154. if (isShow)
  155. {
  156. ugc.Hidden = true;
  157. }
  158. }
  159. }
  160. }
  161. }
  162. /// <summary>
  163. /// 设置列字段显示位置在右
  164. /// </summary>
  165. /// <param name="ug">UltraGrid</param>
  166. /// <param name="columnsKeys">要设置的列</param>
  167. public void InitCellPositionRight(UltraGrid ug, string[] columnsKeys)
  168. {
  169. if (columnsKeys == null || columnsKeys.Length == 0)
  170. {
  171. foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns)
  172. {
  173. ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
  174. }
  175. }
  176. else
  177. {
  178. columnsKeys.ToArray();
  179. foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns)
  180. {
  181. if (columnsKeys.Contains(ugc.Key.ToString()))
  182. {
  183. ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right;
  184. }
  185. }
  186. }
  187. }
  188. /// <summary>
  189. /// 筛选符合条件的DataTable加入排序
  190. /// </summary>
  191. /// <param name="dt"></param>源dt
  192. /// <returns></returns>
  193. public static DataTable GetSelectDt(DataTable dtSource, string sql, string sort)
  194. {
  195. if (dtSource != null)
  196. {
  197. DataTable dtReturn = dtSource.Clone();
  198. DataRow[] arrDrSelect;
  199. if (sort != "")
  200. {
  201. arrDrSelect = dtSource.Select(sql, sort);
  202. }
  203. else
  204. {
  205. arrDrSelect = dtSource.Select(sql);
  206. }
  207. if (arrDrSelect != null && arrDrSelect.Length > 0)
  208. {
  209. foreach (DataRow row in arrDrSelect)
  210. {
  211. dtReturn.Rows.Add(row.ItemArray);
  212. }
  213. }
  214. return dtReturn;
  215. }
  216. else
  217. {
  218. return null;
  219. }
  220. }
  221. /// <summary>
  222. /// 激活当前操作的列
  223. ///
  224. /// </summary>
  225. /// <param name="ultraGrid"></param>
  226. /// <param name="strPK"></param>多主键
  227. public static void ActiveOperateRow(UltraGrid ultraGrid, string[] strPK, string[] strPKText)
  228. {
  229. bool isEquals;
  230. for (int i = 0; i < ultraGrid.Rows.Count; i++)
  231. {
  232. isEquals = true;
  233. for (int j = 0; j < strPK.Length; j++)
  234. {
  235. if (ultraGrid.Rows[i].Cells[strPK[j]].Text != strPKText[j])
  236. {
  237. isEquals = false;
  238. break;
  239. }
  240. }
  241. if (isEquals == true)
  242. {
  243. ultraGrid.Rows[i].Activated = true;
  244. return;
  245. }
  246. }
  247. }
  248. /// <summary>
  249. /// 重写基类方法
  250. /// </summary>
  251. /// <param name="sender"></param>
  252. /// <param name="ToolbarKey"></param>
  253. public override void ToolBar_Click(object sender, string ToolbarKey)
  254. {
  255. //新增、修改修约值、审核、删除、退出
  256. switch (ToolbarKey)
  257. {
  258. case "Query":
  259. if (ultraTabControl1.SelectedTab.Index == 0)
  260. {
  261. QueryLotNoAndStoveNo();
  262. }
  263. else if (ultraTabControl1.SelectedTab.Index == 1)
  264. {
  265. QueryLotNoAndStoveNo_LOG();
  266. }
  267. break;
  268. case "AddBatch"://AddSample
  269. AddBatchSampleInfo();
  270. break;
  271. case "Audit":
  272. //AuditBatchSampleInfo();
  273. break;
  274. case "Update":
  275. UpdateBatchSampleInfo();
  276. break;
  277. case "Delete":
  278. DeleteBatchSampleInfo();
  279. break;
  280. case "Close":
  281. if (MessageUtil.ShowYesNoAndQuestion("是否确认关闭页面?") == DialogResult.Yes)
  282. {
  283. this.Close();
  284. }
  285. break;
  286. }
  287. }
  288. //绑定工序下拉框、选择不同的工序显示不同的管号队列
  289. private void BindProcessDesc()
  290. {
  291. Infragistics.Win.ValueList valueList = new Infragistics.Win.ValueList();
  292. //valueList.ValueListItems.Add("00", "上料");
  293. //valueList.ValueListItems.Add("10", "锯切完成");
  294. //valueList.ValueListItems.Add("20", "出炉");
  295. //valueList.ValueListItems.Add("30", "穿孔完成");
  296. //valueList.ValueListItems.Add("40", "连轧完成");
  297. //valueList.ValueListItems.Add("50", "出再加热炉");
  298. //valueList.ValueListItems.Add("60", "出定径");
  299. //valueList.ValueListItems.Add("70", "分切完成");
  300. //valueList.ValueListItems.Add("80", "矫直完成");
  301. //valueList.ValueListItems.Add("90", "探伤完成");
  302. valueList.ValueListItems.Add("0", "上料");
  303. valueList.ValueListItems.Add("1", "锯切");
  304. valueList.ValueListItems.Add("2", "加热炉");
  305. valueList.ValueListItems.Add("3", "穿孔");
  306. valueList.ValueListItems.Add("4", "连轧");
  307. valueList.ValueListItems.Add("5", "再加热炉");
  308. valueList.ValueListItems.Add("6", "定径");
  309. valueList.ValueListItems.Add("7", "分切前");//在此工序组批
  310. valueList.ValueListItems.Add("8", "分切后");//在此工序组批
  311. valueList.ValueListItems.Add("9", "矫直");
  312. valueList.ValueListItems.Add("10", "探伤");
  313. //valueList.ValueListItems.Add("10", "探伤");
  314. ultraGX.ValueList = valueList;
  315. ultraGX.Text = valueList.ValueListItems.GetItem(8).ToString();
  316. ultraGX_LOG.ValueList = valueList;
  317. ultraGX_LOG.Text = valueList.ValueListItems.GetItem(8).ToString();
  318. }
  319. #region 未组批
  320. //查询生产批号、炉号队列
  321. private void QueryLotNoAndStoveNo()
  322. {
  323. try
  324. {
  325. ArrayList al = new ArrayList();
  326. //产线、批次号、炉号
  327. al.Add("0");//性能批号标志位
  328. al.Add("0");//是否取样标志位
  329. al.Add(PlineCode);
  330. al.Add(txtQueryLOT_NO.Text.Trim());
  331. al.Add(txtQueryJUDGE_STOVE_NO.Text.Trim());
  332. DataTable dt = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryLotNoAndStoveNo",
  333. new Object[] { al }, ob);
  334. if (dt == null || dt.Rows.Count == 0)
  335. {
  336. dataTable1.Rows.Clear();
  337. dataTable2.Rows.Clear();
  338. return;
  339. }
  340. GridHelper.CopyDataToDatatable(dt, dataTable1, true);//把dt复制给dataTable1
  341. GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid
  342. }
  343. catch (Exception e)
  344. {
  345. MessageUtil.ShowWarning(e.Message);
  346. }
  347. }
  348. //查询管号队列
  349. private void QueryPipeNoRack()
  350. {
  351. try
  352. {
  353. if (ultraGrid1.ActiveRow != null && ultraGrid1.ActiveRow.Activated == true && ultraGX.Text != "")
  354. {
  355. dataTable2.Rows.Clear();
  356. dataTable3.Rows.Clear();//管号队列都变了已组批次清空
  357. ArrayList al = new ArrayList();
  358. //产线、批次号、炉号
  359. al.Add(PlineCode);
  360. al.Add(ultraGrid1.ActiveRow.Cells["LOT_NO"].Text.Trim());
  361. al.Add(ultraGrid1.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim());
  362. al.Add(ultraGrid1.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim());
  363. al.Add(ultraGrid1.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim());
  364. al.Add(ultraGX.Value);
  365. DataTable dt = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryPipeNoRack", new object[] { al, ultraGX.Value.ToString() }, this.ob);
  366. if (dt == null || dt.Rows.Count == 0)
  367. {
  368. ultraSTART_PIPE_NO.Text = "";
  369. MessageUtil.ShowWarning("此炉号在此工序暂时没有管号队列!");
  370. return;
  371. }
  372. if (CHKISVALID.Checked == false)
  373. {
  374. GridHelper.CopyDataToDatatable(dt, dataTable2, true);
  375. }
  376. else
  377. {
  378. GridHelper.CopyDataToDatatable(GetSelectDt(dt, "ISVALID = '是'", ""), dataTable2, true);//把dt复制给dataTable2
  379. }
  380. GridHelper.RefreshAndAutoSize(ultraGrid2);//刷新Grid
  381. if (dataTable2 != null && dataTable2.Rows.Count > 0)
  382. {
  383. m_dtPipeNo = GetSelectDt(dataTable2, "ISVALID = '是'", "");//筛选出有效管号
  384. if (m_dtPipeNo != null && m_dtPipeNo.Rows.Count > 0 && dataTable3.Rows.Count == 0)
  385. {
  386. ultraSTART_PIPE_NO.Text = "";//置于空
  387. ultraSTART_PIPE_NO.Text = m_dtPipeNo.Rows[0]["PIPE_NO"].ToString().Trim();
  388. ultraSTART_PIPE_NO.Value = m_dtPipeNo.Rows[0]["SEQ"].ToString().Trim();
  389. }
  390. txtPIPE_NUM.Text = m_dtPipeNo.Rows.Count.ToString();//有效管数
  391. if (txtBATCH_MAX.Text.Trim().TryParseInt())
  392. {
  393. int maxNum = Convert.ToInt16(txtBATCH_MAX.Text.Trim());//分批上限
  394. int resNum = m_dtPipeNo.Rows.Count % maxNum;//余数
  395. int batch = m_dtPipeNo.Rows.Count / maxNum;//批数
  396. txtBATCH_MIN.Text = (resNum == 0 ? batch : batch + 1).ToString();//批数参考
  397. }
  398. }
  399. }
  400. }
  401. catch (Exception e)
  402. {
  403. MessageUtil.ShowWarning(e.Message);
  404. }
  405. }
  406. //查询取样要求
  407. private void QueryGetSampleReq()
  408. {
  409. dataTable4.Rows.Clear();
  410. DataRow dr = dataTable4.NewRow();
  411. dr["PHY_CODE_MAX"] = "R0002";
  412. dr["PHY_NAME_MAX"] = "夏比冲击试验";
  413. dr["PHY_NAME_MIN"] = "夏比冲击试验取样1";
  414. dr["SAMPLE_STYLE"] = "片";
  415. dr["DESC_LENGTH"] = "300mm";
  416. dr["DESC_RATE"] = "按批";
  417. dr["DESC_POSITION"] = "A端或B端";
  418. dr["DESC_COUNT"] = "2";
  419. dr["SAMPLE_COUNT"] = "1";//样条数
  420. dataTable4.Rows.Add(dr);
  421. DataRow dr1 = dataTable4.NewRow();
  422. dr1["PHY_CODE_MAX"] = "R0001";
  423. dr1["PHY_NAME_MAX"] = "拉伸试验";
  424. dr1["PHY_NAME_MIN"] = "拉伸试验取样1";
  425. dr1["SAMPLE_STYLE"] = "片";
  426. dr1["DESC_LENGTH"] = "500mm";
  427. dr1["DESC_RATE"] = "按批";
  428. dr1["DESC_POSITION"] = "A端";
  429. dr1["DESC_COUNT"] = "1";
  430. dr1["SAMPLE_COUNT"] = "1";
  431. dataTable4.Rows.Add(dr1);
  432. DataRow dr2 = dataTable4.NewRow();
  433. dr2["PHY_CODE_MAX"] = "R0004";
  434. dr2["PHY_NAME_MAX"] = "洛氏硬度";
  435. dr2["PHY_NAME_MIN"] = "洛氏硬度试验取样1";
  436. dr2["SAMPLE_STYLE"] = "环";
  437. dr2["DESC_LENGTH"] = "500mm";
  438. dr2["DESC_RATE"] = "按批";
  439. dr2["DESC_POSITION"] = "A端";
  440. dr2["DESC_COUNT"] = "3";
  441. dr2["SAMPLE_COUNT"] = "1";
  442. dataTable4.Rows.Add(dr2);
  443. DataRow dr3 = dataTable4.NewRow();
  444. dr3["PHY_CODE_MAX"] = "R0013";
  445. dr3["PHY_NAME_MAX"] = "晶粒度";
  446. dr3["PHY_NAME_MIN"] = "晶粒度1";
  447. dr3["SAMPLE_STYLE"] = "片";
  448. dr3["DESC_LENGTH"] = "500mm";
  449. dr3["DESC_RATE"] = "按炉";
  450. dr3["DESC_POSITION"] = "A端";
  451. dr3["DESC_COUNT"] = "1";
  452. dr3["SAMPLE_COUNT"] = "1";
  453. dataTable4.Rows.Add(dr3);
  454. DataRow dr4 = dataTable4.NewRow();
  455. dr4["PHY_CODE_MAX"] = "HX";
  456. dr4["PHY_NAME_MAX"] = "化学";
  457. dr4["PHY_NAME_MIN"] = "化学1";
  458. dr4["SAMPLE_STYLE"] = "片";
  459. dr4["DESC_LENGTH"] = "100mm";
  460. dr4["DESC_RATE"] = "按炉";
  461. dr4["DESC_POSITION"] = "A端";
  462. dr4["DESC_COUNT"] = "2";
  463. dr4["SAMPLE_COUNT"] = "1";
  464. dataTable4.Rows.Add(dr4);
  465. GridHelper.RefreshAndAutoSize(ultraGrid4);
  466. txtBATCH_MAX.Text = "30";//分批上限
  467. //GridHelper.RefreshAndAutoSize(ultraGrid8);
  468. }
  469. private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
  470. {
  471. QueryGetSampleReq();//获取每批最小支数
  472. QueryPipeNoRack();
  473. }
  474. //工序变化事件
  475. private void ultraGX_TextChanged(object sender, EventArgs e)
  476. {
  477. QueryPipeNoRack();
  478. }
  479. //管号是否有效变化
  480. private void CHKISVALID_CheckedChanged(object sender, EventArgs e)
  481. {
  482. QueryPipeNoRack();
  483. }
  484. private void ultraSTART_PIPE_NO_TextChanged(object sender, EventArgs e)
  485. {
  486. if (txtBATCH_MAX.Text.Trim().TryParseInt() == true && m_dtPipeNo != null && m_dtPipeNo.Rows.Count > 0 && ultraSTART_PIPE_NO.Text.Trim() != "")
  487. {
  488. //结束管号自动变为起始管号+分批上限区间
  489. DataRow[] start = m_dtPipeNo.Select("PIPE_NO = '" + ultraSTART_PIPE_NO.Text.Trim() + "'");//起始管号位置
  490. if (start == null || start.Length == 0)
  491. {
  492. return;
  493. }
  494. int startNum = m_dtPipeNo.Rows.IndexOf(start[0]);//起始管号位置
  495. DataTable dt = m_dtPipeNo.Clone();
  496. for (int i = startNum; i < startNum + Convert.ToInt16(txtBATCH_MAX.Text.Trim()) && i < m_dtPipeNo.Rows.Count; i++)
  497. {
  498. dt.ImportRow(m_dtPipeNo.Rows[i]);
  499. }
  500. ultraEND_PIPE_NO.DataSource = dt;
  501. ultraEND_PIPE_NO.DisplayMember = "PIPE_NO";
  502. ultraEND_PIPE_NO.ValueMember = "SEQ";
  503. ultraEND_PIPE_NO.Text = dt.Rows[dt.Rows.Count - 1]["PIPE_NO"].ToString().Trim();
  504. }
  505. }
  506. private void btnConfirm_Click(object sender, EventArgs e)
  507. {
  508. if (m_dtPipeNo == null || m_dtPipeNo.Rows.Count == 0)
  509. {
  510. MessageUtil.ShowWarning("没有有效的管号队列不能组批!");
  511. return;
  512. }
  513. if (txtBATCH_MAX.Text.Trim().TryParseInt() == false)
  514. {
  515. MessageUtil.ShowWarning("分批上限不为整数不能分批!");
  516. return;
  517. }
  518. if (ultraSTART_PIPE_NO.Text.Trim() == "")
  519. {
  520. MessageUtil.ShowWarning("起始管号不能为空!");
  521. return;
  522. }
  523. if (ultraEND_PIPE_NO.Text.Trim() == "")
  524. {
  525. MessageUtil.ShowWarning("结束管号不能为空!");
  526. return;
  527. }
  528. if (dataTable3.Rows.Count > 0 && m_dtPipeNo.Rows[m_dtPipeNo.Rows.Count - 1]["PIPE_NO"].ToString().Trim() == dataTable3.Rows[dataTable3.Rows.Count - 1]["END_PIPE_NO"].ToString().Trim())
  529. {
  530. MessageUtil.ShowWarning("分批已经完成不能再分批!");
  531. return;
  532. }
  533. //判断起始和结束管号在不在有效管号区间内
  534. DataRow[] start = m_dtPipeNo.Select("PIPE_NO = '" + ultraSTART_PIPE_NO.Text.Trim() + "'");//起始管号位置
  535. if (start == null || start.Length == 0)
  536. {
  537. MessageUtil.ShowWarning("请选择有效的起始管号!");
  538. return;
  539. }
  540. DataRow[] end = m_dtPipeNo.Select("PIPE_NO = '" + ultraEND_PIPE_NO.Text.Trim() + "'");//结束管号位置
  541. if (end == null || end.Length == 0)
  542. {
  543. MessageUtil.ShowWarning("请选择有效的结束管号!");
  544. return;
  545. }
  546. int startNum = m_dtPipeNo.Rows.IndexOf(start[0]);//起始管号位置
  547. int endNum = m_dtPipeNo.Rows.IndexOf(end[0]);//结束管号位置
  548. if (endNum < startNum)
  549. {
  550. MessageUtil.ShowWarning("结束管号不能小于起始管号!");
  551. return;
  552. }
  553. if (endNum - startNum >= Convert.ToInt16(txtBATCH_MAX.Text.Trim()))
  554. {
  555. MessageUtil.ShowWarning("此批管号数已大于分批上限分批失败!");
  556. return;
  557. }
  558. //判断起始管号有木有等于上一批次的结束管号+1
  559. DataRow dr = dataTable3.NewRow();
  560. dr["BATCH_NO"] = (dataTable3.Rows.Count + 1).ToString().PadLeft(4, '0');//规则加批次为批号
  561. dr["START_PIPE_NO"] = ultraSTART_PIPE_NO.Text.Trim();//开始管号
  562. dr["START_SEQ"] = ultraSTART_PIPE_NO.Value.ToString();//开始序号 20151030
  563. dr["END_PIPE_NO"] = ultraEND_PIPE_NO.Text.Trim();//结束管号
  564. dr["END_SEQ"] = ultraEND_PIPE_NO.Value.ToString();//结束序号
  565. dr["PIPE_NUM"] = (endNum - startNum + 1).ToString();//有效管数
  566. dataTable3.Rows.Add(dr);
  567. GridHelper.RefreshAndAutoSize(ultraGrid3);
  568. //分批完成后起始管号自动等于上一批次结束管号+1
  569. if (endNum < m_dtPipeNo.Rows.Count - 1)
  570. {
  571. ultraSTART_PIPE_NO.Text = m_dtPipeNo.Rows[endNum + 1]["PIPE_NO"].ToString();
  572. ultraSTART_PIPE_NO.Value = m_dtPipeNo.Rows[endNum + 1]["SEQ"].ToString();//序号 20151030
  573. }
  574. }
  575. private void btnAuto_Click(object sender, EventArgs e)
  576. {
  577. if (txtBATCH_MAX.Text.Trim().TryParseInt() == false)
  578. {
  579. MessageUtil.ShowWarning("分批上限不为整数不能分批!");
  580. return;
  581. }
  582. if (m_dtPipeNo == null || m_dtPipeNo.Rows.Count == 0)
  583. {
  584. MessageUtil.ShowWarning("不存在有效的管号队列不能分批!");
  585. return;
  586. }
  587. dataTable3.Rows.Clear();
  588. int maxNum = Convert.ToInt16(txtBATCH_MAX.Text.Trim());//分批上限
  589. int resNum = m_dtPipeNo.Rows.Count % maxNum;//余数
  590. int batch = m_dtPipeNo.Rows.Count / maxNum;//批数
  591. int minBatchNo = resNum == 0 ? batch : batch + 1;//最小批数
  592. int startNum = 1;
  593. for (int i = 0; i < m_dtPipeNo.Rows.Count; i += maxNum)
  594. {
  595. if (startNum <= minBatchNo)
  596. {
  597. DataRow dr = dataTable3.NewRow();
  598. dr["BATCH_NO"] = startNum.ToString().PadLeft(4, '0');//规则加批次为批号
  599. dr["START_PIPE_NO"] = m_dtPipeNo.Rows[i]["PIPE_NO"].ToString();//开始管号
  600. //dr["START_SEQ"] = ultraSTART_PIPE_NO.Value.ToString();//开始序号 20151030
  601. dr["START_SEQ"] = m_dtPipeNo.Rows[i]["SEQ"].ToString();
  602. if (maxNum * startNum > m_dtPipeNo.Rows.Count)
  603. {
  604. dr["END_PIPE_NO"] = m_dtPipeNo.Rows[m_dtPipeNo.Rows.Count - 1]["PIPE_NO"].ToString();//结束管号
  605. dr["END_SEQ"] = ultraEND_PIPE_NO.Value.ToString();//结束序号
  606. dr["PIPE_NUM"] = (m_dtPipeNo.Rows.Count - i).ToString();//有效管数
  607. }
  608. else
  609. {
  610. dr["END_PIPE_NO"] = m_dtPipeNo.Rows[maxNum * startNum - 1]["PIPE_NO"].ToString();//结束管号
  611. //dr["END_SEQ"] = ultraEND_PIPE_NO.Value.ToString();//结束序号
  612. dr["END_SEQ"] = m_dtPipeNo.Rows[maxNum * startNum - 1]["SEQ"].ToString();
  613. dr["PIPE_NUM"] = maxNum.ToString();//有效管数
  614. }
  615. dataTable3.Rows.Add(dr);
  616. startNum++;
  617. }
  618. }
  619. GridHelper.RefreshAndAutoSize(ultraGrid3);
  620. }
  621. //取消一条批号
  622. private void btnCancel_Click(object sender, EventArgs e)
  623. {
  624. if (dataTable3 == null || dataTable3.Rows.Count == 0 || ultraGrid3.ActiveRow == null || ultraGrid3.ActiveRow.Activated == false)
  625. {
  626. MessageUtil.ShowWarning("请选择一条需要删除的性能批号信息!");
  627. return;
  628. }
  629. if (MessageUtil.ShowYesNoAndQuestion("您确定删除此条性能批号信息吗?") == DialogResult.Yes)
  630. {
  631. int startNum = ultraGrid3.ActiveRow.Index;
  632. int length = dataTable3.Rows.Count;
  633. //dataTable5的相应信息也需要删除
  634. if (startNum == 0)
  635. {
  636. dataTable5.Rows.Clear();
  637. dataTable3.Rows.Clear();
  638. }
  639. else
  640. {
  641. for (int i = startNum; i < length; i++)
  642. {
  643. for (int j = 0; j < m_dtSampleNo.Rows.Count; j++)
  644. {
  645. if (dataTable3.Rows[startNum]["BATCH_NO"].ToString() == m_dtSampleNo.Rows[j]["BATCH_NO"].ToString())
  646. {
  647. m_dtSampleNo.Rows.RemoveAt(j);
  648. j--;
  649. }
  650. }
  651. dataTable3.Rows.RemoveAt(startNum);
  652. }
  653. }
  654. //取消批数起始管号和结束管号重新赋值
  655. if (dataTable3.Rows.Count == 0)
  656. {
  657. ultraSTART_PIPE_NO.Text = m_dtPipeNo.Rows[0]["PIPE_NO"].ToString();
  658. ultraSTART_PIPE_NO.Value = m_dtPipeNo.Rows[0]["SEQ"].ToString();//序号 20151030
  659. }
  660. else
  661. {
  662. DataRow[] end = m_dtPipeNo.Select("PIPE_NO = '" + dataTable4.Rows[dataTable4.Rows.Count - 1]["END_PIPE_NO"].ToString() + "'");//结束管号位置
  663. if (end == null || end.Length == 0)
  664. {
  665. return;
  666. }
  667. int endNum = m_dtPipeNo.Rows.IndexOf(end[0]);//结束管号位置
  668. ultraSTART_PIPE_NO.Text = m_dtPipeNo.Rows[endNum + 1]["PIPE_NO"].ToString();
  669. ultraSTART_PIPE_NO.Value = m_dtPipeNo.Rows[endNum + 1]["SEQ"].ToString();//序号 20151030
  670. }
  671. }
  672. }
  673. //初始化参考取样要求dataTable5
  674. private void InitColumnsSampleReq()
  675. {
  676. dataTable5.Rows.Clear();
  677. //参考取样要求队列
  678. ArrayList alColumnsSampleReq = new ArrayList();
  679. alColumnsSampleReq.Add("BATCH_NO");
  680. alColumnsSampleReq.Add("SAMPLE_NO");
  681. ArrayList alCaptionSampleReq = new ArrayList();
  682. alCaptionSampleReq.Add("性能批号");
  683. alCaptionSampleReq.Add("试样号");
  684. foreach (DataRow dr in dataTable4.Rows)
  685. {
  686. if (dr["PHY_CODE_MAX"].ToString() != "" && dr["PHY_NAME_MAX"].ToString() != "")
  687. {
  688. alColumnsSampleReq.Add(dr["PHY_CODE_MAX"].ToString());
  689. alCaptionSampleReq.Add(dr["PHY_NAME_MAX"].ToString());
  690. }
  691. }
  692. //alColumnsSampleReq.Add("HX");
  693. //alCaptionSampleReq.Add("化学");
  694. alColumnsSampleReq.Add("SAMPLE_LEN");
  695. alCaptionSampleReq.Add("取样长度");
  696. InitColumns(alColumnsSampleReq.ToArray(), alCaptionSampleReq.ToArray(), dataTable5);
  697. //获取一批最大取样数量
  698. int max = 0;
  699. foreach (DataRow dr in dataTable4.Rows)
  700. {
  701. if (StringUtil.IsInt(dr["DESC_COUNT"].ToString()))
  702. {
  703. if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > max)
  704. {
  705. max = Convert.ToInt32(dr["DESC_COUNT"].ToString());
  706. }
  707. }
  708. }
  709. //根据组批实绩自动生成参考取样要求队列区分A、B端
  710. string row = "";//存放所有试样号判断是否有重复批号+试样号
  711. DataRow newDr = dataTable5.NewRow();
  712. foreach (DataRow dr in dataTable3.Rows)
  713. {
  714. for (int i = 1; i <= max; i++)
  715. {
  716. if (row.IndexOf(dr["BATCH_NO"].ToString() + "+" + i) < 0)//判断是否有重复试样号,有则不增加行只增加对应的列
  717. {
  718. row += dr["BATCH_NO"].ToString() + "+" + i + " ";
  719. newDr = dataTable5.NewRow();
  720. newDr["BATCH_NO"] = dr["BATCH_NO"].ToString();
  721. newDr["SAMPLE_NO"] = dr["BATCH_NO"].ToString() + "-" + i;
  722. //newDr["SAMPLE_SIZE"] = dr["SAMPLE_SIZE"].ToString();
  723. dataTable5.Rows.Add(newDr);
  724. }
  725. else
  726. {
  727. //newDr[dr["SAMPLE_NO"].ToString()] = dr["SAMPLE_NO"].ToString();
  728. }
  729. }
  730. }
  731. //为每一个试样号赋予检验项目
  732. int num = 0;//记录此批检验项已经增加了几个试样号
  733. string batch = "";//存放批号判断是否从0开始
  734. foreach (DataRow dataRow in dataTable5.Rows)
  735. {
  736. if (batch.IndexOf(dataRow["BATCH_NO"].ToString()) < 0)
  737. {
  738. batch += dataRow["BATCH_NO"].ToString() + " ";
  739. num = 0;
  740. }
  741. foreach (DataRow dr in dataTable4.Rows)
  742. {
  743. if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > num)
  744. {
  745. dataRow[dr["PHY_CODE_MAX"].ToString()] = "√";
  746. }
  747. }
  748. num++;
  749. }
  750. //为取样长度赋值
  751. foreach (DataRow dataRow in dataTable5.Rows)
  752. {
  753. int Samplelen = 0;
  754. int maxPian = 0;//片状试样最大长度
  755. foreach (DataRow dr in dataTable4.Rows)
  756. {
  757. if (dataRow[dr["PHY_CODE_MAX"].ToString()].ToString() == "√")
  758. {
  759. //string str = dr["SAMPLE_STYLE"].ToString();
  760. int len = Convert.ToInt32(dr["DESC_LENGTH"].ToString().Replace("mm", "").Trim());
  761. if (dr["SAMPLE_STYLE"].ToString() == "片")
  762. {
  763. if (len > maxPian)
  764. {
  765. maxPian = len;
  766. }
  767. }
  768. else
  769. {
  770. Samplelen += len;
  771. }
  772. }
  773. }
  774. Samplelen += maxPian;
  775. dataRow["SAMPLE_LEN"] = Samplelen;// +"mm";
  776. }
  777. GridHelper.RefreshAndAutoSize(ultraGrid5);
  778. InitCellPositionRight(ultraGrid5, new string[] { "SAMPLE_LEN" });
  779. }
  780. //初始化参考取样要求dataTable5
  781. private void InitColumnsSampleReqs()
  782. {
  783. dataTable5.Rows.Clear();
  784. //参考取样要求队列
  785. ArrayList alColumnsSampleReq = new ArrayList();
  786. alColumnsSampleReq.Add("BATCH_NO");
  787. alColumnsSampleReq.Add("SAMPLE_NO");
  788. ArrayList alCaptionSampleReq = new ArrayList();
  789. alCaptionSampleReq.Add("性能批号");
  790. alCaptionSampleReq.Add("试样号");
  791. foreach (DataRow dr in dataTable4.Rows)
  792. {
  793. if (dr["PHY_CODE_MAX"].ToString() != "" && dr["PHY_NAME_MAX"].ToString() != "")
  794. {
  795. alColumnsSampleReq.Add(dr["PHY_CODE_MAX"].ToString());
  796. alCaptionSampleReq.Add(dr["PHY_NAME_MAX"].ToString());
  797. }
  798. }
  799. //alColumnsSampleReq.Add("HX");
  800. //alCaptionSampleReq.Add("化学");
  801. alColumnsSampleReq.Add("SAMPLE_LEN");
  802. alCaptionSampleReq.Add("取样长度");
  803. InitColumns(alColumnsSampleReq.ToArray(), alCaptionSampleReq.ToArray(), dataTable5);
  804. //获取按批最大取样数量
  805. int max = 0;
  806. foreach (DataRow dr in dataTable4.Rows)
  807. {
  808. if (dr["DESC_RATE"].ToString() == "按批" && StringUtil.IsInt(dr["DESC_COUNT"].ToString()))
  809. {
  810. if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > max)
  811. {
  812. max = Convert.ToInt32(dr["DESC_COUNT"].ToString());
  813. }
  814. }
  815. }
  816. //获取按炉每炉一个
  817. int maxBatch = 0;
  818. foreach (DataRow dr in dataTable4.Rows)
  819. {
  820. if (dr["DESC_RATE"].ToString() == "按炉" && StringUtil.IsInt(dr["DESC_COUNT"].ToString()))
  821. {
  822. if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > maxBatch)
  823. {
  824. maxBatch = Convert.ToInt32(dr["DESC_COUNT"].ToString());
  825. }
  826. }
  827. }
  828. //根据组批实绩自动生成参考取样要求队列区分A、B端
  829. string row = "";//存放所有试样号判断是否有重复批号+试样号
  830. DataRow newDr = dataTable5.NewRow();
  831. for (int i = 1; i <= maxBatch + 1; i++)
  832. {
  833. for (int j = 1; j <= max; j++)
  834. {
  835. if (row.IndexOf(i.ToString().PadLeft(4, '0') + "+" + j) < 0)//判断是否有重复试样号,有则不增加行只增加对应的列
  836. {
  837. row += i.ToString().PadLeft(4, '0') + "+" + j + " ";
  838. newDr = dataTable5.NewRow();
  839. newDr["BATCH_NO"] = i.ToString().PadLeft(4, '0');
  840. newDr["SAMPLE_NO"] = maxBatch.ToString().PadLeft(4, '0') + "-" + j;
  841. //newDr["SAMPLE_SIZE"] = dr["SAMPLE_SIZE"].ToString();
  842. dataTable5.Rows.Add(newDr);
  843. }
  844. }
  845. }
  846. //为每一个试样号赋予检验项目
  847. int num = 0;//记录此批检验项已经增加了几个试样号
  848. string batch = "";//存放批号判断是否从0开始
  849. foreach (DataRow dataRow in dataTable5.Rows)
  850. {
  851. if (batch.IndexOf(dataRow["BATCH_NO"].ToString()) < 0)
  852. {
  853. batch += dataRow["BATCH_NO"].ToString() + " ";
  854. num = 0;
  855. }
  856. foreach (DataRow dr in dataTable4.Rows)
  857. {
  858. if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > num)
  859. {
  860. dataRow[dr["PHY_CODE_MAX"].ToString()] = "√";
  861. }
  862. }
  863. num++;
  864. }
  865. //为取样长度赋值
  866. foreach (DataRow dataRow in dataTable5.Rows)
  867. {
  868. int Samplelen = 0;
  869. int maxPian = 0;//片状试样最大长度
  870. foreach (DataRow dr in dataTable4.Rows)
  871. {
  872. if (dataRow[dr["PHY_CODE_MAX"].ToString()].ToString() == "√")
  873. {
  874. //string str = dr["SAMPLE_STYLE"].ToString();
  875. int len = Convert.ToInt32(dr["DESC_LENGTH"].ToString().Replace("mm", "").Trim());
  876. if (dr["SAMPLE_STYLE"].ToString() == "片")
  877. {
  878. if (len > maxPian)
  879. {
  880. maxPian = len;
  881. }
  882. }
  883. else
  884. {
  885. Samplelen += len;
  886. }
  887. }
  888. }
  889. Samplelen += maxPian;
  890. dataRow["SAMPLE_LEN"] = Samplelen;// +"mm";
  891. }
  892. GridHelper.RefreshAndAutoSize(ultraGrid5);
  893. InitCellPositionRight(ultraGrid5, new string[] { "SAMPLE_LEN" });
  894. }
  895. private void btnFindSampleReq_Click(object sender, EventArgs e)
  896. {
  897. //if (ultraGrid1.ActiveRow != null && ultraGrid1.ActiveRow.Activated == true)
  898. //{
  899. if (splitContainer2.Panel1Collapsed)
  900. {
  901. splitContainer2.Panel1Collapsed = false;
  902. }
  903. else
  904. {
  905. splitContainer2.Panel1Collapsed = true; ;
  906. }
  907. //}
  908. }
  909. private void ultraGrid3_AfterRowActivate(object sender, EventArgs e)
  910. {
  911. InitColumnsSampleReq();
  912. //InitColumnsSampleReqs();
  913. }
  914. //保存组批试样信息
  915. private void AddBatchSampleInfo()
  916. {
  917. if (ultraTabControl1.SelectedTab.Index != 0)
  918. {
  919. MessageUtil.ShowWarning("只有在未组批页才能进行完成组批操作!");
  920. return;
  921. }
  922. if (ultraGrid1.ActiveRow == null || dataTable1.Rows.Count == 0)
  923. {
  924. MessageUtil.ShowWarning("请选择炉号信息!");
  925. return;
  926. }
  927. if (dataTable3 == null || dataTable3.Rows.Count == 0)
  928. {
  929. MessageUtil.ShowWarning("组批没有完成不能进行此操作!");
  930. return;
  931. }
  932. //if (dataTable5 == null || dataTable5.Rows.Count == 0)
  933. //{
  934. // MessageUtil.ShowWarning("取样没有完成不能进行此操作!");
  935. // return;
  936. //}
  937. //if (m_dtSampleNo == null || m_dtSampleNo.Rows.Count == 0)
  938. //{
  939. // MessageUtil.ShowWarning("取样没有完成不能进行此操作!");
  940. // return;
  941. //}
  942. if (dataTable4.Rows.Count < Convert.ToInt16(txtBATCH_MIN.Text.Trim()))
  943. {
  944. MessageUtil.ShowWarning("批数太少不符合标准要求!");
  945. return;
  946. }
  947. if (MessageUtil.ShowYesNoAndQuestion("是否确认完成组批?") == DialogResult.Yes)
  948. {
  949. //往组批表和取样表里面插数据
  950. ultraGrid3.UpdateData();
  951. //ultraGrid5.UpdateData();
  952. string strLOT_NO = ultraGrid1.ActiveRow.Cells["LOT_NO"].Text.Trim();//生产批号
  953. string strSTOVE_NO = ultraGrid1.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim();//炉号
  954. string strPLINE_CODE = ultraGrid1.ActiveRow.Cells["PLINE_CODE"].Text.Trim();//产线代码
  955. string strTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  956. ArrayList alAll = new ArrayList();
  957. ArrayList alPlan = new ArrayList();
  958. ArrayList alPlanParams = new ArrayList();//更改状态位
  959. alPlanParams.Add("1");
  960. alPlanParams.Add("0");
  961. alPlanParams.Add(strLOT_NO);
  962. alPlanParams.Add(strSTOVE_NO);//判定炉号
  963. alPlan.Add(alPlanParams);
  964. ArrayList alBatchNo = new ArrayList();
  965. ArrayList alBatchNoParams;//批次号参数PROCESS_CDOE
  966. foreach (DataRow dataRow in dataTable3.Rows)
  967. {
  968. alBatchNoParams = new ArrayList();
  969. alBatchNoParams.Add(strLOT_NO);
  970. alBatchNoParams.Add(strSTOVE_NO);//判定炉号
  971. alBatchNoParams.Add(strPLINE_CODE);//产线代码
  972. alBatchNoParams.Add(ultraGX.Value.ToString());//工序代码
  973. alBatchNoParams.Add(ultraGX.Text);//工序名称20151111
  974. alBatchNoParams.Add(dataRow["BATCH_NO"].ToString());//性能批号
  975. alBatchNoParams.Add(dataRow["START_PIPE_NO"].ToString());//起始管号
  976. alBatchNoParams.Add(dataRow["START_SEQ"].ToString());//起始序号
  977. alBatchNoParams.Add(dataRow["END_PIPE_NO"].ToString());//结束管号
  978. alBatchNoParams.Add(dataRow["END_SEQ"].ToString());//结束序号
  979. alBatchNoParams.Add(dataRow["PIPE_NUM"].ToString());//有效管数 CHILD_START_SEQ CHILD_END_SEQ
  980. alBatchNoParams.Add(UserInfo.GetUserName());//组批人
  981. alBatchNoParams.Add(strTime);//组批时间
  982. alBatchNoParams.Add(UserInfo.GetUserOrder());//班次
  983. alBatchNoParams.Add(UserInfo.GetUserGroupText());//班组
  984. alBatchNoParams.Add("");//结炉状态
  985. alBatchNoParams.Add("");//备注
  986. alBatchNo.Add(alBatchNoParams);
  987. }
  988. //ArrayList alSampleNo = new ArrayList();
  989. //ArrayList alSampleNoParams;//试样号参数
  990. ////foreach (DataRow dr in dataTable5.Rows)
  991. //foreach (DataRow dr in m_dtSampleNo.Rows)
  992. //{
  993. // alSampleNoParams = new ArrayList();
  994. // alSampleNoParams.Add(strLOT_NO);
  995. // alSampleNoParams.Add(strSTOVE_NO);//判定炉号
  996. // alSampleNoParams.Add(dr["BATCH_NO"].ToString());//性能批号
  997. // alSampleNoParams.Add(dr["PIPE_NO"].ToString());//管号
  998. // alSampleNoParams.Add(dr["SEQ"].ToString());//序号
  999. // alSampleNoParams.Add(dr["DESC_POSITION"].ToString());//取样位置
  1000. // alSampleNoParams.Add(dr["SAMPLE_NO"].ToString());//试样号
  1001. // alSampleNoParams.Add("");//试样长度
  1002. // alSampleNoParams.Add(UserInfo.GetUserName());//取样人
  1003. // alSampleNoParams.Add(strTime);//取样时间
  1004. // alSampleNoParams.Add(UserInfo.GetUserOrder());//班次
  1005. // alSampleNoParams.Add(UserInfo.GetUserGroupText());//班组
  1006. // alSampleNoParams.Add("");//备注
  1007. // alSampleNo.Add(alSampleNoParams);
  1008. //}
  1009. alAll.Add(alPlan);
  1010. alAll.Add(alBatchNo);
  1011. //alAll.Add(alSampleNo);
  1012. ServerHelper.SetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.AddBatchSampleInfo",
  1013. new Object[] { alAll }, this.ob);
  1014. QueryLotNoAndStoveNo();//刷新GRID1
  1015. QueryLotNoAndStoveNo_LOG();//刷新GRID6
  1016. ActiveOperateRow(ultraGrid6, new string[] { "LOT_NO", "JUDGE_STOVE_NO" }, new string[] { strLOT_NO, strSTOVE_NO });//定位
  1017. dataTable3.Rows.Clear();
  1018. dataTable4.Rows.Clear();
  1019. dataTable5.Rows.Clear();
  1020. MessageUtil.ShowTips("组批完成!");
  1021. }
  1022. }
  1023. #endregion
  1024. #region 已组批未取样
  1025. private void btnConfirm_LOG_Click(object sender, EventArgs e)
  1026. {
  1027. if (m_dtPipeNo_LOG == null || m_dtPipeNo_LOG.Rows.Count == 0)
  1028. {
  1029. MessageUtil.ShowWarning("没有有效的管号队列不能组批!");
  1030. return;
  1031. }
  1032. if (txtBATCH_MAX_LOG.Text.Trim().TryParseInt() == false)
  1033. {
  1034. MessageUtil.ShowWarning("分批上限不为整数不能分批!");
  1035. return;
  1036. }
  1037. if (ultraSTART_PIPE_NO_LOG.Text.Trim() == "")
  1038. {
  1039. MessageUtil.ShowWarning("起始管号不能为空!");
  1040. return;
  1041. }
  1042. if (ultraEND_PIPE_NO_LOG.Text.Trim() == "")
  1043. {
  1044. MessageUtil.ShowWarning("结束管号不能为空!");
  1045. return;
  1046. }
  1047. if (dataTable8.Rows.Count > 0 && m_dtPipeNo_LOG.Rows[m_dtPipeNo_LOG.Rows.Count - 1]["PIPE_NO"].ToString().Trim() == dataTable8.Rows[dataTable8.Rows.Count - 1]["END_PIPE_NO"].ToString().Trim())
  1048. {
  1049. MessageUtil.ShowWarning("分批已经完成不能再分批!");
  1050. return;
  1051. }
  1052. //判断起始和结束管号在不在有效管号区间内
  1053. DataRow[] start = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraSTART_PIPE_NO_LOG.Text.Trim() + "'");//起始管号位置
  1054. if (start == null || start.Length == 0)
  1055. {
  1056. MessageUtil.ShowWarning("请选择有效的起始管号!");
  1057. return;
  1058. }
  1059. DataRow[] end = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraEND_PIPE_NO_LOG.Text.Trim() + "'");//结束管号位置
  1060. if (end == null || end.Length == 0)
  1061. {
  1062. MessageUtil.ShowWarning("请选择有效的结束管号!");
  1063. return;
  1064. }
  1065. int startNum = m_dtPipeNo_LOG.Rows.IndexOf(start[0]);//起始管号位置
  1066. int endNum = m_dtPipeNo_LOG.Rows.IndexOf(end[0]);//结束管号位置
  1067. if (endNum < startNum)
  1068. {
  1069. MessageUtil.ShowWarning("结束管号不能小于起始管号!");
  1070. return;
  1071. }
  1072. if (endNum - startNum >= Convert.ToInt16(txtBATCH_MAX_LOG.Text.Trim()))
  1073. {
  1074. MessageUtil.ShowWarning("此批管号数已大于分批上限分批失败!");
  1075. return;
  1076. }
  1077. //判断起始管号有木有等于上一批次的结束管号+1
  1078. DataRow dr = dataTable8.NewRow();
  1079. dr["BATCH_NO"] = (dataTable8.Rows.Count + 1).ToString().PadLeft(4, '0');//规则加批次为批号
  1080. dr["START_PIPE_NO"] = ultraSTART_PIPE_NO_LOG.Text.Trim();//开始管号
  1081. dr["START_SEQ"] = ultraSTART_PIPE_NO_LOG.Value.ToString();//开始序号
  1082. dr["END_PIPE_NO"] = ultraEND_PIPE_NO_LOG.Text.Trim();//结束管号
  1083. dr["END_SEQ"] = ultraEND_PIPE_NO_LOG.Value.ToString();//结束序号
  1084. dr["PIPE_NUM"] = (endNum - startNum + 1).ToString();//有效管数
  1085. dataTable8.Rows.Add(dr);
  1086. //分批完成后起始管号自动等于上一批次结束管号+1
  1087. if (endNum < m_dtPipeNo_LOG.Rows.Count - 1)
  1088. {
  1089. ultraSTART_PIPE_NO_LOG.Text = m_dtPipeNo_LOG.Rows[endNum + 1]["PIPE_NO"].ToString();
  1090. ultraSTART_PIPE_NO_LOG.Value = m_dtPipeNo_LOG.Rows[endNum + 1]["SEQ"].ToString();
  1091. }
  1092. }
  1093. private void btnAuto_LOG_Click(object sender, EventArgs e)
  1094. {
  1095. if (txtBATCH_MAX_LOG.Text.Trim().TryParseInt() == false)
  1096. {
  1097. MessageUtil.ShowWarning("分批上限不为整数不能分批!");
  1098. return;
  1099. }
  1100. if (m_dtPipeNo_LOG == null || m_dtPipeNo_LOG.Rows.Count == 0)
  1101. {
  1102. MessageUtil.ShowWarning("不存在有效的管号队列不能分批!");
  1103. return;
  1104. }
  1105. dataTable8.Rows.Clear();
  1106. int maxNum = Convert.ToInt16(txtBATCH_MAX_LOG.Text.Trim());//分批上限
  1107. int resNum = m_dtPipeNo_LOG.Rows.Count % maxNum;//余数
  1108. int batch = m_dtPipeNo_LOG.Rows.Count / maxNum;//批数
  1109. int minBatchNo = resNum == 0 ? batch : batch + 1;//最小批数
  1110. int startNum = 1;
  1111. for (int i = 0; i < m_dtPipeNo_LOG.Rows.Count; i += maxNum)
  1112. {
  1113. if (startNum <= minBatchNo)
  1114. {
  1115. DataRow dr = dataTable8.NewRow();
  1116. dr["BATCH_NO"] = startNum.ToString().PadLeft(4, '0');//规则加批次为批号
  1117. dr["START_PIPE_NO"] = m_dtPipeNo_LOG.Rows[i]["PIPE_NO"].ToString();//开始管号
  1118. dr["START_SEQ"] = m_dtPipeNo_LOG.Rows[i]["SEQ"].ToString();//20151030
  1119. if (maxNum * startNum > m_dtPipeNo_LOG.Rows.Count)
  1120. {
  1121. dr["END_PIPE_NO"] = m_dtPipeNo_LOG.Rows[m_dtPipeNo_LOG.Rows.Count - 1]["PIPE_NO"].ToString();//结束管号
  1122. dr["END_SEQ"] = m_dtPipeNo_LOG.Rows[m_dtPipeNo_LOG.Rows.Count - 1]["SEQ"].ToString();//结束序号
  1123. dr["PIPE_NUM"] = (m_dtPipeNo_LOG.Rows.Count - i).ToString();//有效管数
  1124. }
  1125. else
  1126. {
  1127. dr["END_PIPE_NO"] = m_dtPipeNo_LOG.Rows[maxNum * startNum - 1]["PIPE_NO"].ToString();//结束管号
  1128. dr["END_SEQ"] = m_dtPipeNo_LOG.Rows[maxNum * startNum - 1]["SEQ"].ToString();//结束序号
  1129. dr["PIPE_NUM"] = maxNum.ToString();//有效管数
  1130. }
  1131. dataTable8.Rows.Add(dr);
  1132. startNum++;
  1133. }
  1134. }
  1135. //GridHelper.RefreshAndAutoSize(ultraGrid9);
  1136. }
  1137. //取消一条批号
  1138. private void btnCancel_LOG_Click(object sender, EventArgs e)
  1139. {
  1140. if (dataTable8 == null || dataTable8.Rows.Count == 0)
  1141. {
  1142. MessageUtil.ShowWarning("请选择一条需要删除的性能批号信息!");
  1143. return;
  1144. }
  1145. if (MessageUtil.ShowYesNoAndQuestion("您确定删除此条性能批号信息吗?") == DialogResult.Yes)
  1146. {
  1147. int startNum = ultraGrid8.ActiveRow.Index;
  1148. int length = dataTable8.Rows.Count;//性能批号
  1149. //dataTable10的相应信息也需要删除
  1150. if (startNum == 0)
  1151. {
  1152. m_dtSampleNo_LOG.Rows.Clear();
  1153. dataTable9.Rows.Clear();
  1154. dataTable8.Rows.Clear();
  1155. }
  1156. else
  1157. {
  1158. for (int i = startNum; i < length; i++)
  1159. {
  1160. for (int j = 0; j < m_dtSampleNo_LOG.Rows.Count; j++)
  1161. {
  1162. if (dataTable8.Rows[startNum]["BATCH_NO"].ToString() == m_dtSampleNo_LOG.Rows[j]["BATCH_NO"].ToString())
  1163. {
  1164. m_dtSampleNo_LOG.Rows.RemoveAt(j);
  1165. j--;
  1166. }
  1167. }
  1168. dataTable8.Rows.RemoveAt(startNum);
  1169. }
  1170. }
  1171. //取消批数起始管号和结束管号重新赋值
  1172. if (dataTable8.Rows.Count == 0)
  1173. {
  1174. ultraSTART_PIPE_NO_LOG.Text = m_dtPipeNo_LOG.Rows[0]["PIPE_NO"].ToString();
  1175. ultraSTART_PIPE_NO_LOG.Value = m_dtPipeNo_LOG.Rows[0]["SEQ"].ToString();//序号 20151030
  1176. }
  1177. else
  1178. {
  1179. DataRow[] end = m_dtPipeNo_LOG.Select("PIPE_NO = '" + dataTable8.Rows[dataTable8.Rows.Count - 1]["END_PIPE_NO"].ToString() + "'");//结束管号位置
  1180. if (end == null || end.Length == 0)
  1181. {
  1182. return;
  1183. }
  1184. int endNum = m_dtPipeNo_LOG.Rows.IndexOf(end[0]);//结束管号位置
  1185. ultraSTART_PIPE_NO_LOG.Text = m_dtPipeNo_LOG.Rows[endNum + 1]["PIPE_NO"].ToString();
  1186. ultraSTART_PIPE_NO_LOG.Value = m_dtPipeNo_LOG.Rows[endNum + 1]["SEQ"].ToString();//序号 20151030
  1187. }
  1188. }
  1189. }
  1190. //点击确认增加试样号要判断管号是否在性能批号区间以及是否重新增加了管号+取样位置
  1191. private void btnAddSample_LOG_Click(object sender, EventArgs e)
  1192. {
  1193. if (ultraPIPE_NO_LOG.Text.Trim() == "")
  1194. {
  1195. MessageUtil.ShowWarning("请选择管号!");
  1196. return;
  1197. }
  1198. if (ultraPOSITION_LOG.Text.Trim() == "")
  1199. {
  1200. MessageUtil.ShowWarning("请选择取样位置!");
  1201. return;
  1202. }
  1203. DataRow[] start = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraGrid8.ActiveRow.Cells["START_PIPE_NO"].Text.Trim() + "'");//起始管号位置
  1204. DataRow[] end = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraGrid8.ActiveRow.Cells["END_PIPE_NO"].Text.Trim() + "'");//结束管号位置
  1205. int startNum = m_dtPipeNo_LOG.Rows.IndexOf(start[0]);//起始管号位置
  1206. int endNum = m_dtPipeNo_LOG.Rows.IndexOf(end[0]);//结束管号位置
  1207. DataRow[] select = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraPIPE_NO_LOG.Text.Trim() + "'");
  1208. if (select == null || select.Length == 0)
  1209. {
  1210. MessageUtil.ShowWarning("请选择正确的管号!");
  1211. return;
  1212. }
  1213. int selectNum = m_dtPipeNo_LOG.Rows.IndexOf(select[0]);//选择管号位置
  1214. if (selectNum < startNum || selectNum > endNum)
  1215. {
  1216. MessageUtil.ShowWarning("管号不在选择的性能批号区间请重新选择!");
  1217. return;
  1218. }
  1219. if (ultraPOSITION_LOG.Text.Trim() == "A和B")
  1220. {
  1221. foreach (DataRow dr in dataTable9.Rows)
  1222. {
  1223. if (dr["PIPE_NO"].ToString().Trim() == ultraPIPE_NO_LOG.Text.Trim())
  1224. {
  1225. MessageUtil.ShowWarning("已存在相同的管号和取样位置请重新选择!");
  1226. return;
  1227. }
  1228. }
  1229. DataRow dataRow = dataTable9.NewRow();
  1230. dataRow["BATCH_NO"] = ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim();
  1231. dataRow["SAMPLE_NO"] = ultraBATCH_NO_LOG.Text.Trim() + "-" + ultraPIPE_NO_LOG.Text.Trim() + "-1";//管号
  1232. dataRow["PIPE_NO"] = ultraPIPE_NO_LOG.Text.Trim();//管号
  1233. dataRow["SEQ"] = ultraPIPE_NO_LOG.Value.ToString();//序号
  1234. dataRow["DESC_POSITION"] = "A";//取样位置
  1235. dataTable9.Rows.Add(dataRow);
  1236. if (m_dtSampleNo_LOG != null)
  1237. {
  1238. m_dtSampleNo_LOG.ImportRow(dataRow);
  1239. }
  1240. dataRow = dataTable9.NewRow();
  1241. dataRow["BATCH_NO"] = ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim();
  1242. dataRow["SAMPLE_NO"] = ultraBATCH_NO_LOG.Text.Trim() + "-" + ultraPIPE_NO_LOG.Text.Trim() + "-2";//管号
  1243. dataRow["PIPE_NO"] = ultraPIPE_NO_LOG.Text.Trim();//管号
  1244. dataRow["SEQ"] = ultraPIPE_NO_LOG.Value.ToString();//序号
  1245. dataRow["DESC_POSITION"] = "B";//取样位置
  1246. dataTable9.Rows.Add(dataRow);
  1247. if (m_dtSampleNo_LOG != null)
  1248. {
  1249. m_dtSampleNo_LOG.ImportRow(dataRow);
  1250. }
  1251. }
  1252. else
  1253. {
  1254. foreach (DataRow dr in dataTable9.Rows)
  1255. {
  1256. if (dr["PIPE_NO"].ToString().Trim() == ultraPIPE_NO_LOG.Text.Trim() && dr["DESC_POSITION"].ToString().Trim() == ultraPOSITION_LOG.Text.Trim())
  1257. {
  1258. MessageUtil.ShowWarning("已存在相同的管号和取样位置请重新选择!");
  1259. return;
  1260. }
  1261. }
  1262. DataRow dataRow = dataTable9.NewRow();
  1263. dataRow["BATCH_NO"] = ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim();
  1264. dataRow["SAMPLE_NO"] = ultraBATCH_NO_LOG.Text.Trim() + "-" + ultraPIPE_NO_LOG.Text.Trim() + "-" + ultraPOSITION_LOG.Value.ToString();//管号
  1265. dataRow["PIPE_NO"] = ultraPIPE_NO_LOG.Text.Trim();//管号
  1266. dataRow["SEQ"] = ultraPIPE_NO_LOG.Value.ToString();//序号
  1267. dataRow["DESC_POSITION"] = ultraPOSITION_LOG.Text.Trim();//取样位置
  1268. dataTable9.Rows.Add(dataRow);
  1269. if (m_dtSampleNo_LOG != null)
  1270. {
  1271. m_dtSampleNo_LOG.ImportRow(dataRow);
  1272. }
  1273. }
  1274. GridHelper.RefreshAndAutoSize(ultraGrid9);//刷新Grid
  1275. //填写真实试样号队列
  1276. //if (ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text == ultraGrid11.ActiveRow.Cells["BATCH_NO"].Text)
  1277. //{
  1278. //}
  1279. }
  1280. private void btnDeleteSample_LOG_Click(object sender, EventArgs e)
  1281. {
  1282. if (dataTable9 == null || dataTable9.Rows.Count == 0 || ultraGrid9.ActiveRow == null || ultraGrid9.ActiveRow.Activated == false)
  1283. {
  1284. MessageUtil.ShowWarning("请选择一条需要删除的试样号信息!");
  1285. return;
  1286. }
  1287. if (MessageUtil.ShowYesNoAndQuestion("您确定删除此条试样号信息吗?") == DialogResult.Yes)
  1288. {
  1289. string strSampleNo = ultraGrid9.ActiveRow.Cells["SAMPLE_NO"].Text.Trim();
  1290. dataTable9.Rows.RemoveAt(ultraGrid9.ActiveRow.Index);
  1291. foreach (DataRow dr in m_dtSampleNo_LOG.Rows)
  1292. {
  1293. if (dr["SAMPLE_NO"].ToString().Trim() == strSampleNo)
  1294. {
  1295. m_dtSampleNo_LOG.Rows.Remove(dr);
  1296. break;
  1297. }
  1298. }
  1299. }
  1300. }
  1301. //查询生产批号、炉号队列
  1302. private void QueryLotNoAndStoveNo_LOG()
  1303. {
  1304. try
  1305. {
  1306. ArrayList al = new ArrayList();
  1307. //产线、批次号、炉号
  1308. al.Add("1");//性能批号标志位
  1309. al.Add("0");//是否取样标志位
  1310. al.Add(PlineCode);
  1311. al.Add(txtQueryLOT_NO.Text.Trim());
  1312. al.Add(txtQueryJUDGE_STOVE_NO.Text.Trim());
  1313. DataTable dt = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryLotNoAndStoveNo",
  1314. new Object[] { al }, ob);
  1315. if (dt == null || dt.Rows.Count == 0)
  1316. {
  1317. dataTable6.Rows.Clear();
  1318. dataTable7.Rows.Clear();
  1319. return;
  1320. }
  1321. GridHelper.CopyDataToDatatable(dt, dataTable6, true);//把dt复制给dataTable1
  1322. GridHelper.RefreshAndAutoSize(ultraGrid6);//刷新Grid
  1323. }
  1324. catch (Exception e)
  1325. {
  1326. MessageUtil.ShowWarning(e.Message);
  1327. }
  1328. }
  1329. //查询管号队列
  1330. private void QueryPipeNoRack_LOG()
  1331. {
  1332. try
  1333. {
  1334. if (ultraGrid6.ActiveRow != null && ultraGrid6.ActiveRow.Activated == true && ultraGX_LOG.Text != "")
  1335. {
  1336. //ultraSTART_PIPE_NO_LOG.Text = "";
  1337. //txtBATCH_MAX_LOG.Text = "10";//分批上限
  1338. dataTable7.Rows.Clear();
  1339. dataTable8.Rows.Clear();
  1340. ArrayList al = new ArrayList();
  1341. //产线、批次号、炉号
  1342. al.Add(PlineCode);
  1343. al.Add(ultraGrid6.ActiveRow.Cells["LOT_NO"].Text.Trim());
  1344. al.Add(ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim());
  1345. al.Add(ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim());
  1346. al.Add(ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim());
  1347. al.Add(ultraGX_LOG.Value);
  1348. DataTable dt = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryPipeNoRack", new object[] { al, ultraGX_LOG.Value.ToString() }, this.ob);
  1349. if (dt == null || dt.Rows.Count == 0)
  1350. {
  1351. //MessageUtil.ShowWarning("此炉号在此工序暂时没有管号队列!");
  1352. dataTable7.Rows.Clear();
  1353. return;
  1354. }
  1355. if (CHKISVALID_LOG.Checked == false)
  1356. {
  1357. GridHelper.CopyDataToDatatable(dt, dataTable7, true);
  1358. }
  1359. else
  1360. {
  1361. GridHelper.CopyDataToDatatable(GetSelectDt(dt, "ISVALID = '是'", ""), dataTable7, true);//把dt复制给dataTable2
  1362. }
  1363. GridHelper.RefreshAndAutoSize(ultraGrid7);//刷新Grid
  1364. if (dataTable7 != null && dataTable7.Rows.Count > 0)
  1365. {
  1366. m_dtPipeNo_LOG = GetSelectDt(dataTable7, "ISVALID = '是'", "");//筛选出有效管号
  1367. if (m_dtPipeNo_LOG != null && m_dtPipeNo_LOG.Rows.Count > 0 && dataTable9.Rows.Count == 0)
  1368. {
  1369. ultraSTART_PIPE_NO_LOG.Text = "";
  1370. ultraSTART_PIPE_NO_LOG.Text = m_dtPipeNo_LOG.Rows[0]["PIPE_NO"].ToString().Trim();
  1371. ultraSTART_PIPE_NO_LOG.Value = m_dtPipeNo_LOG.Rows[0]["SEQ"].ToString().Trim();
  1372. }
  1373. txtPIPE_NUM_LOG.Text = m_dtPipeNo_LOG.Rows.Count.ToString();
  1374. if (txtBATCH_MAX_LOG.Text.Trim().TryParseInt())
  1375. {
  1376. int maxNum = Convert.ToInt16(txtBATCH_MAX_LOG.Text.Trim());//分批上限
  1377. int resNum = m_dtPipeNo_LOG.Rows.Count % maxNum;//余数
  1378. int batch = m_dtPipeNo_LOG.Rows.Count / maxNum;//批数
  1379. txtBATCH_MIN_LOG.Text = (resNum == 0 ? batch : batch + 1).ToString();//批数参考
  1380. }
  1381. }
  1382. }
  1383. }
  1384. catch (Exception e)
  1385. {
  1386. MessageUtil.ShowWarning(e.Message);
  1387. }
  1388. }
  1389. //查询取样要求
  1390. private void QueryGetSampleReq_LOG()
  1391. {
  1392. dataTable10.Rows.Clear();
  1393. DataRow dr = dataTable10.NewRow();
  1394. dr["PHY_CODE_MAX"] = "R0002";
  1395. dr["PHY_NAME_MAX"] = "夏比冲击试验";
  1396. dr["PHY_NAME_MIN"] = "夏比冲击试验取样1";
  1397. dr["SAMPLE_STYLE"] = "片";
  1398. dr["DESC_LENGTH"] = "300mm";
  1399. dr["DESC_RATE"] = "按批";
  1400. dr["DESC_POSITION"] = "A端或B端";
  1401. dr["DESC_COUNT"] = "2";
  1402. dr["SAMPLE_COUNT"] = "1";//样条数
  1403. dataTable10.Rows.Add(dr);
  1404. DataRow dr1 = dataTable10.NewRow();
  1405. dr1["PHY_CODE_MAX"] = "R0001";
  1406. dr1["PHY_NAME_MAX"] = "拉伸试验";
  1407. dr1["PHY_NAME_MIN"] = "拉伸试验取样1";
  1408. dr1["SAMPLE_STYLE"] = "片";
  1409. dr1["DESC_LENGTH"] = "500mm";
  1410. dr1["DESC_RATE"] = "按批";
  1411. dr1["DESC_POSITION"] = "A端";
  1412. dr1["DESC_COUNT"] = "1";
  1413. dr1["SAMPLE_COUNT"] = "1";
  1414. dataTable10.Rows.Add(dr1);
  1415. DataRow dr2 = dataTable10.NewRow();
  1416. dr2["PHY_CODE_MAX"] = "R0004";
  1417. dr2["PHY_NAME_MAX"] = "洛氏硬度";
  1418. dr2["PHY_NAME_MIN"] = "洛氏硬度试验取样1";
  1419. dr2["SAMPLE_STYLE"] = "环";
  1420. dr2["DESC_LENGTH"] = "500mm";
  1421. dr2["DESC_RATE"] = "按批";
  1422. dr2["DESC_POSITION"] = "A端";
  1423. dr2["DESC_COUNT"] = "3";
  1424. dr2["SAMPLE_COUNT"] = "1";
  1425. dataTable10.Rows.Add(dr2);
  1426. DataRow dr3 = dataTable10.NewRow();
  1427. dr3["PHY_CODE_MAX"] = "R0013";
  1428. dr3["PHY_NAME_MAX"] = "晶粒度";
  1429. dr3["PHY_NAME_MIN"] = "晶粒度1";
  1430. dr3["SAMPLE_STYLE"] = "片";
  1431. dr3["DESC_LENGTH"] = "500mm";
  1432. dr3["DESC_RATE"] = "按炉";
  1433. dr3["DESC_POSITION"] = "A端";
  1434. dr3["DESC_COUNT"] = "1";
  1435. dr3["SAMPLE_COUNT"] = "1";
  1436. dataTable10.Rows.Add(dr3);
  1437. DataRow dr4 = dataTable10.NewRow();
  1438. dr4["PHY_CODE_MAX"] = "HX";
  1439. dr4["PHY_NAME_MAX"] = "化学";
  1440. dr4["PHY_NAME_MIN"] = "化学1";
  1441. dr4["SAMPLE_STYLE"] = "片";
  1442. dr4["DESC_LENGTH"] = "100mm";
  1443. dr4["DESC_RATE"] = "按炉";
  1444. dr4["DESC_POSITION"] = "A端";
  1445. dr4["DESC_COUNT"] = "2";
  1446. dr4["SAMPLE_COUNT"] = "1";
  1447. dataTable10.Rows.Add(dr4);
  1448. GridHelper.RefreshAndAutoSize(ultraGrid10);
  1449. txtBATCH_MAX_LOG.Text = "30";//分批上限
  1450. }
  1451. private void ultraGrid6_AfterRowActivate(object sender, EventArgs e)
  1452. {
  1453. //QueryPipeNoRack_LOG();//查看管号队列
  1454. QueryGetSampleReq_LOG();//为取样要求赋值
  1455. QueryBatchSampleInfo();//查看已经组批队列
  1456. }
  1457. private void QueryBatchSampleInfo()
  1458. {
  1459. //查询已录入性能批号+试样号
  1460. string strLOT_NO = ultraGrid6.ActiveRow.Cells["LOT_NO"].Text.Trim();//生产批号
  1461. string strSTOVE_NO = ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim();//炉号
  1462. ArrayList arrayList = new ArrayList();
  1463. arrayList.Add(strLOT_NO);
  1464. arrayList.Add(strSTOVE_NO);//条件
  1465. DataTable dtBATCH_NO = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryBatchInfo",
  1466. new Object[] { arrayList }, ob);
  1467. if (dtBATCH_NO == null || dtBATCH_NO.Rows.Count == 0)
  1468. {
  1469. return;
  1470. }
  1471. ultraGX_LOG.Text = "";
  1472. //ultraGX_LOG.Text = dtBATCH_NO.Rows[0]["NODE_STATUS"].ToString();//为工序赋值20151111
  1473. ultraGX_LOG.Text = dtBATCH_NO.Rows[0]["PROCESS_DESC"].ToString();
  1474. txtBATCH_NAME.Text = dtBATCH_NO.Rows[0]["BATCH_NAME"].ToString().Trim();
  1475. txtBATCH_TIME.Text = dtBATCH_NO.Rows[0]["BATCH_TIME"].ToString().Trim();
  1476. txtBATCH_CLASS.Text = dtBATCH_NO.Rows[0]["BATCH_CLASS"].ToString().Trim();
  1477. GridHelper.CopyDataToDatatable(dtBATCH_NO, dataTable8, true);
  1478. InitColumnsSampleReq_LOG();
  1479. GridHelper.RefreshAndAutoSize(ultraGrid8);
  1480. DataTable dtSample = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QuerySampleInfo",
  1481. new Object[] { arrayList }, ob);
  1482. if (dtSample != null && dtSample.Rows.Count > 0)
  1483. {
  1484. txtSAMPLE_NAME.Text = dtSample.Rows[0]["GET_NAME"].ToString().Trim();
  1485. txtSAMPLE_TIME.Text = dtSample.Rows[0]["GET_TIME"].ToString().Trim();
  1486. txtSAMPLE_CLASS.Text = dtSample.Rows[0]["GET_CLASS"].ToString().Trim();
  1487. ///GridHelper.CopyDataToDatatable(dtSample, dataTable10, true);
  1488. }
  1489. m_dtSampleNo_LOG = dtSample.Copy();//存取全部试样号
  1490. }
  1491. //管号改变判断是否符合
  1492. private void ultraPIPE_NO_LOG_TextChanged(object sender, EventArgs e)
  1493. {
  1494. }
  1495. //判断是否有重复的管号和取样位置
  1496. private void ultraPOSITION_LOG_TextChanged(object sender, EventArgs e)
  1497. {
  1498. }
  1499. private void ultraSTART_PIPE_NO_LOG_TextChanged(object sender, EventArgs e)
  1500. {
  1501. if (txtBATCH_MAX_LOG.Text.Trim().TryParseInt() == true && m_dtPipeNo_LOG != null && m_dtPipeNo_LOG.Rows.Count > 0 && ultraSTART_PIPE_NO_LOG.Text.Trim() != "")
  1502. {
  1503. //结束管号自动变为起始管号+分批上限区间
  1504. DataRow[] start = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraSTART_PIPE_NO_LOG.Text.Trim() + "'");//起始管号位置
  1505. if (start == null || start.Length == 0)
  1506. {
  1507. return;
  1508. }
  1509. int startNum = m_dtPipeNo_LOG.Rows.IndexOf(start[0]);//起始管号位置
  1510. DataTable dt = m_dtPipeNo_LOG.Clone();
  1511. for (int i = startNum; i < startNum + Convert.ToInt16(txtBATCH_MAX_LOG.Text.Trim()) && i < m_dtPipeNo_LOG.Rows.Count; i++)
  1512. {
  1513. dt.ImportRow(m_dtPipeNo_LOG.Rows[i]);
  1514. }
  1515. ultraEND_PIPE_NO_LOG.DataSource = dt;
  1516. ultraEND_PIPE_NO.DisplayMember = "PIPE_NO";
  1517. ultraEND_PIPE_NO.ValueMember = "SEQ";
  1518. ultraEND_PIPE_NO_LOG.Text = dt.Rows[dt.Rows.Count - 1]["PIPE_NO"].ToString().Trim();
  1519. }
  1520. }
  1521. //工序变化事件
  1522. private void ultraGX_LOG_TextChanged(object sender, EventArgs e)
  1523. {
  1524. QueryPipeNoRack_LOG();
  1525. }
  1526. //管号是否有效变化
  1527. private void CHKISVALID_LOG_CheckedChanged(object sender, EventArgs e)
  1528. {
  1529. QueryPipeNoRack_LOG();
  1530. }
  1531. //审核组批试样信息
  1532. private void AuditBatchSampleInfo()
  1533. {
  1534. if (ultraTabControl1.SelectedTab.Index != 1)
  1535. {
  1536. MessageUtil.ShowWarning("只有在已取样数据页才能进行审核操作!");
  1537. return;
  1538. }
  1539. if (ultraGrid6.ActiveRow == null || dataTable6.Rows.Count == 0)
  1540. {
  1541. MessageUtil.ShowWarning("请选择需要审核的炉号信息!");
  1542. return;
  1543. }
  1544. if (dataTable9 == null || dataTable9.Rows.Count == 0)
  1545. {
  1546. MessageUtil.ShowWarning("组批没有完成不能进行审核操作!");
  1547. return;
  1548. }
  1549. if (dataTable10 == null || dataTable10.Rows.Count == 0)
  1550. {
  1551. MessageUtil.ShowWarning("取样没有完成不能进行审核操作!");
  1552. return;
  1553. }
  1554. if (MessageUtil.ShowYesNoAndQuestion("是否确认审核?") == DialogResult.Yes)
  1555. {
  1556. MessageUtil.ShowTips("审核成功!");
  1557. }
  1558. }
  1559. //修改组批试样信息
  1560. private void UpdateBatchSampleInfo()
  1561. {
  1562. if (ultraTabControl1.SelectedTab.Index != 1)
  1563. {
  1564. MessageUtil.ShowWarning("只有在已取样数据页才能进行修改操作!");
  1565. return;
  1566. }
  1567. if (ultraGrid6.ActiveRow == null || dataTable6.Rows.Count == 0)
  1568. {
  1569. MessageUtil.ShowWarning("请选择需要修改的炉号信息!");
  1570. return;
  1571. }
  1572. if (dataTable8 == null || dataTable8.Rows.Count == 0)
  1573. {
  1574. MessageUtil.ShowWarning("组批没有完成不能进行修改操作!");
  1575. return;
  1576. }
  1577. //if (dataTable10 == null || dataTable10.Rows.Count == 0)
  1578. //{
  1579. // MessageUtil.ShowWarning("取样没有完成不能进行修改操作!");
  1580. // return;
  1581. //}
  1582. //if (m_dtSampleNo_LOG == null || m_dtSampleNo_LOG.Rows.Count == 0)
  1583. //{
  1584. // MessageUtil.ShowWarning("取样没有完成不能进行此操作!");
  1585. // return;
  1586. //}
  1587. if (dataTable8.Rows.Count < Convert.ToInt16(txtBATCH_MIN_LOG.Text.Trim()))
  1588. {
  1589. MessageUtil.ShowWarning("批数太少不符合标准要求!");
  1590. return;
  1591. }
  1592. if (MessageUtil.ShowYesNoAndQuestion("是否确认修改?") == DialogResult.Yes)
  1593. {
  1594. //往组批表和取样表里面插数据
  1595. ultraGrid8.Update();
  1596. ultraGrid8.UpdateData();
  1597. ultraGrid9.Update();
  1598. ultraGrid9.UpdateData();
  1599. string strLOT_NO = ultraGrid6.ActiveRow.Cells["LOT_NO"].Text.Trim();//生产批号
  1600. string strSTOVE_NO = ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim();//炉号
  1601. string strPLINE_CODE = ultraGrid6.ActiveRow.Cells["PLINE_CODE"].Text.Trim();//产线代码
  1602. string strTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  1603. ArrayList alAll = new ArrayList();
  1604. ArrayList alDelete = new ArrayList();//删除参数
  1605. ArrayList alDeleteParams = new ArrayList(); ;//批次号参数PROCESS_CDOE
  1606. alDeleteParams.Add(strLOT_NO);
  1607. alDeleteParams.Add(strSTOVE_NO);//条件
  1608. alDelete.Add(alDeleteParams);
  1609. ArrayList alBatchNo = new ArrayList();
  1610. ArrayList alBatchNoParams;//批次号参数PROCESS_CDOE
  1611. foreach (DataRow dataRow in dataTable8.Rows)
  1612. {
  1613. alBatchNoParams = new ArrayList();
  1614. alBatchNoParams.Add(strLOT_NO);
  1615. alBatchNoParams.Add(strSTOVE_NO);//判定炉号
  1616. alBatchNoParams.Add(strPLINE_CODE);//产线代码
  1617. alBatchNoParams.Add(ultraGX.Value.ToString());//工序代码(A\B\C\D.....)
  1618. alBatchNoParams.Add(ultraGX.Text);//工序名称
  1619. alBatchNoParams.Add(dataRow["BATCH_NO"].ToString());//性能批号
  1620. alBatchNoParams.Add(dataRow["START_PIPE_NO"].ToString());//起始管号
  1621. alBatchNoParams.Add(dataRow["START_SEQ"].ToString());//起始序号
  1622. alBatchNoParams.Add(dataRow["END_PIPE_NO"].ToString());//结束管号
  1623. alBatchNoParams.Add(dataRow["END_SEQ"].ToString());//起始序号
  1624. alBatchNoParams.Add(dataRow["PIPE_NUM"].ToString());//有效管数
  1625. alBatchNoParams.Add(UserInfo.GetUserName());//组批人
  1626. alBatchNoParams.Add(strTime);//组批时间
  1627. alBatchNoParams.Add(UserInfo.GetUserOrder());//班次
  1628. alBatchNoParams.Add(UserInfo.GetUserGroupText());//班组
  1629. alBatchNoParams.Add("");//结炉状态
  1630. alBatchNoParams.Add("");//备注
  1631. alBatchNo.Add(alBatchNoParams);
  1632. }
  1633. //ArrayList alSampleNo = new ArrayList();
  1634. //ArrayList alSampleNoParams;//试样号参数
  1635. //foreach (DataRow dr in m_dtSampleNo_LOG.Rows)
  1636. //{
  1637. // alSampleNoParams = new ArrayList();
  1638. // alSampleNoParams.Add(strLOT_NO);
  1639. // alSampleNoParams.Add(strSTOVE_NO);//判定炉号
  1640. // alSampleNoParams.Add(dr["BATCH_NO"].ToString());//性能批号
  1641. // alSampleNoParams.Add(dr["PIPE_NO"].ToString());//管号
  1642. // alSampleNoParams.Add(dr["SEQ"].ToString());//序号
  1643. // alSampleNoParams.Add(dr["DESC_POSITION"].ToString());//取样位置
  1644. // alSampleNoParams.Add(dr["SAMPLE_NO"].ToString());//试样号
  1645. // alSampleNoParams.Add("");//试样号
  1646. // alSampleNoParams.Add(UserInfo.GetUserName());//取样人
  1647. // alSampleNoParams.Add(strTime);//取样时间
  1648. // alSampleNoParams.Add(UserInfo.GetUserOrder());//班次
  1649. // alSampleNoParams.Add(UserInfo.GetUserGroupText());//班组
  1650. // alSampleNoParams.Add("");//备注
  1651. // alSampleNo.Add(alSampleNoParams);
  1652. //}
  1653. alAll.Add(alDelete);
  1654. alAll.Add(alBatchNo);
  1655. //alAll.Add(alSampleNo);
  1656. ServerHelper.SetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.UpdateBatchSampleInfo",
  1657. new Object[] { alAll }, this.ob);
  1658. ClearData_LOG();
  1659. QueryLotNoAndStoveNo_LOG();//刷新GRID6
  1660. ActiveOperateRow(ultraGrid6, new string[] { "LOT_NO", "JUDGE_STOVE_NO" }, new string[] { strLOT_NO, strSTOVE_NO });//定位
  1661. MessageUtil.ShowTips("修改成功!");
  1662. }
  1663. }
  1664. //审核组批试样信息
  1665. private void DeleteBatchSampleInfo()
  1666. {
  1667. if (ultraTabControl1.SelectedTab.Index != 1)
  1668. {
  1669. MessageUtil.ShowWarning("只有在已取样数据页才能进行删除操作!");
  1670. return;
  1671. }
  1672. if (ultraGrid6.ActiveRow == null || dataTable6.Rows.Count == 0)
  1673. {
  1674. MessageUtil.ShowWarning("请选择需要删除的炉号信息!");
  1675. return;
  1676. }
  1677. //if (dataTable9 == null || dataTable9.Rows.Count == 0)
  1678. //{
  1679. // MessageUtil.ShowWarning("组批没有完成不能进行删除操作!");
  1680. // return;
  1681. //}
  1682. //if (dataTable10 == null || dataTable10.Rows.Count == 0)
  1683. //{
  1684. // MessageUtil.ShowWarning("取样没有完成不能进行删除操作!");
  1685. // return;
  1686. //}
  1687. if (MessageUtil.ShowYesNoAndQuestion("是否确认删除?") == DialogResult.Yes)
  1688. {
  1689. string strLOT_NO = ultraGrid6.ActiveRow.Cells["LOT_NO"].Text.Trim();//生产批号
  1690. string strSTOVE_NO = ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim();//炉号
  1691. ArrayList arrayList = new ArrayList();
  1692. arrayList.Add(strLOT_NO);
  1693. arrayList.Add(strSTOVE_NO);//条件
  1694. ServerHelper.SetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.DeleteBatchSampleInfo",
  1695. new Object[] { arrayList }, ob);
  1696. ClearData_LOG();
  1697. QueryLotNoAndStoveNo_LOG();//刷新GRID6
  1698. QueryLotNoAndStoveNo();//刷新GRID1
  1699. //ActiveOperateRow(ultraGrid1, new string[] { "LOT_NO", "JUDGE_STOVE_NO" }, new string[] { strLOT_NO, strSTOVE_NO });//定位
  1700. MessageUtil.ShowTips("删除成功!");
  1701. }
  1702. }
  1703. //清除数据
  1704. private void ClearData_LOG()
  1705. {
  1706. dataTable9.Rows.Clear();
  1707. dataTable10.Rows.Clear();
  1708. //ultraGX_LOG.Text = "";
  1709. ultraSTART_PIPE_NO_LOG.Text = "";
  1710. ultraEND_PIPE_NO_LOG.Text = "";
  1711. }
  1712. private void CHKISALL_LOG_CheckedChanged(object sender, EventArgs e)
  1713. {
  1714. if (dataTable8 != null && dataTable8.Rows.Count > 0 && ultraGrid8.ActiveRow != null & ultraGrid8.ActiveRow.Activated == true)
  1715. {
  1716. if (CHKISALL_LOG.Checked == false)
  1717. {
  1718. DataTable dtSelect = GetSelectDt(m_dtSampleNo_LOG, "BATCH_NO = '" + ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim() + "'", "BATCH_NO,SAMPLE_NO");
  1719. GridHelper.CopyDataToDatatable(dtSelect, dataTable9, true);
  1720. }
  1721. else
  1722. {
  1723. GridHelper.CopyDataToDatatable(m_dtSampleNo_LOG, dataTable9, true);
  1724. }
  1725. }
  1726. }
  1727. private void btnFindSampleReq_LOG_Click(object sender, EventArgs e)
  1728. {
  1729. if (splitContainer4.Panel1Collapsed)
  1730. {
  1731. splitContainer4.Panel1Collapsed = false;
  1732. }
  1733. else
  1734. {
  1735. splitContainer4.Panel1Collapsed = true; ;
  1736. }
  1737. }
  1738. private void ultraGrid8_AfterRowActivate(object sender, EventArgs e)
  1739. {
  1740. ultraBATCH_NO_LOG.Text = ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim();
  1741. ultraPIPE_NO_LOG.Text = ultraGrid8.ActiveRow.Cells["START_PIPE_NO"].Text.Trim();
  1742. //管号只能在此性能批号有效区间选择
  1743. DataRow[] start = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraGrid8.ActiveRow.Cells["START_PIPE_NO"].Text.Trim() + "'");//起始管号位置
  1744. DataRow[] end = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraGrid8.ActiveRow.Cells["END_PIPE_NO"].Text.Trim() + "'");//结束管号位置
  1745. if (start == null || start.Length == 0 || end == null || end.Length == 0)
  1746. {
  1747. return;
  1748. }
  1749. int startNum = m_dtPipeNo_LOG.Rows.IndexOf(start[0]);//起始管号位置
  1750. int endNum = m_dtPipeNo_LOG.Rows.IndexOf(end[0]);//结束管号位置
  1751. DataTable dt = m_dtPipeNo_LOG.Clone();
  1752. for (int i = startNum; i <= endNum; i++)
  1753. {
  1754. dt.ImportRow(m_dtPipeNo_LOG.Rows[i]);
  1755. }
  1756. ultraPIPE_NO_LOG.DataSource = dt;
  1757. ultraPIPE_NO_LOG.DisplayMember = "PIPE_NO";//20151030
  1758. ultraPIPE_NO_LOG.ValueMember = "SEQ";
  1759. if (CHKISALL_LOG.Checked == false)
  1760. {
  1761. DataTable dtSelect = GetSelectDt(m_dtSampleNo_LOG, "BATCH_NO = '" + ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim() + "'", "");
  1762. GridHelper.CopyDataToDatatable(dtSelect, dataTable9, true);
  1763. }
  1764. else
  1765. {
  1766. GridHelper.CopyDataToDatatable(m_dtSampleNo_LOG, dataTable9, true);
  1767. }
  1768. GridHelper.RefreshAndAutoSize(ultraGrid9);
  1769. //InitColumnsSampleReq_LOG();//初始化取样要求
  1770. dataTable11.Rows.Clear();
  1771. //是否显示全部取样要求
  1772. if (CHKISAllSampleReq_LOG.Checked == false)
  1773. {
  1774. DataTable dtSelect = GetSelectDt(m_dtSampleReq_LOG, "BATCH_NO = '" + ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim() + "'", "");
  1775. GridHelper.CopyDataToDatatable(dtSelect, dataTable11, true);
  1776. }
  1777. else
  1778. {
  1779. GridHelper.CopyDataToDatatable(m_dtSampleReq_LOG, dataTable11, true);
  1780. }
  1781. GridHelper.RefreshAndAutoSize(ultraGrid11);
  1782. }
  1783. //初始化参考取样要求dataTable11
  1784. private void InitColumnsSampleReq_LOG()
  1785. {
  1786. dataTable11.Rows.Clear();
  1787. //参考取样要求队列
  1788. ArrayList alColumnsSampleReq = new ArrayList();
  1789. alColumnsSampleReq.Add("BATCH_NO");
  1790. alColumnsSampleReq.Add("XH");
  1791. alColumnsSampleReq.Add("SAMPLE_NO");
  1792. ArrayList alCaptionSampleReq = new ArrayList();
  1793. alCaptionSampleReq.Add("性能批号");
  1794. alCaptionSampleReq.Add("序号");
  1795. alCaptionSampleReq.Add("试样号");
  1796. foreach (DataRow dr in dataTable10.Rows)//取样要求
  1797. {
  1798. if (dr["PHY_CODE_MAX"].ToString() != "" && dr["PHY_NAME_MAX"].ToString() != "")
  1799. {
  1800. alColumnsSampleReq.Add(dr["PHY_CODE_MAX"].ToString());
  1801. alCaptionSampleReq.Add(dr["PHY_NAME_MAX"].ToString());
  1802. }
  1803. }
  1804. //alColumnsSampleReq.Add("HX");
  1805. //alCaptionSampleReq.Add("化学");
  1806. alColumnsSampleReq.Add("SAMPLE_LEN");
  1807. alCaptionSampleReq.Add("取样长度");
  1808. InitColumns(alColumnsSampleReq.ToArray(), alCaptionSampleReq.ToArray(), dataTable11);
  1809. //获取一批最大取样数量
  1810. int max = 0;
  1811. foreach (DataRow dr in dataTable10.Rows)
  1812. {
  1813. if (StringUtil.IsInt(dr["DESC_COUNT"].ToString()))
  1814. {
  1815. if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > max)
  1816. {
  1817. max = Convert.ToInt32(dr["DESC_COUNT"].ToString());
  1818. }
  1819. }
  1820. }
  1821. //根据组批实绩自动生成参考取样要求队列区分A、B端
  1822. string row = "";//存放所有试样号判断是否有重复批号+试样号
  1823. DataRow newDr = dataTable11.NewRow();
  1824. foreach (DataRow dr in dataTable8.Rows)
  1825. {
  1826. for (int i = 1; i <= max; i++)
  1827. {
  1828. if (row.IndexOf(dr["BATCH_NO"].ToString() + "+" + i) < 0)//判断是否有重复试样号,有则不增加行只增加对应的列
  1829. {
  1830. row += dr["BATCH_NO"].ToString() + "+" + i + " ";
  1831. newDr = dataTable11.NewRow();
  1832. newDr["BATCH_NO"] = dr["BATCH_NO"].ToString();
  1833. newDr["XH"] = dr["BATCH_NO"].ToString() + "-" + i;
  1834. //newDr["SAMPLE_SIZE"] = dr["SAMPLE_SIZE"].ToString();
  1835. dataTable11.Rows.Add(newDr);
  1836. }
  1837. else
  1838. {
  1839. //newDr[dr["SAMPLE_NO"].ToString()] = dr["SAMPLE_NO"].ToString();
  1840. }
  1841. }
  1842. }
  1843. //为每一个试样号赋予检验项目
  1844. int num = 0;//记录此批检验项已经增加了几个试样号
  1845. string batch = "";//存放批号判断是否从0开始 只为按批的赋值
  1846. foreach (DataRow dataRow in dataTable11.Rows)
  1847. {
  1848. if (batch.IndexOf(dataRow["BATCH_NO"].ToString()) < 0)
  1849. {
  1850. batch += dataRow["BATCH_NO"].ToString() + " ";
  1851. num = 0;
  1852. }
  1853. foreach (DataRow dr in dataTable10.Rows)
  1854. {
  1855. if (dr["DESC_RATE"].ToString() == "按批" && Convert.ToInt32(dr["DESC_COUNT"].ToString()) > num)
  1856. {
  1857. dataRow[dr["PHY_CODE_MAX"].ToString()] = "√";
  1858. }
  1859. }
  1860. num++;
  1861. }
  1862. //为每一个试样号赋予检验项目
  1863. int numHeat = 0;//记录此批检验项已经增加了几个试样号
  1864. string heat = "";//存放批号判断是否从0开始 只为按批的赋值
  1865. foreach (DataRow dataRow in dataTable10.Rows)
  1866. {
  1867. if (dataRow["DESC_RATE"].ToString() == "按炉")
  1868. {
  1869. if (heat.IndexOf(dataRow["PHY_CODE_MAX"].ToString()) < 0)
  1870. {
  1871. heat += dataRow["PHY_CODE_MAX"].ToString() + " ";
  1872. numHeat = 0;
  1873. }
  1874. string strbatch = "";
  1875. foreach (DataRow dr in dataTable11.Rows)
  1876. {
  1877. if (strbatch.IndexOf(dr["BATCH_NO"].ToString()) < 0 && Convert.ToInt32(dataRow["DESC_COUNT"].ToString()) > numHeat)//一个批次只做一个样
  1878. {
  1879. strbatch += dr["BATCH_NO"].ToString() + " ";
  1880. if (Convert.ToInt32(dataRow["DESC_COUNT"].ToString()) > numHeat)
  1881. {
  1882. dr[dataRow["PHY_CODE_MAX"].ToString()] = "√";
  1883. }
  1884. //continue;
  1885. numHeat++;
  1886. }
  1887. //else if (strbatch.IndexOf(dr["BATCH_NO"].ToString()) >= 0 && Convert.ToInt32(dataRow["DESC_COUNT"].ToString()) > numHeat)
  1888. //{
  1889. // dr[dataRow["PHY_CODE_MAX"].ToString()] = "√";
  1890. //}
  1891. }
  1892. }
  1893. }
  1894. ////为取样长度赋值
  1895. foreach (DataRow dataRow in dataTable11.Rows)
  1896. {
  1897. int Samplelen = 0;
  1898. int maxPian = 0;//片状试样最大长度
  1899. foreach (DataRow dr in dataTable10.Rows)
  1900. {
  1901. if (dataRow[dr["PHY_CODE_MAX"].ToString()].ToString() == "√")
  1902. {
  1903. //string str = dr["SAMPLE_STYLE"].ToString();
  1904. int len = Convert.ToInt32(dr["DESC_LENGTH"].ToString().Replace("mm", "").Trim());
  1905. if (dr["SAMPLE_STYLE"].ToString() == "片")
  1906. {
  1907. if (len > maxPian)
  1908. {
  1909. maxPian = len;
  1910. }
  1911. }
  1912. else
  1913. {
  1914. Samplelen += len;
  1915. }
  1916. }
  1917. }
  1918. Samplelen += maxPian;
  1919. dataRow["SAMPLE_LEN"] = Samplelen;// +"mm";
  1920. }
  1921. InitCellPositionRight(ultraGrid11, new string[] { "SAMPLE_LEN" });
  1922. m_dtSampleReq_LOG = dataTable11.Copy();
  1923. //GridHelper.RefreshAndAutoSize(ultraGrid11);
  1924. }
  1925. private void CHKISAllSampleReq_LOG_CheckedChanged(object sender, EventArgs e)
  1926. {
  1927. if (dataTable8 != null && dataTable8.Rows.Count > 0 && ultraGrid8.ActiveRow != null & ultraGrid8.ActiveRow.Activated == true)
  1928. {
  1929. dataTable11.Rows.Clear();
  1930. //是否显示全部取样要求
  1931. if (CHKISAllSampleReq_LOG.Checked == false)
  1932. {
  1933. DataTable dtSelect = GetSelectDt(m_dtSampleReq_LOG, "BATCH_NO = '" + ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim() + "'", "");
  1934. GridHelper.CopyDataToDatatable(dtSelect, dataTable11, true);
  1935. }
  1936. else
  1937. {
  1938. GridHelper.CopyDataToDatatable(m_dtSampleReq_LOG, dataTable11, true);
  1939. }
  1940. }
  1941. }
  1942. private void btnSampleSeq_Click(object sender, EventArgs e)
  1943. {
  1944. }
  1945. #endregion
  1946. }
  1947. }