using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using CoreFS.CA06; using Core.Mes.Client.Comm.Tool; using Core.Mes.Client.Comm.Control; using System.Collections; using Core.Mes.Client.Comm.Server; using Infragistics.Win.UltraWinGrid; using Core.StlMes.Client.ZGMil.Entity; namespace Core.StlMes.Client.ZGMil.Result { public partial class FrmGetBatchAndSamples : FrmBase { private string PlineCode = "";//产线 private DataTable m_dtPipeNo;//管号队列 private DataTable m_dtPipeNo_LOG;//管号队列 private DataTable m_dtSampleNo;//试样号队列 private DataTable m_dtSampleNo_LOG;//试样号队列 private DataTable m_dtSampleReq_LOG;//参考取样要求队列 public FrmGetBatchAndSamples() { InitializeComponent(); } private void FrmGetSample_Load(object sender, EventArgs e) { InitColumnsDataTable(); m_dtSampleNo = dataTable5.Clone(); NativeMethodNew na = new NativeMethodNew(this.ob); PlineCode = na.GetPCode(UserInfo.GetDepartment());//获取 用户 对应的产线 BindProcessDesc();//绑定工序 //QueryLotNoAndStoveNo(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); ultraGrid1.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框 ultraGrid2.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.False; ultraGrid2.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False; ultraGrid3.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False; ultraGrid4.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False; ultraGrid5.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框 ultraGrid6.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.False;//不显示行头 ultraGrid6.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框 ultraGrid7.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.False;//不显示行头 ultraGrid7.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框 ultraGrid8.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框 ultraGrid9.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框 ultraGrid10.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;//不默认加载筛选条件框 ultraGrid11.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False; } private void InitColumnsDataTable() { //生产批号、炉号队列 string[] arrColumnsLot = new string[] { "LOT_NO", "JUDGE_STOVE_NO", "PLINE_CODE" }; string[] arrCaptionLot = new string[] { "生产批号", "炉号", "产线" }; InitColumns(arrColumnsLot, arrCaptionLot, dataTable1); setColumnShowOrHidden(ultraGrid1, new string[] { "PLINE_CODE" }, false);//不需要显示的行 InitColumns(arrColumnsLot, arrCaptionLot, dataTable6); setColumnShowOrHidden(ultraGrid6, new string[] { "PLINE_CODE" }, false);//不需要显示的行 //管号队列 string[] arrColumnsPipe = new string[] { "PIPE_NO", "SEQ", "ISVALID" }; string[] arrCaptionPipe = new string[] { "管号", "序号", "是否有效" }; InitColumns(arrColumnsPipe, arrCaptionPipe, dataTable2); InitColumns(arrColumnsPipe, arrCaptionPipe, dataTable2); setColumnShowOrHidden(ultraGrid2, new string[] { "SEQ" }, false); InitColumns(arrColumnsPipe, arrCaptionPipe, dataTable7); setColumnShowOrHidden(ultraGrid7, new string[] { "SEQ" }, false);//不需要显示的行 //性能批号队列 string[] arrColumnsBatch = new string[] { "BATCH_NO", "START_PIPE_NO", "START_SEQ", "END_PIPE_NO", "END_SEQ", "PIPE_NUM" }; string[] arrCaptionBatch = new string[] { "性能批号", "起始管号", "起始序号", "结束管号", "结束序号", "有效管数" }; InitColumns(arrColumnsBatch, arrCaptionBatch, dataTable3); setColumnShowOrHidden(ultraGrid3, new string[] { "START_SEQ", "END_SEQ" }, false);//不需要显示的行 InitColumns(arrColumnsBatch, arrCaptionBatch, dataTable8); setColumnShowOrHidden(ultraGrid8, new string[] { "START_SEQ", "END_SEQ" }, false);//不需要显示的行 //试样号队列 string[] arrColumnsSample = new string[] { "BATCH_NO", "SAMPLE_NO", "PIPE_NO", "SEQ", "DESC_POSITION" }; string[] arrCaptionSample = new string[] { "性能批号", "试样号", "管号", "序号", "取样位置" }; InitColumns(arrColumnsSample, arrCaptionSample, dataTable9); setColumnShowOrHidden(ultraGrid9, new string[] { "SEQ" }, false);//不需要显示的行 //取样要求队列 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" }; string[] arrCaptionSampleReq = new string[] { "检验项代码", "检验项", "取样码", "取样码描述", "样片类型", "标准代码", "标准名称", "取样长度代码", "取样长度", "取样频率代码", "取样频率", "取样位置代码", "取样位置", "取样数量", "试验样条数" }; InitColumns(arrColumnsSampleReq, arrCaptionSampleReq, dataTable4); setColumnShowOrHidden(ultraGrid4, new string[] { "PHY_CODE_MAX", "PHY_CODE_MIN", "STD_CODE", "STD_NAME", "LENGTH", "RATE", "POSITION" }, false);//不需要显示的行 InitColumns(arrColumnsSampleReq, arrCaptionSampleReq, dataTable10); setColumnShowOrHidden(ultraGrid10, new string[] { "PHY_CODE_MAX", "PHY_CODE_MIN", "STD_CODE", "STD_NAME", "LENGTH", "RATE", "POSITION" }, false);//不需要显示的行 } //初始化列 public void InitColumns(object[] arrColumns, object[] arrCaption, DataTable dataTable1) { if (arrColumns.Length == 0 || arrColumns.Length != arrCaption.Length) { return; } dataTable1.Columns.Clear();//先清除 DataColumn dc; for (int i = 0; i < arrColumns.Length; i++) { try { dc = new DataColumn(arrColumns[i].ToString()); dc.Caption = arrCaption[i].ToString(); dataTable1.Columns.Add(dc); if (dc.ColumnName == "CHK") { dc.DataType = typeof(bool); dc.DefaultValue = "False"; } } catch { continue; } } } /// /// UltraGrid列是否隐藏 /// isShow 为true则显示其他隐藏,false则隐藏其他显示 /// UltraGrid /// 隐藏列 public static void setColumnShowOrHidden(UltraGrid ugr, string[] keys, bool isShow) { if (keys == null || keys.Length == 0) { foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { ugc.Hidden = false; } } else { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { if (keys.Contains(ugc.Key)) { if (isShow) { ugc.Hidden = false; } else { ugc.Hidden = true; } } else { if (isShow) { ugc.Hidden = true; } } } } } /// /// 设置列字段显示位置在右 /// /// UltraGrid /// 要设置的列 public void InitCellPositionRight(UltraGrid ug, string[] columnsKeys) { if (columnsKeys == null || columnsKeys.Length == 0) { foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right; } } else { columnsKeys.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (columnsKeys.Contains(ugc.Key.ToString())) { ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right; } } } } /// /// 筛选符合条件的DataTable加入排序 /// /// 源dt /// public static DataTable GetSelectDt(DataTable dtSource, string sql, string sort) { if (dtSource != null) { DataTable dtReturn = dtSource.Clone(); DataRow[] arrDrSelect; if (sort != "") { arrDrSelect = dtSource.Select(sql, sort); } else { arrDrSelect = dtSource.Select(sql); } if (arrDrSelect != null && arrDrSelect.Length > 0) { foreach (DataRow row in arrDrSelect) { dtReturn.Rows.Add(row.ItemArray); } } return dtReturn; } else { return null; } } /// /// 激活当前操作的列 /// /// /// /// 多主键 public static void ActiveOperateRow(UltraGrid ultraGrid, string[] strPK, string[] strPKText) { bool isEquals; for (int i = 0; i < ultraGrid.Rows.Count; i++) { isEquals = true; for (int j = 0; j < strPK.Length; j++) { if (ultraGrid.Rows[i].Cells[strPK[j]].Text != strPKText[j]) { isEquals = false; break; } } if (isEquals == true) { ultraGrid.Rows[i].Activated = true; return; } } } /// /// 重写基类方法 /// /// /// public override void ToolBar_Click(object sender, string ToolbarKey) { //新增、修改修约值、审核、删除、退出 switch (ToolbarKey) { case "Query": if (ultraTabControl1.SelectedTab.Index == 0) { QueryLotNoAndStoveNo(); } else if (ultraTabControl1.SelectedTab.Index == 1) { QueryLotNoAndStoveNo_LOG(); } break; case "AddBatch"://AddSample AddBatchSampleInfo(); break; case "Audit": //AuditBatchSampleInfo(); break; case "Update": UpdateBatchSampleInfo(); break; case "Delete": DeleteBatchSampleInfo(); break; case "Close": if (MessageUtil.ShowYesNoAndQuestion("是否确认关闭页面?") == DialogResult.Yes) { this.Close(); } break; } } //绑定工序下拉框、选择不同的工序显示不同的管号队列 private void BindProcessDesc() { Infragistics.Win.ValueList valueList = new Infragistics.Win.ValueList(); //valueList.ValueListItems.Add("00", "上料"); //valueList.ValueListItems.Add("10", "锯切完成"); //valueList.ValueListItems.Add("20", "出炉"); //valueList.ValueListItems.Add("30", "穿孔完成"); //valueList.ValueListItems.Add("40", "连轧完成"); //valueList.ValueListItems.Add("50", "出再加热炉"); //valueList.ValueListItems.Add("60", "出定径"); //valueList.ValueListItems.Add("70", "分切完成"); //valueList.ValueListItems.Add("80", "矫直完成"); //valueList.ValueListItems.Add("90", "探伤完成"); valueList.ValueListItems.Add("0", "上料"); valueList.ValueListItems.Add("1", "锯切"); valueList.ValueListItems.Add("2", "加热炉"); valueList.ValueListItems.Add("3", "穿孔"); valueList.ValueListItems.Add("4", "连轧"); valueList.ValueListItems.Add("5", "再加热炉"); valueList.ValueListItems.Add("6", "定径"); valueList.ValueListItems.Add("7", "分切前");//在此工序组批 valueList.ValueListItems.Add("8", "分切后");//在此工序组批 valueList.ValueListItems.Add("9", "矫直"); valueList.ValueListItems.Add("10", "探伤"); //valueList.ValueListItems.Add("10", "探伤"); ultraGX.ValueList = valueList; ultraGX.Text = valueList.ValueListItems.GetItem(8).ToString(); ultraGX_LOG.ValueList = valueList; ultraGX_LOG.Text = valueList.ValueListItems.GetItem(8).ToString(); } #region 未组批 //查询生产批号、炉号队列 private void QueryLotNoAndStoveNo() { try { ArrayList al = new ArrayList(); //产线、批次号、炉号 al.Add("0");//性能批号标志位 al.Add("0");//是否取样标志位 al.Add(PlineCode); al.Add(txtQueryLOT_NO.Text.Trim()); al.Add(txtQueryJUDGE_STOVE_NO.Text.Trim()); DataTable dt = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryLotNoAndStoveNo", new Object[] { al }, ob); if (dt == null || dt.Rows.Count == 0) { dataTable1.Rows.Clear(); dataTable2.Rows.Clear(); return; } GridHelper.CopyDataToDatatable(dt, dataTable1, true);//把dt复制给dataTable1 GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid } catch (Exception e) { MessageUtil.ShowWarning(e.Message); } } //查询管号队列 private void QueryPipeNoRack() { try { if (ultraGrid1.ActiveRow != null && ultraGrid1.ActiveRow.Activated == true && ultraGX.Text != "") { dataTable2.Rows.Clear(); dataTable3.Rows.Clear();//管号队列都变了已组批次清空 ArrayList al = new ArrayList(); //产线、批次号、炉号 al.Add(PlineCode); al.Add(ultraGrid1.ActiveRow.Cells["LOT_NO"].Text.Trim()); al.Add(ultraGrid1.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim()); al.Add(ultraGrid1.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim()); al.Add(ultraGrid1.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim()); al.Add(ultraGX.Value); DataTable dt = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryPipeNoRack", new object[] { al, ultraGX.Value.ToString() }, this.ob); if (dt == null || dt.Rows.Count == 0) { ultraSTART_PIPE_NO.Text = ""; MessageUtil.ShowWarning("此炉号在此工序暂时没有管号队列!"); return; } if (CHKISVALID.Checked == false) { GridHelper.CopyDataToDatatable(dt, dataTable2, true); } else { GridHelper.CopyDataToDatatable(GetSelectDt(dt, "ISVALID = '是'", ""), dataTable2, true);//把dt复制给dataTable2 } GridHelper.RefreshAndAutoSize(ultraGrid2);//刷新Grid if (dataTable2 != null && dataTable2.Rows.Count > 0) { m_dtPipeNo = GetSelectDt(dataTable2, "ISVALID = '是'", "");//筛选出有效管号 if (m_dtPipeNo != null && m_dtPipeNo.Rows.Count > 0 && dataTable3.Rows.Count == 0) { ultraSTART_PIPE_NO.Text = "";//置于空 ultraSTART_PIPE_NO.Text = m_dtPipeNo.Rows[0]["PIPE_NO"].ToString().Trim(); ultraSTART_PIPE_NO.Value = m_dtPipeNo.Rows[0]["SEQ"].ToString().Trim(); } txtPIPE_NUM.Text = m_dtPipeNo.Rows.Count.ToString();//有效管数 if (txtBATCH_MAX.Text.Trim().TryParseInt()) { int maxNum = Convert.ToInt16(txtBATCH_MAX.Text.Trim());//分批上限 int resNum = m_dtPipeNo.Rows.Count % maxNum;//余数 int batch = m_dtPipeNo.Rows.Count / maxNum;//批数 txtBATCH_MIN.Text = (resNum == 0 ? batch : batch + 1).ToString();//批数参考 } } } } catch (Exception e) { MessageUtil.ShowWarning(e.Message); } } //查询取样要求 private void QueryGetSampleReq() { dataTable4.Rows.Clear(); DataRow dr = dataTable4.NewRow(); dr["PHY_CODE_MAX"] = "R0002"; dr["PHY_NAME_MAX"] = "夏比冲击试验"; dr["PHY_NAME_MIN"] = "夏比冲击试验取样1"; dr["SAMPLE_STYLE"] = "片"; dr["DESC_LENGTH"] = "300mm"; dr["DESC_RATE"] = "按批"; dr["DESC_POSITION"] = "A端或B端"; dr["DESC_COUNT"] = "2"; dr["SAMPLE_COUNT"] = "1";//样条数 dataTable4.Rows.Add(dr); DataRow dr1 = dataTable4.NewRow(); dr1["PHY_CODE_MAX"] = "R0001"; dr1["PHY_NAME_MAX"] = "拉伸试验"; dr1["PHY_NAME_MIN"] = "拉伸试验取样1"; dr1["SAMPLE_STYLE"] = "片"; dr1["DESC_LENGTH"] = "500mm"; dr1["DESC_RATE"] = "按批"; dr1["DESC_POSITION"] = "A端"; dr1["DESC_COUNT"] = "1"; dr1["SAMPLE_COUNT"] = "1"; dataTable4.Rows.Add(dr1); DataRow dr2 = dataTable4.NewRow(); dr2["PHY_CODE_MAX"] = "R0004"; dr2["PHY_NAME_MAX"] = "洛氏硬度"; dr2["PHY_NAME_MIN"] = "洛氏硬度试验取样1"; dr2["SAMPLE_STYLE"] = "环"; dr2["DESC_LENGTH"] = "500mm"; dr2["DESC_RATE"] = "按批"; dr2["DESC_POSITION"] = "A端"; dr2["DESC_COUNT"] = "3"; dr2["SAMPLE_COUNT"] = "1"; dataTable4.Rows.Add(dr2); DataRow dr3 = dataTable4.NewRow(); dr3["PHY_CODE_MAX"] = "R0013"; dr3["PHY_NAME_MAX"] = "晶粒度"; dr3["PHY_NAME_MIN"] = "晶粒度1"; dr3["SAMPLE_STYLE"] = "片"; dr3["DESC_LENGTH"] = "500mm"; dr3["DESC_RATE"] = "按炉"; dr3["DESC_POSITION"] = "A端"; dr3["DESC_COUNT"] = "1"; dr3["SAMPLE_COUNT"] = "1"; dataTable4.Rows.Add(dr3); DataRow dr4 = dataTable4.NewRow(); dr4["PHY_CODE_MAX"] = "HX"; dr4["PHY_NAME_MAX"] = "化学"; dr4["PHY_NAME_MIN"] = "化学1"; dr4["SAMPLE_STYLE"] = "片"; dr4["DESC_LENGTH"] = "100mm"; dr4["DESC_RATE"] = "按炉"; dr4["DESC_POSITION"] = "A端"; dr4["DESC_COUNT"] = "2"; dr4["SAMPLE_COUNT"] = "1"; dataTable4.Rows.Add(dr4); GridHelper.RefreshAndAutoSize(ultraGrid4); txtBATCH_MAX.Text = "30";//分批上限 //GridHelper.RefreshAndAutoSize(ultraGrid8); } private void ultraGrid1_AfterRowActivate(object sender, EventArgs e) { QueryGetSampleReq();//获取每批最小支数 QueryPipeNoRack(); } //工序变化事件 private void ultraGX_TextChanged(object sender, EventArgs e) { QueryPipeNoRack(); } //管号是否有效变化 private void CHKISVALID_CheckedChanged(object sender, EventArgs e) { QueryPipeNoRack(); } private void ultraSTART_PIPE_NO_TextChanged(object sender, EventArgs e) { if (txtBATCH_MAX.Text.Trim().TryParseInt() == true && m_dtPipeNo != null && m_dtPipeNo.Rows.Count > 0 && ultraSTART_PIPE_NO.Text.Trim() != "") { //结束管号自动变为起始管号+分批上限区间 DataRow[] start = m_dtPipeNo.Select("PIPE_NO = '" + ultraSTART_PIPE_NO.Text.Trim() + "'");//起始管号位置 if (start == null || start.Length == 0) { return; } int startNum = m_dtPipeNo.Rows.IndexOf(start[0]);//起始管号位置 DataTable dt = m_dtPipeNo.Clone(); for (int i = startNum; i < startNum + Convert.ToInt16(txtBATCH_MAX.Text.Trim()) && i < m_dtPipeNo.Rows.Count; i++) { dt.ImportRow(m_dtPipeNo.Rows[i]); } ultraEND_PIPE_NO.DataSource = dt; ultraEND_PIPE_NO.DisplayMember = "PIPE_NO"; ultraEND_PIPE_NO.ValueMember = "SEQ"; ultraEND_PIPE_NO.Text = dt.Rows[dt.Rows.Count - 1]["PIPE_NO"].ToString().Trim(); } } private void btnConfirm_Click(object sender, EventArgs e) { if (m_dtPipeNo == null || m_dtPipeNo.Rows.Count == 0) { MessageUtil.ShowWarning("没有有效的管号队列不能组批!"); return; } if (txtBATCH_MAX.Text.Trim().TryParseInt() == false) { MessageUtil.ShowWarning("分批上限不为整数不能分批!"); return; } if (ultraSTART_PIPE_NO.Text.Trim() == "") { MessageUtil.ShowWarning("起始管号不能为空!"); return; } if (ultraEND_PIPE_NO.Text.Trim() == "") { MessageUtil.ShowWarning("结束管号不能为空!"); return; } 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()) { MessageUtil.ShowWarning("分批已经完成不能再分批!"); return; } //判断起始和结束管号在不在有效管号区间内 DataRow[] start = m_dtPipeNo.Select("PIPE_NO = '" + ultraSTART_PIPE_NO.Text.Trim() + "'");//起始管号位置 if (start == null || start.Length == 0) { MessageUtil.ShowWarning("请选择有效的起始管号!"); return; } DataRow[] end = m_dtPipeNo.Select("PIPE_NO = '" + ultraEND_PIPE_NO.Text.Trim() + "'");//结束管号位置 if (end == null || end.Length == 0) { MessageUtil.ShowWarning("请选择有效的结束管号!"); return; } int startNum = m_dtPipeNo.Rows.IndexOf(start[0]);//起始管号位置 int endNum = m_dtPipeNo.Rows.IndexOf(end[0]);//结束管号位置 if (endNum < startNum) { MessageUtil.ShowWarning("结束管号不能小于起始管号!"); return; } if (endNum - startNum >= Convert.ToInt16(txtBATCH_MAX.Text.Trim())) { MessageUtil.ShowWarning("此批管号数已大于分批上限分批失败!"); return; } //判断起始管号有木有等于上一批次的结束管号+1 DataRow dr = dataTable3.NewRow(); dr["BATCH_NO"] = (dataTable3.Rows.Count + 1).ToString().PadLeft(4, '0');//规则加批次为批号 dr["START_PIPE_NO"] = ultraSTART_PIPE_NO.Text.Trim();//开始管号 dr["START_SEQ"] = ultraSTART_PIPE_NO.Value.ToString();//开始序号 20151030 dr["END_PIPE_NO"] = ultraEND_PIPE_NO.Text.Trim();//结束管号 dr["END_SEQ"] = ultraEND_PIPE_NO.Value.ToString();//结束序号 dr["PIPE_NUM"] = (endNum - startNum + 1).ToString();//有效管数 dataTable3.Rows.Add(dr); GridHelper.RefreshAndAutoSize(ultraGrid3); //分批完成后起始管号自动等于上一批次结束管号+1 if (endNum < m_dtPipeNo.Rows.Count - 1) { ultraSTART_PIPE_NO.Text = m_dtPipeNo.Rows[endNum + 1]["PIPE_NO"].ToString(); ultraSTART_PIPE_NO.Value = m_dtPipeNo.Rows[endNum + 1]["SEQ"].ToString();//序号 20151030 } } private void btnAuto_Click(object sender, EventArgs e) { if (txtBATCH_MAX.Text.Trim().TryParseInt() == false) { MessageUtil.ShowWarning("分批上限不为整数不能分批!"); return; } if (m_dtPipeNo == null || m_dtPipeNo.Rows.Count == 0) { MessageUtil.ShowWarning("不存在有效的管号队列不能分批!"); return; } dataTable3.Rows.Clear(); int maxNum = Convert.ToInt16(txtBATCH_MAX.Text.Trim());//分批上限 int resNum = m_dtPipeNo.Rows.Count % maxNum;//余数 int batch = m_dtPipeNo.Rows.Count / maxNum;//批数 int minBatchNo = resNum == 0 ? batch : batch + 1;//最小批数 int startNum = 1; for (int i = 0; i < m_dtPipeNo.Rows.Count; i += maxNum) { if (startNum <= minBatchNo) { DataRow dr = dataTable3.NewRow(); dr["BATCH_NO"] = startNum.ToString().PadLeft(4, '0');//规则加批次为批号 dr["START_PIPE_NO"] = m_dtPipeNo.Rows[i]["PIPE_NO"].ToString();//开始管号 //dr["START_SEQ"] = ultraSTART_PIPE_NO.Value.ToString();//开始序号 20151030 dr["START_SEQ"] = m_dtPipeNo.Rows[i]["SEQ"].ToString(); if (maxNum * startNum > m_dtPipeNo.Rows.Count) { dr["END_PIPE_NO"] = m_dtPipeNo.Rows[m_dtPipeNo.Rows.Count - 1]["PIPE_NO"].ToString();//结束管号 dr["END_SEQ"] = ultraEND_PIPE_NO.Value.ToString();//结束序号 dr["PIPE_NUM"] = (m_dtPipeNo.Rows.Count - i).ToString();//有效管数 } else { dr["END_PIPE_NO"] = m_dtPipeNo.Rows[maxNum * startNum - 1]["PIPE_NO"].ToString();//结束管号 //dr["END_SEQ"] = ultraEND_PIPE_NO.Value.ToString();//结束序号 dr["END_SEQ"] = m_dtPipeNo.Rows[maxNum * startNum - 1]["SEQ"].ToString(); dr["PIPE_NUM"] = maxNum.ToString();//有效管数 } dataTable3.Rows.Add(dr); startNum++; } } GridHelper.RefreshAndAutoSize(ultraGrid3); } //取消一条批号 private void btnCancel_Click(object sender, EventArgs e) { if (dataTable3 == null || dataTable3.Rows.Count == 0 || ultraGrid3.ActiveRow == null || ultraGrid3.ActiveRow.Activated == false) { MessageUtil.ShowWarning("请选择一条需要删除的性能批号信息!"); return; } if (MessageUtil.ShowYesNoAndQuestion("您确定删除此条性能批号信息吗?") == DialogResult.Yes) { int startNum = ultraGrid3.ActiveRow.Index; int length = dataTable3.Rows.Count; //dataTable5的相应信息也需要删除 if (startNum == 0) { dataTable5.Rows.Clear(); dataTable3.Rows.Clear(); } else { for (int i = startNum; i < length; i++) { for (int j = 0; j < m_dtSampleNo.Rows.Count; j++) { if (dataTable3.Rows[startNum]["BATCH_NO"].ToString() == m_dtSampleNo.Rows[j]["BATCH_NO"].ToString()) { m_dtSampleNo.Rows.RemoveAt(j); j--; } } dataTable3.Rows.RemoveAt(startNum); } } //取消批数起始管号和结束管号重新赋值 if (dataTable3.Rows.Count == 0) { ultraSTART_PIPE_NO.Text = m_dtPipeNo.Rows[0]["PIPE_NO"].ToString(); ultraSTART_PIPE_NO.Value = m_dtPipeNo.Rows[0]["SEQ"].ToString();//序号 20151030 } else { DataRow[] end = m_dtPipeNo.Select("PIPE_NO = '" + dataTable4.Rows[dataTable4.Rows.Count - 1]["END_PIPE_NO"].ToString() + "'");//结束管号位置 if (end == null || end.Length == 0) { return; } int endNum = m_dtPipeNo.Rows.IndexOf(end[0]);//结束管号位置 ultraSTART_PIPE_NO.Text = m_dtPipeNo.Rows[endNum + 1]["PIPE_NO"].ToString(); ultraSTART_PIPE_NO.Value = m_dtPipeNo.Rows[endNum + 1]["SEQ"].ToString();//序号 20151030 } } } //初始化参考取样要求dataTable5 private void InitColumnsSampleReq() { dataTable5.Rows.Clear(); //参考取样要求队列 ArrayList alColumnsSampleReq = new ArrayList(); alColumnsSampleReq.Add("BATCH_NO"); alColumnsSampleReq.Add("SAMPLE_NO"); ArrayList alCaptionSampleReq = new ArrayList(); alCaptionSampleReq.Add("性能批号"); alCaptionSampleReq.Add("试样号"); foreach (DataRow dr in dataTable4.Rows) { if (dr["PHY_CODE_MAX"].ToString() != "" && dr["PHY_NAME_MAX"].ToString() != "") { alColumnsSampleReq.Add(dr["PHY_CODE_MAX"].ToString()); alCaptionSampleReq.Add(dr["PHY_NAME_MAX"].ToString()); } } //alColumnsSampleReq.Add("HX"); //alCaptionSampleReq.Add("化学"); alColumnsSampleReq.Add("SAMPLE_LEN"); alCaptionSampleReq.Add("取样长度"); InitColumns(alColumnsSampleReq.ToArray(), alCaptionSampleReq.ToArray(), dataTable5); //获取一批最大取样数量 int max = 0; foreach (DataRow dr in dataTable4.Rows) { if (StringUtil.IsInt(dr["DESC_COUNT"].ToString())) { if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > max) { max = Convert.ToInt32(dr["DESC_COUNT"].ToString()); } } } //根据组批实绩自动生成参考取样要求队列区分A、B端 string row = "";//存放所有试样号判断是否有重复批号+试样号 DataRow newDr = dataTable5.NewRow(); foreach (DataRow dr in dataTable3.Rows) { for (int i = 1; i <= max; i++) { if (row.IndexOf(dr["BATCH_NO"].ToString() + "+" + i) < 0)//判断是否有重复试样号,有则不增加行只增加对应的列 { row += dr["BATCH_NO"].ToString() + "+" + i + " "; newDr = dataTable5.NewRow(); newDr["BATCH_NO"] = dr["BATCH_NO"].ToString(); newDr["SAMPLE_NO"] = dr["BATCH_NO"].ToString() + "-" + i; //newDr["SAMPLE_SIZE"] = dr["SAMPLE_SIZE"].ToString(); dataTable5.Rows.Add(newDr); } else { //newDr[dr["SAMPLE_NO"].ToString()] = dr["SAMPLE_NO"].ToString(); } } } //为每一个试样号赋予检验项目 int num = 0;//记录此批检验项已经增加了几个试样号 string batch = "";//存放批号判断是否从0开始 foreach (DataRow dataRow in dataTable5.Rows) { if (batch.IndexOf(dataRow["BATCH_NO"].ToString()) < 0) { batch += dataRow["BATCH_NO"].ToString() + " "; num = 0; } foreach (DataRow dr in dataTable4.Rows) { if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > num) { dataRow[dr["PHY_CODE_MAX"].ToString()] = "√"; } } num++; } //为取样长度赋值 foreach (DataRow dataRow in dataTable5.Rows) { int Samplelen = 0; int maxPian = 0;//片状试样最大长度 foreach (DataRow dr in dataTable4.Rows) { if (dataRow[dr["PHY_CODE_MAX"].ToString()].ToString() == "√") { //string str = dr["SAMPLE_STYLE"].ToString(); int len = Convert.ToInt32(dr["DESC_LENGTH"].ToString().Replace("mm", "").Trim()); if (dr["SAMPLE_STYLE"].ToString() == "片") { if (len > maxPian) { maxPian = len; } } else { Samplelen += len; } } } Samplelen += maxPian; dataRow["SAMPLE_LEN"] = Samplelen;// +"mm"; } GridHelper.RefreshAndAutoSize(ultraGrid5); InitCellPositionRight(ultraGrid5, new string[] { "SAMPLE_LEN" }); } //初始化参考取样要求dataTable5 private void InitColumnsSampleReqs() { dataTable5.Rows.Clear(); //参考取样要求队列 ArrayList alColumnsSampleReq = new ArrayList(); alColumnsSampleReq.Add("BATCH_NO"); alColumnsSampleReq.Add("SAMPLE_NO"); ArrayList alCaptionSampleReq = new ArrayList(); alCaptionSampleReq.Add("性能批号"); alCaptionSampleReq.Add("试样号"); foreach (DataRow dr in dataTable4.Rows) { if (dr["PHY_CODE_MAX"].ToString() != "" && dr["PHY_NAME_MAX"].ToString() != "") { alColumnsSampleReq.Add(dr["PHY_CODE_MAX"].ToString()); alCaptionSampleReq.Add(dr["PHY_NAME_MAX"].ToString()); } } //alColumnsSampleReq.Add("HX"); //alCaptionSampleReq.Add("化学"); alColumnsSampleReq.Add("SAMPLE_LEN"); alCaptionSampleReq.Add("取样长度"); InitColumns(alColumnsSampleReq.ToArray(), alCaptionSampleReq.ToArray(), dataTable5); //获取按批最大取样数量 int max = 0; foreach (DataRow dr in dataTable4.Rows) { if (dr["DESC_RATE"].ToString() == "按批" && StringUtil.IsInt(dr["DESC_COUNT"].ToString())) { if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > max) { max = Convert.ToInt32(dr["DESC_COUNT"].ToString()); } } } //获取按炉每炉一个 int maxBatch = 0; foreach (DataRow dr in dataTable4.Rows) { if (dr["DESC_RATE"].ToString() == "按炉" && StringUtil.IsInt(dr["DESC_COUNT"].ToString())) { if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > maxBatch) { maxBatch = Convert.ToInt32(dr["DESC_COUNT"].ToString()); } } } //根据组批实绩自动生成参考取样要求队列区分A、B端 string row = "";//存放所有试样号判断是否有重复批号+试样号 DataRow newDr = dataTable5.NewRow(); for (int i = 1; i <= maxBatch + 1; i++) { for (int j = 1; j <= max; j++) { if (row.IndexOf(i.ToString().PadLeft(4, '0') + "+" + j) < 0)//判断是否有重复试样号,有则不增加行只增加对应的列 { row += i.ToString().PadLeft(4, '0') + "+" + j + " "; newDr = dataTable5.NewRow(); newDr["BATCH_NO"] = i.ToString().PadLeft(4, '0'); newDr["SAMPLE_NO"] = maxBatch.ToString().PadLeft(4, '0') + "-" + j; //newDr["SAMPLE_SIZE"] = dr["SAMPLE_SIZE"].ToString(); dataTable5.Rows.Add(newDr); } } } //为每一个试样号赋予检验项目 int num = 0;//记录此批检验项已经增加了几个试样号 string batch = "";//存放批号判断是否从0开始 foreach (DataRow dataRow in dataTable5.Rows) { if (batch.IndexOf(dataRow["BATCH_NO"].ToString()) < 0) { batch += dataRow["BATCH_NO"].ToString() + " "; num = 0; } foreach (DataRow dr in dataTable4.Rows) { if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > num) { dataRow[dr["PHY_CODE_MAX"].ToString()] = "√"; } } num++; } //为取样长度赋值 foreach (DataRow dataRow in dataTable5.Rows) { int Samplelen = 0; int maxPian = 0;//片状试样最大长度 foreach (DataRow dr in dataTable4.Rows) { if (dataRow[dr["PHY_CODE_MAX"].ToString()].ToString() == "√") { //string str = dr["SAMPLE_STYLE"].ToString(); int len = Convert.ToInt32(dr["DESC_LENGTH"].ToString().Replace("mm", "").Trim()); if (dr["SAMPLE_STYLE"].ToString() == "片") { if (len > maxPian) { maxPian = len; } } else { Samplelen += len; } } } Samplelen += maxPian; dataRow["SAMPLE_LEN"] = Samplelen;// +"mm"; } GridHelper.RefreshAndAutoSize(ultraGrid5); InitCellPositionRight(ultraGrid5, new string[] { "SAMPLE_LEN" }); } private void btnFindSampleReq_Click(object sender, EventArgs e) { //if (ultraGrid1.ActiveRow != null && ultraGrid1.ActiveRow.Activated == true) //{ if (splitContainer2.Panel1Collapsed) { splitContainer2.Panel1Collapsed = false; } else { splitContainer2.Panel1Collapsed = true; ; } //} } private void ultraGrid3_AfterRowActivate(object sender, EventArgs e) { InitColumnsSampleReq(); //InitColumnsSampleReqs(); } //保存组批试样信息 private void AddBatchSampleInfo() { if (ultraTabControl1.SelectedTab.Index != 0) { MessageUtil.ShowWarning("只有在未组批页才能进行完成组批操作!"); return; } if (ultraGrid1.ActiveRow == null || dataTable1.Rows.Count == 0) { MessageUtil.ShowWarning("请选择炉号信息!"); return; } if (dataTable3 == null || dataTable3.Rows.Count == 0) { MessageUtil.ShowWarning("组批没有完成不能进行此操作!"); return; } //if (dataTable5 == null || dataTable5.Rows.Count == 0) //{ // MessageUtil.ShowWarning("取样没有完成不能进行此操作!"); // return; //} //if (m_dtSampleNo == null || m_dtSampleNo.Rows.Count == 0) //{ // MessageUtil.ShowWarning("取样没有完成不能进行此操作!"); // return; //} if (dataTable4.Rows.Count < Convert.ToInt16(txtBATCH_MIN.Text.Trim())) { MessageUtil.ShowWarning("批数太少不符合标准要求!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否确认完成组批?") == DialogResult.Yes) { //往组批表和取样表里面插数据 ultraGrid3.UpdateData(); //ultraGrid5.UpdateData(); string strLOT_NO = ultraGrid1.ActiveRow.Cells["LOT_NO"].Text.Trim();//生产批号 string strSTOVE_NO = ultraGrid1.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim();//炉号 string strPLINE_CODE = ultraGrid1.ActiveRow.Cells["PLINE_CODE"].Text.Trim();//产线代码 string strTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); ArrayList alAll = new ArrayList(); ArrayList alPlan = new ArrayList(); ArrayList alPlanParams = new ArrayList();//更改状态位 alPlanParams.Add("1"); alPlanParams.Add("0"); alPlanParams.Add(strLOT_NO); alPlanParams.Add(strSTOVE_NO);//判定炉号 alPlan.Add(alPlanParams); ArrayList alBatchNo = new ArrayList(); ArrayList alBatchNoParams;//批次号参数PROCESS_CDOE foreach (DataRow dataRow in dataTable3.Rows) { alBatchNoParams = new ArrayList(); alBatchNoParams.Add(strLOT_NO); alBatchNoParams.Add(strSTOVE_NO);//判定炉号 alBatchNoParams.Add(strPLINE_CODE);//产线代码 alBatchNoParams.Add(ultraGX.Value.ToString());//工序代码 alBatchNoParams.Add(ultraGX.Text);//工序名称20151111 alBatchNoParams.Add(dataRow["BATCH_NO"].ToString());//性能批号 alBatchNoParams.Add(dataRow["START_PIPE_NO"].ToString());//起始管号 alBatchNoParams.Add(dataRow["START_SEQ"].ToString());//起始序号 alBatchNoParams.Add(dataRow["END_PIPE_NO"].ToString());//结束管号 alBatchNoParams.Add(dataRow["END_SEQ"].ToString());//结束序号 alBatchNoParams.Add(dataRow["PIPE_NUM"].ToString());//有效管数 CHILD_START_SEQ CHILD_END_SEQ alBatchNoParams.Add(UserInfo.GetUserName());//组批人 alBatchNoParams.Add(strTime);//组批时间 alBatchNoParams.Add(UserInfo.GetUserOrder());//班次 alBatchNoParams.Add(UserInfo.GetUserGroupText());//班组 alBatchNoParams.Add("");//结炉状态 alBatchNoParams.Add("");//备注 alBatchNo.Add(alBatchNoParams); } //ArrayList alSampleNo = new ArrayList(); //ArrayList alSampleNoParams;//试样号参数 ////foreach (DataRow dr in dataTable5.Rows) //foreach (DataRow dr in m_dtSampleNo.Rows) //{ // alSampleNoParams = new ArrayList(); // alSampleNoParams.Add(strLOT_NO); // alSampleNoParams.Add(strSTOVE_NO);//判定炉号 // alSampleNoParams.Add(dr["BATCH_NO"].ToString());//性能批号 // alSampleNoParams.Add(dr["PIPE_NO"].ToString());//管号 // alSampleNoParams.Add(dr["SEQ"].ToString());//序号 // alSampleNoParams.Add(dr["DESC_POSITION"].ToString());//取样位置 // alSampleNoParams.Add(dr["SAMPLE_NO"].ToString());//试样号 // alSampleNoParams.Add("");//试样长度 // alSampleNoParams.Add(UserInfo.GetUserName());//取样人 // alSampleNoParams.Add(strTime);//取样时间 // alSampleNoParams.Add(UserInfo.GetUserOrder());//班次 // alSampleNoParams.Add(UserInfo.GetUserGroupText());//班组 // alSampleNoParams.Add("");//备注 // alSampleNo.Add(alSampleNoParams); //} alAll.Add(alPlan); alAll.Add(alBatchNo); //alAll.Add(alSampleNo); ServerHelper.SetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.AddBatchSampleInfo", new Object[] { alAll }, this.ob); QueryLotNoAndStoveNo();//刷新GRID1 QueryLotNoAndStoveNo_LOG();//刷新GRID6 ActiveOperateRow(ultraGrid6, new string[] { "LOT_NO", "JUDGE_STOVE_NO" }, new string[] { strLOT_NO, strSTOVE_NO });//定位 dataTable3.Rows.Clear(); dataTable4.Rows.Clear(); dataTable5.Rows.Clear(); MessageUtil.ShowTips("组批完成!"); } } #endregion #region 已组批未取样 private void btnConfirm_LOG_Click(object sender, EventArgs e) { if (m_dtPipeNo_LOG == null || m_dtPipeNo_LOG.Rows.Count == 0) { MessageUtil.ShowWarning("没有有效的管号队列不能组批!"); return; } if (txtBATCH_MAX_LOG.Text.Trim().TryParseInt() == false) { MessageUtil.ShowWarning("分批上限不为整数不能分批!"); return; } if (ultraSTART_PIPE_NO_LOG.Text.Trim() == "") { MessageUtil.ShowWarning("起始管号不能为空!"); return; } if (ultraEND_PIPE_NO_LOG.Text.Trim() == "") { MessageUtil.ShowWarning("结束管号不能为空!"); return; } 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()) { MessageUtil.ShowWarning("分批已经完成不能再分批!"); return; } //判断起始和结束管号在不在有效管号区间内 DataRow[] start = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraSTART_PIPE_NO_LOG.Text.Trim() + "'");//起始管号位置 if (start == null || start.Length == 0) { MessageUtil.ShowWarning("请选择有效的起始管号!"); return; } DataRow[] end = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraEND_PIPE_NO_LOG.Text.Trim() + "'");//结束管号位置 if (end == null || end.Length == 0) { MessageUtil.ShowWarning("请选择有效的结束管号!"); return; } int startNum = m_dtPipeNo_LOG.Rows.IndexOf(start[0]);//起始管号位置 int endNum = m_dtPipeNo_LOG.Rows.IndexOf(end[0]);//结束管号位置 if (endNum < startNum) { MessageUtil.ShowWarning("结束管号不能小于起始管号!"); return; } if (endNum - startNum >= Convert.ToInt16(txtBATCH_MAX_LOG.Text.Trim())) { MessageUtil.ShowWarning("此批管号数已大于分批上限分批失败!"); return; } //判断起始管号有木有等于上一批次的结束管号+1 DataRow dr = dataTable8.NewRow(); dr["BATCH_NO"] = (dataTable8.Rows.Count + 1).ToString().PadLeft(4, '0');//规则加批次为批号 dr["START_PIPE_NO"] = ultraSTART_PIPE_NO_LOG.Text.Trim();//开始管号 dr["START_SEQ"] = ultraSTART_PIPE_NO_LOG.Value.ToString();//开始序号 dr["END_PIPE_NO"] = ultraEND_PIPE_NO_LOG.Text.Trim();//结束管号 dr["END_SEQ"] = ultraEND_PIPE_NO_LOG.Value.ToString();//结束序号 dr["PIPE_NUM"] = (endNum - startNum + 1).ToString();//有效管数 dataTable8.Rows.Add(dr); //分批完成后起始管号自动等于上一批次结束管号+1 if (endNum < m_dtPipeNo_LOG.Rows.Count - 1) { ultraSTART_PIPE_NO_LOG.Text = m_dtPipeNo_LOG.Rows[endNum + 1]["PIPE_NO"].ToString(); ultraSTART_PIPE_NO_LOG.Value = m_dtPipeNo_LOG.Rows[endNum + 1]["SEQ"].ToString(); } } private void btnAuto_LOG_Click(object sender, EventArgs e) { if (txtBATCH_MAX_LOG.Text.Trim().TryParseInt() == false) { MessageUtil.ShowWarning("分批上限不为整数不能分批!"); return; } if (m_dtPipeNo_LOG == null || m_dtPipeNo_LOG.Rows.Count == 0) { MessageUtil.ShowWarning("不存在有效的管号队列不能分批!"); return; } dataTable8.Rows.Clear(); int maxNum = Convert.ToInt16(txtBATCH_MAX_LOG.Text.Trim());//分批上限 int resNum = m_dtPipeNo_LOG.Rows.Count % maxNum;//余数 int batch = m_dtPipeNo_LOG.Rows.Count / maxNum;//批数 int minBatchNo = resNum == 0 ? batch : batch + 1;//最小批数 int startNum = 1; for (int i = 0; i < m_dtPipeNo_LOG.Rows.Count; i += maxNum) { if (startNum <= minBatchNo) { DataRow dr = dataTable8.NewRow(); dr["BATCH_NO"] = startNum.ToString().PadLeft(4, '0');//规则加批次为批号 dr["START_PIPE_NO"] = m_dtPipeNo_LOG.Rows[i]["PIPE_NO"].ToString();//开始管号 dr["START_SEQ"] = m_dtPipeNo_LOG.Rows[i]["SEQ"].ToString();//20151030 if (maxNum * startNum > m_dtPipeNo_LOG.Rows.Count) { dr["END_PIPE_NO"] = m_dtPipeNo_LOG.Rows[m_dtPipeNo_LOG.Rows.Count - 1]["PIPE_NO"].ToString();//结束管号 dr["END_SEQ"] = m_dtPipeNo_LOG.Rows[m_dtPipeNo_LOG.Rows.Count - 1]["SEQ"].ToString();//结束序号 dr["PIPE_NUM"] = (m_dtPipeNo_LOG.Rows.Count - i).ToString();//有效管数 } else { dr["END_PIPE_NO"] = m_dtPipeNo_LOG.Rows[maxNum * startNum - 1]["PIPE_NO"].ToString();//结束管号 dr["END_SEQ"] = m_dtPipeNo_LOG.Rows[maxNum * startNum - 1]["SEQ"].ToString();//结束序号 dr["PIPE_NUM"] = maxNum.ToString();//有效管数 } dataTable8.Rows.Add(dr); startNum++; } } //GridHelper.RefreshAndAutoSize(ultraGrid9); } //取消一条批号 private void btnCancel_LOG_Click(object sender, EventArgs e) { if (dataTable8 == null || dataTable8.Rows.Count == 0) { MessageUtil.ShowWarning("请选择一条需要删除的性能批号信息!"); return; } if (MessageUtil.ShowYesNoAndQuestion("您确定删除此条性能批号信息吗?") == DialogResult.Yes) { int startNum = ultraGrid8.ActiveRow.Index; int length = dataTable8.Rows.Count;//性能批号 //dataTable10的相应信息也需要删除 if (startNum == 0) { m_dtSampleNo_LOG.Rows.Clear(); dataTable9.Rows.Clear(); dataTable8.Rows.Clear(); } else { for (int i = startNum; i < length; i++) { for (int j = 0; j < m_dtSampleNo_LOG.Rows.Count; j++) { if (dataTable8.Rows[startNum]["BATCH_NO"].ToString() == m_dtSampleNo_LOG.Rows[j]["BATCH_NO"].ToString()) { m_dtSampleNo_LOG.Rows.RemoveAt(j); j--; } } dataTable8.Rows.RemoveAt(startNum); } } //取消批数起始管号和结束管号重新赋值 if (dataTable8.Rows.Count == 0) { ultraSTART_PIPE_NO_LOG.Text = m_dtPipeNo_LOG.Rows[0]["PIPE_NO"].ToString(); ultraSTART_PIPE_NO_LOG.Value = m_dtPipeNo_LOG.Rows[0]["SEQ"].ToString();//序号 20151030 } else { DataRow[] end = m_dtPipeNo_LOG.Select("PIPE_NO = '" + dataTable8.Rows[dataTable8.Rows.Count - 1]["END_PIPE_NO"].ToString() + "'");//结束管号位置 if (end == null || end.Length == 0) { return; } int endNum = m_dtPipeNo_LOG.Rows.IndexOf(end[0]);//结束管号位置 ultraSTART_PIPE_NO_LOG.Text = m_dtPipeNo_LOG.Rows[endNum + 1]["PIPE_NO"].ToString(); ultraSTART_PIPE_NO_LOG.Value = m_dtPipeNo_LOG.Rows[endNum + 1]["SEQ"].ToString();//序号 20151030 } } } //点击确认增加试样号要判断管号是否在性能批号区间以及是否重新增加了管号+取样位置 private void btnAddSample_LOG_Click(object sender, EventArgs e) { if (ultraPIPE_NO_LOG.Text.Trim() == "") { MessageUtil.ShowWarning("请选择管号!"); return; } if (ultraPOSITION_LOG.Text.Trim() == "") { MessageUtil.ShowWarning("请选择取样位置!"); return; } DataRow[] start = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraGrid8.ActiveRow.Cells["START_PIPE_NO"].Text.Trim() + "'");//起始管号位置 DataRow[] end = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraGrid8.ActiveRow.Cells["END_PIPE_NO"].Text.Trim() + "'");//结束管号位置 int startNum = m_dtPipeNo_LOG.Rows.IndexOf(start[0]);//起始管号位置 int endNum = m_dtPipeNo_LOG.Rows.IndexOf(end[0]);//结束管号位置 DataRow[] select = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraPIPE_NO_LOG.Text.Trim() + "'"); if (select == null || select.Length == 0) { MessageUtil.ShowWarning("请选择正确的管号!"); return; } int selectNum = m_dtPipeNo_LOG.Rows.IndexOf(select[0]);//选择管号位置 if (selectNum < startNum || selectNum > endNum) { MessageUtil.ShowWarning("管号不在选择的性能批号区间请重新选择!"); return; } if (ultraPOSITION_LOG.Text.Trim() == "A和B") { foreach (DataRow dr in dataTable9.Rows) { if (dr["PIPE_NO"].ToString().Trim() == ultraPIPE_NO_LOG.Text.Trim()) { MessageUtil.ShowWarning("已存在相同的管号和取样位置请重新选择!"); return; } } DataRow dataRow = dataTable9.NewRow(); dataRow["BATCH_NO"] = ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim(); dataRow["SAMPLE_NO"] = ultraBATCH_NO_LOG.Text.Trim() + "-" + ultraPIPE_NO_LOG.Text.Trim() + "-1";//管号 dataRow["PIPE_NO"] = ultraPIPE_NO_LOG.Text.Trim();//管号 dataRow["SEQ"] = ultraPIPE_NO_LOG.Value.ToString();//序号 dataRow["DESC_POSITION"] = "A";//取样位置 dataTable9.Rows.Add(dataRow); if (m_dtSampleNo_LOG != null) { m_dtSampleNo_LOG.ImportRow(dataRow); } dataRow = dataTable9.NewRow(); dataRow["BATCH_NO"] = ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim(); dataRow["SAMPLE_NO"] = ultraBATCH_NO_LOG.Text.Trim() + "-" + ultraPIPE_NO_LOG.Text.Trim() + "-2";//管号 dataRow["PIPE_NO"] = ultraPIPE_NO_LOG.Text.Trim();//管号 dataRow["SEQ"] = ultraPIPE_NO_LOG.Value.ToString();//序号 dataRow["DESC_POSITION"] = "B";//取样位置 dataTable9.Rows.Add(dataRow); if (m_dtSampleNo_LOG != null) { m_dtSampleNo_LOG.ImportRow(dataRow); } } else { foreach (DataRow dr in dataTable9.Rows) { if (dr["PIPE_NO"].ToString().Trim() == ultraPIPE_NO_LOG.Text.Trim() && dr["DESC_POSITION"].ToString().Trim() == ultraPOSITION_LOG.Text.Trim()) { MessageUtil.ShowWarning("已存在相同的管号和取样位置请重新选择!"); return; } } DataRow dataRow = dataTable9.NewRow(); dataRow["BATCH_NO"] = ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim(); dataRow["SAMPLE_NO"] = ultraBATCH_NO_LOG.Text.Trim() + "-" + ultraPIPE_NO_LOG.Text.Trim() + "-" + ultraPOSITION_LOG.Value.ToString();//管号 dataRow["PIPE_NO"] = ultraPIPE_NO_LOG.Text.Trim();//管号 dataRow["SEQ"] = ultraPIPE_NO_LOG.Value.ToString();//序号 dataRow["DESC_POSITION"] = ultraPOSITION_LOG.Text.Trim();//取样位置 dataTable9.Rows.Add(dataRow); if (m_dtSampleNo_LOG != null) { m_dtSampleNo_LOG.ImportRow(dataRow); } } GridHelper.RefreshAndAutoSize(ultraGrid9);//刷新Grid //填写真实试样号队列 //if (ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text == ultraGrid11.ActiveRow.Cells["BATCH_NO"].Text) //{ //} } private void btnDeleteSample_LOG_Click(object sender, EventArgs e) { if (dataTable9 == null || dataTable9.Rows.Count == 0 || ultraGrid9.ActiveRow == null || ultraGrid9.ActiveRow.Activated == false) { MessageUtil.ShowWarning("请选择一条需要删除的试样号信息!"); return; } if (MessageUtil.ShowYesNoAndQuestion("您确定删除此条试样号信息吗?") == DialogResult.Yes) { string strSampleNo = ultraGrid9.ActiveRow.Cells["SAMPLE_NO"].Text.Trim(); dataTable9.Rows.RemoveAt(ultraGrid9.ActiveRow.Index); foreach (DataRow dr in m_dtSampleNo_LOG.Rows) { if (dr["SAMPLE_NO"].ToString().Trim() == strSampleNo) { m_dtSampleNo_LOG.Rows.Remove(dr); break; } } } } //查询生产批号、炉号队列 private void QueryLotNoAndStoveNo_LOG() { try { ArrayList al = new ArrayList(); //产线、批次号、炉号 al.Add("1");//性能批号标志位 al.Add("0");//是否取样标志位 al.Add(PlineCode); al.Add(txtQueryLOT_NO.Text.Trim()); al.Add(txtQueryJUDGE_STOVE_NO.Text.Trim()); DataTable dt = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryLotNoAndStoveNo", new Object[] { al }, ob); if (dt == null || dt.Rows.Count == 0) { dataTable6.Rows.Clear(); dataTable7.Rows.Clear(); return; } GridHelper.CopyDataToDatatable(dt, dataTable6, true);//把dt复制给dataTable1 GridHelper.RefreshAndAutoSize(ultraGrid6);//刷新Grid } catch (Exception e) { MessageUtil.ShowWarning(e.Message); } } //查询管号队列 private void QueryPipeNoRack_LOG() { try { if (ultraGrid6.ActiveRow != null && ultraGrid6.ActiveRow.Activated == true && ultraGX_LOG.Text != "") { //ultraSTART_PIPE_NO_LOG.Text = ""; //txtBATCH_MAX_LOG.Text = "10";//分批上限 dataTable7.Rows.Clear(); dataTable8.Rows.Clear(); ArrayList al = new ArrayList(); //产线、批次号、炉号 al.Add(PlineCode); al.Add(ultraGrid6.ActiveRow.Cells["LOT_NO"].Text.Trim()); al.Add(ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim()); al.Add(ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim()); al.Add(ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim()); al.Add(ultraGX_LOG.Value); DataTable dt = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryPipeNoRack", new object[] { al, ultraGX_LOG.Value.ToString() }, this.ob); if (dt == null || dt.Rows.Count == 0) { //MessageUtil.ShowWarning("此炉号在此工序暂时没有管号队列!"); dataTable7.Rows.Clear(); return; } if (CHKISVALID_LOG.Checked == false) { GridHelper.CopyDataToDatatable(dt, dataTable7, true); } else { GridHelper.CopyDataToDatatable(GetSelectDt(dt, "ISVALID = '是'", ""), dataTable7, true);//把dt复制给dataTable2 } GridHelper.RefreshAndAutoSize(ultraGrid7);//刷新Grid if (dataTable7 != null && dataTable7.Rows.Count > 0) { m_dtPipeNo_LOG = GetSelectDt(dataTable7, "ISVALID = '是'", "");//筛选出有效管号 if (m_dtPipeNo_LOG != null && m_dtPipeNo_LOG.Rows.Count > 0 && dataTable9.Rows.Count == 0) { ultraSTART_PIPE_NO_LOG.Text = ""; ultraSTART_PIPE_NO_LOG.Text = m_dtPipeNo_LOG.Rows[0]["PIPE_NO"].ToString().Trim(); ultraSTART_PIPE_NO_LOG.Value = m_dtPipeNo_LOG.Rows[0]["SEQ"].ToString().Trim(); } txtPIPE_NUM_LOG.Text = m_dtPipeNo_LOG.Rows.Count.ToString(); if (txtBATCH_MAX_LOG.Text.Trim().TryParseInt()) { int maxNum = Convert.ToInt16(txtBATCH_MAX_LOG.Text.Trim());//分批上限 int resNum = m_dtPipeNo_LOG.Rows.Count % maxNum;//余数 int batch = m_dtPipeNo_LOG.Rows.Count / maxNum;//批数 txtBATCH_MIN_LOG.Text = (resNum == 0 ? batch : batch + 1).ToString();//批数参考 } } } } catch (Exception e) { MessageUtil.ShowWarning(e.Message); } } //查询取样要求 private void QueryGetSampleReq_LOG() { dataTable10.Rows.Clear(); DataRow dr = dataTable10.NewRow(); dr["PHY_CODE_MAX"] = "R0002"; dr["PHY_NAME_MAX"] = "夏比冲击试验"; dr["PHY_NAME_MIN"] = "夏比冲击试验取样1"; dr["SAMPLE_STYLE"] = "片"; dr["DESC_LENGTH"] = "300mm"; dr["DESC_RATE"] = "按批"; dr["DESC_POSITION"] = "A端或B端"; dr["DESC_COUNT"] = "2"; dr["SAMPLE_COUNT"] = "1";//样条数 dataTable10.Rows.Add(dr); DataRow dr1 = dataTable10.NewRow(); dr1["PHY_CODE_MAX"] = "R0001"; dr1["PHY_NAME_MAX"] = "拉伸试验"; dr1["PHY_NAME_MIN"] = "拉伸试验取样1"; dr1["SAMPLE_STYLE"] = "片"; dr1["DESC_LENGTH"] = "500mm"; dr1["DESC_RATE"] = "按批"; dr1["DESC_POSITION"] = "A端"; dr1["DESC_COUNT"] = "1"; dr1["SAMPLE_COUNT"] = "1"; dataTable10.Rows.Add(dr1); DataRow dr2 = dataTable10.NewRow(); dr2["PHY_CODE_MAX"] = "R0004"; dr2["PHY_NAME_MAX"] = "洛氏硬度"; dr2["PHY_NAME_MIN"] = "洛氏硬度试验取样1"; dr2["SAMPLE_STYLE"] = "环"; dr2["DESC_LENGTH"] = "500mm"; dr2["DESC_RATE"] = "按批"; dr2["DESC_POSITION"] = "A端"; dr2["DESC_COUNT"] = "3"; dr2["SAMPLE_COUNT"] = "1"; dataTable10.Rows.Add(dr2); DataRow dr3 = dataTable10.NewRow(); dr3["PHY_CODE_MAX"] = "R0013"; dr3["PHY_NAME_MAX"] = "晶粒度"; dr3["PHY_NAME_MIN"] = "晶粒度1"; dr3["SAMPLE_STYLE"] = "片"; dr3["DESC_LENGTH"] = "500mm"; dr3["DESC_RATE"] = "按炉"; dr3["DESC_POSITION"] = "A端"; dr3["DESC_COUNT"] = "1"; dr3["SAMPLE_COUNT"] = "1"; dataTable10.Rows.Add(dr3); DataRow dr4 = dataTable10.NewRow(); dr4["PHY_CODE_MAX"] = "HX"; dr4["PHY_NAME_MAX"] = "化学"; dr4["PHY_NAME_MIN"] = "化学1"; dr4["SAMPLE_STYLE"] = "片"; dr4["DESC_LENGTH"] = "100mm"; dr4["DESC_RATE"] = "按炉"; dr4["DESC_POSITION"] = "A端"; dr4["DESC_COUNT"] = "2"; dr4["SAMPLE_COUNT"] = "1"; dataTable10.Rows.Add(dr4); GridHelper.RefreshAndAutoSize(ultraGrid10); txtBATCH_MAX_LOG.Text = "30";//分批上限 } private void ultraGrid6_AfterRowActivate(object sender, EventArgs e) { //QueryPipeNoRack_LOG();//查看管号队列 QueryGetSampleReq_LOG();//为取样要求赋值 QueryBatchSampleInfo();//查看已经组批队列 } private void QueryBatchSampleInfo() { //查询已录入性能批号+试样号 string strLOT_NO = ultraGrid6.ActiveRow.Cells["LOT_NO"].Text.Trim();//生产批号 string strSTOVE_NO = ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim();//炉号 ArrayList arrayList = new ArrayList(); arrayList.Add(strLOT_NO); arrayList.Add(strSTOVE_NO);//条件 DataTable dtBATCH_NO = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QueryBatchInfo", new Object[] { arrayList }, ob); if (dtBATCH_NO == null || dtBATCH_NO.Rows.Count == 0) { return; } ultraGX_LOG.Text = ""; //ultraGX_LOG.Text = dtBATCH_NO.Rows[0]["NODE_STATUS"].ToString();//为工序赋值20151111 ultraGX_LOG.Text = dtBATCH_NO.Rows[0]["PROCESS_DESC"].ToString(); txtBATCH_NAME.Text = dtBATCH_NO.Rows[0]["BATCH_NAME"].ToString().Trim(); txtBATCH_TIME.Text = dtBATCH_NO.Rows[0]["BATCH_TIME"].ToString().Trim(); txtBATCH_CLASS.Text = dtBATCH_NO.Rows[0]["BATCH_CLASS"].ToString().Trim(); GridHelper.CopyDataToDatatable(dtBATCH_NO, dataTable8, true); InitColumnsSampleReq_LOG(); GridHelper.RefreshAndAutoSize(ultraGrid8); DataTable dtSample = ServerHelper.GetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.QuerySampleInfo", new Object[] { arrayList }, ob); if (dtSample != null && dtSample.Rows.Count > 0) { txtSAMPLE_NAME.Text = dtSample.Rows[0]["GET_NAME"].ToString().Trim(); txtSAMPLE_TIME.Text = dtSample.Rows[0]["GET_TIME"].ToString().Trim(); txtSAMPLE_CLASS.Text = dtSample.Rows[0]["GET_CLASS"].ToString().Trim(); ///GridHelper.CopyDataToDatatable(dtSample, dataTable10, true); } m_dtSampleNo_LOG = dtSample.Copy();//存取全部试样号 } //管号改变判断是否符合 private void ultraPIPE_NO_LOG_TextChanged(object sender, EventArgs e) { } //判断是否有重复的管号和取样位置 private void ultraPOSITION_LOG_TextChanged(object sender, EventArgs e) { } private void ultraSTART_PIPE_NO_LOG_TextChanged(object sender, EventArgs e) { if (txtBATCH_MAX_LOG.Text.Trim().TryParseInt() == true && m_dtPipeNo_LOG != null && m_dtPipeNo_LOG.Rows.Count > 0 && ultraSTART_PIPE_NO_LOG.Text.Trim() != "") { //结束管号自动变为起始管号+分批上限区间 DataRow[] start = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraSTART_PIPE_NO_LOG.Text.Trim() + "'");//起始管号位置 if (start == null || start.Length == 0) { return; } int startNum = m_dtPipeNo_LOG.Rows.IndexOf(start[0]);//起始管号位置 DataTable dt = m_dtPipeNo_LOG.Clone(); for (int i = startNum; i < startNum + Convert.ToInt16(txtBATCH_MAX_LOG.Text.Trim()) && i < m_dtPipeNo_LOG.Rows.Count; i++) { dt.ImportRow(m_dtPipeNo_LOG.Rows[i]); } ultraEND_PIPE_NO_LOG.DataSource = dt; ultraEND_PIPE_NO.DisplayMember = "PIPE_NO"; ultraEND_PIPE_NO.ValueMember = "SEQ"; ultraEND_PIPE_NO_LOG.Text = dt.Rows[dt.Rows.Count - 1]["PIPE_NO"].ToString().Trim(); } } //工序变化事件 private void ultraGX_LOG_TextChanged(object sender, EventArgs e) { QueryPipeNoRack_LOG(); } //管号是否有效变化 private void CHKISVALID_LOG_CheckedChanged(object sender, EventArgs e) { QueryPipeNoRack_LOG(); } //审核组批试样信息 private void AuditBatchSampleInfo() { if (ultraTabControl1.SelectedTab.Index != 1) { MessageUtil.ShowWarning("只有在已取样数据页才能进行审核操作!"); return; } if (ultraGrid6.ActiveRow == null || dataTable6.Rows.Count == 0) { MessageUtil.ShowWarning("请选择需要审核的炉号信息!"); return; } if (dataTable9 == null || dataTable9.Rows.Count == 0) { MessageUtil.ShowWarning("组批没有完成不能进行审核操作!"); return; } if (dataTable10 == null || dataTable10.Rows.Count == 0) { MessageUtil.ShowWarning("取样没有完成不能进行审核操作!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否确认审核?") == DialogResult.Yes) { MessageUtil.ShowTips("审核成功!"); } } //修改组批试样信息 private void UpdateBatchSampleInfo() { if (ultraTabControl1.SelectedTab.Index != 1) { MessageUtil.ShowWarning("只有在已取样数据页才能进行修改操作!"); return; } if (ultraGrid6.ActiveRow == null || dataTable6.Rows.Count == 0) { MessageUtil.ShowWarning("请选择需要修改的炉号信息!"); return; } if (dataTable8 == null || dataTable8.Rows.Count == 0) { MessageUtil.ShowWarning("组批没有完成不能进行修改操作!"); return; } //if (dataTable10 == null || dataTable10.Rows.Count == 0) //{ // MessageUtil.ShowWarning("取样没有完成不能进行修改操作!"); // return; //} //if (m_dtSampleNo_LOG == null || m_dtSampleNo_LOG.Rows.Count == 0) //{ // MessageUtil.ShowWarning("取样没有完成不能进行此操作!"); // return; //} if (dataTable8.Rows.Count < Convert.ToInt16(txtBATCH_MIN_LOG.Text.Trim())) { MessageUtil.ShowWarning("批数太少不符合标准要求!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否确认修改?") == DialogResult.Yes) { //往组批表和取样表里面插数据 ultraGrid8.Update(); ultraGrid8.UpdateData(); ultraGrid9.Update(); ultraGrid9.UpdateData(); string strLOT_NO = ultraGrid6.ActiveRow.Cells["LOT_NO"].Text.Trim();//生产批号 string strSTOVE_NO = ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim();//炉号 string strPLINE_CODE = ultraGrid6.ActiveRow.Cells["PLINE_CODE"].Text.Trim();//产线代码 string strTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); ArrayList alAll = new ArrayList(); ArrayList alDelete = new ArrayList();//删除参数 ArrayList alDeleteParams = new ArrayList(); ;//批次号参数PROCESS_CDOE alDeleteParams.Add(strLOT_NO); alDeleteParams.Add(strSTOVE_NO);//条件 alDelete.Add(alDeleteParams); ArrayList alBatchNo = new ArrayList(); ArrayList alBatchNoParams;//批次号参数PROCESS_CDOE foreach (DataRow dataRow in dataTable8.Rows) { alBatchNoParams = new ArrayList(); alBatchNoParams.Add(strLOT_NO); alBatchNoParams.Add(strSTOVE_NO);//判定炉号 alBatchNoParams.Add(strPLINE_CODE);//产线代码 alBatchNoParams.Add(ultraGX.Value.ToString());//工序代码(A\B\C\D.....) alBatchNoParams.Add(ultraGX.Text);//工序名称 alBatchNoParams.Add(dataRow["BATCH_NO"].ToString());//性能批号 alBatchNoParams.Add(dataRow["START_PIPE_NO"].ToString());//起始管号 alBatchNoParams.Add(dataRow["START_SEQ"].ToString());//起始序号 alBatchNoParams.Add(dataRow["END_PIPE_NO"].ToString());//结束管号 alBatchNoParams.Add(dataRow["END_SEQ"].ToString());//起始序号 alBatchNoParams.Add(dataRow["PIPE_NUM"].ToString());//有效管数 alBatchNoParams.Add(UserInfo.GetUserName());//组批人 alBatchNoParams.Add(strTime);//组批时间 alBatchNoParams.Add(UserInfo.GetUserOrder());//班次 alBatchNoParams.Add(UserInfo.GetUserGroupText());//班组 alBatchNoParams.Add("");//结炉状态 alBatchNoParams.Add("");//备注 alBatchNo.Add(alBatchNoParams); } //ArrayList alSampleNo = new ArrayList(); //ArrayList alSampleNoParams;//试样号参数 //foreach (DataRow dr in m_dtSampleNo_LOG.Rows) //{ // alSampleNoParams = new ArrayList(); // alSampleNoParams.Add(strLOT_NO); // alSampleNoParams.Add(strSTOVE_NO);//判定炉号 // alSampleNoParams.Add(dr["BATCH_NO"].ToString());//性能批号 // alSampleNoParams.Add(dr["PIPE_NO"].ToString());//管号 // alSampleNoParams.Add(dr["SEQ"].ToString());//序号 // alSampleNoParams.Add(dr["DESC_POSITION"].ToString());//取样位置 // alSampleNoParams.Add(dr["SAMPLE_NO"].ToString());//试样号 // alSampleNoParams.Add("");//试样号 // alSampleNoParams.Add(UserInfo.GetUserName());//取样人 // alSampleNoParams.Add(strTime);//取样时间 // alSampleNoParams.Add(UserInfo.GetUserOrder());//班次 // alSampleNoParams.Add(UserInfo.GetUserGroupText());//班组 // alSampleNoParams.Add("");//备注 // alSampleNo.Add(alSampleNoParams); //} alAll.Add(alDelete); alAll.Add(alBatchNo); //alAll.Add(alSampleNo); ServerHelper.SetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.UpdateBatchSampleInfo", new Object[] { alAll }, this.ob); ClearData_LOG(); QueryLotNoAndStoveNo_LOG();//刷新GRID6 ActiveOperateRow(ultraGrid6, new string[] { "LOT_NO", "JUDGE_STOVE_NO" }, new string[] { strLOT_NO, strSTOVE_NO });//定位 MessageUtil.ShowTips("修改成功!"); } } //审核组批试样信息 private void DeleteBatchSampleInfo() { if (ultraTabControl1.SelectedTab.Index != 1) { MessageUtil.ShowWarning("只有在已取样数据页才能进行删除操作!"); return; } if (ultraGrid6.ActiveRow == null || dataTable6.Rows.Count == 0) { MessageUtil.ShowWarning("请选择需要删除的炉号信息!"); return; } //if (dataTable9 == null || dataTable9.Rows.Count == 0) //{ // MessageUtil.ShowWarning("组批没有完成不能进行删除操作!"); // return; //} //if (dataTable10 == null || dataTable10.Rows.Count == 0) //{ // MessageUtil.ShowWarning("取样没有完成不能进行删除操作!"); // return; //} if (MessageUtil.ShowYesNoAndQuestion("是否确认删除?") == DialogResult.Yes) { string strLOT_NO = ultraGrid6.ActiveRow.Cells["LOT_NO"].Text.Trim();//生产批号 string strSTOVE_NO = ultraGrid6.ActiveRow.Cells["JUDGE_STOVE_NO"].Text.Trim();//炉号 ArrayList arrayList = new ArrayList(); arrayList.Add(strLOT_NO); arrayList.Add(strSTOVE_NO);//条件 ServerHelper.SetData("com.steering.mes.zgmil.coup.FrmGetBatchAndSample.DeleteBatchSampleInfo", new Object[] { arrayList }, ob); ClearData_LOG(); QueryLotNoAndStoveNo_LOG();//刷新GRID6 QueryLotNoAndStoveNo();//刷新GRID1 //ActiveOperateRow(ultraGrid1, new string[] { "LOT_NO", "JUDGE_STOVE_NO" }, new string[] { strLOT_NO, strSTOVE_NO });//定位 MessageUtil.ShowTips("删除成功!"); } } //清除数据 private void ClearData_LOG() { dataTable9.Rows.Clear(); dataTable10.Rows.Clear(); //ultraGX_LOG.Text = ""; ultraSTART_PIPE_NO_LOG.Text = ""; ultraEND_PIPE_NO_LOG.Text = ""; } private void CHKISALL_LOG_CheckedChanged(object sender, EventArgs e) { if (dataTable8 != null && dataTable8.Rows.Count > 0 && ultraGrid8.ActiveRow != null & ultraGrid8.ActiveRow.Activated == true) { if (CHKISALL_LOG.Checked == false) { DataTable dtSelect = GetSelectDt(m_dtSampleNo_LOG, "BATCH_NO = '" + ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim() + "'", "BATCH_NO,SAMPLE_NO"); GridHelper.CopyDataToDatatable(dtSelect, dataTable9, true); } else { GridHelper.CopyDataToDatatable(m_dtSampleNo_LOG, dataTable9, true); } } } private void btnFindSampleReq_LOG_Click(object sender, EventArgs e) { if (splitContainer4.Panel1Collapsed) { splitContainer4.Panel1Collapsed = false; } else { splitContainer4.Panel1Collapsed = true; ; } } private void ultraGrid8_AfterRowActivate(object sender, EventArgs e) { ultraBATCH_NO_LOG.Text = ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim(); ultraPIPE_NO_LOG.Text = ultraGrid8.ActiveRow.Cells["START_PIPE_NO"].Text.Trim(); //管号只能在此性能批号有效区间选择 DataRow[] start = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraGrid8.ActiveRow.Cells["START_PIPE_NO"].Text.Trim() + "'");//起始管号位置 DataRow[] end = m_dtPipeNo_LOG.Select("PIPE_NO = '" + ultraGrid8.ActiveRow.Cells["END_PIPE_NO"].Text.Trim() + "'");//结束管号位置 if (start == null || start.Length == 0 || end == null || end.Length == 0) { return; } int startNum = m_dtPipeNo_LOG.Rows.IndexOf(start[0]);//起始管号位置 int endNum = m_dtPipeNo_LOG.Rows.IndexOf(end[0]);//结束管号位置 DataTable dt = m_dtPipeNo_LOG.Clone(); for (int i = startNum; i <= endNum; i++) { dt.ImportRow(m_dtPipeNo_LOG.Rows[i]); } ultraPIPE_NO_LOG.DataSource = dt; ultraPIPE_NO_LOG.DisplayMember = "PIPE_NO";//20151030 ultraPIPE_NO_LOG.ValueMember = "SEQ"; if (CHKISALL_LOG.Checked == false) { DataTable dtSelect = GetSelectDt(m_dtSampleNo_LOG, "BATCH_NO = '" + ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim() + "'", ""); GridHelper.CopyDataToDatatable(dtSelect, dataTable9, true); } else { GridHelper.CopyDataToDatatable(m_dtSampleNo_LOG, dataTable9, true); } GridHelper.RefreshAndAutoSize(ultraGrid9); //InitColumnsSampleReq_LOG();//初始化取样要求 dataTable11.Rows.Clear(); //是否显示全部取样要求 if (CHKISAllSampleReq_LOG.Checked == false) { DataTable dtSelect = GetSelectDt(m_dtSampleReq_LOG, "BATCH_NO = '" + ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim() + "'", ""); GridHelper.CopyDataToDatatable(dtSelect, dataTable11, true); } else { GridHelper.CopyDataToDatatable(m_dtSampleReq_LOG, dataTable11, true); } GridHelper.RefreshAndAutoSize(ultraGrid11); } //初始化参考取样要求dataTable11 private void InitColumnsSampleReq_LOG() { dataTable11.Rows.Clear(); //参考取样要求队列 ArrayList alColumnsSampleReq = new ArrayList(); alColumnsSampleReq.Add("BATCH_NO"); alColumnsSampleReq.Add("XH"); alColumnsSampleReq.Add("SAMPLE_NO"); ArrayList alCaptionSampleReq = new ArrayList(); alCaptionSampleReq.Add("性能批号"); alCaptionSampleReq.Add("序号"); alCaptionSampleReq.Add("试样号"); foreach (DataRow dr in dataTable10.Rows)//取样要求 { if (dr["PHY_CODE_MAX"].ToString() != "" && dr["PHY_NAME_MAX"].ToString() != "") { alColumnsSampleReq.Add(dr["PHY_CODE_MAX"].ToString()); alCaptionSampleReq.Add(dr["PHY_NAME_MAX"].ToString()); } } //alColumnsSampleReq.Add("HX"); //alCaptionSampleReq.Add("化学"); alColumnsSampleReq.Add("SAMPLE_LEN"); alCaptionSampleReq.Add("取样长度"); InitColumns(alColumnsSampleReq.ToArray(), alCaptionSampleReq.ToArray(), dataTable11); //获取一批最大取样数量 int max = 0; foreach (DataRow dr in dataTable10.Rows) { if (StringUtil.IsInt(dr["DESC_COUNT"].ToString())) { if (Convert.ToInt32(dr["DESC_COUNT"].ToString()) > max) { max = Convert.ToInt32(dr["DESC_COUNT"].ToString()); } } } //根据组批实绩自动生成参考取样要求队列区分A、B端 string row = "";//存放所有试样号判断是否有重复批号+试样号 DataRow newDr = dataTable11.NewRow(); foreach (DataRow dr in dataTable8.Rows) { for (int i = 1; i <= max; i++) { if (row.IndexOf(dr["BATCH_NO"].ToString() + "+" + i) < 0)//判断是否有重复试样号,有则不增加行只增加对应的列 { row += dr["BATCH_NO"].ToString() + "+" + i + " "; newDr = dataTable11.NewRow(); newDr["BATCH_NO"] = dr["BATCH_NO"].ToString(); newDr["XH"] = dr["BATCH_NO"].ToString() + "-" + i; //newDr["SAMPLE_SIZE"] = dr["SAMPLE_SIZE"].ToString(); dataTable11.Rows.Add(newDr); } else { //newDr[dr["SAMPLE_NO"].ToString()] = dr["SAMPLE_NO"].ToString(); } } } //为每一个试样号赋予检验项目 int num = 0;//记录此批检验项已经增加了几个试样号 string batch = "";//存放批号判断是否从0开始 只为按批的赋值 foreach (DataRow dataRow in dataTable11.Rows) { if (batch.IndexOf(dataRow["BATCH_NO"].ToString()) < 0) { batch += dataRow["BATCH_NO"].ToString() + " "; num = 0; } foreach (DataRow dr in dataTable10.Rows) { if (dr["DESC_RATE"].ToString() == "按批" && Convert.ToInt32(dr["DESC_COUNT"].ToString()) > num) { dataRow[dr["PHY_CODE_MAX"].ToString()] = "√"; } } num++; } //为每一个试样号赋予检验项目 int numHeat = 0;//记录此批检验项已经增加了几个试样号 string heat = "";//存放批号判断是否从0开始 只为按批的赋值 foreach (DataRow dataRow in dataTable10.Rows) { if (dataRow["DESC_RATE"].ToString() == "按炉") { if (heat.IndexOf(dataRow["PHY_CODE_MAX"].ToString()) < 0) { heat += dataRow["PHY_CODE_MAX"].ToString() + " "; numHeat = 0; } string strbatch = ""; foreach (DataRow dr in dataTable11.Rows) { if (strbatch.IndexOf(dr["BATCH_NO"].ToString()) < 0 && Convert.ToInt32(dataRow["DESC_COUNT"].ToString()) > numHeat)//一个批次只做一个样 { strbatch += dr["BATCH_NO"].ToString() + " "; if (Convert.ToInt32(dataRow["DESC_COUNT"].ToString()) > numHeat) { dr[dataRow["PHY_CODE_MAX"].ToString()] = "√"; } //continue; numHeat++; } //else if (strbatch.IndexOf(dr["BATCH_NO"].ToString()) >= 0 && Convert.ToInt32(dataRow["DESC_COUNT"].ToString()) > numHeat) //{ // dr[dataRow["PHY_CODE_MAX"].ToString()] = "√"; //} } } } ////为取样长度赋值 foreach (DataRow dataRow in dataTable11.Rows) { int Samplelen = 0; int maxPian = 0;//片状试样最大长度 foreach (DataRow dr in dataTable10.Rows) { if (dataRow[dr["PHY_CODE_MAX"].ToString()].ToString() == "√") { //string str = dr["SAMPLE_STYLE"].ToString(); int len = Convert.ToInt32(dr["DESC_LENGTH"].ToString().Replace("mm", "").Trim()); if (dr["SAMPLE_STYLE"].ToString() == "片") { if (len > maxPian) { maxPian = len; } } else { Samplelen += len; } } } Samplelen += maxPian; dataRow["SAMPLE_LEN"] = Samplelen;// +"mm"; } InitCellPositionRight(ultraGrid11, new string[] { "SAMPLE_LEN" }); m_dtSampleReq_LOG = dataTable11.Copy(); //GridHelper.RefreshAndAutoSize(ultraGrid11); } private void CHKISAllSampleReq_LOG_CheckedChanged(object sender, EventArgs e) { if (dataTable8 != null && dataTable8.Rows.Count > 0 && ultraGrid8.ActiveRow != null & ultraGrid8.ActiveRow.Activated == true) { dataTable11.Rows.Clear(); //是否显示全部取样要求 if (CHKISAllSampleReq_LOG.Checked == false) { DataTable dtSelect = GetSelectDt(m_dtSampleReq_LOG, "BATCH_NO = '" + ultraGrid8.ActiveRow.Cells["BATCH_NO"].Text.Trim() + "'", ""); GridHelper.CopyDataToDatatable(dtSelect, dataTable11, true); } else { GridHelper.CopyDataToDatatable(m_dtSampleReq_LOG, dataTable11, true); } } } private void btnSampleSeq_Click(object sender, EventArgs e) { } #endregion } }