using System; using System.Collections.Generic; using System.Text; using System.Data; using Core.LgMes.Server.lgClassModel; using System.Threading; using System.Collections; using CoreFS.CA06; using System.Diagnostics; using System.Windows.Forms; using Core.Mes.Client.Common; using Core.LgMes.Client.lgClassModel.Rtd.Ccm; ///总貌图,甘特图岗位详细信息接口程序 namespace Core.LgMes.Client.lgGlobalMap { public class LgGlobalMapInterface { public Thread _refreshDataThread; //定义线程 public Hashtable _htRealTimeData = null; //存放数据 public DataTable _dtMaterial = null; public bool On_Off_Thread=true ; //线程是否启动 public bool _bIfRefreshData = true; // 控制刷新数据线程循环的标志 public OpeBase ob; public Hashtable _ccmRtdRealTimeData = null; //public void Dispose() //{ // try // { // if (_refreshDataThread != null) // _refreshDataThread.Abort(); // } // catch { } // Dispose(true); // GC.SuppressFinalize(this); //} //protected virtual void Dispose(bool disposing) //{ // if (!m_disposed) // { // if (disposing) // { // // Release managed resources // } // // Release unmanaged resources // m_disposed = true; // } //} //~LgGlobalMapInterface() //{ // Dispose(true); //} public LgGlobalMapInterface() { System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; } /// /// 初始化和启动线程 /// public void StartReadDataThread() { StartUpThread(); //启动线程 GetMaterialData(); //获取物料信息 } /// /// 接口 /// /// 岗位名称 public void ShowForm(string DeviceName) { frmBaseSite frm = null; switch (DeviceName.Substring(0,3)) { case "MIS": frm = new frmMis(DeviceName.Substring(4,1)); break; case "HMP": frm = new frmHmp(); break; case "BOF": frm = new frmBof(); break; case "CAS": frm = new frmCas(); break; case "LFS": frm = new frmLfs(); break; case "RHS": frm = new frmRhs(); break; case "VDS": frm = new frmVds(); break; case "CCM": frm = new frmBCcm(Convert.ToInt16(DeviceName.Substring(4, 1))); break; default: frm = null; break; } if (frm != null) { frm.arDataSource = DispatchRealTimeData(DeviceName); frm.HeatProcessNo = GetHeatProcessNo(DeviceName); frm.dtMaterial = _dtMaterial; frm.ob = ob; frm.Show(); } } /// /// 获取岗位计划,化学成分,其它信息 /// /// /// private ArrayList DispatchRealTimeData(string szDev) { if (szDev == "") return null; Hashtable htCraft = null; CraftElement objElem = null; ArrayList arSite = null; ArrayList ar = new ArrayList(); DataTable dtJobData = null; if (_htRealTimeData != null) { htCraft = (Hashtable)_htRealTimeData["ScheduleInfo"]; objElem = (CraftElement)_htRealTimeData["CraftElement"]; arSite = (ArrayList)_htRealTimeData["AllRealSiteList"]; Hashtable htJobData = (Hashtable)_htRealTimeData["AllDeviceInfo"]; frmStyleBase frmsb = new frmStyleBase(); frmsb.ob = ob; dtJobData = frmsb.ConvertToDataTable(htJobData[szDev] as IList); } else return null; ar.Add(htCraft); ar.Add(objElem); switch (szDev.Substring(0, 3)) { case "BOF": ar.Add(arSite[0]); break; case "CAS": ar.Add(arSite[1]); break; case "LFS": ar.Add(arSite[2]); break; case "RHS": ar.Add(arSite[3]); break; case "VDS": ar.Add(arSite[4]); break; case "CCM": ar.Add(arSite[5]); break; default: break; } ar.Add(dtJobData); return ar; } /// /// 获取加热处理号 /// /// /// private string GetHeatProcessNo(string strDevPos) { if (strDevPos == "") return ""; string strHeatProcessNo = ""; TrackObjectInfo trackObj = null; Hashtable htTrackObj = null; if (_htRealTimeData != null) htTrackObj = (Hashtable)_htRealTimeData["TrackObject"]; else return ""; if (htTrackObj == null) return ""; TPM_TrackObjectInfor objDev = (TPM_TrackObjectInfor)htTrackObj[strDevPos]; if (objDev != null) strHeatProcessNo = objDev.OBJECTID; return strHeatProcessNo; } /// /// 获取物料信息 /// private void GetMaterialData() { try { string strErr = ""; string strSqlID = ""; strSqlID = "GetMaterialData.Select";//此ID为XML文件ID CommonClientToServer ccTos = new CommonClientToServer(); ccTos.ob = ob; //查询物料配置信息 DataSet ds = ccTos.ExecuteQueryFunctions("Core.LgMes.Server.LgJobMgt.ClassBofJob", "GetMaterialData", strSqlID, out strErr); if (strErr == "" && ds != null) { _dtMaterial = ds.Tables[0]; } } catch { } } #region " Thread Handle " /// /// 启动线程主程序 /// private void StartUpThread() { ThreadStart ts = new ThreadStart(RefreshDataThread); _refreshDataThread = new Thread(ts); _refreshDataThread.Name = "刷新数据线程"; _refreshDataThread.Start(); } //设置代理,用来设置总貌图每个岗位的图片状态 public delegate void SetAllDeviceStateForPictureBoxDel(); public SetAllDeviceStateForPictureBoxDel SetAllDeviceStateForPictureBox=null; //设置代理,获取当天统计信息 public delegate void SetLgTotalDataDel(); public SetLgTotalDataDel SetLgTotalData = null; //设置代理,获取窗体是否是激活状态来控制线程是否执行 public delegate void SetThread_Start(); public SetThread_Start setThread_Start = null; /// /// 线程 /// private void RefreshDataThread() { while (_bIfRefreshData) { if (setThread_Start != null) setThread_Start(); if (!this.On_Off_Thread) { Thread.Sleep(500); continue; } try { ReadDataFromServer(); try { ReadDataFromCcmRtd(); } catch { //RefreshDataThread(); } if (SetAllDeviceStateForPictureBox!=null) SetAllDeviceStateForPictureBox(); if (SetLgTotalData!=null ) SetLgTotalData(); Thread.Sleep(2000); //休整2秒钟 } catch (Exception ex) { Trace.WriteLine(ex.Message); } } } /// /// 获取连铸实时表数据 /// public void ReadDataFromCcmRtd() { if (ccmMgt == null) { ccmMgt = new Core.LgMes.Client.lgBll.LgRtdMgt.Ccm.LgCcmAllRtdMgt(); } ClientParamWithSqlConditionAndOpenBase param = new ClientParamWithSqlConditionAndOpenBase("",this.ob); RTD_POINTCCM1NO1 ccm1 = ccmMgt.GetRtdPointCcm1No1ByEntryModel(param); RTD_POINTCCM2NO1 ccm2 = ccmMgt.GetRtdPointCcm2No1ByEntryModel(param); RTD_POINTCCM3NO1 ccm3 = ccmMgt.GetRtdPointCcm3No1ByEntryModel(param); _ccmRtdRealTimeData = new Hashtable(); _ccmRtdRealTimeData.Add("RTD_POINTCCM1NO1", ccm1); _ccmRtdRealTimeData.Add("RTD_POINTCCM2NO1", ccm2); _ccmRtdRealTimeData.Add("RTD_POINTCCM3NO1", ccm3); } Core.LgMes.Client.lgBll.LgRtdMgt.Ccm.LgCcmAllRtdMgt ccmMgt = null; /// /// 获取正在生产岗位上所有的信息 /// private void ReadDataFromServer() { string strErr = ""; try { ArrayList arry = new ArrayList(); arry.Add(""); CommonClientToServer ccTos = new CommonClientToServer(); ccTos.ob = ob; CoreClientParam ccp= ccTos.ExecuteClietnToServer("Core.LgMes.Server.LgGlobalMap.ClassReadDataMgt", "GetAllRealTimeData", arry, out strErr); if (ccp.ReturnObject != null && strErr == "") { _htRealTimeData = ccp.ReturnObject as Hashtable; ArrayList arr = _htRealTimeData["AllRealSiteList"] as ArrayList; } //else // MessageBox.Show("kkkk"); //else //{ // _htRealTimeData = null; //} } catch(Exception ex) { } } #endregion } }