using System; using System.Collections; using System.Data; using System.Diagnostics; using System.Drawing; using System.Net; using System.Net.Sockets; using System.Windows.Forms; using Core.StlMes.Client.LgClassModel; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using System.Collections.Generic; using System.Linq; using Core.Mes.Client.Comm.Server; using Infragistics.Win.UltraWinEditors; namespace Core.StlMes.Client.PnCost { /// /// 业务公用方法 /// public class ClsBusinessPack { public static ValueList GetValuelistBanci() { ValueList vlist = new ValueList(); try { //三班倒 vlist.ValueListItems.Add("1", "早班"); vlist.ValueListItems.Add("3", "夜班"); vlist.ValueListItems.Add("2", "中班"); } catch { } return vlist; } public static ValueList GetValuelistBanzu() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("1", "甲班"); vlist.ValueListItems.Add("2", "乙班"); vlist.ValueListItems.Add("3", "丙班"); vlist.ValueListItems.Add("4", "丁班"); vlist.ValueListItems.Add("5", "戊班"); } catch { } return vlist; } public static string GetLastHeatState(LG_PROCESS process) { switch (process) { case LG_PROCESS.EAF: return "00"; case LG_PROCESS.LF: return "10"; case LG_PROCESS.RH: return "20"; case LG_PROCESS.VD: return "30"; case LG_PROCESS.CCM: return "40"; default: return ""; } } public static int GetHeatState(LG_PROCESS process) { switch (process) { case LG_PROCESS.EAF: return 10; case LG_PROCESS.LF: return 20; case LG_PROCESS.RH: return 30; case LG_PROCESS.VD: return 40; case LG_PROCESS.CCM: return 50; default: return 0; } } public static string GetShiftClass(string strCode) { try { switch (strCode) { //三班倒 case "1": return "白班"; case "3": return "大夜"; case "2": return "小夜"; default: return ""; } } catch { } return ""; } public static string GetShiftClassByName(string strName) { try { switch (strName) { //三班倒 case "白班": return "1"; case "大夜": return "3"; case "小夜": return "2"; default: return ""; } } catch { } return ""; } public static string GetShiftGroup(string strCode) { try { switch (strCode) { case "1": return "甲班"; case "2": return "乙班"; case "3": return "丙班"; case "4": return "丁班"; default: return ""; } } catch { } return ""; } public static string GetShiftGroupByName(string strName) { try { switch (strName) { case "甲班": return "1"; case "乙班": return "2"; case "丙班": return "3"; case "丁班": return "4"; default: return ""; } } catch { } return ""; } private static DataTable GetCcmData() { DataTable dt = new DataTable(); dt.Columns.Add("id", typeof(System.String)); dt.Columns.Add("name", typeof(System.String)); dt.Rows.Add(new object[] { "1", "1#铸机" }); dt.Rows.Add(new object[] { "2", "2#铸机" }); dt.Rows.Add(new object[] { "3", "3#铸机" }); dt.Rows.Add(new object[] { "4", "4#铸机" }); dt.Rows.Add(new object[] { "5", "5#铸机" }); dt.AcceptChanges(); return dt; } /// /// 通过权限初始化产线 /// /// /// /// /// public static List InitDropPlinePower(string processCode, UltraComboEditor ugc, string[] validDataPurviewIds, OpeBase ob) { if (ob == null) return null; var dt = GetPlineDataTable(processCode, validDataPurviewIds, ob); if (dt != null && dt.Rows.Count > 0) { if (ugc != null) { ugc.DataSource = dt; ugc.ValueMember = "PLINE_CODE"; ugc.DisplayMember = "PLINE_NAME"; } return dt.AsEnumerable().Select(p => p["PLINE_CODE"].ToString()).ToList(); } else { return null; } } /// /// 通过权限初始化产线 /// /// /// /// /// public static void InitDropPlinePower(string processCode, UltraComboEditor ugc, OpeBase ob) { if (ob == null) return ; var dt = GetPlineDataTable(processCode, ob); if (dt != null && dt.Rows.Count > 0) { if (ugc != null) { ugc.DataSource = dt; ugc.ValueMember = "PLINE_CODE"; ugc.DisplayMember = "PLINE_NAME"; } } } public static DataTable GetPlineDataTable(string processCode, string[] validDataPurviewIds, OpeBase ob) { DataTable dt = ServerHelper.GetData("Core.LgMes.Server.LgDeviceManager.PerformanceManage.initPlinePower", new object[] {processCode, validDataPurviewIds}, ob); return dt; } public static DataTable GetPlineDataTable(string processCode, OpeBase ob) { DataTable dt = ServerHelper.GetData("Core.LgMes.Server.LgDeviceManager.PerformanceManage.initPlinePower", new object[] { processCode }, ob); return dt; } /// /// 获取当前班次、班组 /// /// 1返回班次,2返回班组,3返回班次班组 /// public static string GetCurrentClass(string blnBcBz,OpeBase ob) { string strClass = ""; try { string strErr = ""; bool bSuccess = false; DataSet ds = ClsDataAccessPack.GetData("select mes_lg_common.getlgshift1(sysdate) from dual", out bSuccess, out strErr, ob); if (ds != null && ds.Tables.Count > 0) { if (blnBcBz == "1") strClass = ds.Tables[0].Rows[0][0].ToString().Substring(0, 1); else if (blnBcBz == "2") strClass = ds.Tables[0].Rows[0][0].ToString().Substring(1, 1); else strClass = ds.Tables[0].Rows[0][0].ToString(); } } catch { } return strClass; } public static bool IsValidShiftClass(string strCode) { return (strCode.Equals("1") || strCode.Equals("2")); } public static bool IsValidShiftGroup(string strCode) { return (strCode.Equals("1") || strCode.Equals("2") || strCode.Equals("3") || strCode.Equals("4")); } public static ValueList GetValuelistMolirnLeave() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("BOF01", "1#转炉"); vlist.ValueListItems.Add("BOF02", "2#转炉"); vlist.ValueListItems.Add("BOF03", "3#转炉"); vlist.ValueListItems.Add("BOF04", "4#转炉"); vlist.ValueListItems.Add("BOF05", "5#转炉"); } catch { } return vlist; } public static ValueList GetValuelistIronSource() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("1", "混铁炉"); vlist.ValueListItems.Add("2", "脱硫"); //vlist.ValueListItems.Add("1", "脱硫"); //vlist.ValueListItems.Add("2", "混铁炉"); //vlist.ValueListItems.Add("3", "直兑"); //vlist.ValueListItems.Add("4", "高炉"); } catch { } return vlist; } public static ValueList GetValuelistLogic() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("1", "是"); vlist.ValueListItems.Add("0", "否"); vlist.ValueListItems.Add("", "否"); } catch { } return vlist; } public static ValueList GetValuelistMaterialType() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("FL", "辅料"); vlist.ValueListItems.Add("HJ", "合金"); vlist.ValueListItems.Add("WS", "喂丝"); vlist.ValueListItems.Add("BH", "保护渣"); } catch { } return vlist; } public static ValueList GetValuelistDigital(int iCount) { ValueList vlist = new ValueList(); try { if (iCount <= 0) return vlist; for (int i = 0; i <= iCount; i++) { vlist.ValueListItems.Add(Convert.ToString(i), Convert.ToString(i)); } } catch { } return vlist; } public static ValueList GetValuelistStation() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("B01", "1#预处理"); vlist.ValueListItems.Add("B02", "2#预处理"); vlist.ValueListItems.Add("C01", "1#转炉"); vlist.ValueListItems.Add("C02", "2#转炉"); vlist.ValueListItems.Add("C03", "3#转炉"); vlist.ValueListItems.Add("C04", "4#转炉"); vlist.ValueListItems.Add("C05", "5#转炉"); vlist.ValueListItems.Add("D01", "1#吹氩站"); vlist.ValueListItems.Add("D02", "2#吹氩站"); vlist.ValueListItems.Add("D03", "3#吹氩站"); vlist.ValueListItems.Add("D04", "4#吹氩站"); vlist.ValueListItems.Add("D05", "5#吹氩站"); vlist.ValueListItems.Add("E01", "1#LF炉"); vlist.ValueListItems.Add("E02", "2#LF炉"); vlist.ValueListItems.Add("E03", "3#LF炉"); vlist.ValueListItems.Add("G01", "1#铸机"); vlist.ValueListItems.Add("G02", "2#铸机"); vlist.ValueListItems.Add("G03", "3#铸机"); vlist.ValueListItems.Add("G04", "4#铸机"); vlist.ValueListItems.Add("G05", "5#铸机"); } catch { } return vlist; } public static ValueList GetValuelistSteelSource() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("GT", "高炉"); vlist.ValueListItems.Add("TS", "脱硫"); vlist.ValueListItems.Add("LD", "转炉"); vlist.ValueListItems.Add("AR", "吹氩"); vlist.ValueListItems.Add("LF", "LF炉"); vlist.ValueListItems.Add("CC", "成品"); vlist.ValueListItems.Add("ZP", "铸坯"); } catch { } return vlist; } public static ValueList GetValuelistShift() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("13", "夜-甲"); vlist.ValueListItems.Add("23", "夜-乙"); vlist.ValueListItems.Add("33", "夜-丙"); vlist.ValueListItems.Add("43", "夜-丁"); vlist.ValueListItems.Add("11", "早-甲"); vlist.ValueListItems.Add("21", "早-乙"); vlist.ValueListItems.Add("31", "早-丙"); vlist.ValueListItems.Add("41", "早-丁"); vlist.ValueListItems.Add("12", "中-甲"); vlist.ValueListItems.Add("22", "中-乙"); vlist.ValueListItems.Add("32", "中-丙"); vlist.ValueListItems.Add("42", "中-丁"); } catch { } return vlist; } public static ValueList GetValuelistSteel(OpeBase ob) { try { DataSet ds = ClsDataAccessPack.GetSteelInfo("", ob); if (ds != null && ds.Tables.Count > 0) { DataTable table = ds.Tables[0]; ValueList vlist = GeneralValuelist(ref table, "STEELCODE", "STEEL"); return vlist; } } catch { } return null; } public static ValueList GetCutFinished() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("1", "已结炉"); vlist.ValueListItems.Add("0", "未结炉"); vlist.ValueListItems.Add("", "未结炉"); } catch { } return vlist; } public static ValueList GetIfBatchedZg() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("2", "坯料下线"); vlist.ValueListItems.Add("1", "已组批"); vlist.ValueListItems.Add("0", "未组批"); vlist.ValueListItems.Add("", "未知"); } catch { } return vlist; } public static ValueList GetCastingtype() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("2", "模铸"); vlist.ValueListItems.Add("1", "连铸"); vlist.ValueListItems.Add("0", "未知"); vlist.ValueListItems.Add("", "未知"); } catch { } return vlist; } public static ValueList GetGptype() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("2", "锻坯"); vlist.ValueListItems.Add("1", "铸坯"); vlist.ValueListItems.Add("0", "未知"); vlist.ValueListItems.Add("", "未知"); } catch { } return vlist; } public static ValueList GetSurplusflag() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("1", "余材"); vlist.ValueListItems.Add("0", "订单材"); vlist.ValueListItems.Add("", "未知"); } catch { } return vlist; } public static ValueList GetStatus() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("00", "编制中"); vlist.ValueListItems.Add("10", "已下发"); vlist.ValueListItems.Add("20", "生产中"); vlist.ValueListItems.Add("30", "已生产"); vlist.ValueListItems.Add("40", "关闭"); vlist.ValueListItems.Add("", "未知"); } catch { } return vlist; } public static ValueList GetHeatStatus() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("00", "初始"); vlist.ValueListItems.Add("10", "电炉执行中"); vlist.ValueListItems.Add("15", "电炉完成"); vlist.ValueListItems.Add("20", "LF炉执行中"); vlist.ValueListItems.Add("25", "LF炉完成"); vlist.ValueListItems.Add("30", "RH炉执行中"); vlist.ValueListItems.Add("35", "RH炉完成"); vlist.ValueListItems.Add("40", "VD炉执行中"); vlist.ValueListItems.Add("45", "VD炉完成"); vlist.ValueListItems.Add("50", "CCM执行中"); vlist.ValueListItems.Add("55", "CCM完成"); vlist.ValueListItems.Add("60", "切割"); vlist.ValueListItems.Add("", "未知"); } catch { } return vlist; } public static ValueList GetSurplusType() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("0", "组炉"); vlist.ValueListItems.Add("1", "生产超量"); vlist.ValueListItems.Add("2", "开浇加量"); vlist.ValueListItems.Add("3", "尾炉加量"); vlist.ValueListItems.Add("4", "连浇前炉加量"); vlist.ValueListItems.Add("5", "连浇后炉加量"); vlist.ValueListItems.Add("6", "补炉余材"); vlist.ValueListItems.Add("7", "改判"); vlist.ValueListItems.Add("", ""); } catch { } return vlist; } public static ValueList GetCcmState() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("00", "未切割完炉"); vlist.ValueListItems.Add("10", "切割完炉"); vlist.ValueListItems.Add("20", "表检完成"); vlist.ValueListItems.Add("30", "下线"); vlist.ValueListItems.Add("", "未知"); } catch { } return vlist; } public static ValueList GetValuelistBilletSection() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("150×150", "150×150"); vlist.ValueListItems.Add("165×165", "165×165"); } catch { } return vlist; } public static ValueList GetValuelistPotLevel() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("A", "A"); vlist.ValueListItems.Add("B", "B"); vlist.ValueListItems.Add("C", "C"); vlist.ValueListItems.Add("D", "D"); } catch { } return vlist; } public static ValueList GetValuelistIronSourceForBOF() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("1", "高炉铁水"); vlist.ValueListItems.Add("2", "脱硫铁水"); vlist.ValueListItems.Add("3", "混铁炉铁水"); } catch { } return vlist; } public static ValueList GetValuelistTeptForBOF(DataSet ds) { ValueList vlist = new ValueList(); try { foreach (DataRow dr in ds.Tables[0].Rows) { vlist.ValueListItems.Add(dr["SAMPLINGVALUE"].ToString(), dr["SAMPLINGVALUE"].ToString()); } } catch { } return vlist; } public static ValueList GetValuelistBlockSlagMode() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("A", "挡渣塞"); vlist.ValueListItems.Add("B", "挡渣帽"); vlist.ValueListItems.Add("C", "挡渣球"); vlist.ValueListItems.Add("AB", "挡渣塞和挡渣帽"); vlist.ValueListItems.Add("AC", "挡渣塞和挡渣球"); vlist.ValueListItems.Add("BC", "挡渣帽和挡渣球"); vlist.ValueListItems.Add("ABC", "挡渣塞和挡渣帽和挡渣球"); } catch { } return vlist; } public static ValueList GetValuelistBlockSlagEffect() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("1", "好"); vlist.ValueListItems.Add("2", "中"); vlist.ValueListItems.Add("3", "差"); } catch { } return vlist; } public static ValueList GetValuelistPotStatus() { ValueList vlist = new ValueList(); try { vlist.ValueListItems.Add("干净,包沿好", "干净,包沿好"); vlist.ValueListItems.Add("有渣子,包沿好", "有渣子,包沿好"); vlist.ValueListItems.Add("有包底小于0.5吨,包沿好", "有包底小于0.5吨,包沿好"); vlist.ValueListItems.Add("有包底0.5到1吨,包沿好", "有包底0.5到1吨,包沿好"); vlist.ValueListItems.Add("有包底1到2吨,包沿好", "有包底1到2吨,包沿好"); vlist.ValueListItems.Add("有包底2到3吨,包沿好", "有包底2到3吨,包沿好"); vlist.ValueListItems.Add("有包底大于3吨,包沿好", "有包底大于3吨,包沿好"); vlist.ValueListItems.Add("新包,包沿好", "新包,包沿好"); vlist.ValueListItems.Add("中修包,包沿好", "中修包,包沿好"); vlist.ValueListItems.Add("干净,包沿坏", "干净,包沿坏"); vlist.ValueListItems.Add("有渣子,包沿坏", "有渣子,包沿坏"); vlist.ValueListItems.Add("有包底小于0.5吨,包沿坏", "有包底小于0.5吨,包沿坏"); vlist.ValueListItems.Add("有包底0.5到1吨,包沿坏", "有包底0.5到1吨,包沿坏"); vlist.ValueListItems.Add("有包底1到2吨,包沿坏", "有包底1到2吨,包沿坏"); vlist.ValueListItems.Add("有包底2到3吨,包沿坏", "有包底2到3吨,包沿坏"); vlist.ValueListItems.Add("有包底大于3吨,包沿坏", "有包底大于3吨,包沿坏"); vlist.ValueListItems.Add("新包,包沿坏", "新包,包沿坏"); vlist.ValueListItems.Add("中修包,包沿坏", "中修包,包沿坏"); } catch { } return vlist; } /// /// 获取窗体工具栏信息 /// /// 窗体KEY /// 窗体自定议参数 /// /// public static ToolStrip GetFromToolInfo(string strFromKey, string strCustominfo, OpeBase ob) { string strErr = ""; ToolStrip tool = new ToolStrip(); try { //获取指定岗位后台实时跟踪信息 DataSet ds = ClsDataAccessPack.GetFromToolInfo(strFromKey, strCustominfo, ob); if (strErr == "" && ds != null) { if (ds.Tables[0].Rows.Count > 0) { foreach (DataRow dr in ds.Tables[0].Rows) { ToolStripButton toolItem = new ToolStripButton(); string str = dr["CAPTION"].ToString(); toolItem.Name = dr["KEY"].ToString(); toolItem.Text = str; toolItem.Enabled = true ; toolItem.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; if (CoreImageList.IL_MAINTOOL_IMAGE_LARGE.ContainsKey(dr["IMAGE"].ToString())) { toolItem.Image = CoreImageList.IL_MAINTOOL_IMAGE_LARGE[dr["IMAGE"].ToString()] as Image; } tool.Items.Add(toolItem); ToolStripSeparator sep = new ToolStripSeparator(); tool.Items.Add(sep); } tool.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(tool_ItemClicked); } } } catch (Exception ex) { } return tool; } private static void tool_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { FrmBase fb = (sender as ToolStrip).Parent as FrmBase; fb.ToolBar_Click(sender, e.ClickedItem.Name); } public static ValueList GetValuelistProtectiveSlag(OpeBase ob) { try { DataSet ds = ClsDataAccessPack.GetProtectiveSlag(ob); if (ds != null && ds.Tables.Count > 0) { DataTable table = ds.Tables[0]; ValueList vlist = GeneralValuelist(ref table, "MATERIELCODE", "MATERIELNAME"); return vlist; } } catch { } return null; } public static ValueList GetBilletMeterWeight_Cool(OpeBase ob) { try { DataSet ds = ClsDataAccessPack.GetBilletMeterWeight(ob); if (ds != null && ds.Tables.Count > 0) { DataTable table = ds.Tables[0]; ValueList vlist = GeneralValuelist(ref table, "SPEC", "CMW"); return vlist; } } catch { } return null; } public static ValueList GetBilletMeterWeight_Hot(OpeBase ob) { try { DataSet ds = ClsDataAccessPack.GetBilletMeterWeight(ob); if (ds != null && ds.Tables.Count > 0) { DataTable table = ds.Tables[0]; ValueList vlist = GeneralValuelist(ref table, "SPEC", "HMW"); return vlist; } } catch { } return null; } public static ValueList GetValuelistSapMaterial(OpeBase ob) { try { DataSet ds = ClsDataAccessPack.GetSapMaterial(ob); if (ds != null && ds.Tables.Count > 0) { DataTable table = ds.Tables[0]; ValueList vlist = GeneralValuelist(ref table, "FS_WLH", "FS_WLMS"); return vlist; } } catch { } return null; } public static string GetJobTableName(LG_PROCESS PROCESS) { switch (PROCESS) { case LG_PROCESS.HMP: return "STL_HMP_OPTINFO"; case LG_PROCESS.EAF: return "STL_EAF_OPTINFO"; case LG_PROCESS.BOF: return "STL_BOF_OPTINFO"; case LG_PROCESS.CAS: return "STL_CAS_OPTINFO"; case LG_PROCESS.LF: return "STL_LFS_OPTINFO"; case LG_PROCESS.CCM: return "STL_CCM_OPTINFO"; case LG_PROCESS.RH: return "STL_RHS_OPTINFO"; case LG_PROCESS.VD: return "STL_VDS_OPTINFO"; } return ""; } /// /// 设置时间间隔 /// /// 起始时间UltraGridCell /// 终止时间UltraGridCell /// 时间间隔UltraGridCell public static void GetTimeSpanfromUI(UltraGridCell cellTimeFrom, UltraGridCell cellTimeTo, UltraGridCell cellTimeSpan) { try { if (cellTimeFrom == null || cellTimeTo == null || cellTimeSpan == null) return; if (cellTimeFrom.Value == DBNull.Value) { cellTimeSpan.Value = ""; return; } DateTime dtFrom = Convert.ToDateTime(cellTimeFrom.Value); DateTime dtTo = DateTime.Now; if (cellTimeTo.Value != DBNull.Value) dtTo = Convert.ToDateTime(cellTimeTo.Value); cellTimeSpan.Value = ClsDataAccessPack.GetTimeSpan(dtFrom, dtTo); } catch { cellTimeSpan.Value = ""; } } /// /// 设置净重 /// /// 毛重UltraGridCell /// 皮重UltraGridCell /// 净重UltraGridCell public static void GetNetWeightfromUI(UltraGridCell cellGrossWgt, UltraGridCell cellTareWgt, UltraGridCell cellNetWgt) { try { if (cellGrossWgt == null || cellTareWgt == null || cellNetWgt == null) return; string strGrossWgt = Convert.ToString(cellGrossWgt.Text).Trim(); string strTareWgt = Convert.ToString(cellTareWgt.Text).Trim(); double dGrossWgt = 0.0, dTareWgt = 0.0; if (!double.TryParse(strGrossWgt, out dGrossWgt)) { cellNetWgt.Value = ""; return; } if (!double.TryParse(strTareWgt, out dTareWgt)) { cellNetWgt.Value = ""; return; } cellNetWgt.Value = (dGrossWgt - dTareWgt).ToString("F2"); } catch { cellNetWgt.Value = ""; } } /// /// 获取下道工序 /// /// 下道工序编码 如:LFS01_IDLE /// 下道工序加热处理号 如:E010112F00032 /// /// public static bool GetNextPos(string HeatProcessNo, out string ObjectPos, out string ObjectID, out string strMsg, OpeBase ob) { ObjectPos = ""; ObjectID = ""; bool bSuccess = false; object obj = ClsDataAccessPack.GetObject("Core.LgMes.Server.LgJobMgt.ClassManualOperate", "GetNextPos", new object[] { HeatProcessNo }, out bSuccess, out strMsg, ob); if (!bSuccess) return false; try { ArrayList alist = (ArrayList)obj; if (alist == null || alist.Count != 2) { if (string.IsNullOrEmpty(strMsg)) strMsg = "下道工序信息获取失败!"; return false; } ObjectPos = Convert.ToString(alist[0]); ObjectID = Convert.ToString(alist[1]); if (string.IsNullOrEmpty(ObjectPos)) { if (string.IsNullOrEmpty(strMsg)) strMsg = "下道工序信息为空!"; return false; } return true; } catch (Exception ex) { if (string.IsNullOrEmpty(strMsg)) strMsg = ex.Message; return false; } } /// /// 获取指定位置OBJECTID /// /// /// /// /// public static string GetDesignatedObjectID(string ObjectPos, out bool bSuccess, out string strMsg, OpeBase ob) { bSuccess = false; strMsg = ""; string SqlID = "GetObjectID.Select"; ArrayList Args = new ArrayList(); Args.Add(ObjectPos); DataSet ds = ClsDataAccessPack.GetData(SqlID, Args, out bSuccess, out strMsg, ob); if (bSuccess && ds != null && ds.Tables.Count > 0) { if (ds.Tables[0].Rows.Count == 0) { bSuccess = false; strMsg = "指定位置【" + ObjectPos + "】信息不存在!"; return ""; } return Convert.ToString(ds.Tables[0].Rows[0][0]); } return ""; } /// /// 获取本机IP地址 /// /// public static string GetLocalMachineIP() { IPHostEntry myHost = new IPHostEntry(); myHost = Dns.GetHostEntry(Dns.GetHostName()); foreach (IPAddress addr in myHost.AddressList) if (addr.AddressFamily == AddressFamily.InterNetwork) return addr.ToString(); return ""; } /// /// 提示确认 /// /// /// public static bool QuestionConfirm(string strMsg) { if (MessageBox.Show(strMsg, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return false; return true; } /// /// 手动操作执行后设置相关时间 /// /// /// /// public static void UpdateTimeNode(COM_STL_COMMAND csc, string heatProcessNo, OpeBase ob) { try { if (csc == null) return; if (!HeatProccessNoValid(heatProcessNo)) return; string TableName = GetTableName(heatProcessNo.Substring(0, 1), TableSort.Job); string strNow = ClsDataAccessPack.GetSysdate(ob).ToString("yyyy-MM-dd HH:mm:ss"); if (!string.IsNullOrEmpty(csc.FILEDNAME01)) UpdateTableField(heatProcessNo, TableName, csc.FILEDNAME01, "DATE", strNow, ob); if (!string.IsNullOrEmpty(csc.FILEDNAME02)) UpdateTableField(heatProcessNo, TableName, csc.FILEDNAME02, "DATE", strNow, ob); if (!string.IsNullOrEmpty(csc.FILEDNAME03)) UpdateTableField(heatProcessNo, TableName, csc.FILEDNAME03, "DATE", strNow, ob); } catch { } } /// /// 作业界面获取相应岗位手动操作配置 /// /// ManualOperationCollection对象 /// public static void getCommandCollection(string strStationCode, CommandCollection CC, OpeBase ob) { string strProduceSys = ClsDataAccessPack.GetProduceSys(strStationCode, ob); //获取工序所属产线 strStationCode = strStationCode.Trim(); if (strStationCode.Length > 3) strStationCode = strStationCode.Substring(0, 3).ToUpper(); DataSet ds = ClsDataAccessPack.GetManualOperateConfig(strStationCode, strProduceSys, ob); if (ds != null && ds.Tables.Count > 0) { if (CC != null) CC.Clear(); DataRow row = null; COM_STL_COMMAND clc = null; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { try { row = ds.Tables[0].Rows[i]; clc = new COM_STL_COMMAND(); clc.SetData(row); CC.Add(clc); } catch { } } } } /// ///验证加热处理号是否正确 /// /// /// public static bool HeatProccessNoValid(string heatProcessNo) { return (heatProcessNo.Length >= (int)OBJLEN.nHeatProcessNo); } /// /// 验证脱硫处理号是否正确 /// /// /// public static bool HudwProcessNoValid(string hudwProcessNo) { return (hudwProcessNo.Length >= (int)OBJLEN.nHudwProcessNo); } /// /// 获取熔炼号函数 /// /// /// public static string getSmeltingID(string heatProcessNo) { heatProcessNo = heatProcessNo.Trim(); if (heatProcessNo.Length < (int)OBJLEN.nHeatProcessNo) return ""; return heatProcessNo.Substring((int)OBJLEN.nHeatProcessNo - (int)OBJLEN.nHeatNo, (int)OBJLEN.nHeatNo); } /// /// 获取岗位字母编码 /// /// /// public static string getPostLetter(string heatProcessNo) { heatProcessNo = heatProcessNo.Trim(); if (heatProcessNo.Length < (int)OBJLEN.nDevStr) return ""; return heatProcessNo.Substring(0, (int)OBJLEN.nDevStr); } /// /// 获取岗位数字编码 /// /// /// public static string getStationCode(string heatProcessNo) { heatProcessNo = heatProcessNo.Trim(); if (heatProcessNo.Length < (int)OBJLEN.nDevStr + (int)OBJLEN.nDevCode) return ""; return heatProcessNo.Substring((int)OBJLEN.nDevStr, (int)OBJLEN.nDevCode); } /// /// 获取处理次数 /// /// /// public static string getDealTime(string heatProcessNo) { heatProcessNo = heatProcessNo.Trim(); if (heatProcessNo.Length < (int)OBJLEN.nDevStr + (int)OBJLEN.nDevCode + (int)OBJLEN.nDealTime) return ""; return heatProcessNo.Substring((int)OBJLEN.nDevStr + (int)OBJLEN.nDevCode, (int)OBJLEN.nDealTime); } /// /// 获取脱硫号函数 /// /// /// public static string getHudwIdID(string hudwProcessNo) { hudwProcessNo = hudwProcessNo.Trim(); if (hudwProcessNo.Length != (int)OBJLEN.nHudwProcessNo) return ""; return hudwProcessNo.Substring((int)OBJLEN.nHudwProcessNo - (int)OBJLEN.nHudwId, (int)OBJLEN.nHudwId); } /// i /// 转换熔炼号为中间带-的化学检验号 /// /// /// public static string ConvertSmeltID(string SmeltID) { if (SmeltID.Trim().Equals(string.Empty)) return ""; string szStr = SmeltID.Substring(0, 3) + "-" + SmeltID.Substring(SmeltID.Length - 5); return szStr; } /// ///工艺代码转换成名称 /// /// 如:C、D 分别返回 转炉、吹氩站 /// public static string GetProccessChineseName(string strCode) { strCode = strCode.ToUpper().Trim(); if (strCode.Equals("A") || strCode.Equals("MIS")) return "混铁炉"; else if (strCode.Equals("B") || strCode.Equals("HMP")) return "脱硫站"; else if (strCode.Equals("C") || strCode.Equals("BOF")) return "转炉"; else if (strCode.Equals("D") || strCode.Equals("CAS")) return "吹氩站"; else if (strCode.Equals("E") || strCode.Equals("LFS")) return "LF炉"; else if (strCode.Equals("F") || strCode.Equals("RHS")) return "RH炉"; else if (strCode.Equals("I") || strCode.Equals("VDS")) return "VD炉"; else if (strCode.Equals("G") || strCode.Equals("CCM")) return "连铸机"; return ""; } /// /// 获取设备全名 /// /// 如:C1、BOF01 都返回 E#转炉 /// public static string GetDeviceChineseName(string strCode) { strCode = strCode.ToUpper().Trim(); if (strCode.Equals("A1") || strCode.Equals("A01") || strCode.Equals("MIS01")) return "1#混铁炉"; else if (strCode.Equals("A2") || strCode.Equals("A02") || strCode.Equals("MIS02")) return "2#混铁炉"; else if (strCode.Equals("B1") || strCode.Equals("B01") || strCode.Equals("HMP01")) return "1#脱硫站"; else if (strCode.Equals("B2") || strCode.Equals("B02") || strCode.Equals("HMP02")) return "2#脱硫站"; else if (strCode.Equals("C1") || strCode.Equals("C01") || strCode.Equals("BOF01")) return "1#电炉"; else if (strCode.Equals("C2") || strCode.Equals("C02") || strCode.Equals("BOF02")) return "2#电炉"; else if (strCode.Equals("C3") || strCode.Equals("C03") || strCode.Equals("BOF03")) return "3#电炉"; else if (strCode.Equals("C4") || strCode.Equals("C04") || strCode.Equals("BOF04")) return "4#电炉"; else if (strCode.Equals("C5") || strCode.Equals("C05") || strCode.Equals("BOF05")) return "5#电炉"; else if (strCode.Equals("D1") || strCode.Equals("D01") || strCode.Equals("CAS01")) return "1#吹氩站"; else if (strCode.Equals("D2") || strCode.Equals("D02") || strCode.Equals("CAS02")) return "2#吹氩站"; else if (strCode.Equals("D3") || strCode.Equals("D03") || strCode.Equals("CAS03")) return "3#吹氩站"; else if (strCode.Equals("D4") || strCode.Equals("D04") || strCode.Equals("CAS04")) return "4#吹氩站"; else if (strCode.Equals("D5") || strCode.Equals("D05") || strCode.Equals("CAS05")) return "5#吹氩站"; else if (strCode.Equals("E1") || strCode.Equals("E01") || strCode.Equals("LFS01")) return "1#LF炉"; else if (strCode.Equals("E2") || strCode.Equals("E02") || strCode.Equals("LFS02")) return "2#LF炉"; else if (strCode.Equals("E3") || strCode.Equals("E03") || strCode.Equals("LFS03")) return "3#LF炉"; else if (strCode.Equals("F1") || strCode.Equals("F01") || strCode.Equals("RHS01")) return "1#RH炉"; else if (strCode.Equals("F2") || strCode.Equals("F02") || strCode.Equals("RHS02")) return "2#RH炉"; else if (strCode.Equals("F3") || strCode.Equals("F03") || strCode.Equals("RHS03")) return "3#RH炉"; else if (strCode.Equals("I1") || strCode.Equals("I01") || strCode.Equals("VDS01")) return "1#VD炉"; else if (strCode.Equals("I2") || strCode.Equals("I02") || strCode.Equals("VDS02")) return "2#VD炉"; else if (strCode.Equals("I3") || strCode.Equals("I03") || strCode.Equals("VDS03")) return "3#VD炉"; else if (strCode.Equals("G1") || strCode.Equals("G01") || strCode.Equals("CCM01")) return "1#铸机"; else if (strCode.Equals("G2") || strCode.Equals("G02") || strCode.Equals("CCM02")) return "2#铸机"; else if (strCode.Equals("G3") || strCode.Equals("G03") || strCode.Equals("CCM03")) return "3#铸机"; else if (strCode.Equals("G4") || strCode.Equals("G04") || strCode.Equals("CCM04")) return "4#铸机"; else if (strCode.Equals("G5") || strCode.Equals("G05") || strCode.Equals("CCM05")) return "5#铸机"; return ""; } public static string analysChineseName(string _DEVICE_POSITION) { if (!string.IsNullOrEmpty(_DEVICE_POSITION.Trim()) && _DEVICE_POSITION.Trim().Length >= 3) return GetProccessChineseName(_DEVICE_POSITION.Trim()); return ""; } /// /// 获取设备编号 /// /// 如:C1、BOF01 都返回 E /// public static string GetDeviceShortCode(string strCode) { strCode = strCode.ToUpper().Trim(); if (strCode.Equals("A1") || strCode.Equals("MIS01")) return "1"; else if (strCode.Equals("A2") || strCode.Equals("MIS02")) return "2"; else if (strCode.Equals("B1") || strCode.Equals("HMP01")) return "1"; else if (strCode.Equals("B2") || strCode.Equals("HMP02")) return "2"; else if (strCode.Equals("C1") || strCode.Equals("BOF01")) return "1"; else if (strCode.Equals("C2") || strCode.Equals("BOF02")) return "2"; else if (strCode.Equals("C3") || strCode.Equals("BOF03")) return "3"; else if (strCode.Equals("C4") || strCode.Equals("BOF04")) return "4"; else if (strCode.Equals("C5") || strCode.Equals("BOF05")) return "5"; else if (strCode.Equals("D1") || strCode.Equals("CAS01")) return "1"; else if (strCode.Equals("D2") || strCode.Equals("CAS02")) return "2"; else if (strCode.Equals("D3") || strCode.Equals("CAS03")) return "3"; else if (strCode.Equals("D4") || strCode.Equals("CAS04")) return "4"; else if (strCode.Equals("D5") || strCode.Equals("CAS05")) return "5"; else if (strCode.Equals("E1") || strCode.Equals("LFS01")) return "1"; else if (strCode.Equals("E2") || strCode.Equals("LFS02")) return "2"; else if (strCode.Equals("E3") || strCode.Equals("LFS03")) return "3"; else if (strCode.Equals("G1") || strCode.Equals("CCM01")) return "1"; else if (strCode.Equals("G2") || strCode.Equals("CCM02")) return "2"; else if (strCode.Equals("G3") || strCode.Equals("CCM03")) return "3"; else if (strCode.Equals("G4") || strCode.Equals("CCM04")) return "4"; else if (strCode.Equals("G5") || strCode.Equals("CCM05")) return "5"; return ""; } /// /// 解析工艺路线 /// /// 工艺路线编码 /// public static string analysPlan_Lines(string strPlan_Lines) { string strLines = ""; strPlan_Lines = strPlan_Lines.Trim(); string strCode = ""; for (int i = 0; i < strPlan_Lines.Length; i++) { try { strCode = GetProccessChineseName(strPlan_Lines.Substring(i, 1)); if (string.IsNullOrEmpty(strCode)) continue; strLines += (string.IsNullOrEmpty(strLines) ? "" : "→") + strCode; } catch { } } return strLines; } /// /// 解析作业路线 /// /// 作业路线代码 /// public static string analysPath(string craftPath) { string strPath = ""; craftPath = craftPath.Trim(); string strCode = ""; for (int i = 0; i < craftPath.Length; i += 2) { try { strCode = GetDeviceChineseName(craftPath.Substring(i, 2)); if (string.IsNullOrEmpty(strCode)) continue; strPath += (string.IsNullOrEmpty(strPath) ? "" : "→") + strCode; } catch { } } return strPath; } /// /// 根据岗位号获取工序 /// /// 岗位编码:BOF01 /// 工序代码:C public static string analysProcess(string _DEVICE_POSITION) { string strProcess = ""; //工序代码 if (!string.IsNullOrEmpty(_DEVICE_POSITION.Trim()) && _DEVICE_POSITION.Trim().Length >= 3) { switch (_DEVICE_POSITION.Trim().Substring(0, 3)) { case "HMP": strProcess = "B"; break; case "EAF": strProcess = "C"; break; case "BOF": strProcess = "C"; break; case "CAS": strProcess = "D"; break; case "LFS": strProcess = "E"; break; case "RHS": strProcess = "F"; break; case "CCM": strProcess = "G"; break; case "VDS": strProcess = "I"; break; default: break; } } return strProcess; } /// /// 根据代码解析工位名 /// /// 岗位编码,BOF01_FRONT /// 工位中文名 public static string analysPosName(string _DEVICE_POSITION) { string strChineseName = ""; //工序代码 string strPos = ""; //岗位 string strWsID = ""; //工位 if (!string.IsNullOrEmpty(_DEVICE_POSITION.Trim())) { strPos = _DEVICE_POSITION.Trim().Substring(0, 3).ToUpper(); strWsID = _DEVICE_POSITION.Trim().Substring(6).ToUpper(); switch (strWsID) { case "IDLE": strChineseName = "缓冲位"; break; case "FRONT": if (strPos == "CAS") strChineseName = "等待位"; else if (strPos == "CCM") strChineseName = "换包位"; else if (strPos == "LFS" || strPos == "RHS") strChineseName = "1#小车位"; else if (strPos == "HMP") strChineseName = "小车位"; break; case "DEVICE": if (strPos == "BOF") strChineseName = "吹炼位"; else if (strPos == "CCM") strChineseName = "浇铸位"; else strChineseName = "处理位"; break; case "BACK": if (strPos == "BOF") strChineseName = "出钢位"; else strChineseName = "2#小车位"; break; case "OVER": strChineseName = "生产结束"; break; default: break; } } return strChineseName; } /// /// 解析执行状态 /// /// 执行状态代码 /// public static string analysHeat_State(string heatState) { string strHeat_State = ""; if (!string.IsNullOrEmpty(heatState.Trim())) { switch (heatState.Trim()) { case "03": strHeat_State = "排产状态"; break; case "04": strHeat_State = "正在转炉"; break; case "05": strHeat_State = "正在吹氩"; break; case "06": strHeat_State = "正在LF炉"; break; case "07": strHeat_State = "正在RH炉"; break; case "08": strHeat_State = "正在VD炉"; break; case "09": strHeat_State = "正在连铸"; break; case "10": strHeat_State = "生产完成"; break; default: strHeat_State = "执行异常"; break; } } return strHeat_State; } /// /// 解析成分编码 /// /// 成分编码 /// public static string ChemelementPath(string craftPath) { string path = ""; try { string StationCode = craftPath.Substring(0, 1); switch (StationCode) { case "B": path = "脱硫"; break; case "C": path = "转炉"; break; case "D": if (craftPath.Substring(0, 2) == "DQ") path = "CAS前"; else if (craftPath.Substring(0, 2) == "DH") path = "CAS后"; break; case "E": path = "LF炉"; break; case "F": path = "RH炉"; break; case "I": path = "VD炉"; break; case "G": path = "连铸"; break; } } catch { } return path; } public static DateTime GetServerDateTime(OpeBase ob) { string strErr = ""; bool bSuccess = false; DataSet ds = ClsDataAccessPack.GetData("frmSysdate.select", new ArrayList { }, out bSuccess, out strErr, ob); DateTime currTime = DateTime.Now; if (strErr == "" && ds != null) { currTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["VDATE"]); } return currTime; } public static DateTime? GetLastOptionTime(OpeBase ob, LG_PROCESS Process) { string strErr = ""; bool bSuccess = false; string sqlID = ""; switch (Process) { case LG_PROCESS.EAF: sqlID = "SelectEafMaxEndTime.Select"; break; case LG_PROCESS.LF: sqlID = "SelectLfMaxEndTime.Select"; break; case LG_PROCESS.VD: sqlID = "SelectVdMaxEndTime.Select"; break; case LG_PROCESS.RH: sqlID = "SelectRhMaxEndTime.Select"; break; case LG_PROCESS.CCM: sqlID = "SelectCcmMaxEndTime.Select"; break; default: return null; } DataSet ds = ClsDataAccessPack.GetData(sqlID, new ArrayList { }, out bSuccess, out strErr, ob); DateTime? currTime = null; if (strErr == "" && ds != null) { currTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["VDATE"]); } return currTime; } #region 化学成分数据处理 public static void AppendTableRows(ref DataTable ATable, int newRowsCount) { string[] sTmp = new string[ATable.Columns.Count]; for (int i = 0; i < newRowsCount; i++) ATable.Rows.Add(sTmp); } /// /// 设置化学元素实时值 /// /// /// /// /// public static void SetCraftElemGridData(int row, JOB_CHEMELEMENT obj, string key, ref DataTable dt) { try { if (row < dt.Rows.Count) { for (int i = 0; i < dt.Rows[row].ItemArray.Length; i++) { switch (dt.Columns[i].ColumnName) { case "TYPESYMBOL": dt.Rows[row][i] = key; break; case "C": dt.Rows[row][i] = obj.C; break; case "Si": dt.Rows[row][i] = obj.SI; break; case "Mn": dt.Rows[row][i] = obj.MN; break; case "P": dt.Rows[row][i] = obj.P; break; case "S": dt.Rows[row][i] = obj.S; break; case "Als": dt.Rows[row][i] = obj.ALS; break; case "V": dt.Rows[row][i] = obj.V; break; case "Nb": dt.Rows[row][i] = obj.NB; break; case "Ti": dt.Rows[row][i] = obj.TI; break; case "Ca": dt.Rows[row][i] = obj.CA; break; case "B": dt.Rows[row][i] = obj.B; break; case "Asn": dt.Rows[row][i] = obj.ASN; break; case "Sn": dt.Rows[row][i] = obj.SN;; break; case "Cu": dt.Rows[row][i] = obj.CU;; break; case "Sb": dt.Rows[row][i] = obj.SB ; break; case "Alt": dt.Rows[row][i] = obj.ALT; ; break; case "Cr": dt.Rows[row][i] = obj.CR; ; break; case "Ni": dt.Rows[row][i] = obj.NI; ; break; case "Mo": dt.Rows[row][i] = obj.MO; ; break; case "O": dt.Rows[row][i] = obj.O; ; break; case "N": dt.Rows[row][i] = obj.N; ; break; case "H": dt.Rows[row][i] = obj.H; ; break; case "Ceq": dt.Rows[row][i] = obj.CEQ; ; break; case "Pcm": dt.Rows[row][i] = obj.PCM ; ; break; case "Cev": dt.Rows[row][i] = obj.CEV; ; break; } } //dt.Rows[row]["TYPESYMBOL"] = key; //dt.Rows[row]["C"] = obj.C; //dt.Rows[row]["Si"] = obj.SI; //dt.Rows[row]["Mn"] = obj.MN; //dt.Rows[row]["P"] = obj.P; //dt.Rows[row]["S"] = obj.S; //dt.Rows[row]["Als"] = obj.ALS; //dt.Rows[row]["V"] = obj.V; //dt.Rows[row]["Nb"] = obj.NB; //dt.Rows[row]["Ti"] = obj.TI; //dt.Rows[row]["Ca"] = obj.CA; //dt.Rows[row]["B"] = obj.B; //dt.Rows[row]["Asn"] = obj.ASN; //dt.Rows[row]["Sn"] = obj.SN; //dt.Rows[row]["Cu"] = obj.CU; //dt.Rows[row]["Sb"] = obj.SB; //dt.Rows[row]["Alt"] = obj.ALT; //dt.Rows[row]["Cr"] = obj.CR; //dt.Rows[row]["Ni"] = obj.NI; //dt.Rows[row]["Mo"] = obj.MO; //dt.Rows[row]["O"] = obj.O; //dt.Rows[row]["N"] = obj.N; //dt.Rows[row]["H"] = obj.H; //dt.Rows[row]["Ceq"] = obj.CEQ; //dt.Rows[row]["Pcm"] = obj.PCM; //dt.Rows[row]["Cev"] = obj.CEV; } //C、Si、Mn、P、S、Als、V、Nb、Ti、As、Sn、Cu、Sb、Alt、O、N、H } catch (Exception ex) { string Msg = ex.Message; } } /// /// 设置元素标准值 /// /// 表行数 /// 行记录 /// 被设置的表 public static void SetStandardElemData(int row, DataRow dr, ref DataTable dt ) { try { // 取得元素名称 string szEleName = dr["basename"].ToString(); dt.Rows[row]["TYPESYMBOL"] = dr["STD_DC"].ToString() == "1" ? "国标" : (dr["STD_DC"].ToString() == "2" ? "内控" : "客户"); if (dr["stdmax"].ToString() != "" && dr["stdmin"].ToString() != "") dt.Rows[row][szEleName] = dr["stdmin"].ToString() + "~" + dr["stdmax"].ToString(); else if (dr["stdmax"].ToString() != "" && dr["stdmin"].ToString() == "") dt.Rows[row][szEleName] = "≤ " + dr["stdmax"].ToString(); else if (dr["stdmax"].ToString() == "" && dr["stdmin"].ToString() != "") dt.Rows[row][szEleName] = "> " + dr["stdmin"].ToString(); } catch { } } /// /// 与标准值进行比对 /// /// 工艺标准表 /// 被填充数据源的表 /// 比对的编码 /// 被填充数据的GRID /// 被填充的数据行 /// 岗位编码 public static void CompareStandard(DataTable dtStd, DataTable dtSource, string szCode, UltraGrid uGrd, int iRow) { if (dtStd != null && dtStd.Rows.Count > 0) { DataRow[] dr = null; Decimal dZXZ = 0, dZDZ = 0, dVal = 0; try { dr = dtStd.Select(" ITEM1 = '" + szCode + "'"); if (dr.Length > 0) { if (dr[0]["ITEM1MAX"].ToString() != "" && dr[0]["ITEM1MIN"].ToString() != "") dtSource.Rows[iRow]["设定范围"] = dr[0]["ITEM1MIN"].ToString() + "-" + dr[0]["ITEM1MAX"].ToString(); else if (dr[0]["ITEM1MAX"].ToString() != "" && dr[0]["ITEM1MIN"].ToString() == "") dtSource.Rows[iRow]["设定范围"] = "≤ " + dr[0]["ITEM1MAX"].ToString(); else if (dr[0]["ITEM1MAX"].ToString() == "" && dr[0]["ITEM1MIN"].ToString() != "") dtSource.Rows[iRow]["设定范围"] = "> " + dr[0]["ITEM1MIN"].ToString(); if (!string.IsNullOrEmpty(dr[0]["ITEM1MIN"].ToString())) dZXZ = Convert.ToDecimal(dr[0]["ITEM1MIN"]); if (!string.IsNullOrEmpty(dr[0]["ITEM1MAX"].ToString())) dZDZ = Convert.ToDecimal(dr[0]["ITEM1MAX"]); //获取当前实际值 if (!string.IsNullOrEmpty(uGrd.DisplayLayout.Rows[iRow].Cells["实际值"].Value.ToString())) dVal = Convert.ToDecimal(uGrd.DisplayLayout.Rows[iRow].Cells["实际值"].Value); if ((dVal > 0) && (dVal < dZXZ)) uGrd.DisplayLayout.Rows[iRow].Cells["实际值"].Appearance.ForeColor = Color.Red; // 下限报警红色显示 else if ((dVal > 0) && (dVal > dZDZ) && dZDZ > 0) uGrd.DisplayLayout.Rows[iRow].Cells["实际值"].Appearance.ForeColor = Color.Red; // 上限报警蓝色显示 else uGrd.DisplayLayout.Rows[iRow].Cells["实际值"].Appearance.ForeColor = Color.Black; } } catch { } uGrd.Refresh(); } } /// /// 比较标准 /// /// 标准 /// 实际 /// 0正确 -1错误 public static int CompareSatandard(string strStandard, string strValue) { strStandard = strStandard.Trim(); strValue = strValue.Trim(); if (strValue.Length == 0 || strStandard.Length == 0) return 0; string strMin = "", strMax = ""; try { if (strStandard.IndexOf("~") > 0) { strMin = strStandard.Substring(0, strStandard.IndexOf("~")).Trim(); strMax = strStandard.Substring(strStandard.IndexOf("~") + 1).Trim(); if (decimal.Parse(strValue) >= decimal.Parse(strMin) && decimal.Parse(strValue) <= decimal.Parse(strMax)) { return 0; } else { return -1; } } else if (strStandard.IndexOf("<=") >= 0) { strMin = ""; strMax = strStandard.Substring(strStandard.IndexOf("<=") + 2).Trim(); if (decimal.Parse(strValue) <= decimal.Parse(strMax)) { return 0; } else { return -1; } } else if (strStandard.IndexOf(">=") >= 0) { strMin = strStandard.Substring(0, strStandard.IndexOf(">=")).Trim(); strMax = ""; if (decimal.Parse(strValue) >= decimal.Parse(strMin)) { return 0; } else { return -1; } } else if (strStandard.IndexOf("<") >= 0 && strStandard.IndexOf("=") == -1) { strMin = ""; strMax = strStandard.Substring(strStandard.IndexOf("<") + 1).Trim(); if (decimal.Parse(strValue) < decimal.Parse(strMax)) { return 0; } else { return -1; } } else if (strStandard.IndexOf(">") >= 0 && strStandard.IndexOf("=") == -1) { strMin = strStandard.Substring(0, strStandard.IndexOf(">")).Trim(); strMax = ""; if (decimal.Parse(strValue) > decimal.Parse(strMin)) { return 0; } else { return -1; } } else if (strStandard.IndexOf("=") >= 0) { strMin = ""; strMax = strStandard.Substring(strStandard.IndexOf("=") + 1).Trim(); if (decimal.Parse(strValue) == decimal.Parse(strMax)) { return 0; } else { return -1; } } } catch { } return 0; } #endregion #region 温度处理 /// /// 设置温度实时值 /// /// public static void SetGridTemperature(DataTable tbl, string strItem, string strRange, string strValue, string strTime, int iRow) { try { if (tbl != null && tbl.Rows.Count >= iRow + 1) { tbl.Rows[iRow]["项目名"] = strItem; tbl.Rows[iRow]["设定范围"] = strRange; tbl.Rows[iRow]["实际值"] = strValue; tbl.Rows[iRow]["采样时间"] = strTime; } } catch (Exception ex) { Debug.Print(ex.Message); } } #endregion #region 作业界面数据手工修改 //跟据岗位获取数据库表名 public static string GetTableName(string _posCode, TableSort _tblSort) { string JobTableName = ""; //作业表名 string AddTableName = ""; //物料消耗 switch (_posCode) { case "B": JobTableName = "STL_HMP_OPTINFO"; AddTableName = "STL_HMP_ADDITIVES"; break; case "C": JobTableName = "STL_BOF_OPTINFO"; AddTableName = "STL_BOF_ADDITIVES"; break; case "D": JobTableName = "STL_CAS_OPTINFO"; AddTableName = "STL_CAS_ADDITIVES"; break; case "E": JobTableName = "STL_LFS_OPTINFO"; AddTableName = "STL_LFS_ADDITIVES"; break; case "G": JobTableName = "STL_CCM_OPTINFO"; AddTableName = "STL_CCM_ADDITIVES"; break; default: break; } return (_tblSort == TableSort.Job ? JobTableName : AddTableName); } //时间显示框,在需要更改日期的时候弹出日期选择框 public static void SetCellDateTime(string _heatProcessNo, UltraGridCell _cell, OpeBase ob) { try { frmSetTime frm = new frmSetTime(_cell.Value); frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size); if (frm.ShowDialog() == DialogResult.OK) { string TableName = GetTableName(_heatProcessNo.Substring(0, 1), TableSort.Job); DateTime Value = frm.SelectDate; bool bSuccess = UpdateTableField(_heatProcessNo, TableName, _cell.Column.Key.ToString(), "DATE", Value.ToString("yyyy-MM-dd HH:mm:ss"), ob); if (bSuccess) _cell.Value = Value; } } catch (Exception ex) { Trace.WriteLine(ex.Message); } } //时间显示框,在需要更改日期的时候弹出日期选择框(脱硫) public static void SetHmpCellDateTime(string _heatProcessNo, UltraGridCell _cell, OpeBase ob) { try { frmSetTime frm = new frmSetTime(_cell.Value); frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size); if (frm.ShowDialog() == DialogResult.OK) { string TableName = GetTableName(_heatProcessNo.Substring(0, 1), TableSort.Job); DateTime Value = frm.SelectDate; bool bSuccess = UpdateHmpTableField(_heatProcessNo, TableName, _cell.Column.Key.ToString(), "DATE", Value.ToString("yyyy-MM-dd HH:mm:ss"), ob); if (bSuccess) _cell.Value = Value; } } catch (Exception ex) { Trace.WriteLine(ex.Message); } } public static void UpdateTableField(string _heatProcessNo, UltraGridCell _cell, string _value, OpeBase ob) { if (_cell == null) return; try { string strTableName = GetTableName(ClsBusinessPack.getPostLetter(_heatProcessNo), TableSort.Job); string strColumnName = _cell.Column.Key.ToUpper(); if (UpdateTableField(_heatProcessNo, strTableName, strColumnName, "VARCHAR2", _value, ob)) _cell.Activated = false; } catch (Exception ex) { Trace.WriteLine(ex.Message); } } public static void UpdateTableField_DTT(string _heatProcessNo, UltraGridCell _cell, string _value, OpeBase ob) { if (_cell == null) return; try { string strTableName = GetTableName(ClsBusinessPack.getPostLetter(_heatProcessNo), TableSort.Job); string strColumnName = _cell.Column.Key.ToUpper(); if (UpdateTableField(_heatProcessNo, strTableName, strColumnName, "DATE", _value, ob)) _cell.Activated = false; } catch (Exception ex) { Trace.WriteLine(ex.Message); } } public static void UpdateTableField_NUM(string _heatProcessNo, UltraGridCell _cell, string _value, OpeBase ob) { if (_cell == null) return; try { string strTableName = GetTableName(ClsBusinessPack.getPostLetter(_heatProcessNo), TableSort.Job); string strColumnName = _cell.Column.Key.ToUpper(); if (UpdateTableField(_heatProcessNo, strTableName, strColumnName, "NUMBER", _value, ob)) _cell.Activated = false; } catch (Exception ex) { Trace.WriteLine(ex.Message); } } public static void UpdateTableField_NUM(string _heatProcessNo, UltraGridCell _cell, OpeBase ob) { if (_cell == null) return; try { frmInputDecimal frm = new frmInputDecimal(Convert.ToString(_cell.Value)); frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size); if (frm.ShowDialog() == DialogResult.OK) { if (!frm.ValueChanged) return; UpdateTableField(_heatProcessNo, _cell, frm.Value, ob); } } catch (Exception ex) { Trace.WriteLine(ex.Message); } } /// /// 更新脱硫作业表字段信息 /// /// 加热处理号 /// 表名 /// 更新字段 /// 数据类型 /// 目标值 /// 服务端URL public static bool UpdateHmpTableField(string _heatProcessNo, string strTableName, string strColumnName, string strDataType, object Upt_Value, OpeBase ob) { string strSqlID = ""; //sqlId string strErr = ""; //错误信息 bool bSuccess = false; try { if (_heatProcessNo.Length == 0) return true; strSqlID = "UpdateHMPTableField.Update"; //SQLID Hashtable Args = new Hashtable(); Args.Add("I1", strTableName); //表名 Args.Add("I2", _heatProcessNo); //加热处理号 Args.Add("I3", strColumnName.ToUpper()); //列名 Args.Add("I4", strDataType); //数据类型 Args.Add("I5", Upt_Value.ToString()); //更新值 string strMsg = ""; bSuccess = ClsDataAccessPack.DoProcedure(strSqlID, Args, out strMsg, ob); if (!bSuccess) MessageBox.Show("数据更新失败!\n" + strMsg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } catch (Exception ex) { if (!bSuccess) MessageBox.Show("数据更新出错!\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } return bSuccess; } //更新作业表字段信息 public static bool UpdateTableField(string _heatProcessNo, string _tableName, string _columnName, string _dataType, string _value, OpeBase ob) { bool bSuccess = false; try { if (_heatProcessNo.Length == 0) return true; string strHeatNo = ClsBusinessPack.getSmeltingID(_heatProcessNo); string strStationCode = ClsBusinessPack.getStationCode(_heatProcessNo); string strDealTime = ClsBusinessPack.getDealTime(_heatProcessNo); string strSqlID = "UpdateTableField.Update"; Hashtable Args = new Hashtable(); Args.Add("I1", _tableName); //表名 Args.Add("I2", strHeatNo); //炉号 Args.Add("I3", strStationCode); //岗位 Args.Add("I4", strDealTime); //处理次数 Args.Add("I5", _columnName.ToUpper()); //列名 Args.Add("I6", _dataType.ToUpper()); //数据类型 Args.Add("I7", _value); //更新值 string strMsg = ""; bSuccess = ClsDataAccessPack.DoProcedure(strSqlID, Args, out strMsg, ob); if (!bSuccess) MessageBox.Show("数据更新失败!\n" + strMsg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } catch (Exception ex) { if (!bSuccess) MessageBox.Show("数据更新出错!\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } return bSuccess; } #endregion #region 物料消耗 public static DataSet GetHopperConfig(string DEVICE_POSITION, out bool bSuccess, out string strMsg, OpeBase ob) { strMsg = ""; bSuccess = false; string strSql = ""; //strSql += Convert.ToString("select a.MSNUMID,").Trim() + " "; //strSql += Convert.ToString(" a.MSLOCATION,").Trim() + " "; //strSql += Convert.ToString(" a.MATERIELTYPE,").Trim() + " "; //strSql += Convert.ToString(" a.MATERIELCODE,").Trim() + " "; //strSql += Convert.ToString(" a.MATERIELUNITS,").Trim() + " "; //strSql += Convert.ToString(" a.JMTYPE,").Trim() + " "; //strSql += Convert.ToString(" b.MATERIELFORSHORT").Trim() + " "; //strSql += Convert.ToString(" from STL_MATERIALCONFG a, COM_MATERIEL b").Trim() + " "; //strSql += Convert.ToString(" where a.MATERIELCODE = b.MATERIELCODE(+)").Trim() + " "; //strSql += Convert.ToString(" and a.MATERIELTYPE = b.MATERIELTYPE(+)").Trim() + " "; //strSql += Convert.ToString(" and a.MSLOCATION = '" + DEVICE_POSITION + "'").Trim() + " "; //strSql += Convert.ToString(" and (a.MATERIELTYPE = 'FL' or a.MATERIELTYPE = 'HJ' or").Trim() + " "; //strSql += Convert.ToString(" a.MATERIELTYPE = 'WS')").Trim() + " "; //strSql += Convert.ToString(" order by a.MATERIELTYPE, TO_NUMBER(MSNUMID)").Trim(); strSql = @" SELECT A.MSNUMID, A.MSLOCATION, A.MATERIELTYPE, A.MATERIELCODE, A.MATERIELUNITS, A.JMTYPE, B.ITEM_NAME FROM STL_MATERIALCONFG A, COST_BASE_METAL_TYPE B WHERE A.MATERIELCODE = B.ITEM_CODE(+) AND A.MSLOCATION = '{0}' ORDER BY A.MATERIELTYPE, A.MSNUMID "; strSql = string.Format(strSql, DEVICE_POSITION); return ClsDataAccessPack.GetData(strSql, out bSuccess, out strMsg, ob); } //查询作业手投料配置 public static DataSet GetManualAdditiveConfig(string DEVICE_POSITION, out bool bSuccess, out string strMsg, OpeBase ob) { strMsg = ""; bSuccess = false; string strSql = ""; strSql += Convert.ToString("SELECT CONFGITEM, USEDLOCATION, USEDEXPLAIN, CONFGCODE").Trim() + " "; strSql += Convert.ToString(" FROM STL_INTERFACECONFG").Trim() + " "; strSql += Convert.ToString(" WHERE USEDLOCATION = 'STL'").Trim() + " "; strSql += Convert.ToString(" AND CONFGITEM = '" + DEVICE_POSITION + "'").Trim(); return ClsDataAccessPack.GetData(strSql, out bSuccess, out strMsg, ob); } public static bool SaveAdditiveData(string HeatProcessNo, string HopperID, string MaterielType, string MaterielCode, string Value, HopperCategory HpprCategory, out string strMsg, OpeBase ob) { strMsg = ""; bool bSuccess = false; try { if (string.IsNullOrEmpty(HeatProcessNo)) { strMsg = "加热处理号不能为空!"; return false; } if (string.IsNullOrEmpty(Value)) { strMsg = "请输入消耗量!\n如果需要清空数据,请输入原有消耗量的负数。(如加料量为800,要清空此数值,请输入-800然后确认!)"; return false; } string TableName = ClsBusinessPack.GetTableName(HeatProcessNo.Substring(0, 1), TableSort.Feeding); //V1表名 string HeatNo = ClsBusinessPack.getSmeltingID(HeatProcessNo); //V5炉号 string FeedCategory = (HpprCategory == HopperCategory.Automatic ? "1" : "2"); //V7投料类型 string Memo = (HpprCategory == HopperCategory.Automatic ? "自动投料" : "手投料"); //V9投料说明 string StationCode = ClsBusinessPack.getStationCode(HeatProcessNo); //V10岗位编码 string DealTime = ClsBusinessPack.getDealTime(HeatProcessNo); //V11处理次数 string ProcedureID = "AddMaterialProc.INSERT"; Hashtable ht = new Hashtable(); ht.Add("I1", TableName); //表名 ht.Add("I2", HeatProcessNo); //加热处理号 ht.Add("I3", MaterielCode); //物料编码 ht.Add("I4", MaterielType); //物料类型 ht.Add("I5", HeatNo); //炉号 ht.Add("I6", Value); //物料消耗 ht.Add("I7", FeedCategory); //投料类型 ht.Add("I8", HopperID); //料仓编号 ht.Add("I9", Memo); //用途编码 ht.Add("I10", StationCode); //岗位 ht.Add("I11", DealTime); //处理次数 bSuccess = ClsDataAccessPack.DoProcedure(ProcedureID, ht, out strMsg, ob); } catch (Exception ex) { if (!bSuccess) { if (string.IsNullOrEmpty(strMsg)) strMsg = ex.Message; } } return bSuccess; } public static bool SaveManulAdditiveConfig(string DEVICE_POSITION, string strOriginal, string strMaterielCode, string strPurposeCode, out string strMsg, OpeBase ob) { strMsg = ""; bool bSuccess = false; try { string strOutValue = ""; string ProcedureID = "SwapHatHopper.Procedure"; //ProcedureID Hashtable Args = new Hashtable(); Args.Add("I1", DEVICE_POSITION); //岗位 Args.Add("I2", "STL"); //投料类型 Args.Add("I3", strMaterielCode); //物料编码 Args.Add("I4", strOriginal); //原始物料编码 Args.Add("I5", strPurposeCode); //用途编码 Args.Add("O1", strOutValue); //输出 bSuccess = ClsDataAccessPack.DoProcedure(ProcedureID, Args, out strMsg, ob); } catch (Exception ex) { if (!bSuccess) { if (string.IsNullOrEmpty(strMsg)) strMsg = ex.Message; } } return bSuccess; } #endregion public static ValueList GetValuelistBOF() { ValueList vlist = new ValueList(); vlist.ValueListItems.Add("1", GetDeviceChineseName("C1")); vlist.ValueListItems.Add("2", GetDeviceChineseName("C2")); return vlist; } public static ValueList GetValuelistCCM() { ValueList vlist = new ValueList(); vlist.ValueListItems.Add("1", GetDeviceChineseName("G1")); vlist.ValueListItems.Add("2", GetDeviceChineseName("G2")); return vlist; } public static ValueList GeneralValuelist(ref Hashtable htbl) { if (htbl == null) { return null; } ArrayList alist = new ArrayList(htbl.Keys); ValueList vlist = new ValueList(); for (int i = 0; i < alist.Count; i++) { try { if (htbl.Contains(alist[i])) { vlist.ValueListItems.Add(alist[i], Convert.ToString(htbl[alist[i]])); } } catch { } } return vlist; } public static ValueList GeneralValuelist(ref DataTable table, string strKey, string strText) { if (table == null || !table.Columns.Contains(strKey) || !table.Columns.Contains(strText)) { return null; } ArrayList alist = new ArrayList(); ValueList vlist = new ValueList(); for (int i = 0; i < table.Rows.Count; i++) { try { if (!alist.Contains(table.Rows[i][strKey])) { alist.Add(table.Rows[i][strKey]); vlist.ValueListItems.Add(table.Rows[i][strKey], Convert.ToString(table.Rows[i][strText])); } } catch { } } return vlist; } public static string GetBofStatus(string StateCode) { if (StateCode.Trim().ToUpper() == "HEAT") return "炉次开始"; if (StateCode.Trim().ToUpper() == "SCRAPCHG") return "加废钢"; else if (StateCode.Trim().ToUpper() == "CHARGING") return "兑铁水"; else if (StateCode.Trim().ToUpper() == "BLOWINGBEGIN") return "吹氧开始"; else if (StateCode.Trim().ToUpper() == "BLOWINGCLOSE") return "吹氧结束"; else if (StateCode.Trim().ToUpper() == "TAPPINGBEGIN") return "出钢开始"; else if (StateCode.Trim().ToUpper() == "TAPPINGCLOSE") return "出钢结束"; else if (StateCode.Trim().ToUpper() == "SPRAYSLAGBEGIN") return "溅渣开始"; else if (StateCode.Trim().ToUpper() == "SPRAYSLAGCLOSE") return "溅渣结束"; else if (StateCode.Trim().ToUpper() == "IDLE") return "炉次结束"; else if (StateCode.Trim().ToUpper() == "DESLAGINGBEGIN") return "倒渣开始"; else if (StateCode.Trim().ToUpper() == "DESLAGINGCLOSE") return "倒渣结束"; else if (StateCode.Trim().ToUpper() == "REPAIR") return "检修状态"; else return ""; } public static void ResetTableRows(ref DataTable ATable, int newRowsCount) { int arows = Math.Abs(ATable.Rows.Count - newRowsCount); string[] sTmp = new string[ATable.Columns.Count]; if (ATable.Rows.Count < newRowsCount) { for (int i = 0; i < arows; i++) ATable.Rows.Add(sTmp); } else { for (int i = arows - 1; i >= 0; i--) ATable.Rows[i].Delete(); } } } /// /// 炼钢工序 /// public enum LG_PROCESS { HMP, EAF, BOF, CAS, LF, CCM, VD, RH } public enum TableSort { /// /// 作业表 /// Job, /// /// 加料表 /// Feeding } }