using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; using Core.LgMes.Client.lgClassModel; using System.Collections; using System.Reflection; using CoreFS.CA06; using Core.Mes.Client.Common; using Core.LgMes.Client.LgResMgt; using Core.LgMes.Client.LgIntegrationQuery; using Core.LgMes.Client.Report; namespace Core.LgMes.Client.LgJobMgt { public partial class frmCasJob : CommonClientToServer { #region " Class Member Variable" private string _heatProcessNo = ""; // 加热处理号 private string _smeltingID = ""; // 熔炼号 private string _oldSmelt = ""; // 保存上一个炉号 private string _stationCode = ""; // 岗位编号 private string _dealTime = ""; // 处理次数 private string _shiftCode = ""; // 班次编码 private DataTable _dtCraftElement = null; // 工艺化学成分信息表 private DataTable _dtTemperature = null; // 温度 private DataTable _dtSamplingOfCvt = null; // 转炉采样数据表 private DataTable _dtSamplingOfCas = null; // 吹氩采样数据表 private DataTable _dtMaterial = null; // 存储辅料信息 private DataTable _dtCraftStdVal = null; // 炼钢工艺标准值 private CommandClass _commClass; // 消息发送类 private string _DEVICE_POSITION = "CAS01"; // 设备位置 private int _DEVICE_POS = 1; // 设备号 private Thread _getDataThread; // 取数据线程 private Thread _setDataThread; // 刷新数据线程 private bool _bIfGetData = true; // 控制取数据线程循环的标志 private bool _bIfSetData = true; // 控制刷新数据线程循环的标志 private bool _bResetDataFlag = false; // 清空所有数据标志,True表示已经清空 private ArrayList _listHeatProcess = null; // 存储加热处理号的数组列表 private string _devPos = ""; // 当前设备位置的全称 private bool _bHandThrow = false; // 手投料标志 private bool _bClearFlag = false; private TrackObjectInfo _tmpObjTrack; // 实时跟踪信息类 用于存放当前实时跟踪信息 起一个中间过渡的缓冲 private TrackObjectInfo _objTrackBuffer; // 用于实时刷新实时跟踪信息的缓冲区 private CraftElement _tmpObjCraftEle; // 存放工艺化学成分信息的类 private CraftElement _objCraftEleBuffer; // 用于实时刷新工艺化学成分信息的缓冲区 private CasAdditive _procAdditive; // 存放过程添加剂信息 private CasAdditive _additiveBuffer; // 用于刷新过程添加剂信息的缓冲区 private Hashtable _htPlanInfo; // 用于作业计划信息的表字段数据 private Hashtable _htOptInfo; // 用于存储操作信息的表字段数据 private delegate void SetDataThreadDelegate(); // 刷新数据线程的一个委托方法,目的是达到界面所有数据刷新同步 #endregion #region " Construct Function " public frmCasJob() { InitializeComponent(); // 初始化成员变量 _commClass = new CommandClass(); _tmpObjTrack = new TrackObjectInfo(); _objTrackBuffer = new TrackObjectInfo(); _tmpObjCraftEle = new CraftElement(); _objCraftEleBuffer = new CraftElement(); _procAdditive = new CasAdditive(); _additiveBuffer = new CasAdditive(); _htOptInfo = new Hashtable(); _htPlanInfo = new Hashtable(); ucCasDevInfo1.m_imageDefault = imageList1.Images[4]; } #endregion #region " Init Form Element " private void frmCasJob_Load(object sender, EventArgs e) { ucCasPlanTime1.ob = this.ob; ucChemelEment1.ob = this.ob; InitDataSourse(); GenerateTableFrame(); GetDevicePosition(); SetUserControlDelegate(); GetMaterialData(); StartUpThread(); SetHopperInfo(); } private void InitDataSourse() { this.ultraDataSource1.Rows.Add(new object[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }); this.ultraDataSource2.Rows.Add(new object[] { "", "", "", "" }); this.ultraDataSource3.Rows.Add(new object[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }); } /// /// 生成化学成分的表架构 /// private void GenerateTableFrame() { _dtTemperature = new DataTable("temperature"); _dtTemperature.Columns.Add(new DataColumn("项目名", typeof(String))); _dtTemperature.Columns.Add(new DataColumn("实际值", typeof(String))); _dtTemperature.Columns.Add(new DataColumn("id", typeof(String))); _dtTemperature.Columns.Add(new DataColumn("采样时间", typeof(String))); _dtTemperature.Columns.Add(new DataColumn("设定范围", typeof(String))); this.ulgridTempInfo.DataSource = this._dtTemperature; this.ulgridTempInfo.DisplayLayout.Bands[0].Columns[0].Width = 70; this.ulgridTempInfo.DisplayLayout.Bands[0].Columns[0].CellActivation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; this.ulgridTempInfo.DisplayLayout.Bands[0].Columns[1].Width = 58; this.ulgridTempInfo.DisplayLayout.Bands[0].Columns[1].CellActivation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; this.ulgridTempInfo.DisplayLayout.Bands[0].Columns[2].Hidden = true; this.ulgridTempInfo.DisplayLayout.Bands[0].Columns[3].Width = 120; this.ulgridTempInfo.DisplayLayout.Bands[0].Columns[3].CellActivation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; this.ulgridTempInfo.DisplayLayout.Bands[0].Columns[4].Width = 75; this.ulgridTempInfo.DisplayLayout.Bands[0].Columns[4].CellActivation = Infragistics.Win.UltraWinGrid.Activation.NoEdit; _dtTemperature.Rows.Add(new object[] { "一倒" }); _dtTemperature.Rows.Add(new object[] { "出钢(终点)" }); _dtTemperature.Rows.Add(new object[] { "吹氩氩前" }); _dtTemperature.Rows.Add(new object[] { "吹氩在站" }); _dtTemperature.Rows.Add(new object[] { "吹氩氩后" }); } /// /// 获取物料信息 /// private void GetMaterialData() { try { string strErr = ""; string strSqlID = ""; strSqlID = "GetMaterialData.Select";//此ID为XML文件ID //查询物料配置信息 DataSet ds = this.ExecuteQueryFunctions("Core.LgMes.Server.LgJobMgt.ClassBofJob", "GetMaterialData", strSqlID, out strErr); if (strErr == "" && ds != null) { _dtMaterial = ds.Tables[0]; } } catch { } } #endregion #region " Thread Handle " /// /// 启动线程主程序 /// private void StartUpThread() { ThreadStart ts = new ThreadStart(GetDataThread); _getDataThread = new Thread(ts); _getDataThread.Name = "GetDataThread " + _DEVICE_POSITION; _getDataThread.Start(); System.Threading.Thread.Sleep(1000); ThreadStart ts1 = new ThreadStart(SetDataThread); _setDataThread = new Thread(ts1); _setDataThread.Name = "SetDataThread " + _DEVICE_POSITION; _setDataThread.Start(); } /// /// 取数据线程程序 /// private void GetDataThread() { while (_bIfGetData) { if (!this.On_Off_Thread) { System.Threading.Thread.Sleep(500); continue; } try { GetDataFromServer(); Thread.Sleep(2000); } catch { } } } /// /// 刷新数据线程程序 /// private void SetDataThread() { while (_bIfSetData) { if (!this.On_Off_Thread) { System.Threading.Thread.Sleep(500); continue; } try { this.Invoke(new SetDataThreadDelegate(SetDataOperate)); Thread.Sleep(1000); } catch { } } } private void GetDataFromServer() { GetTrackInfoData(); GetHeatProcessList(); JudgeHeatProcess(); GetPlanInfo(); GetOptInfo(); GetDevPosInfo(); //GetCraftEleInfo(); ucChemelEment1.GetCraftEleInfo(_smeltingID, "D0" + _DEVICE_POS, "S",""); if (_htPlanInfo["V_HEAT_ID"] != null) ucChemelEment1.GetStandardElement(_smeltingID); //GetSampleData(); GetSamplingOfPost(); JudgeSmeltID(); GetAdditiveData(); ucCasPlanTime1.GetPlanAndFactTime(_smeltingID); if (_htPlanInfo != null) _dtCraftStdVal = CStaticMethod.GetJobStandardTemp(this.ob, _htPlanInfo["STEEL"].ToString()); } private void SetDataOperate() { lock (this) { if (_heatProcessNo == "") { ResetAllData(); return; } _bResetDataFlag = false; FillUserControlData(); //FillCraftElement(); FillTemperatureData(); SetAdditiveData(); HdctMaterialBind(); } } #endregion #region " Delegate " private void ucCasDevInfo1_ClickCellButton(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (e.Cell.Value.ToString().Equals(string.Empty) || _listHeatProcess == null) return; switch (e.Cell.Column.Key) { case "HCW": { ClassManualOperate.ManualOperateEntrance(_heatProcessNo, _devPos, this.ob, _objTrackBuffer); break; } case "DDW": { ClassManualOperate.ManualOperateEntrance(_heatProcessNo, _devPos, this.ob, _objTrackBuffer); break; } case "CLW": { ClassManualOperate.ManualOperateEntrance(_heatProcessNo, _devPos, this.ob, _objTrackBuffer); break; } default: break; } } private void ucCasDevInfo1_CellListSelect(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (_heatProcessNo.Length < 11) return; string keyStr = ucCasDevInfo1.ultraGrid1.ActiveCell.Column.Key; this.ucCasDevInfo1.ultraGrid1.UpdateData(); string valueStr = ucCasDevInfo1.ultraGrid1.ActiveCell.Value.ToString(); if (keyStr == "DESLAGGFLAG") //是否顶渣 { try { //更新数据 ClassManualUpdateInfo.UpdateTableField(_heatProcessNo, "STL_CAS_OPTINFO", keyStr, "VARCHAR2", valueStr, ob); ucCasDevInfo1.ultraGrid1.ActiveCell.Value = valueStr; } catch (Exception ex) { string Msg = ex.Message; MessageBox.Show("数据格式错误,请改正!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } private void ucCasDevInfo1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter || _heatProcessNo.Length < 11) return; if (MessageBox.Show("是否确认要修改当前值?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.No) return; this.ucCasDevInfo1.ultraGrid1.UpdateData(); string keyStr = ucCasDevInfo1.ultraGrid1.ActiveCell.Column.Key; string valueStr; if (keyStr == "SETSTAYTIME") { try { if (ucCasDevInfo1.ultraGrid1.ActiveCell.Value.ToString() != "") { valueStr = ucCasDevInfo1.ultraGrid1.ActiveCell.Value.ToString(); //作业数据 ClassManualUpdateInfo.UpdateTableField(_heatProcessNo, "STL_CAS_OPTINFO", keyStr, "VARCHAR2", valueStr, ob); } else { MessageBox.Show("不能为空值,重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return; } ucCasDevInfo1.ultraGrid1.ActiveCell.Value = valueStr; } catch (Exception ex) { string Msg = ex.Message; MessageBox.Show("修改错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } private void ucBofPlan1_ClickCellButton(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { switch (e.Cell.Column.Key) { case "HEATNO": // 熔炼号 SmeltClickCellButton(e.Cell.Value.ToString(), e.Cell); break; case "SHIFTCODE": // 班次 break; default: break; } } /// /// 熔炼号点击事件 /// /// /// private void SmeltClickCellButton(string szRLH, Infragistics.Win.UltraWinGrid.UltraGridCell cell) { frmJobPlanInfo frmPlan = new frmJobPlanInfo(_DEVICE_POS.ToString() + "#吹氩", _DEVICE_POSITION); frmPlan.Location = CStaticMethod.GetChildWindowLocation(frmPlan.Size); frmPlan.ShowDialog(); if (frmPlan._currSmeltingID != string.Empty && cell.Text == string.Empty) { cell.Value = frmPlan._currSmeltingID; // this._commClass.setHeatID(_heatProcessNo); // this._commClass.setChargingCommand("MOLSTL", _DEVICE_POSITION + "_DEVICE", frmPlan._currSmeltingID); } else if (frmPlan._currSmeltingID != string.Empty && cell.Text != string.Empty) MessageBox.Show("本岗位有炉号信息,暂时不能加载!", "提示"); } /// /// 等待位点击事件 /// /// /// /// /// private void DdwCellButton(string strPos, int initNo, string strCurrPos) { frmCasOperate frm = new frmCasOperate(); frm.Location = CStaticMethod.GetChildWindowLocation(frm.Size); frm.InitNo = initNo; frm._devPos = strPos; if (_htPlanInfo["CAST_ID"] != null) frm.CAST_ID =Convert.ToInt16(_htPlanInfo["CAST_ID"].ToString()); frm.ShowDialog(); if (frm.Tag == null) return; string str = "", strMsg = ""; string strSme = _smeltingID; string strInOrOut = "LEAVETIME"; bool blIDLE = false; switch (frm.Tag.ToString()) { case "IN": RealDataTrackObjectInfor objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[_DEVICE_POSITION + "_DEVICE"]; RealDataTrackObjectInfor objTrackFrt = (RealDataTrackObjectInfor)_objTrackBuffer.hList[_DEVICE_POSITION + "_FRONT"]; if (!string.IsNullOrEmpty(objTrack.OBJECTID) && string.IsNullOrEmpty(objTrackFrt.OBJECTID)) { blIDLE = true; str = _DEVICE_POSITION + "_FRONT"; strMsg = "熔炼号: " + strSme + " 正常从 " + strCurrPos + " 进站去 等待位 \n 是否确认?"; } else if (string.IsNullOrEmpty(objTrack.OBJECTID)) { str = _DEVICE_POSITION + "_DEVICE"; strMsg = "熔炼号: " + strSme + " 正常从 " + strCurrPos + " 进站去 处理位 \n 是否确认?"; } strInOrOut = ""; break; case "OUT": string strOut = ""; //hengxing //CallingMessage par = new CallingMessage(); //par.ServerName = "lgJobMgt"; //par.AssemblyName = "Core.LgMes.Server.lgJobMgt"; //par.ClassName = "Core.LgMes.Server.lgJobMgt.classTrackObjectInfo"; //par.MethodName = "GetNextPos"; //par.args = new object[] { _heatProcessNo }; object obj = null;// ClientCommon._RemotingHelp.ExecuteMethod(par, out strOut); if (obj == null) MessageBox.Show(strOut); else { str = obj.ToString(); strMsg = "熔炼号: " + strSme + " 正常从 " + strCurrPos + " 出站去 " + GetNextProcName(str) + " \n 是否确认?"; strInOrOut = "LEAVETIME"; } break; case "GONEXT": strOut = ""; //hengxing //CallingMessage parr = new CallingMessage(); //parr.ServerName = "lgJobMgt"; //parr.AssemblyName = "Core.LgMes.Server.lgJobMgt"; //parr.ClassName = "Core.LgMes.Server.lgJobMgt.classTrackObjectInfo"; //parr.MethodName = "GetNextPos"; //parr.args = new object[] { _heatProcessNo }; object obj1 = null;// ClientCommon._RemotingHelp.ExecuteMethod(parr, out strOut); if (obj1 == null) MessageBox.Show(strOut); else { str = obj1.ToString(); strMsg = "熔炼号: " + strSme + " 正常从 " + strCurrPos + " 去 下道工序(" + GetNextProcName(str) + ") \n 是否确认?"; strInOrOut = "LEAVETIME"; } break; case "GOLFS1": str = "LFS01_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 1#精炼炉缓冲位 \n 是否确认?"; break; case "GOLFS2": str = "LFS02_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 2#精炼炉缓冲位 \n 是否确认?"; break; case "GOCAS1": str = "CAS01_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 1#吹氩站缓冲位 \n 是否确认?"; strInOrOut = ""; break; case "GOCAS2": str = "CAS02_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 2#吹氩站缓冲位 \n 是否确认?"; strInOrOut = ""; break; case "GOCAS3": str = "CAS03_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 3#吹氩站缓冲位 \n 是否确认?"; strInOrOut = ""; break; case "GOCCM1": str = "CCM01_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 1#连铸机缓冲位 \n 是否确认?"; break; case "GOCCM2": str = "CCM02_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 2#连铸机缓冲位 \n 是否确认?"; break; case "GOCCM3": str = "CCM03_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 3#连铸机缓冲位 \n 是否确认?"; break; case "GOCCM4": str = "CCM04_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 0#连铸机缓冲位 \n 是否确认?"; break; case "GORHS1": str = "RHS01_IDLE"; strMsg = "熔炼号: " + strSme + " 异常从 " + strCurrPos + " 去 1#RH炉缓冲位 \n 是否确认?"; break; case "OVER": str = _DEVICE_POSITION+"_OVER"; strMsg = "熔炼号: " + strSme + " 任务强制结束"; break; } if (str != "") { if (MessageBox.Show(strMsg, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { //处理处理有炉号,IDLE位加载到等待位的情况 if (blIDLE == true) { RealDataTrackObjectInfor objTrackIDLE = (RealDataTrackObjectInfor)_objTrackBuffer.hList[_DEVICE_POSITION + "_IDLE"]; _commClass.setHeatID(objTrackIDLE.OBJECTID); } else _commClass.setHeatID(_heatProcessNo); _commClass.goNextPosCvtCmmd(strPos, str); if (strInOrOut != "") { RealDataCommand realDataCommand = new RealDataCommand(); realDataCommand.COMMANDTYPE = "SCHEDULE_SET"; realDataCommand.OBJECTTYPE = "PROCVALUE"; realDataCommand.OBJECTPOS = _devPos; realDataCommand.OBJECTID = _heatProcessNo; realDataCommand.OBJECTLINKTABLE = "JOB_CAS_OPTINFO"; realDataCommand.OBJECTLINKKEY1 = _smeltingID; realDataCommand.OBJECTLINKKEY2 = strInOrOut; realDataCommand.VALUETYPE = "DATE"; realDataCommand.STR_VALUE = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string szOut = ""; //hengxing //CallingMessage par = new CallingMessage(); //par.ServerName = "lgJobMgt"; //par.AssemblyName = "Core.LgMes.Server.lgJobMgt"; //par.ClassName = "Core.LgMes.Server.lgJobMgt.classSendCommand"; //par.MethodName = "ExceptionalUpdateTableField"; //par.args = new object[] { realDataCommand }; //ClientCommon._RemotingHelp.ExecuteMethod(par, out szOut); if (szOut != "") MessageBox.Show("命令发送不成功!"); } } } } private void ucCasTimeInfo1_ClickCellButton(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { ClassManualUpdateInfo.SetCellDateTime(e.Cell, _heatProcessNo, this.ob); //弹出时间更新窗体更新时间 } private void ucCasTimeInfo1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyCode != Keys.Enter || _heatProcessNo.Length < 11) return; this.ucCasTimeInfo1.ultraGrid1.UpdateData(); string keyStr = ucCasTimeInfo1.ultraGrid1.ActiveCell.Column.Key; DateTime valueStr; string UptValue = ""; if (keyStr == "ARRIVETIME" || keyStr == "LEAVETIME" || keyStr == "BLOWARSTARTTIME" || keyStr == "BLOWARENDTIME" || keyStr == "CASSTARTTIME" || keyStr == "CASENDTIME" || keyStr == "FEEDSILKBEGINTIME" || keyStr =="FEEDSILKCLOSETIME") { try { if (ucCasTimeInfo1.ultraGrid1.ActiveCell.Value.ToString() != "") UptValue = ((DateTime)ucCasTimeInfo1.ultraGrid1.ActiveCell.Value).ToString("yyyy-MM-dd HH:mm"); else UptValue = ""; //更新时间 ClassManualUpdateInfo.UpdateTableField(_heatProcessNo, "STL_CAS_OPTINFO", keyStr, "DATE", UptValue, ob); ucCasTimeInfo1.ultraGrid1.ActiveCell.Value = UptValue; } catch (Exception ex) { string Msg = ex.Message; MessageBox.Show("日期输入格式错误,请改正!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } /// /// 将下道工序编码转换为中文名称 /// /// /// private string GetNextProcName(string str) { if (str.Length < 5) return ""; switch (str.Substring(0, 5)) { case "CAS01": return "1#吹氩站"; case "CAS02": return "2#吹氩站"; case "CAS03": return "3#吹氩站"; case "LFS01": return "1#精炼炉"; case "LFS02": return "2#精炼炉"; case "LFS03": return "3#精炼炉"; case "CCM01": return "1#连铸机"; case "CCM02": return "2#连铸机"; case "CCM03": return "3#连铸机"; case "CCM04": return "0#连铸机"; default: return ""; } } #endregion #region " Commonly Function " /// /// 获取当前设备的后台实时跟踪信息 /// private void GetTrackInfoData() { string strErr = ""; ArrayList arry = new ArrayList(); arry.Add("ReceiveTrackObjectData.Select");//此ID为XML文件ID arry.Add(_DEVICE_POSITION); //获取指定岗位后台实时跟踪信息 DataSet ds = this.ExecuteQueryFunctions("Core.LgMes.Server.LgJobMgt.ClassTrackObjectInfo", "ReceiveTrackObjectData", arry, out strErr); if (strErr == "" && ds != null) { DataSetToTrackObject(ref ds, ref _tmpObjTrack); } } /// /// 获得加热处理号 /// private void GetHeatProcessList() { try { _listHeatProcess = new ArrayList(); string Key = _DEVICE_POSITION + "_IDLE"; string szIdle = "", szFront = "", szDevice = ""; RealDataTrackObjectInfor objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; szIdle = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID + objTrack.DEVICESTATES : ""; Key = _DEVICE_POSITION + "_FRONT"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; szFront = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID + objTrack.DEVICESTATES : ""; Key = _DEVICE_POSITION + "_DEVICE"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID + objTrack.DEVICESTATES : ""; _listHeatProcess.Add(szIdle); //Idle (缓冲位) _listHeatProcess.Add(szFront); //Front (等待位) _listHeatProcess.Add(szDevice); //device (处理位) } catch (Exception ex) { string msg = ex.Message; _listHeatProcess = null; } } /// /// 对获取到的加热处理号进行判断 /// private void JudgeHeatProcess() { try { if (_listHeatProcess.Count < 3) return; _heatProcessNo = ""; _devPos = ""; if (_listHeatProcess[0].ToString().Length > (int)OBJLEN.nHeatProcessNo) { string strHeat = _listHeatProcess[0].ToString(); _heatProcessNo = strHeat.Substring(0, (int)OBJLEN.nHeatProcessNo); _devPos = GetDevIdleCodeOfCas(_DEVICE_POS); } if (_listHeatProcess[1].ToString().Length > (int)OBJLEN.nHeatProcessNo) { string strHeat = _listHeatProcess[1].ToString(); _heatProcessNo = strHeat.Substring(0, (int)OBJLEN.nHeatProcessNo); _devPos = GetDevFrontCodeOfCas(_DEVICE_POS); } if (_listHeatProcess[2].ToString().Length > (int)OBJLEN.nHeatProcessNo) { string strHeat = _listHeatProcess[2].ToString(); _heatProcessNo = strHeat.Substring(0, (int)OBJLEN.nHeatProcessNo); _devPos = GetDevDeviceCodeOfCas(_DEVICE_POS); } _smeltingID = (_heatProcessNo.Length > (int)OBJLEN.nHeatNo) ? CStaticMethod.getSmeltingID(_heatProcessNo) : ""; _stationCode = (_heatProcessNo.Length > (int)OBJLEN.nHeatNo) ? _heatProcessNo.Substring(1, (int)OBJLEN.nDevCode) : ""; _dealTime = (_heatProcessNo.Length > (int)OBJLEN.nHeatNo) ? _heatProcessNo.Substring(3, (int)OBJLEN.nDealTime) : ""; } catch { return; } } /// /// 熔炼号判断 /// private void JudgeSmeltID() { if (!this._oldSmelt.Equals(this._smeltingID)) this._oldSmelt = this._smeltingID; } /// /// 获取转炉计划信息 /// private void GetPlanInfo() { string szOut = "", szWhere = ""; if (_smeltingID == "") return; try { #region " 炉次计划信息&钢包包号信息 " string strErr = ""; ArrayList arry = new ArrayList(); arry.Add("ReceivePlanInfo.Select");//此ID为XML文件ID arry.Add(_smeltingID); //获取指定炉号的作业计划信息 DataSet ds = this.ExecuteQueryFunctions("Core.LgMes.Server.LgJobMgt.ClassCommonModule", "ReceivePlanInfo", arry, out strErr); if (strErr == "" && ds != null) { DataTable tb = ds.Tables[0]; if (tb.Rows.Count > 0) { for (int i = 0; i < tb.Columns.Count; i++) { if (_htPlanInfo.Contains(tb.Columns[i].ColumnName)) _htPlanInfo.Remove(tb.Columns[i].ColumnName); _htPlanInfo.Add(tb.Columns[i].ColumnName, tb.Rows[0][i].ToString()); } } } //获取当前班次 _shiftCode = CStaticMethod.GetCurrentClass(this.ob); if (_htPlanInfo.Contains("SHIFTCODE")) _htPlanInfo.Remove("SHIFTCODE"); _htPlanInfo.Add("SHIFTCODE", _shiftCode); #endregion } catch { } } /// /// 获取吹氩操作数据 /// private void GetOptInfo() { if (_heatProcessNo == "") return; #region " 取吹氩操作数据 " try { string strErr = ""; ArrayList arry = new ArrayList(); arry.Add("GetCasOptInfo.Select");//此ID为XML文件ID arry.Add(_smeltingID); arry.Add(_stationCode); arry.Add(_dealTime); //查询吹氩作业信息 DataSet ds = this.ExecuteQueryFunctions("Core.LgMes.Server.LgJobMgt.ClassBofJob", "GetBofOptInfo", arry, out strErr); if (strErr == "" && ds != null) { DataTable tb = ds.Tables[0]; if (tb.Rows.Count > 0) { for (int i = 0; i < tb.Columns.Count; i++) { if (_htOptInfo.Contains(tb.Columns[i].ColumnName)) _htOptInfo.Remove(tb.Columns[i].ColumnName); _htOptInfo.Add(tb.Columns[i].ColumnName, tb.Rows[0][i].ToString()); } } else _htOptInfo.Clear(); } } catch { } #endregion } /// /// 获取设备位置信息 /// private void GetDevPosInfo() { try { string strState = ""; if (_listHeatProcess[2].ToString().Length > (int)OBJLEN.nHeatProcessNo) { strState = "BLOWING"; } else if (_listHeatProcess[1].ToString().Length > (int)OBJLEN.nHeatProcessNo || _listHeatProcess[0].ToString().Length > (int)OBJLEN.nHeatProcessNo) strState = "IDLE"; if (_htOptInfo.Contains("TP")) _htOptInfo.Remove("TP"); _htOptInfo.Add("TP", SetPic(strState)); // 图片 if (_listHeatProcess.Count >= 3) { string szID = _listHeatProcess[2].ToString(); szID = (szID.Length > 8) ? CStaticMethod.getSmeltingID(szID.Substring(0, (int)OBJLEN.nHeatProcessNo)) : ""; if (_htOptInfo.Contains("CLW")) _htOptInfo.Remove("CLW"); _htOptInfo.Add("CLW", szID); // 处理位 szID = _listHeatProcess[1].ToString(); szID = (szID.Length > 8) ? CStaticMethod.getSmeltingID(szID.Substring(0, (int)OBJLEN.nHeatProcessNo)) : ""; if (_htOptInfo.Contains("DDW")) _htOptInfo.Remove("DDW"); _htOptInfo.Add("DDW", szID); // 等待位 szID = _listHeatProcess[0].ToString(); szID = (szID.Length > 8) ? CStaticMethod.getSmeltingID(szID.Substring(0, (int)OBJLEN.nHeatProcessNo)) : ""; if (_htOptInfo.Contains("HCW")) _htOptInfo.Remove("HCW"); _htOptInfo.Add("HCW", szID); // 缓冲位 } } catch { } } /// /// 获取吹氩过程添加剂信息 /// private void GetAdditiveData() { if (_heatProcessNo == "") return; try { string strErr = ""; ArrayList arry = new ArrayList(); arry.Add("GetCasAdditiveData.Select");//此ID为XML文件ID arry.Add(_smeltingID); arry.Add(_stationCode); arry.Add(_dealTime); //查询转炉作业采样信息 DataSet ds = this.ExecuteQueryFunctions("Core.LgMes.Server.LgJobMgt.ClassBofJob", "GetBofAdditiveData", arry, out strErr); if (strErr == "" && ds != null) { DataSetToAdditive(ref ds, ref _procAdditive); } } catch { } } /// /// 取各岗位采样数据 /// private void GetSamplingOfPost() { try { ArrayList al = null; string strErr = ""; ArrayList arry = new ArrayList(); arry.Add(_smeltingID); arry.Add(_DEVICE_POSITION); arry.Add(_dealTime); //查询作业采样信息 CoreClientParam ccp = this.ExecuteQueryArrayList("Core.LgMes.Server.LgJobMgt.ClassCommonModule", "GetSamplingOfPost", arry, out strErr); if (strErr == "" && ccp.ReturnObject != null) { al = ccp.ReturnObject as ArrayList; GetDataOfPost(al); } else { _dtSamplingOfCvt.Clear(); _dtSamplingOfCas.Clear(); } } catch { } } /// /// 取各岗位数据表记录 /// private void GetDataOfPost(ArrayList ar) { try { int nPos = 0; string szPos = ""; if (ar != null) { ArrayList alOperate = new ArrayList(); nPos = ar.Count - 1; szPos = ar[nPos].ToString(); alOperate = ar[nPos - 1] as ArrayList; if (szPos != "") { for (int i = 0; i < szPos.Length; i++) { switch (szPos.Substring(i, 1)) { case "C": // 转炉 _dtSamplingOfCvt = ConvertToDataTable(ar[i] as IList); //将服务器端传回的List转换成DataTable break; case "D": // 吹氩 _dtSamplingOfCas = ConvertToDataTable(ar[i] as IList); //将服务器端传回的List转换成DataTable break; default: break; } } } } } catch { } } /// /// 填充用户控件上面的数据 /// private void FillUserControlData() { ucBofPlan1.SetData(_htPlanInfo); ucCasTimeInfo1.SetData(_htOptInfo); ucCasDevInfo1.SetData(_htOptInfo); ucChemelEment1.FillCraftElement(); ucCasPlanTime1.SetData(); } /// /// 填充温度信息界面数据 /// private void FillTemperatureData() { try { lock (this) { int nRows = 1; // 加一条转炉出钢温度 DataRow[] dr = null, drr = null; if (_dtSamplingOfCvt != null && _dtSamplingOfCvt.Rows.Count > 0) dr = _dtSamplingOfCvt.Select("SAMPLINGNAME='TEMPERATURE'", " SAMPLINGDATE DESC"); if (_dtSamplingOfCas != null && _dtSamplingOfCas.Rows.Count > 0) drr = _dtSamplingOfCas.Select("SAMPLINGNAME='TEMPERATURE'", " SAMPLINGDATE ASC"); if (drr != null && drr.Length > 0) nRows += drr.Length; CStaticMethod.ResetTableRows(ref _dtTemperature, nRows); int i = 0; #region " 转炉出钢温度 " string szVal = ""; string szTemp = ""; if (dr != null && dr.Length > 0) { szVal = dr[0]["SAMPLINGVALUE"].ToString(); szTemp = dr[0]["SAMPLINGDATE"].ToString(); } CStaticMethod.SetGridTemperature(ref _dtTemperature, "转炉终点温度", "", szVal,szTemp, i); i++; #endregion #region " 实时值 " if (drr != null && drr.Length > 0) { string str = ""; for (int j = 0; j < drr.Length; j++, i++) { if (i ==1) str = "吹氩进站温度"; else if (i == drr.Length) str = "吹氩出站温度"; else str = "吹氩过程温度"; CStaticMethod.SetGridTemperature(ref _dtTemperature, str, "", drr[j]["SAMPLINGVALUE"].ToString(),drr[j]["SAMPLINGDATE"].ToString(), i); } } #endregion #region " 与标准进行比对 " // 出钢终点温度 if(dr!=null && dr.Length >0) CStaticMethod.CompareStandard(_dtCraftStdVal, ref _dtTemperature, "LG0201002", ref ulgridTempInfo, 0, "C"); //吹氩站温度 if (drr != null && drr.Length > 0) { CStaticMethod.CompareStandard(_dtCraftStdVal, ref _dtTemperature, "LG0301002", ref ulgridTempInfo, 1, "D"); CStaticMethod.CompareStandard(_dtCraftStdVal, ref _dtTemperature, "LG0301002", ref ulgridTempInfo, drr.Length, "D"); } #endregion } } catch (Exception ex) { string Msg = ex.Message; } } #region " Del " /// /// 设置温度数据 /// //private void SetGridTemperature() //{ // try // { // DataRow[] dr = null; // Decimal dZXZ = 0, dZDZ = 0, dVal = 0; // #region " 一倒 " // if (_dtSamplingOfCvt.Rows.Count > 0) // { // dr = _dtSamplingOfCvt.Select("SAMPLINGNAME='GSWD'", " SAMPLINGDATE ASC"); // if (dr.Length > 0) // { // _dtTemperature.Rows[0]["实际值"] = dr[0]["SAMPLINGVALUE"].ToString(); // dVal = Convert.ToDecimal(dr[0]["SAMPLINGVALUE"]); // } // } // if (_dtCraftStdVal != null && _dtCraftStdVal.Rows.Count > 0) // { // try // { // dr = _dtCraftStdVal.Select(" CRAFTITEMCODE1 = '03002'"); // if (dr.Length > 0) // { // if (dr[0]["ITEMMAXVALUE1"].ToString() != "" && dr[0]["ITEMMINVALUE1"].ToString() != "") // _dtTemperature.Rows[0]["设定范围"] = dr[0]["ITEMMINVALUE1"].ToString() + "-" + dr[0]["ITEMMAXVALUE1"].ToString(); // else if (dr[0]["ITEMMAXVALUE1"].ToString() != "" && dr[0]["ITEMMINVALUE1"].ToString() == "") // _dtTemperature.Rows[0]["设定范围"] = "≤ " + dr[0]["ITEMMAXVALUE1"].ToString(); // else if (dr[0]["ITEMMAXVALUE1"].ToString() == "" && dr[0]["ITEMMINVALUE1"].ToString() != "") // _dtTemperature.Rows[0]["设定范围"] = "> " + dr[0]["ITEMMINVALUE1"].ToString(); // dZXZ = Convert.ToDecimal(dr[0]["ITEMMINVALUE1"]); // dZDZ = Convert.ToDecimal(dr[0]["ITEMMAXVALUE1"]); // if ((dVal > 0) && (dVal < dZXZ || dVal > dZDZ)) // ulgridTempInfo.DisplayLayout.Rows[0].Cells["实际值"].Appearance.ForeColor = Color.Red; // 报警显示 // else // ulgridTempInfo.DisplayLayout.Rows[0].Cells["实际值"].Appearance.ForeColor = Color.Black; // dZXZ = dZDZ = 0; // } // } // catch { } // } // dVal = 0; // #endregion // #region " 出钢终点 " // if (_dtSamplingOfCvt.Rows.Count > 0) // { // dr = _dtSamplingOfCvt.Select("SAMPLINGNAME='GSWD'", " SAMPLINGDATE DESC"); // if (dr.Length > 0) // { // _dtTemperature.Rows[1]["实际值"] = dr[0]["SAMPLINGVALUE"].ToString(); // } // } // if (_dtCraftStdVal != null && this._dtCraftStdVal.Rows.Count > 0) // { // try // { // dr = _dtCraftStdVal.Select(" CRAFTITEMCODE1 = '03001'"); // if (dr.Length > 0) // { // if (dr[0]["ITEMMAXVALUE1"].ToString() != "" && dr[0]["ITEMMINVALUE1"].ToString() != "") // _dtTemperature.Rows[1]["设定范围"] = dr[0]["ITEMMINVALUE1"].ToString() + "-" + dr[0]["ITEMMAXVALUE1"].ToString(); // else if (dr[0]["ITEMMAXVALUE1"].ToString() != "" && dr[0]["ITEMMINVALUE1"].ToString() == "") // _dtTemperature.Rows[1]["设定范围"] = "≤ " + dr[0]["ITEMMAXVALUE1"].ToString(); // else if (dr[0]["ITEMMAXVALUE1"].ToString() == "" && dr[0]["ITEMMINVALUE1"].ToString() != "") // _dtTemperature.Rows[1]["设定范围"] = "> " + dr[0]["ITEMMINVALUE1"].ToString(); // dZXZ = Convert.ToDecimal(dr[0]["ITEMMINVALUE1"]); // dZDZ = Convert.ToDecimal(dr[0]["ITEMMAXVALUE1"]); // if ((dVal > 0) && (dVal < dZXZ || dVal > dZDZ)) // this.ulgridTempInfo.DisplayLayout.Rows[1].Cells["实际值"].Appearance.ForeColor = Color.Red; // 报警显示 // else // this.ulgridTempInfo.DisplayLayout.Rows[1].Cells["实际值"].Appearance.ForeColor = Color.Black; // } // } // catch { } // } // #endregion // #region " 吹氩氩前 " // if (_dtSamplingOfCas.Rows.Count > 0) // { // dr = this._dtSamplingOfCas.Select("SAMPLINGNAME='GSWD'", " SAMPLINGDATE ASC"); // if (dr.Length > 0) // _dtTemperature.Rows[2]["实际值"] = dr[0]["SAMPLINGVALUE"].ToString(); // } // #endregion // #region " 吹氩在站 " // if (_dtSamplingOfCas.Rows.Count > 0) // { // dr = this._dtSamplingOfCas.Select("SAMPLINGNAME='GSWD'", " SAMPLINGDATE DESC"); // if (dr.Length > 0) // { // _dtTemperature.Rows[3]["实际值"] = dr[0]["SAMPLINGVALUE"].ToString(); // dVal = Convert.ToDecimal(_dtTemperature.Rows[3]["实际值"]); // } // } // #endregion // #region " 吹氩氩后 " // if (_dtSamplingOfCas.Rows.Count > 0) // { // dr = this._dtSamplingOfCas.Select("SAMPLINGNAME='GSWD'", " SAMPLINGDATE DESC"); // if (dr.Length > 0) // { // _dtTemperature.Rows[4]["实际值"] = dr[0]["SAMPLINGVALUE"].ToString(); // dVal = Convert.ToDecimal(_dtTemperature.Rows[4]["实际值"]); // } // } // #endregion // } // catch (Exception ex) // { // string Msg = ex.Message; // } // ulgridTempInfo.Refresh(); //} #endregion /// /// 添加过程添加剂数据到界面 /// private void SetAdditiveData() { try { try { string szName = "", szLC = ""; DataRow[] rows; bool bClear = true; #region " 喂丝 " for (int j = 0; j < this.ultraDataSource2.Band.Columns.Count; j++) { szLC = this.ultraDataSource2.Band.Columns[j].Key; for (int i = 0; i < _additiveBuffer.hList.Count; i++) { JOB_CAS_ADDITIVES obj = (JOB_CAS_ADDITIVES)_additiveBuffer.hList[i]; try { if (obj.MATERIELTYPE == "WS" && obj.JMTYPE == "1" && szLC == obj.HOPPERNUMID) // 物料类型为喂丝 { rows = this._dtMaterial.Select(" MATERIELCODE = '" + obj.MATERIELCODE + "' and MATERIELTYPE = 'WS'"); szName = (rows.Length > 0) ? rows[0]["MATERIELFORSHORT"].ToString() : ""; if (szName != "" && ulgridFeedMtr.DisplayLayout.Bands[0].Columns[szLC].Header.Caption == szName) { if (this.ultraDataSource2.Rows[0][szLC].ToString() != obj.JMWGT.ToString()) ultraDataSource2.Rows[0][szLC] = obj.JMWGT; bClear = false; break; } else ultraDataSource2.Rows[0][szLC] = ""; bClear = false; } } catch { } } if (bClear) ultraDataSource2.Rows[0][szLC] = ""; else bClear = true; } #endregion #region " 过程添加料 " for (int j = 0; j < this.ultraDataSource1.Band.Columns.Count; j++) { szLC = this.ultraDataSource1.Band.Columns[j].Key; for (int i = 0; i < _additiveBuffer.hList.Count; i++) { JOB_CAS_ADDITIVES obj = (JOB_CAS_ADDITIVES)_additiveBuffer.hList[i]; try { if ((obj.MATERIELTYPE == "HJ" || obj.MATERIELTYPE == "FL") && obj.JMTYPE == "1" && szLC == obj.HOPPERNUMID) // 物料类型为 合金 { rows = this._dtMaterial.Select(" MATERIELCODE = '" + obj.MATERIELCODE + "' and (MATERIELTYPE = 'HJ' or MATERIELTYPE = 'FL')"); szName = (rows.Length > 0) ? rows[0]["MATERIELFORSHORT"].ToString() : ""; if (szName != "" && this.ulgridPrcMtr.DisplayLayout.Bands[0].Columns[szLC].Header.Caption == szName) { if (this.ultraDataSource1.Rows[0][szLC].ToString() != obj.JMWGT.ToString()) ultraDataSource1.Rows[0][szLC] = obj.JMWGT; bClear = false; break; } else ultraDataSource1.Rows[0][szLC] = ""; bClear = false; } } catch { } } if (bClear) ultraDataSource1.Rows[0][szLC] = ""; else bClear = true; } #endregion ulgridPrcMtr.UpdateData(); ulgridFeedMtr.UpdateData(); } catch (Exception ex) { string Msg = ex.Message; } } catch (Exception ex) { string Msg = ex.Message; } } /// /// 手投料数据绑定 /// private void HdctMaterialBind() { try { if (_bHandThrow) { if (true == _bClearFlag) { for (int i = 0; i < this.ultraDataSource3.Band.Columns.Count; i++) { this.ulgridHndMtr.DisplayLayout.Rows[0].Cells[i].Value = ""; } _bClearFlag = false; } string szName = "", szLC = ""; DataRow[] rows; bool bClear1 = true; for (int j = 0; j < this.ultraDataSource3.Band.Columns.Count; j++) { szLC = this.ultraDataSource3.Band.Columns[j].Key; #region " 冶炼过程手投料 " for (int i = 0; i < _additiveBuffer.hList.Count; i++) { JOB_CAS_ADDITIVES obj = (JOB_CAS_ADDITIVES)_additiveBuffer.hList[i]; try { if (obj.JMTYPE == "2") { rows = _dtMaterial.Select(" MATERIELCODE = '" + obj.MATERIELCODE + "' and MATERIELTYPE = '" + obj.MATERIELTYPE + "'"); szName = (rows.Length > 0) ? rows[0]["MATERIELFORSHORT"].ToString() : ""; if (szName != "") { if (this.ulgridHndMtr.DisplayLayout.Bands[0].Columns[szLC].Header.Caption == szName) { ultraDataSource3.Rows[0][szLC] = obj.JMWGT; bClear1 = false; break; } } } } catch { } } if (bClear1) ultraDataSource3.Rows[0][szLC] = ""; else bClear1 = true; #endregion } ulgridHndMtr.UpdateData(); } } catch { } } private string GetDevDeviceCodeOfCas(int nDevNo) { string strDevID = ""; if (nDevNo >= 10) return ""; switch (nDevNo) { case (int)DeviceCode.CAS: strDevID = "CAS_DEVICE"; break; case (int)DeviceCode.CAS01: case (int)DeviceCode.CAS02: case (int)DeviceCode.CAS03: strDevID = String.Format("CAS{0,2}_DEVICE", nDevNo); break; } strDevID = strDevID.Replace(" ", "0"); return strDevID; } private string GetDevFrontCodeOfCas(int nDevNo) { string strDevID = ""; if (nDevNo >= 10) return ""; switch (nDevNo) { case (int)DeviceCode.CAS: strDevID = "CAS_FRONT"; break; case (int)DeviceCode.CAS01: case (int)DeviceCode.CAS02: case (int)DeviceCode.CAS03: strDevID = String.Format("CAS{0,2}_FRONT", nDevNo); break; } strDevID = strDevID.Replace(" ", "0"); return strDevID; } private string GetDevIdleCodeOfCas(int nDevNo) { string strDevID = ""; if (nDevNo >= 10) return ""; switch (nDevNo) { case (int)DeviceCode.CAS: strDevID = "CAS_IDLE"; break; case (int)DeviceCode.CAS01: case (int)DeviceCode.CAS02: case (int)DeviceCode.CAS03: strDevID = String.Format("CAS{0,2}_IDLE", nDevNo); break; } strDevID = strDevID.Replace(" ", "0"); return strDevID; } #region " From DataSet To Buffer " private void DataSetToTrackObject(ref DataSet ds, ref TrackObjectInfo obj) { try { obj.ClearElement(); PropertyInfo[] PropertyInfos = null; foreach (DataRow dr in ds.Tables[0].Rows) { RealDataTrackObjectInfor detail = new RealDataTrackObjectInfor(); if (PropertyInfos == null) { PropertyInfos = detail.GetType().GetProperties(); } //给各个属性赋值 foreach (PropertyInfo oPropertyInfo in PropertyInfos) { try { 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 _objTrackBuffer.DataHarmonize(ref obj); } catch (Exception ex) { string Msg = ex.Message; } finally { } } private void DataSetToCraftElement(ref DataSet ds, ref CraftElement obj) { try { obj.ClearElement(); PropertyInfo[] PropertyInfos = null; foreach (DataRow dr in ds.Tables[0].Rows) { JOB_CHEMELEMENT detail = new JOB_CHEMELEMENT(); if (PropertyInfos == null) { PropertyInfos = detail.GetType().GetProperties(); } //给各个属性赋值 foreach (PropertyInfo oPropertyInfo in PropertyInfos) { try { 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 _objCraftEleBuffer.DataHarmonize(ref obj); } catch (Exception ex) { string Msg = ex.Message; } finally { } } private void DataSetToAdditive(ref DataSet ds, ref CasAdditive obj) { try { obj.ClearElement(); PropertyInfo[] PropertyInfos = null; foreach (DataRow dr in ds.Tables[0].Rows) { JOB_CAS_ADDITIVES detail = new JOB_CAS_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 { } } #endregion /// /// 根据窗体名称获取设备位置 /// private void GetDevicePosition() { if (this.Text == "") return; string str = this.Text.Substring(0, 1); switch (str) { case "1": _DEVICE_POSITION = "CAS01"; _DEVICE_POS = 1; break; case "2": _DEVICE_POSITION = "CAS02"; _DEVICE_POS = 2; break; case "3": _DEVICE_POSITION = "CAS03"; _DEVICE_POS = 3; break; default: break; } } /// /// 设置用户控件委托 /// private void SetUserControlDelegate() { ucCasDevInfo1.ultraGrid1.ClickCellButton += new Infragistics.Win.UltraWinGrid.CellEventHandler(ucCasDevInfo1_ClickCellButton); ucCasDevInfo1.ultraGrid1.CellListSelect += new Infragistics.Win.UltraWinGrid.CellEventHandler(ucCasDevInfo1_CellListSelect); ucCasTimeInfo1.ultraGrid1.ClickCellButton += new Infragistics.Win.UltraWinGrid.CellEventHandler(ucCasTimeInfo1_ClickCellButton); ucBofPlan1.ultraGrid1.ClickCellButton += new Infragistics.Win.UltraWinGrid.CellEventHandler(ucBofPlan1_ClickCellButton); ucCasTimeInfo1.ultraGrid1.KeyDown += new KeyEventHandler(ucCasTimeInfo1_KeyDown); ucCasDevInfo1.ultraGrid1.KeyDown += new KeyEventHandler(ucCasDevInfo1_KeyDown); } /// /// 清除所有界面Grid中的实时数据 /// private void ClearGridData() { try { for (int j = 0; j < this.ultraDataSource1.Band.Columns.Count; j++) { this.ultraDataSource1.Rows[0][j] = ""; } } catch { } try { for (int j = 0; j < this.ultraDataSource2.Band.Columns.Count; j++) { this.ultraDataSource2.Rows[0][j] = ""; } } catch { } try { for (int j = 0; j < this.ultraDataSource3.Band.Columns.Count; j++) { this.ultraDataSource3.Rows[0][j] = ""; } } catch { } try { _dtCraftElement.Rows.Clear(); } catch { } try { this._dtTemperature.Rows.Clear(); } catch { } } /// /// 重置界面用户控件的数据 /// private void ResetAllData() { if (!_bResetDataFlag) // 如果已经清空,则直接返回 { ucCasDevInfo1.ResetData(); ucBofPlan1.ResetData(); ucCasTimeInfo1.ResetData(); ucChemelEment1.ResetData(); ClearGridData(); _htPlanInfo.Clear(); _htOptInfo.Clear(); ucCasPlanTime1.ResetData(); _bResetDataFlag = true; } } /// /// 根据设备状态设置图片显示 /// /// /// private Image SetPic(string strState) { int index = 0; switch (strState) { case "IDLE": index = 4; break; case "LADLEARRIVE": index = 1; break; case "SLAGBUILD": index = 1; break; case "FEEDSILK": index = 1; break; case "BLOWING": index = 3; break; case "FINISH": index = 3; break; case "LADLEDEPARTURE": index = 0; break; case "REPAIR": index = 2; break; case "WORK": break; default: break; } return this.imageList1.Images[index]; //出 //进 //维修 //工作 //空闲 } private void ultraExpandableGroupBox1_ExpandedStateChanged(object sender, EventArgs e) { try { if (_heatProcessNo != "") { _bHandThrow = ultraExpandableGroupBox1.Expanded; if (_bHandThrow) _bClearFlag = true; } if (ultraExpandableGroupBox1.Expanded) { //查询手投料物料配置 ClassManualUpdateInfo.SetProceThrowFace(ulgridHndMtr, ultraDataSource3, _DEVICE_POSITION, ref _dtMaterial, this.ob); } } catch { } } /// /// 设置料斗信息 /// private void SetHopperInfo() { try { object obj = null;// ClientCommon._RemotingHelp.ExecuteMethod(par, out outErrStr); string strErr = ""; ArrayList arry = new ArrayList(); arry.Add("GetHopperName.Select");//此ID为XML文件ID arry.Add(_DEVICE_POSITION); //查询料斗物料设置信息 DataSet ds = this.ExecuteQueryFunctions("Core.LgMes.Server.LgJobMgt.ClassCommonModule", "GetHopperName", 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() == "WS") { this.ulgridFeedMtr.DisplayLayout.Bands[0].Columns[BH].Header.Caption = dtHopper.Rows[i]["MATERIELFORSHORT"].ToString(); this.ulgridFeedMtr.DisplayLayout.Bands[0].Columns[BH].Tag = dtHopper.Rows[i]["MATERIELCODE"].ToString(); } else { this.ulgridPrcMtr.DisplayLayout.Bands[0].Columns[BH].Header.Caption = dtHopper.Rows[i]["MATERIELFORSHORT"].ToString(); this.ulgridPrcMtr.DisplayLayout.Bands[0].Columns[BH].Tag = dtHopper.Rows[i]["MATERIELCODE"].ToString(); } } } } catch { } } #endregion #region " Control Event " /// /// 验证输入的是否是数字(手动投料) /// /// /// private void ulgridHndMtr_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (ulgridHndMtr.ActiveCell.Text != "") CStaticMethod.CheckNumValidate(ulgridHndMtr.ActiveCell.Text); } /// /// 手投料录入(通过弹出数字鍵盘) /// /// /// private void ulgridHndMtr_ClickCellButton(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { //利用弹出计算器窗体增加手投料消耗 ClassManualUpdateInfo.HndMtrFromAddMaterial(_heatProcessNo, ulgridHndMtr.ActiveCell, this._dtMaterial, this.ob); } /// /// 手投料录入 /// /// /// private void ulgridHndMtr_KeyDown(object sender, KeyEventArgs e) { if (ulgridHndMtr.ActiveCell !=null && e.KeyCode == Keys.Enter && ulgridHndMtr.ActiveRow != null && _smeltingID != "" && ulgridHndMtr.ActiveCell.Column.Header.Caption != "") { string szBM = ""; if (ulgridHndMtr.ActiveCell.Column.Tag.ToString() != ulgridHndMtr.ActiveCell.Column.Key) szBM = ulgridHndMtr.ActiveCell.Column.Tag.ToString(); string szMC = this.ulgridHndMtr.ActiveCell.Column.Header.Caption, szWLLX = ""; DataRow[] rows = _dtMaterial.Select(" MATERIELCODE = '" + szBM + "'"); if (rows.Length > 0) { szWLLX = rows[0]["MATERIELTYPE"].ToString(); //录入手投料消耗 ClassManualUpdateInfo.AddMaterialProc(_heatProcessNo, szBM, szWLLX, ulgridHndMtr.ActiveCell.Text, ulgridHndMtr.ActiveCell.Column.Key.ToString(), "2", ob); ulgridTempInfo.Focus(); } } } /// /// 双击打开料仓配置界面(手动加料) /// /// /// private void ulgridHndMtr_DoubleClickHeader(object sender, Infragistics.Win.UltraWinGrid.DoubleClickHeaderEventArgs e) { //设置手投料 ClassManualUpdateInfo.SetHatMaterial(ulgridHndMtr.ActiveCell, ref e, _DEVICE_POSITION, this.ob); } /// /// 发送钢包号 /// private void AfirmSteelPot() { #region " BOF01 " string Key = "BOF01" + "_BACK", szDevice = "", szLH1 = "", szLH2 = "", szLH3 = ""; RealDataTrackObjectInfor objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; if (objTrack != null) szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID : ""; if (szDevice == "") { Key = "BOF01" + "_DEVICE"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; if (objTrack != null) szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID : ""; } if (szDevice == "") { Key = "BOF01" + "_FRONT"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; if (objTrack != null) szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID : ""; } if (szDevice != "") szLH1 = CStaticMethod.getSmeltingID(szDevice); //判断是否是提钒 if (szDevice != "" && szDevice.Substring(0, 1) == "V") szLH1 = "V" + szLH1; #endregion #region " BOF02 " Key = "BOF02" + "_BACK"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; if (objTrack != null) szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID : ""; if (szDevice == "") { Key = "BOF02" + "_DEVICE"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; if (objTrack != null) szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID : ""; } if (szDevice == "") { Key = "BOF02" + "_FRONT"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; if (objTrack != null) szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID : ""; } if (szDevice != "") szLH2 = CStaticMethod.getSmeltingID(szDevice); //判断是否是提钒 if (szDevice != "" && szDevice.Substring(0, 1) == "V") szLH2 = "V" + szLH2; #endregion #region " BOF03 " Key = "BOF03" + "_BACK"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; if (objTrack != null) szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID : ""; if (szDevice == "") { Key = "BOF03" + "_DEVICE"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; if (objTrack != null) szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID : ""; } if (szDevice == "") { Key = "BOF03" + "_FRONT"; objTrack = (RealDataTrackObjectInfor)_objTrackBuffer.hList[Key]; if (objTrack != null) szDevice = (!string.IsNullOrEmpty(objTrack.OBJECTID)) ? objTrack.OBJECTID : ""; } if (szDevice != "") szLH3 = CStaticMethod.getSmeltingID(szDevice); //判断是否是提钒 if (szDevice != "" && szDevice.Substring(0, 1) == "V") szLH3 = "V" + szLH3; #endregion frmSendSteelPot frmBOF = new frmSendSteelPot(szLH1, szLH2, szLH3); frmBOF.ShowDialog(); } /// /// 功能按钮控制区 /// /// /// public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Result": string szStr = _DEVICE_POS.ToString() + "#吹氩站实绩"; foreach (Form mdiChild in this.MdiParent.MdiChildren) { if (mdiChild.Text == szStr) { mdiChild.Activate(); return; } } frmCasResults frmCYSJ = new frmCasResults(); frmCYSJ.MdiParent = this.MdiParent; frmCYSJ.Text = szStr; frmCYSJ.Tag = frmCYSJ.Text; frmCYSJ.Key = "Core.LgMes.Client.LgResMgt.frmCasResults"; frmCYSJ.CustomInfo = _DEVICE_POSITION; frmCYSJ.Toolbar = CStaticMethod.GetFromToolInfo(frmCYSJ.Key, frmCYSJ.CustomInfo, this.ob); frmCYSJ.ob = this.ob; frmCYSJ.Show(); break; case "btnPotAffirm": // 钢包确认 AfirmSteelPot(); break; case "MtrCsm": // 物料消耗 string szWLXH = "物料消耗"; foreach (Form mdiChild in this.MdiParent.MdiChildren) { if (mdiChild.Text == szWLXH) { mdiChild.Activate(); return; } } frmAdditStat frmWLXH = new frmAdditStat(); frmWLXH.MdiParent = this.MdiParent; frmWLXH.Text = szWLXH; frmWLXH.Tag = frmWLXH.Text; frmWLXH.Key = "Core.LgMes.Client.LgIntegrationQuery.frmAdditStat"; frmWLXH.Toolbar = CStaticMethod.GetFromToolInfo(frmWLXH.Key, "", this.ob); frmWLXH.ob = this.ob; frmWLXH.Show(); break; case "ChemicElem": // 化学成分 string szEle = "化学成分查询"; foreach (Form mdiChild in this.MdiParent.MdiChildren) { if (mdiChild.Text == szEle) { mdiChild.Activate(); return; } } frmLgElements frmHXCF = new frmLgElements(); frmHXCF.MdiParent = this.MdiParent; frmHXCF.Text = szEle; frmHXCF.Tag = frmHXCF.Text; frmHXCF._devPos = _DEVICE_POSITION; frmHXCF.Key = "Core.LgMes.Client.LgIntegrationQuery.frmLgElements"; frmHXCF.Toolbar = CStaticMethod.GetFromToolInfo(frmHXCF.Key, "", this.ob); frmHXCF.ob = this.ob; frmHXCF.Show(); break; case "SftRcd": // 班组记录 string szRcd = "吹氩站操作记录"; foreach (Form mdiChild in this.MdiParent.MdiChildren) { if (mdiChild.Text == szRcd) { mdiChild.Activate(); return; } } reportCASData frmReport = new reportCASData(); frmReport.MdiParent = this.MdiParent; frmReport.Text = szRcd; frmReport.Tag = frmReport.Text; frmReport.Key = "Core.LgMes.Client.Report.reportCASData"; frmReport.Toolbar = CStaticMethod.GetFromToolInfo(frmReport.Key, "", this.ob); frmReport.ob = this.ob; frmReport.Show(); break; case "btnJobStd": // 操作规程 string szOR = "操作规程管理"; foreach (Form mdiChild in this.MdiParent.MdiChildren) { if (mdiChild.Text == szOR) { mdiChild.Activate(); return; } } //Core.LgMes.Client.LgIntegrationQuery.frmOperateRule frmOR = new Core.LgMes.Client.LgIntegrationQuery.frmOperateRule(); //frmOR.MdiParent = this.MdiParent; //frmOR.Key = "Core.LgMes.Client.LgIntegrationQuery.frmOperateRule"; //frmOR.Text = "操作规程管理"; //frmOR.blValue = false; //if (_htPlanInfo != null && _htPlanInfo.Count > 0) //{ // frmOR.strDeviceNo = _DEVICE_POSITION; // frmOR.strSteelCode = _htPlanInfo["STEEL"].ToString(); // frmOR.strCraftCode = _htPlanInfo["STD_CODE"].ToString(); //} //frmOR.Show(); break; case "JobPlan": // 作业计划 string szPlan = "作业计划查询"; foreach (Form mdiChild in this.MdiParent.MdiChildren) { if (mdiChild.Text == szPlan) { mdiChild.Activate(); return; } } frmSchedulingQuery frmZYJH = new frmSchedulingQuery(); frmZYJH.MdiParent = this.MdiParent; frmZYJH.Text = szPlan; frmZYJH.Tag = frmZYJH.Text; frmZYJH.Key = "Core.LgMes.Client.LgIntegrationQuery.frmSchedulingQuery"; frmZYJH.Toolbar = CStaticMethod.GetFromToolInfo(frmZYJH.Key, "", this.ob); frmZYJH.ob = this.ob; frmZYJH.Show(); break; case "POTOK": /* * 功能描述:只有指定IP 地址电脑才可以做确认 * 修改人:ym * 修改时间:20140218 */ if (!this.isCorrectMac()) { MessageBox.Show("您没有操作权限!,只有指定电脑可以操作", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } Core.LgMes.Client.LgDeviceManager.FrmCasAffirm frmPAF = new Core.LgMes.Client.LgDeviceManager.FrmCasAffirm(ob); frmPAF.ShowDialog(); break; case "Exit": this.Close(); break; default: break; } } /// /// 双击打开料仓配置界面(自动加料) /// /// /// private void ulgridPrcMtr_DoubleClickHeader(object sender, Infragistics.Win.UltraWinGrid.DoubleClickHeaderEventArgs e) { Core.LgMes.Client.LgJobMgt.frmSetHopper frmLCPZ = new Core.LgMes.Client.LgJobMgt.frmSetHopper(_DEVICE_POSITION); frmLCPZ.WindowState = FormWindowState.Normal; frmLCPZ.ob = this.ob; frmLCPZ.ShowDialog(); SetHopperInfo(); } /// /// 修改自动投料 /// /// /// private void ulgridPrcMtr_KeyDown(object sender, KeyEventArgs e) { if (ulgridPrcMtr.ActiveCell !=null && e.KeyCode == Keys.Enter && ulgridPrcMtr.ActiveRow != null && _smeltingID != "" && ulgridPrcMtr.ActiveCell.Column.Header.Caption != "") { string szBM = ""; if (ulgridPrcMtr.ActiveCell.Column.Tag.ToString() != ulgridPrcMtr.ActiveCell.Column.Key) szBM = ulgridPrcMtr.ActiveCell.Column.Tag.ToString(); string szMC = this.ulgridPrcMtr.ActiveCell.Column.Header.Caption, szWLLX = ""; DataRow[] rows = _dtMaterial.Select(" MATERIELCODE = '" + szBM + "'"); if (rows.Length > 0) { szWLLX = rows[0]["MATERIELTYPE"].ToString(); ////添加辅料,合金消耗 ClassManualUpdateInfo.AddMaterialProc(_heatProcessNo, szBM, szWLLX, ulgridPrcMtr.ActiveCell.Text, ulgridPrcMtr.ActiveCell.Column.Key.ToString(), "1", ob); ulgridTempInfo.Focus(); } } } /// /// 验证输入的是否是数字 /// /// /// private void ulgridPrcMtr_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (ulgridPrcMtr.ActiveCell.Text != "") CStaticMethod.CheckNumValidate(ulgridPrcMtr.ActiveCell.Text); } /// /// 修改自动投料喂丝 /// /// /// private void ulgridFeedMtr_KeyDown(object sender, KeyEventArgs e) { if (ulgridFeedMtr.ActiveCell!=null && e.KeyCode == Keys.Enter && ulgridFeedMtr.ActiveRow != null && _smeltingID != "" && ulgridFeedMtr.ActiveCell.Column.Header.Caption != "") { string szBM = ""; if (ulgridFeedMtr.ActiveCell.Column.Tag.ToString() != ulgridFeedMtr.ActiveCell.Column.Key) szBM = ulgridFeedMtr.ActiveCell.Column.Tag.ToString(); string szMC = this.ulgridFeedMtr.ActiveCell.Column.Header.Caption, szWLLX = ""; DataRow[] rows = _dtMaterial.Select(" MATERIELCODE = '" + szBM + "'"); if (rows.Length > 0) { szWLLX = rows[0]["MATERIELTYPE"].ToString(); ////添加辅料,合金消耗 ClassManualUpdateInfo.AddMaterialProc(_heatProcessNo, szBM, szWLLX, ulgridFeedMtr.ActiveCell.Text, ulgridFeedMtr.ActiveCell.Column.Key.ToString(), "1", ob); ulgridTempInfo.Focus(); } } } /// /// 验证是否是数字 /// /// /// private void ulgridFeedMtr_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (ulgridFeedMtr.ActiveCell.Text != "") CStaticMethod.CheckNumValidate(ulgridFeedMtr.ActiveCell.Text); } #endregion /// /// 异常信息处理 /// /// /// private void ultraGroupBox1_DoubleClick(object sender, EventArgs e) { if (!string.IsNullOrEmpty(ucBofPlan1.ultraGrid1.DisplayLayout.Rows[0].Cells["HEATNO"].Value.ToString())) { frmProcessAbnormity frmPA = new frmProcessAbnormity(); frmPA.strSmeltingID = ucBofPlan1.ultraGrid1.DisplayLayout.Rows[0].Cells["HEATNO"].Value.ToString(); frmPA.strCraftposID = _DEVICE_POSITION; frmPA.ShowDialog(); } } private void ulgridPrcMtr_DoubleClickCell(object sender, Infragistics.Win.UltraWinGrid.DoubleClickCellEventArgs e) { frmMtrBatchChem frmmbchem = new frmMtrBatchChem(ulgridPrcMtr.DisplayLayout.Bands[0].Columns[e.Cell.Column.Key.ToString()].Tag.ToString(), e.Cell.Column.Key.ToString(), "CAS0" + _DEVICE_POS); frmmbchem.Location = CStaticMethod.GetChildWindowLocation(frmmbchem.Size); frmmbchem.ShowDialog(); } private void ulgridFeedMtr_DoubleClickCell(object sender, Infragistics.Win.UltraWinGrid.DoubleClickCellEventArgs e) { frmMtrBatchChem frmmbchem = new frmMtrBatchChem(ulgridFeedMtr.DisplayLayout.Bands[0].Columns[e.Cell.Column.Key.ToString()].Tag.ToString(), e.Cell.Column.Key.ToString(), "CAS0" + _DEVICE_POS); frmmbchem.Location = CStaticMethod.GetChildWindowLocation(frmmbchem.Size); frmmbchem.ShowDialog(); } /// /// 返回允许操作的电脑IP地址or物理地址 /// /// private List getAllCorrectPriAddress() { List list = new List(); DataSet ds = this.returnDataSet(Core.Mes.Client.Common.lgCommon.returnScm_Base_InfoBySort_Code("400308")); try { if (ds != null & ds.Tables[0].Rows.Count > 0) { foreach (DataRow dr in ds.Tables[0].Rows) { list.Add(dr["BASENAME"].ToString().Trim()); } } } catch { } return list; } private bool isCorrectMac() { List ipAddress = new List(); ipAddress = Core.Mes.Client.Common.lgCommon.returnLocalComputerIpAddress(); List ipList = this.getAllCorrectPriAddress(); foreach (string s in ipAddress) { if (ipList.Contains(s)) return true; } return false; } private DataSet returnDataSet(string sqlStr) { DataSet ds = new DataSet(); try { 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.ComDBExecute"; CCP_Query.MethodName = "doSimpleQuery"; CCP_Query.ServerParams = new object[] { sqlStr }; CCP_Query.SourceDataTable = dt; fr.ExecuteQueryToDataTable(CCP_Query, CoreInvokeType.Internal); ds.Tables.Add(dt); } catch { } return ds; } } }