LgGlobalMapInterface.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data;
  5. using Core.LgMes.Server.lgClassModel;
  6. using System.Threading;
  7. using System.Collections;
  8. using CoreFS.CA06;
  9. using System.Diagnostics;
  10. using System.Windows.Forms;
  11. using Core.Mes.Client.Common;
  12. using Core.LgMes.Client.lgClassModel.Rtd.Ccm;
  13. ///总貌图,甘特图岗位详细信息接口程序
  14. namespace Core.LgMes.Client.lgGlobalMap
  15. {
  16. public class LgGlobalMapInterface
  17. {
  18. public Thread _refreshDataThread; //定义线程
  19. public Hashtable _htRealTimeData = null; //存放数据
  20. public DataTable _dtMaterial = null;
  21. public bool On_Off_Thread=true ; //线程是否启动
  22. public bool _bIfRefreshData = true; // 控制刷新数据线程循环的标志
  23. public OpeBase ob;
  24. public Hashtable _ccmRtdRealTimeData = null;
  25. //public void Dispose()
  26. //{
  27. // try
  28. // {
  29. // if (_refreshDataThread != null)
  30. // _refreshDataThread.Abort();
  31. // }
  32. // catch { }
  33. // Dispose(true);
  34. // GC.SuppressFinalize(this);
  35. //}
  36. //protected virtual void Dispose(bool disposing)
  37. //{
  38. // if (!m_disposed)
  39. // {
  40. // if (disposing)
  41. // {
  42. // // Release managed resources
  43. // }
  44. // // Release unmanaged resources
  45. // m_disposed = true;
  46. // }
  47. //}
  48. //~LgGlobalMapInterface()
  49. //{
  50. // Dispose(true);
  51. //}
  52. public LgGlobalMapInterface()
  53. {
  54. System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
  55. }
  56. /// <summary>
  57. /// 初始化和启动线程
  58. /// </summary>
  59. public void StartReadDataThread()
  60. {
  61. StartUpThread(); //启动线程
  62. GetMaterialData(); //获取物料信息
  63. }
  64. /// <summary>
  65. /// 接口
  66. /// </summary>
  67. /// <param name="DeviceName">岗位名称</param>
  68. public void ShowForm(string DeviceName)
  69. {
  70. frmBaseSite frm = null;
  71. switch (DeviceName.Substring(0,3))
  72. {
  73. case "MIS":
  74. frm = new frmMis(DeviceName.Substring(4,1));
  75. break;
  76. case "HMP":
  77. frm = new frmHmp();
  78. break;
  79. case "BOF":
  80. frm = new frmBof();
  81. break;
  82. case "CAS":
  83. frm = new frmCas();
  84. break;
  85. case "LFS":
  86. frm = new frmLfs();
  87. break;
  88. case "RHS":
  89. frm = new frmRhs();
  90. break;
  91. case "VDS":
  92. frm = new frmVds();
  93. break;
  94. case "CCM":
  95. frm = new frmBCcm(Convert.ToInt16(DeviceName.Substring(4, 1)));
  96. break;
  97. default:
  98. frm = null;
  99. break;
  100. }
  101. if (frm != null)
  102. {
  103. frm.arDataSource = DispatchRealTimeData(DeviceName);
  104. frm.HeatProcessNo = GetHeatProcessNo(DeviceName);
  105. frm.dtMaterial = _dtMaterial;
  106. frm.ob = ob;
  107. frm.Show();
  108. }
  109. }
  110. /// <summary>
  111. /// 获取岗位计划,化学成分,其它信息
  112. /// </summary>
  113. /// <param name="szDev"></param>
  114. /// <returns></returns>
  115. private ArrayList DispatchRealTimeData(string szDev)
  116. {
  117. if (szDev == "")
  118. return null;
  119. Hashtable htCraft = null;
  120. CraftElement objElem = null;
  121. ArrayList arSite = null;
  122. ArrayList ar = new ArrayList();
  123. DataTable dtJobData = null;
  124. if (_htRealTimeData != null)
  125. {
  126. htCraft = (Hashtable)_htRealTimeData["ScheduleInfo"];
  127. objElem = (CraftElement)_htRealTimeData["CraftElement"];
  128. arSite = (ArrayList)_htRealTimeData["AllRealSiteList"];
  129. Hashtable htJobData = (Hashtable)_htRealTimeData["AllDeviceInfo"];
  130. frmStyleBase frmsb = new frmStyleBase();
  131. frmsb.ob = ob;
  132. dtJobData = frmsb.ConvertToDataTable(htJobData[szDev] as IList);
  133. }
  134. else
  135. return null;
  136. ar.Add(htCraft);
  137. ar.Add(objElem);
  138. switch (szDev.Substring(0, 3))
  139. {
  140. case "BOF":
  141. ar.Add(arSite[0]);
  142. break;
  143. case "CAS":
  144. ar.Add(arSite[1]);
  145. break;
  146. case "LFS":
  147. ar.Add(arSite[2]);
  148. break;
  149. case "RHS":
  150. ar.Add(arSite[3]);
  151. break;
  152. case "VDS":
  153. ar.Add(arSite[4]);
  154. break;
  155. case "CCM":
  156. ar.Add(arSite[5]);
  157. break;
  158. default:
  159. break;
  160. }
  161. ar.Add(dtJobData);
  162. return ar;
  163. }
  164. /// <summary>
  165. /// 获取加热处理号
  166. /// </summary>
  167. /// <param name="strDevPos"></param>
  168. /// <returns></returns>
  169. private string GetHeatProcessNo(string strDevPos)
  170. {
  171. if (strDevPos == "")
  172. return "";
  173. string strHeatProcessNo = "";
  174. TrackObjectInfo trackObj = null;
  175. Hashtable htTrackObj = null;
  176. if (_htRealTimeData != null)
  177. htTrackObj = (Hashtable)_htRealTimeData["TrackObject"];
  178. else
  179. return "";
  180. if (htTrackObj == null)
  181. return "";
  182. TPM_TrackObjectInfor objDev = (TPM_TrackObjectInfor)htTrackObj[strDevPos];
  183. if (objDev != null)
  184. strHeatProcessNo = objDev.OBJECTID;
  185. return strHeatProcessNo;
  186. }
  187. /// <summary>
  188. /// 获取物料信息
  189. /// </summary>
  190. private void GetMaterialData()
  191. {
  192. try
  193. {
  194. string strErr = "";
  195. string strSqlID = "";
  196. strSqlID = "GetMaterialData.Select";//此ID为XML文件ID
  197. CommonClientToServer ccTos = new CommonClientToServer();
  198. ccTos.ob = ob;
  199. //查询物料配置信息
  200. DataSet ds = ccTos.ExecuteQueryFunctions("Core.LgMes.Server.LgJobMgt.ClassBofJob",
  201. "GetMaterialData", strSqlID, out strErr);
  202. if (strErr == "" && ds != null)
  203. {
  204. _dtMaterial = ds.Tables[0];
  205. }
  206. }
  207. catch { }
  208. }
  209. #region " Thread Handle "
  210. /// <summary>
  211. /// 启动线程主程序
  212. /// </summary>
  213. private void StartUpThread()
  214. {
  215. ThreadStart ts = new ThreadStart(RefreshDataThread);
  216. _refreshDataThread = new Thread(ts);
  217. _refreshDataThread.Name = "刷新数据线程";
  218. _refreshDataThread.Start();
  219. }
  220. //设置代理,用来设置总貌图每个岗位的图片状态
  221. public delegate void SetAllDeviceStateForPictureBoxDel();
  222. public SetAllDeviceStateForPictureBoxDel SetAllDeviceStateForPictureBox=null;
  223. //设置代理,获取当天统计信息
  224. public delegate void SetLgTotalDataDel();
  225. public SetLgTotalDataDel SetLgTotalData = null;
  226. //设置代理,获取窗体是否是激活状态来控制线程是否执行
  227. public delegate void SetThread_Start();
  228. public SetThread_Start setThread_Start = null;
  229. /// <summary>
  230. /// 线程
  231. /// </summary>
  232. private void RefreshDataThread()
  233. {
  234. while (_bIfRefreshData)
  235. {
  236. if (setThread_Start != null) setThread_Start();
  237. if (!this.On_Off_Thread)
  238. {
  239. Thread.Sleep(500);
  240. continue;
  241. }
  242. try
  243. {
  244. ReadDataFromServer();
  245. try
  246. {
  247. ReadDataFromCcmRtd();
  248. }
  249. catch
  250. {
  251. //RefreshDataThread();
  252. }
  253. if (SetAllDeviceStateForPictureBox!=null)
  254. SetAllDeviceStateForPictureBox();
  255. if (SetLgTotalData!=null )
  256. SetLgTotalData();
  257. Thread.Sleep(2000); //休整2秒钟
  258. }
  259. catch (Exception ex)
  260. {
  261. Trace.WriteLine(ex.Message);
  262. }
  263. }
  264. }
  265. /// <summary>
  266. /// 获取连铸实时表数据
  267. /// </summary>
  268. public void ReadDataFromCcmRtd()
  269. {
  270. if (ccmMgt == null)
  271. {
  272. ccmMgt = new Core.LgMes.Client.lgBll.LgRtdMgt.Ccm.LgCcmAllRtdMgt();
  273. }
  274. ClientParamWithSqlConditionAndOpenBase param = new ClientParamWithSqlConditionAndOpenBase("",this.ob);
  275. RTD_POINTCCM1NO1 ccm1 = ccmMgt.GetRtdPointCcm1No1ByEntryModel(param);
  276. RTD_POINTCCM2NO1 ccm2 = ccmMgt.GetRtdPointCcm2No1ByEntryModel(param);
  277. RTD_POINTCCM3NO1 ccm3 = ccmMgt.GetRtdPointCcm3No1ByEntryModel(param);
  278. _ccmRtdRealTimeData = new Hashtable();
  279. _ccmRtdRealTimeData.Add("RTD_POINTCCM1NO1", ccm1);
  280. _ccmRtdRealTimeData.Add("RTD_POINTCCM2NO1", ccm2);
  281. _ccmRtdRealTimeData.Add("RTD_POINTCCM3NO1", ccm3);
  282. }
  283. Core.LgMes.Client.lgBll.LgRtdMgt.Ccm.LgCcmAllRtdMgt ccmMgt = null;
  284. /// <summary>
  285. /// 获取正在生产岗位上所有的信息
  286. /// </summary>
  287. private void ReadDataFromServer()
  288. {
  289. string strErr = "";
  290. try
  291. {
  292. ArrayList arry = new ArrayList();
  293. arry.Add("");
  294. CommonClientToServer ccTos = new CommonClientToServer();
  295. ccTos.ob = ob;
  296. CoreClientParam ccp= ccTos.ExecuteClietnToServer("Core.LgMes.Server.LgGlobalMap.ClassReadDataMgt",
  297. "GetAllRealTimeData", arry, out strErr);
  298. if (ccp.ReturnObject != null && strErr == "")
  299. {
  300. _htRealTimeData = ccp.ReturnObject as Hashtable;
  301. ArrayList arr = _htRealTimeData["AllRealSiteList"] as ArrayList;
  302. }
  303. //else
  304. // MessageBox.Show("kkkk");
  305. //else
  306. //{
  307. // _htRealTimeData = null;
  308. //}
  309. }
  310. catch(Exception ex) {
  311. }
  312. }
  313. #endregion
  314. }
  315. }