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
}
}