using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using CoreFS.CA06; using System.IO; using Microsoft.Office.Interop; namespace Core.LgMes.Client.LgJobMgt { public partial class frmMicLineQuery : CoreFS.CA06.FrmBase { private DataSet _frmDataSet = new DataSet(); string strProcessID = ""; string strSteelCode = ""; public string strEssential = ""; //工艺要点 /// /// 作业标准查询 /// public frmMicLineQuery() { InitializeComponent(); } private void frmMicLineQuery_Load(object sender, EventArgs e) { string[] tag=new string[5]; string CraftCode = ""; //参数 if (!string.IsNullOrEmpty(this.Tag.ToString())) { tag = this.Tag.ToString().Split('#'); } ////大牌号 //if (!string.IsNullOrEmpty(tag[1])) //{ // cmbxSteel.Enabled = true; // chkSteel.Checked = true; // cmbxSteel.SelectedValue = tag[1]; //} //小牌号 if (!string.IsNullOrEmpty(tag[2])) { strSteelCode = tag[2]; } //if (!string.IsNullOrEmpty(tag[0])) //{ // cmbxStation.Text=ProcessID(tag[0]); //} //炼钢工艺码 if (!string.IsNullOrEmpty(tag[4])) CraftCode = tag[4]; if (!string.IsNullOrEmpty(tag[0])) { switch (tag[0].Substring(0,3)) { case "HMP": strProcessID = "B"; break; case "BOF": strProcessID = "C"; break; case "CAS": strProcessID = "D"; break; case "LFS": strProcessID = "E"; break; case "RHS": strProcessID = "F"; break; case "CCM": strProcessID = "G"; break; default : break; } } QueryData("JOBSTANDARD", " and a.xh<>0 and a.CRAFTCODE='" + CraftCode + "'", strProcessID); //QueryData("JOBSTANDARD_Child", " and a.xh<>0 and a.CRAFTCODE='" + CraftCode + "'"); //DataRelations(); SetCaption(); //SetCaption_Child(); GetOperateRule(); rtbEssential.Text = strEssential; //工艺要点 } /// /// 编译工序代码 /// /// 岗位编码 /// 返回工序代码 private string ProcessID(string _DEVICE_POSITION) { string ProcessName = ""; if (!string.IsNullOrEmpty(_DEVICE_POSITION)) { switch (_DEVICE_POSITION.Substring(0, 3)) { case "HMP": ProcessName = "脱硫站"; break; case "BOF": ProcessName = "转炉"; break; case "CAS": ProcessName = "吹氩站"; break; case "LFS": ProcessName = "精炼炉"; break; case "RHS": ProcessName = "RH/VD炉"; break; case "CCM": ProcessName = "连铸机"; break; } } return ProcessName; } private void QueryData(string TableName, string strWhere, string strProcessID) { string szWhere = " ", szOut = ""; //if (cmbxSteel.Enabled && TableName=="JOBSTANDARD") // szWhere += " AND a.catalogid='" + cmbxSteel.SelectedValue.ToString() + "'"; //if (cmbxCard.Enabled) // szWhere += " AND a.STEELCODE = '"+cmbxCard.SelectedValue.ToString()+"'"; //if (cmbxCraft.Enabled) // szWhere += " AND a.CRAFTCODE = '"+cmbxCraft.SelectedValue.ToString()+"'"; //if (cmbxStation.Enabled && TableName == "JOBSTANDARD_Child") // szWhere += " AND a.PROCESSID='"+cmbxStation.SelectedValue.ToString()+"'"; szWhere += szWhere + strWhere; //hengxing //CallingMessage par = new CallingMessage(); //par.ServerName = "lgJobMgt"; //par.AssemblyName = "Core.LgMes.Server.lgJobMgt"; //par.ClassName = "Core.LgMes.Server.lgJobMgt.classCommonQuery"; //par.MethodName = "QurJobStd"; //par.args = new object[] { szWhere,strProcessID }; object obj = null;// ClientCommon._RemotingHelp.ExecuteMethod(par, out szOut); if (szOut == "" && obj != null) { DataTable dt = ((DataSet)obj).Tables[0]; dt.TableName = TableName; //"JOBSTANDARD"; if (_frmDataSet.Tables.Contains(TableName)) { _frmDataSet.Tables["JOBSTANDARD_Child"].Clear(); _frmDataSet.Tables[TableName].Clear(); } _frmDataSet.Merge(dt); //显示工艺编码,工艺说明,牌号 if (_frmDataSet.Tables["JOBSTANDARD"].Rows.Count > 0) { lblCraftCode.Text = _frmDataSet.Tables["JOBSTANDARD"].Rows[0]["CRAFTCODE"].ToString(); lblCraftName.Text = _frmDataSet.Tables["JOBSTANDARD"].Rows[0]["CRAFTNAME"].ToString(); lblSteel.Text = _frmDataSet.Tables["JOBSTANDARD"].Rows[0]["Steel"].ToString(); } else { lblCraftCode.Text = ""; lblCraftName.Text = ""; lblSteel.Text = ""; } } } /// /// 设置父表格式 /// private void SetCaption() { ulgridJobStd.DataSource = _frmDataSet.Tables["JOBSTANDARD"]; ulgridJobStd.DisplayLayout.Bands[0].Columns["CRAFTCODE"].Width = 200; ulgridJobStd.DisplayLayout.Bands[0].Columns["CRAFTCODE"].Header.Caption = "工艺编码"; ulgridJobStd.DisplayLayout.Bands[0].Columns["CRAFTCODE"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["CRAFTNAME"].Width = 200; ulgridJobStd.DisplayLayout.Bands[0].Columns["CRAFTNAME"].Header.Caption = "工艺描述"; ulgridJobStd.DisplayLayout.Bands[0].Columns["CRAFTNAME"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["STD_DC"].Width = 80; ulgridJobStd.DisplayLayout.Bands[0].Columns["STD_DC"].Header.Caption = "标准类型"; ulgridJobStd.DisplayLayout.Bands[0].Columns["STD_DC"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["STEELCODE"].Width = 200; ulgridJobStd.DisplayLayout.Bands[0].Columns["STEELCODE"].Header.Caption = "牌号"; ulgridJobStd.DisplayLayout.Bands[0].Columns["STEELCODE"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["ISVALID"].Width = 60; ulgridJobStd.DisplayLayout.Bands[0].Columns["ISVALID"].Header.Caption = "有效标志"; ulgridJobStd.DisplayLayout.Bands[0].Columns["CRAFTITEMNAME"].Width = 100; ulgridJobStd.DisplayLayout.Bands[0].Columns["CRAFTITEMNAME"].Header.Caption = "参数项目"; ulgridJobStd.DisplayLayout.Bands[0].Columns["description"].Width = 80; ulgridJobStd.DisplayLayout.Bands[0].Columns["description"].Header.Caption = "岗位名称"; ulgridJobStd.DisplayLayout.Bands[0].Columns["basename"].Width = 80; ulgridJobStd.DisplayLayout.Bands[0].Columns["basename"].Header.Caption = "工艺类型"; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM1MIN"].Width = 90; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM1MIN"].Header.Caption = "参数1Min"; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM1MAX"].Width = 90; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM1MAX"].Header.Caption = "参数1Max"; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM2MIN"].Width = 90; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM2MIN"].Header.Caption = "参数2Min"; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM2MAX"].Width = 90; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM2MAX"].Header.Caption = "参数2Max"; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM3MIN"].Width = 90; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM3MIN"].Header.Caption = "参数3Min"; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM3MAX"].Width = 90; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM3MAX"].Header.Caption = "参数3Max"; ulgridJobStd.DisplayLayout.Bands[0].Columns["RECORDER"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["XH"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["DEVICENO"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["PROCESSID"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM1"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["INPUTTIME"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM2"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["ITEM3"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["catalogid"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[0].Columns["steel"].Hidden = true; //SetCaption_Child(); CStaticMethod.SetRowEdit(ref ulgridJobStd); } /// /// 设置子表格式 /// private void SetCaption_Child() { ulgridJobStd.DisplayLayout.Bands[1].Columns["PROCESSID"].Width = 50; ulgridJobStd.DisplayLayout.Bands[1].Columns["PROCESSID"].Header.Caption = "工序码"; ulgridJobStd.DisplayLayout.Bands[1].Columns["STD_DC"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["CRAFTITEMNAME"].Width = 100; ulgridJobStd.DisplayLayout.Bands[1].Columns["CRAFTITEMNAME"].Header.Caption = "参数项目"; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM1MIN"].Width = 90; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM1MIN"].Header.Caption = "参数1Min"; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM1MAX"].Width = 90; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM1MAX"].Header.Caption = "参数1Max"; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM2MIN"].Width = 90; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM2MIN"].Header.Caption = "参数2Min"; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM2MAX"].Width = 90; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM2MAX"].Header.Caption = "参数2Max"; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM3MIN"].Width = 90; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM3MIN"].Header.Caption = "参数3Min"; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM3MAX"].Width = 90; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM3MAX"].Header.Caption = "参数3Max"; ulgridJobStd.DisplayLayout.Bands[1].Columns["DEVICENO"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["ISVALID"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["RECORDER"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["CRAFTNAME"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["CRAFTCODE"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["XH"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["STEELCODE"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM1"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["INPUTTIME"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM2"].Hidden = true; ulgridJobStd.DisplayLayout.Bands[1].Columns["ITEM3"].Hidden = true; } /// /// 获取对应岗位的操作规程 /// private void GetOperateRule() { string szWhere = " ", szOut = ""; byte[] fileBytes=null; szWhere = " where t.deviceno=t1.processid and t1.name_='" + strProcessID + "' and t.steelcode='" + strSteelCode + "'"; //hengxing //CallingMessage par = new CallingMessage(); //par.ServerName = "lgJobMgt"; //par.AssemblyName = "Core.LgMes.Server.lgJobMgt"; //par.ClassName = "Core.LgMes.Server.lgJobMgt.classCommonQuery"; //par.MethodName = "GetOperateRule"; //par.args = new object[] { szWhere }; object obj = null;// ClientCommon._RemotingHelp.ExecuteMethod(par, out szOut); if (szOut == "" && obj != null) { DataTable dt = ((DataSet)obj).Tables[0]; dt.TableName = "OPERATERULE"; if (_frmDataSet.Tables.Contains("OPERATERULE")) _frmDataSet.Tables["OPERATERULE"].Clear(); _frmDataSet.Merge(dt); if (_frmDataSet.Tables["OPERATERULE"].Rows.Count > 0) { if (_frmDataSet.Tables["OPERATERULE"].Rows[0]["Content"] != null) fileBytes = (byte[])_frmDataSet.Tables["OPERATERULE"].Rows[0]["Content"]; string sUrl; sUrl = Path.GetTempPath() + _frmDataSet.Tables["OPERATERULE"].Rows[0]["Doc"].ToString(); if (CreateXLS(sUrl, fileBytes, 1024)) { string strFileName = _frmDataSet.Tables["OPERATERULE"].Rows[0]["Doc"].ToString(); if (strFileName.Substring(strFileName.IndexOf(".")+1, 3) == "doc") { SaveAsRTF(sUrl, sUrl.Replace("doc", "rtf")); richTextBox1.LoadFile(sUrl.Replace("doc", "rtf"), RichTextBoxStreamType.RichText); } else if(strFileName.Substring(strFileName.IndexOf(".")+1, 3) == "txt") richTextBox1.LoadFile(sUrl, RichTextBoxStreamType.PlainText); } } } } /// /// 在本地创建操作规程文件 /// /// 文件名 /// 二进制文件内容 /// 缓存大小 /// public static bool CreateXLS(string xlsFullName, byte[] inBytes, int bufferSize) { try { //int bufferSize = 1024; byte[] outBuffer = new byte[bufferSize]; int retVal = 0; long curPos = 0; FileStream fs = new FileStream(xlsFullName, FileMode.OpenOrCreate, FileAccess.Write); BinaryWriter bw = new BinaryWriter(fs); MemoryStream ms = new MemoryStream(inBytes); ms.Position = curPos; retVal = ms.Read(outBuffer, 0, bufferSize); while (retVal > 0) { bw.Write(outBuffer, 0, retVal); bw.Flush(); curPos = ms.Position; if (curPos == ms.Length) break; //ms.Seek(curPos, SeekOrigin.); retVal = ms.Read(outBuffer, 0, bufferSize); } bw.Close(); fs.Close(); ms.Close(); return true; } catch { return false; } } /// /// 将Word文档另存为RTF格式文档 /// /// 文件路径和文件名 /// 目标文件 private void SaveAsRTF(object xlsFullName,object Target) { Microsoft.Office.Interop.Word.Application newApp = new Microsoft.Office.Interop.Word.Application(); // 指定原文件和目标文件 object Unknown = Type.Missing; //为了保险,只读方式打开 object readOnly = true; // 打开doc文件 Microsoft.Office.Interop.Word.Document doc = newApp.Documents.Open(ref xlsFullName, ref Unknown, ref readOnly, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); // 指定另存为格式(rtf) object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatRTF; // 转换格式 doc.SaveAs(ref Target, ref format, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); // 关闭文档和Word程序 doc.Close(ref Unknown, ref Unknown, ref Unknown); newApp.Quit(ref Unknown, ref Unknown, ref Unknown); } private void checkBox1_CheckedChanged(object sender, EventArgs e) { string szName = ((Control)sender).Name; switch (szName) { case "chkSteel": cmbxSteel.Enabled = chkSteel.Checked; break; case "chkCard": cmbxCard.Enabled = chkCard.Checked; break; case "chkCraft": cmbxCraft.Enabled = chkCraft.Checked; break; case "chkStation": cmbxStation.Enabled = chkStation.Checked; break; default: break; } } /// /// 设置牌号数据项 /// private void SetSteelItems() { string szWhere = " where basecode like '6001%' and basecode <> '6001'", szOut = ""; //hengxing //CallingMessage par = new CallingMessage(); //par.ServerName = "lgJobMgt"; //par.AssemblyName = "Core.LgMes.Server.lgJobMgt"; //par.ClassName = "Core.LgMes.Server.lgJobMgt.classCommonQuery"; //par.MethodName = "GetSteelItems"; //par.args = new object[] { szWhere }; object obj = null;// ClientCommon._RemotingHelp.ExecuteMethod(par, out szOut); if (szOut == "" && obj != null) { DataTable dt = ((DataSet)obj).Tables[0]; cmbxSteel.DataSource = dt.DefaultView; cmbxSteel.DisplayMember = "BASENAME"; cmbxSteel.ValueMember = "BASECODE"; } } /// /// 设置牌号数据项 /// private void SetCardItems() { string szWhere = " ", szOut = ""; //hengxing //CallingMessage par = new CallingMessage(); //par.ServerName = "lgJobMgt"; //par.AssemblyName = "Core.LgMes.Server.lgJobMgt"; //par.ClassName = "Core.LgMes.Server.lgJobMgt.classCommonQuery"; //par.MethodName = "GetCardItems"; //par.args = new object[] { szWhere }; object obj = null;// ClientCommon._RemotingHelp.ExecuteMethod(par, out szOut); if (szOut == "" && obj != null) { DataTable dt = ((DataSet)obj).Tables[0]; cmbxCard.DataSource = dt.DefaultView; cmbxCard.DisplayMember = "STEEL"; cmbxCard.ValueMember = "STEELCODE"; } } /// /// 设置工艺描述数据项 /// private void SetCraftItems() { string szWhere = " ", szOut = ""; szWhere = " where xh=0"; //hengxing //CallingMessage par = new CallingMessage(); //par.ServerName = "lgJobMgt"; //par.AssemblyName = "Core.LgMes.Server.lgJobMgt"; //par.ClassName = "Core.LgMes.Server.lgJobMgt.classCommonQuery"; //par.MethodName = "GetCraftItems"; //par.args = new object[] { szWhere }; object obj = null;// ClientCommon._RemotingHelp.ExecuteMethod(par, out szOut); if (szOut == "" && obj != null) { DataTable dt = ((DataSet)obj).Tables[0]; cmbxCraft.DataSource = dt.DefaultView; cmbxCraft.DisplayMember = "CRAFTNAME"; cmbxCraft.ValueMember = "CRAFTCODE"; } } /// /// 设置工序数据项 /// private void SetProcessItems() { string szWhere = " ", szOut = ""; //hengxing //CallingMessage par = new CallingMessage(); //par.ServerName = "lgJobMgt"; //par.AssemblyName = "Core.LgMes.Server.lgJobMgt"; //par.ClassName = "Core.LgMes.Server.lgJobMgt.classCommonQuery"; //par.MethodName = "GetProcessItems"; //par.args = new object[] { szWhere }; object obj = null;// ClientCommon._RemotingHelp.ExecuteMethod(par, out szOut); if (szOut == "" && obj != null) { DataTable dt = ((DataSet)obj).Tables[0]; cmbxStation.DataSource = dt.DefaultView; cmbxStation.DisplayMember = "DESCRIPTION"; cmbxStation.ValueMember = "PROCESSID"; } } private void button1_Click(object sender, EventArgs e) { //QueryData("JOBSTANDARD", " and a.xh=0"); //QueryData("JOBSTANDARD_Child", " and a.xh<>0"); //DataRelations(); //SetCaption(); //SetCaption_Child(); } /// /// 将两张表建立父子关系 /// private void DataRelations() { _frmDataSet.Relations.Clear(); _frmDataSet.Relations.Add("JobStandard", _frmDataSet.Tables["JOBSTANDARD"].Columns["CRAFTCODE"], _frmDataSet.Tables["JOBSTANDARD_Child"].Columns["CRAFTCODE"],false); } } }