using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using CoreFS.CA06; using System.Collections; using Core.LgMes.Client.Comm; using System.Reflection; using Core.LgMes.Client.lgClassModel; using Infragistics.Win.UltraWinDataSource; using Infragistics.Win.UltraWinGrid; using Core.Mes.Client.Common; namespace Core.LgMes.Client.LgResMgt { public partial class ucAdditives : UserControl { public OpeBase ob = null; private DataTable _dtMaterial = null; // 存储辅料信息 public string _DEVICE_POSITION = ""; //岗位 private BofAdditive _procAdditive; // 存放过程添加剂信息 private BofAdditive _additiveBuffer; // 用于刷新过程添加剂信息的缓冲区 private BofAdditive _JobAdditive; // 存放作业过程添加剂信息 public string strWLDTime = ""; public string strSubDateTime = "", strTAppTime=""; public ucAdditives() { InitializeComponent(); } private void ucAdditives_Load(object sender, EventArgs e) { this.ultdsAdminicle.Rows.Add(new object[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }); this.ultdsAlloy.Rows.Add(new object[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }); this.ultdsManual.Rows.Add(new object[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }); this.ultdsWS.Rows.Add(new object[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }); _additiveBuffer = new BofAdditive(); _procAdditive = new BofAdditive(); _JobAdditive = new BofAdditive(); // GetMaterialData(); } /// /// 获取物料信息 /// public void GetMaterialData() { try { string strErr = "", szWhere = ""; ArrayList arry = new ArrayList(); arry.Add("GetMaterialData.select"); CommonClientToServer cctos = new CommonClientToServer(); cctos.ob = this.ob; DataSet ds = cctos.ExecuteQueryFunctions("Core.LgMes.Server.Common.ComDBQuery", "doSimpleQuery", arry, out strErr); object obj = null; if (strErr == "" && ds != null) { DataSet dsM = ds; _dtMaterial = dsM.Tables[0]; } } catch { } } /// /// 设置料斗信息 /// public void SetHopperInfo(string _DEVICE) { int intFl = 0, intHj = 0, intWs = 0; //辅料、合金、喂丝索引 bool blValue = false; //定义判断物料是否存在 try { if (_DEVICE.Length > 3 && _DEVICE.Substring(0, 3) == "BOF") ultraTabControl1.Tabs[3].Visible = false; _DEVICE_POSITION = _DEVICE; string strErr = ""; ArrayList arry = new ArrayList(); arry.Add("SetResHopperName.select"); arry.Add(_DEVICE); arry.Add(_DEVICE); CommonClientToServer cctos = new CommonClientToServer(); cctos.ob = this.ob; DataSet ds = cctos.ExecuteQueryFunctions("Core.LgMes.Server.Common.ComDBQuery", "doSimpleQuery", arry, out strErr); if (strErr == "" && ds != null) { DataTable dtHopper = ds.Tables[0]; string BH = ""; for (int i = 0; i < dtHopper.Rows.Count; i++) { BH = dtHopper.Rows[i]["MSNUMID"].ToString(); if (dtHopper.Rows[i]["MATERIELTYPE"].ToString() == "FL") { //判断物料是否存在 for (int FL_index = 0; FL_index < this.ulgridPrcMtr.DisplayLayout.Bands[0].Columns.Count; FL_index++) { if (this.ulgridPrcMtr.DisplayLayout.Bands[0].Columns[FL_index].Tag != null && dtHopper.Rows[i]["MATERIELCODE"].ToString().Trim() == this.ulgridPrcMtr.DisplayLayout.Bands[0].Columns[FL_index].Tag.ToString()) { blValue = true; break; } } //不存在则添加 if (blValue == false) { this.ulgridPrcMtr.DisplayLayout.Bands[0].Columns[intFl].Header.Caption = dtHopper.Rows[i]["MATERIELFORSHORT"].ToString().Trim(); this.ulgridPrcMtr.DisplayLayout.Bands[0].Columns[intFl].Tag = dtHopper.Rows[i]["MATERIELCODE"].ToString().Trim(); intFl++; } blValue = false; } else if (dtHopper.Rows[i]["MATERIELTYPE"].ToString() == "HJ") { //判断物料是否存在 for (int HJ_index = 0; HJ_index < this.ultgridAlloy.DisplayLayout.Bands[0].Columns.Count; HJ_index++) { if (this.ultgridAlloy.DisplayLayout.Bands[0].Columns[HJ_index].Tag != null && dtHopper.Rows[i]["MATERIELCODE"].ToString().Trim() == this.ultgridAlloy.DisplayLayout.Bands[0].Columns[HJ_index].Tag.ToString()) { blValue = true; ; break; } } //不存在则添加 if (blValue == false) { this.ultgridAlloy.DisplayLayout.Bands[0].Columns[intHj].Header.Caption = dtHopper.Rows[i]["MATERIELFORSHORT"].ToString(); this.ultgridAlloy.DisplayLayout.Bands[0].Columns[intHj].Tag = dtHopper.Rows[i]["MATERIELCODE"].ToString(); intHj++; } blValue = false; } else if (dtHopper.Rows[i]["MATERIELTYPE"].ToString() == "WS") { //判断物料是否存在 for (int WS_index = 0; WS_index < this.ultgridWs.DisplayLayout.Bands[0].Columns.Count; WS_index++) { if (this.ultgridWs.DisplayLayout.Bands[0].Columns[WS_index].Tag != null && dtHopper.Rows[i]["MATERIELCODE"].ToString().Trim() == this.ultgridWs.DisplayLayout.Bands[0].Columns[WS_index].Tag.ToString()) { blValue = true; ; break; } } //不存在则添加 if (blValue == false) { this.ultgridWs.DisplayLayout.Bands[0].Columns[intWs].Header.Caption = dtHopper.Rows[i]["MATERIELFORSHORT"].ToString(); this.ultgridWs.DisplayLayout.Bands[0].Columns[intWs].Tag = dtHopper.Rows[i]["MATERIELCODE"].ToString(); intWs++; } blValue = false; } } } SetProceThrowFace(); } catch { } } /// /// 设置手投料界面元素项 /// private void SetProceThrowFace() { try { string strErr = ""; string strWhere = " where CONFGITEM = '" + _DEVICE_POSITION + "' and USEDLOCATION = 'STL'"; // 冶炼过程手投料 GCSTL ArrayList arry = new ArrayList(); arry.Add("GetHndTrwMtr.select"); arry.Add(_DEVICE_POSITION); arry.Add(_DEVICE_POSITION); CommonClientToServer cctos = new CommonClientToServer(); cctos.ob = this.ob; DataSet ds = cctos.ExecuteQueryFunctions("Core.LgMes.Server.Common.ComDBQuery", "doSimpleQuery", arry, out strErr); if (strErr == "" && ds != null) { DataTable dt = ds.Tables[0]; if (dt.Rows.Count > 0) { string szPZBM = dt.Rows[0]["CONFGCODE"].ToString(); string[] arBM = szPZBM.Split('/'); DataRow[] rows; int nCount = this.ultgridManual.DisplayLayout.Bands[0].Columns.Count; for (int i = 0; i < nCount; i++) { if (i < arBM.Length - 1) { rows = _dtMaterial.Select("MATERIELCODE='" + arBM[i] + "'"); if (rows.Length > 0) { this.ultgridManual.DisplayLayout.Bands[0].Columns[i].Header.Caption = rows[0]["MATERIELFORSHORT"].ToString(); this.ultgridManual.DisplayLayout.Bands[0].Columns[i].Tag = arBM[i]; } } else { this.ultgridManual.DisplayLayout.Bands[0].Columns[i].Header.Caption = ""; this.ultgridManual.DisplayLayout.Bands[0].Columns[i].Tag = this.ultdsManual.Band.Columns[i].Key; } } } } } catch { } } /// /// 获取实绩汇总后过程添加剂信息 /// /// 熔炼号 /// 岗位编码 /// 处理次数 public void GetAdditiveData(string _smeltingID, string _stationCode, string _dealTime) { if (_smeltingID == "") return; try { string strErr = "", strHNo = "", strSCode = "", strDTime = ""; strHNo = _smeltingID; strSCode = _stationCode; strDTime = _dealTime; ArrayList arry = new ArrayList(); arry.Add("GetBofMaterialData.select"); arry.Add(strHNo); arry.Add(strHNo); arry.Add(strSCode); arry.Add(strSCode); arry.Add(strDTime); arry.Add(strDTime); CommonClientToServer cctos = new CommonClientToServer(); cctos.ob = this.ob; DataSet ds = cctos.ExecuteQueryFunctions("Core.LgMes.Server.Common.ComDBQuery", "doSimpleQuery", arry, out strErr); if (strErr == "" && ds != null) { //序列化添加料数据 DataSetToAdditive(ref ds, ref _procAdditive); //显示添加料 SetAdditiveData(); } GetJobAdditiveData(_smeltingID, _stationCode, _dealTime); //作业物料添加过程信息 //SetAdditiveData(); } catch { } } /// /// 获取作业添加剂过程信息 /// /// 熔炼号 /// 岗位编码 /// 处理次数 public void GetJobAdditiveData(string _smeltingID, string _stationCode, string _dealTime) { string strTableName = ""; //不同岗位表名 if (_smeltingID == "") return; try { switch (_stationCode.Substring(0,1)) { case "C": strTableName = "STL_BOF_ADDITIVES"; break; case "D": strTableName = "STL_CAS_ADDITIVES"; break; case "E": strTableName = "STL_LFS_ADDITIVES"; break; case "F": strTableName = "STL_RHS_ADDITIVES"; break; case "I": strTableName = "STL_VDS_ADDITIVES"; break; default: break; } string strErr = "", strHNo = "", strSCode = "", strDTime = ""; strHNo = _smeltingID; strSCode = _stationCode.Substring(1, 2); strDTime = _dealTime; DataSet ds=new DataSet(); ArrayList arry = new ArrayList(); ArrayList sqlList = new ArrayList(); arry.Add("GetJobMaterialData.select"); sqlList.Add(strTableName); sqlList.Add(strTableName); arry.Add(strHNo); arry.Add(strHNo); arry.Add(strSCode); arry.Add(strSCode); arry.Add(strDTime); arry.Add(strDTime); CoreFS.CA06.FrmBase fr = new FrmBase(); fr.ob = ob; CoreClientParam CCP_Query = new CoreClientParam(); DataTable dt = new DataTable(); // CCP_Query.ServerName = "Core.LgMes.Server.Common.ComDBQuery"; // CCP_Query.MethodName = "doQuery"; CCP_Query.ServerName = "Core.LgMes.Server.Common.ComDBExecute"; // 考虑原来返回数据形式性能太低,修改为前端传sql,服务端直接执行模式 2013.11.18 CCP_Query.MethodName = "doSimpleQuery"; CCP_Query.ServerParams = new object[] { this.getSqlOfJobAdditiveData(strTableName, strHNo, strSCode, strDTime) }; CCP_Query.SourceDataTable = dt; fr.ExecuteQueryToDataTable(CCP_Query, CoreInvokeType.Internal); ds.Tables.Add(dt); if (strErr == "" && dt != null) { //序列化添加料数据 DataSetToAdditive(ref ds, ref _JobAdditive); SetProcess(); //if() //{ //} } } catch { } } private string getSqlOfJobAdditiveData(string v_strTableName, string v_heatNo, string v_strSCode, string v_strDTime) { string sqlStr = @"select a.HEATPROCESSNO, a.MATERIELTYPE, a.MATERIELCODE, a.JMDATE, a.JMTYPE, a.HOPPERNUMID, round(a.JMWGT, 2) JMWGT from (select * from {0} union select * from J#{0}) a where 1 = 1 and HEATNO = decode('{1}', null, HEATNO, '{1}') and STATIONCODE = decode('{2}', null, STATIONCODE, '{2}') and DISPOSALTIME = decode('{3}', null, DISPOSALTIME, '{3}') order by jmdate desc"; sqlStr = string.Format(sqlStr,v_strTableName, v_heatNo, v_strSCode, v_strDTime); return sqlStr; } /// /// 序列化添加料信息 /// /// /// private void DataSetToAdditive(ref DataSet ds, ref BofAdditive obj) { try { obj.ClearElement(); PropertyInfo[] PropertyInfos = null; foreach (DataRow dr in ds.Tables[0].Rows) { JOB_BOF_ADDITIVES detail = new JOB_BOF_ADDITIVES(); if (PropertyInfos == null) { PropertyInfos = detail.GetType().GetProperties(); } //给各个属性赋值 foreach (PropertyInfo oPropertyInfo in PropertyInfos) { try { if (ds.Tables[0].Columns.Contains(oPropertyInfo.Name)) { if (dr[oPropertyInfo.Name] != System.DBNull.Value) { oPropertyInfo.SetValue(detail, dr[oPropertyInfo.Name.ToString()], null); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } obj.Add(ref detail); }//end foreach _additiveBuffer.DataHarmonize(ref obj); } catch (Exception ex) { string Msg = ex.Message; } finally { } } /// /// 添加过程添加剂数据到界面 /// private void SetAdditiveData() { try { ResetData();//初始化数据 for (int i = 0; i < _additiveBuffer.hList.Count; i++) { JOB_BOF_ADDITIVES obj = (JOB_BOF_ADDITIVES)_additiveBuffer.hList[i]; try { if (obj.JMTYPE == "1") //料仓加料 { if (obj.MATERIELTYPE == "FL") { for (int Fl_Count = 0; i < ulgridPrcMtr.DisplayLayout.Bands[0].Columns.Count; Fl_Count++) { if (ulgridPrcMtr.DisplayLayout.Bands[0].Columns[Fl_Count].Tag != null && ulgridPrcMtr.DisplayLayout.Bands[0].Columns[Fl_Count].Tag.ToString() == obj.MATERIELCODE.ToString()) { /* * 修改 20131112 * 对同一物料,可能配有多个料仓,原有逻辑显示时只显示最后一个 * 现对同物料,采取汇总方式显示 */ double jmwgt_temp = 0; string str = ultdsAdminicle.Rows[0][ulgridPrcMtr.DisplayLayout.Bands[0].Columns[Fl_Count].Key].ToString(); if (str != null) { jmwgt_temp = Convert.ToDouble(str == "" ? "0" : str); } ultdsAdminicle.Rows[0][ulgridPrcMtr.DisplayLayout.Bands[0].Columns[Fl_Count].Key] = (jmwgt_temp + Convert.ToDouble(obj.JMWGT)).ToString(); // ultdsAdminicle.Rows[0][ulgridPrcMtr.DisplayLayout.Bands[0].Columns[Fl_Count].Key] = obj.JMWGT; break; } } } else if (obj.MATERIELTYPE == "HJ") { for (int Hj_Count = 0; i < ultgridAlloy.DisplayLayout.Bands[0].Columns.Count; Hj_Count++) { if (ultgridAlloy.DisplayLayout.Bands[0].Columns[Hj_Count].Tag!=null && ultgridAlloy.DisplayLayout.Bands[0].Columns[Hj_Count].Tag.ToString() == obj.MATERIELCODE.ToString()) { ultdsAlloy.Rows[0][ultgridAlloy.DisplayLayout.Bands[0].Columns[Hj_Count].Key] = obj.JMWGT; break; } } } else if (obj.MATERIELTYPE == "WS") { for (int Ws_Count = 0; i < ultgridWs.DisplayLayout.Bands[0].Columns.Count; Ws_Count++) { if (ultgridWs.DisplayLayout.Bands[0].Columns[Ws_Count].Tag !=null && ultgridWs.DisplayLayout.Bands[0].Columns[Ws_Count].Tag.ToString() == obj.MATERIELCODE.ToString()) { ultdsWS.Rows[0][ultgridWs.DisplayLayout.Bands[0].Columns[Ws_Count].Key] = obj.JMWGT; break; } } } } else if (obj.JMTYPE == "2") //手投料 { for (int H_Count = 0; i < ultgridManual.DisplayLayout.Bands[0].Columns.Count; H_Count++) { if (ultgridManual.DisplayLayout.Bands[0].Columns[H_Count].Tag != null && ultgridManual.DisplayLayout.Bands[0].Columns[H_Count].Tag.ToString() == obj.MATERIELCODE.ToString()) { ultdsManual.Rows[0][ultgridManual.DisplayLayout.Bands[0].Columns[H_Count].Key] = obj.JMWGT; break; } } } } catch(Exception ex) { } } IntGridSummary(); } catch { } } public void GetSubDdateTime(string strSubDTime, string strTppTime) { strSubDateTime = strSubDTime; strTAppTime = strTppTime; } /// /// 作业物料添加过程 /// private void SetProcess() { string strJMDATE = ""; this.ultdsProcess.Rows.Clear(); bool blAdd = false; //定义物料是否已添加 for (int i = ultdsProcess.Band.Columns.Count-1; i >0 ; i--) { ultdsProcess.Band.Columns.Remove(ultdsProcess.Band.Columns[i].Key.ToString()); } ///l ultdsProcess.Band.Columns.Add("BJDATE"); ultdsProcess.Band.Columns.Add("MATERIELTYPE"); ultdsProcess.Band.Columns.Add("TPPTIME"); ////l for (int j = 0; j < _JobAdditive.hList.Count; j++) { JOB_BOF_ADDITIVES job_add = (JOB_BOF_ADDITIVES)_JobAdditive.hList[j]; try { foreach (Infragistics.Win.UltraWinDataSource.UltraDataColumn ultraCol in ultdsProcess.Band.Columns) { if (ultraCol.Key.ToString() == job_add.MATERIELCODE) blAdd = true; } if (blAdd == false) { ultdsProcess.Band.Columns.Add(job_add.MATERIELCODE); DataRow[] rows = _dtMaterial.Select("MATERIELCODE='" + job_add.MATERIELCODE + "'"); ultgridProcess.DisplayLayout.Bands[0].Columns[0].Width = 70; ultgridProcess.DisplayLayout.Bands[0].Columns[job_add.MATERIELCODE].Header.Caption = rows[0]["MATERIELFORSHORT"].ToString(); ultgridProcess.DisplayLayout.Bands[0].Columns[job_add.MATERIELCODE].Width = 60; ultgridProcess.DisplayLayout.Bands[0].Columns[job_add.MATERIELCODE].CellActivation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; } blAdd = false; ultdsProcess.Rows.Add(); ultdsProcess.Rows[ultdsProcess.Rows.Count - 1]["JMDATE"] = job_add.JMDATE.ToString("HH:mm:ss"); ultdsProcess.Rows[ultdsProcess.Rows.Count - 1]["BJDATE"] = job_add.JMDATE.ToString(); ultdsProcess.Rows[ultdsProcess.Rows.Count - 1]["MATERIELTYPE"] = job_add.MATERIELTYPE.ToString(); ultdsProcess.Rows[ultdsProcess.Rows.Count - 1]["TPPTIME"] = job_add.MATERIELTYPE.ToString(); ultdsProcess.Rows[ultdsProcess.Rows.Count - 1][job_add.MATERIELCODE] = job_add.JMWGT; } catch { } } this.ultgridProcess.DisplayLayout.Bands[0].Columns["BJDATE"].Hidden = true; this.ultgridProcess.DisplayLayout.Bands[0].Columns["MATERIELTYPE"].Hidden = true; this.ultgridProcess.DisplayLayout.Bands[0].Columns["TPPTIME"].Hidden = true; for (int j = 0; j < this.ultgridProcess.Rows.Count; j++) { if (strSubDateTime.ToString() != "") { if (this.ultgridProcess.Rows[j].Cells["BJDATE"].Value.ToString().CompareTo(strSubDateTime.ToString()) == 1 && this.ultgridProcess.Rows[j].Cells["MATERIELTYPE"].Value.ToString() == "FL") { this.ultgridProcess.Rows[j].Appearance.ForeColor = Color.Red; } } if (strTAppTime.ToString() != "") { if (this.ultgridProcess.Rows[j].Cells["BJDATE"].Value.ToString().CompareTo(strTAppTime.ToString()) == 1) { this.ultgridProcess.Rows[j].Appearance.ForeColor = Color.Blue; } } } IntGridSummary();//汇总 } /// /// 设置汇总 /// private void IntGridSummary() { UltraGridBand band = this.ultgridProcess.DisplayLayout.Bands[0]; this.ultgridProcess.DisplayLayout.Override.RowSelectorNumberStyle = RowSelectorNumberStyle.RowIndex; band.Summaries.Clear(); SummarySettings summary = band.Summaries.Add(SummaryType.Count, band.Columns[0]); summary.SummaryDisplayArea = SummaryDisplayAreas.TopFixed; summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; summary.Appearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True; summary.DisplayFormat = "投料合计"; for (int i = 1; i < band.Columns.Count; i++) { summary = band.Summaries.Add(SummaryType.Sum, band.Columns[i]); summary.SummaryDisplayArea = SummaryDisplayAreas.TopFixed; summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn; summary.Appearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True; //if (i > 4) // summary.DisplayFormat = " {0:#####}"; //else summary.DisplayFormat = " {0:#####.00}"; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; summary.Appearance.ForeColor = Color.DarkBlue; summary.Appearance.BackColor = Color.White; } band.Override.SummaryFooterCaptionVisible = Infragistics.Win.DefaultableBoolean.False; } /// /// 清空数据 /// private void ResetData() { //清空辅料 for (int FL_Count = 0; FL_Count < ultdsAdminicle.Band.Columns.Count; FL_Count++) ultdsAdminicle.Rows[0][FL_Count] = ""; //清空合金 for (int HJ_Count = 0; HJ_Count < ultdsAlloy.Band.Columns.Count; HJ_Count++) ultdsAlloy.Rows[0][HJ_Count] = ""; //清空喂丝 for (int WS_Count = 0; WS_Count < ultdsWS.Band.Columns.Count; WS_Count++) ultdsWS.Rows[0][WS_Count] = ""; //清空手投料 for (int H_Count = 0; H_Count < ultdsManual.Band.Columns.Count; H_Count++) ultdsManual.Rows[0][H_Count] = ""; //清空加料过程 // ultdsProcess.Rows.Clear(); } private void ulgridPrcMtr_KeyPress(object sender, KeyPressEventArgs e) { if (!(Char.IsNumber(e.KeyChar) || e.KeyChar == '.' || e.KeyChar == '\b')) { e.Handled = true; } } private void ulgridPrcMtr_CellChange(object sender, CellEventArgs e) { if (ulgridPrcMtr.ActiveCell.Text != "") { try { Convert.ToDecimal(ulgridPrcMtr.ActiveCell.Text); } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); ulgridPrcMtr.ActiveCell.Value = ""; } } } private void ultgridAlloy_CellChange(object sender, CellEventArgs e) { if (ultgridAlloy.ActiveCell.Text != "") { try { Convert.ToDecimal(ultgridAlloy.ActiveCell.Text); } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); ultgridAlloy.ActiveCell.Value = ""; } } } private void ultgridWs_CellChange(object sender, CellEventArgs e) { if (ultgridWs.ActiveCell.Text != "") { try { Convert.ToDecimal(ultgridWs.ActiveCell.Text); } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); ultgridWs.ActiveCell.Value = ""; } } } private void ultgridManual_CellChange(object sender, CellEventArgs e) { if (ultgridManual.ActiveCell.Text != "") { try { Convert.ToDecimal(ultgridManual.ActiveCell.Text); } catch (Exception ex) { MessageBox.Show(ex.Message, "提示"); ultgridManual.ActiveCell.Value = ""; } } } private void ultgridProcess_InitializeLayout(object sender, InitializeLayoutEventArgs e) { } } }