frmBeltScale.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Common.vo.pb;
  4. using Infragistics.Win.UltraWinGrid;
  5. using JC_MeasuringSystem;
  6. using MeterModuleLibrary;
  7. using MeterPlugInLibrary;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data;
  11. using System.Linq;
  12. using System.Net;
  13. using System.Threading;
  14. using System.Windows.Forms;
  15. namespace BeltScaleSystem
  16. {
  17. public partial class frmBeltScale : Form
  18. {
  19. private BeltScaleDataCollectionControl collection = new BeltScaleDataCollectionControl(); //实时表数据采集
  20. public frmBeltScale()
  21. {
  22. InitializeComponent();
  23. }
  24. private Log lg = Log.GetInstance();
  25. private BaseDbCls bd = new BaseDbCls();
  26. private string userId = "", userName = "";
  27. private string[] strPntNoCollect = null;
  28. private List<string> strPntNoList = new List<string>();
  29. private CoreAppUser userinfo = null;
  30. private string strIpAddress = "";
  31. private MeterBaseScalePointService monitorService = new MeterBaseScalePointService();
  32. private void frmMonitor_Load(object sender, EventArgs e)
  33. {
  34. PbCacheMonitor.frmMsgClosingTime = DateTime.Now;
  35. // timer2.Start();
  36. userId = ((ST_MainForm)(this.MdiParent)).UserID;
  37. userName = ((ST_MainForm)(this.MdiParent)).UserName;
  38. userinfo = ((ST_MainForm)(this.MdiParent)).AppUser;
  39. #region 载入计量点的信息
  40. bd.setBaseDbScalePoint();
  41. // bd.getDbBaseScale();
  42. setGridData();
  43. strIpAddress = GetIP();
  44. foreach (UltraGridRow ugr in ultraGridPW.Rows)
  45. {
  46. //strPntNoList.Add(ugr.Cells["collectionCodeA"].Text.Trim());//添加所有的计量点
  47. //strPntNoList.Add(ugr.Cells["collectionCodeB"].Text.Trim());//添加所有的计量点
  48. if (ugr.Cells["monitorUserNo"].Text.Trim() != "" && ugr.Cells["monitorUserNo"].Text.Trim() == userName)
  49. {
  50. ugr.Cells["UNCK"].Value = true;
  51. BeltScaleMeterControl uc = new BeltScaleMeterControl();
  52. //uc.strCollectNo = ugr.Cells["collectionCode"].Text.Trim();
  53. uc.Name = "uc" + ugr.Cells["baseSpotNo"].Text;
  54. uc.sUserId = userId;
  55. uc.sUserName = userName;
  56. uc.sIpAddress = strIpAddress;
  57. uc.sPointNo = ugr.Cells["baseSpotNo"].Text;
  58. uc.sPointName = ugr.Cells["baseSpotName"].Text;
  59. uc.BorderStyle = BorderStyle.FixedSingle;
  60. flPanel.Controls.Add(uc);
  61. }
  62. else
  63. {
  64. ugr.Cells["UNCK"].Value = false;
  65. }
  66. }
  67. //strPntNoCollect = strPntNoList.ToArray();//加载所有的计量点,不管有没有接管
  68. //collection.EventBeltScaleDataCollectionArgs += new EventBeltScaleDataCollection(weightCollect);//数据采集解析
  69. // collection.Start(new string[5] { "CAR40", "CAR41", "CAR42", "CAR43", "CAR44" });//数据采集启动
  70. //collection.Start(strPntNoCollect);//数据采集启动
  71. // ClsControlPack.RefreshAndAutoSize(this.ultraGridPW);
  72. #endregion 载入计量点的信息
  73. //thVoice.Start();
  74. }
  75. /// <summary>
  76. /// 计量点信息
  77. /// </summary>
  78. public void setGridData()
  79. {
  80. DataTable dt = dtJGPointInfo.Clone();
  81. if (PbCacheMonitor.sportInfoList!=null&& PbCacheMonitor.sportInfoList.Count>0&& PbCacheMonitor.ltMeterBaseScalePoint != null && PbCacheMonitor.ltMeterBaseScalePoint.Count > 0)
  82. {
  83. foreach (MeterBaseScalePoint mwm in PbCacheMonitor.ltMeterBaseScalePoint)
  84. {
  85. if (!mwm.scalePointName.Contains("焦粉")&&!mwm.scalePointName.Contains("备用")) {
  86. DataRow dr = dt.NewRow();
  87. dr["scalePointNo"] = mwm.scalePointNo;
  88. dr["baseSpotNo"] = mwm.baseSpotNo;
  89. dr["baseSpotName"] = mwm.baseSpotName;
  90. dr["monitorUserNo"] = mwm.monitorUserNo;
  91. dr["collectionCodeA"] = mwm.collectionCode;
  92. dr["collectionCodeB"] = mwm.collectionCodeB;
  93. dt.Rows.Add(dr);
  94. }
  95. }
  96. //for (int i=0; i<PbCacheMonitor.sportInfoList.Count;i++) {
  97. // DataRow dr = dt.NewRow();
  98. // dr["baseSpotNo"] = PbCacheMonitor.sportInfoList[i].baseSpotNo;
  99. // dr["baseSpotName"] = PbCacheMonitor.sportInfoList[i].baseSpotName;
  100. // for (int j= 0; j < PbCacheMonitor.ltMeterBaseScalePoint.Count;j++)
  101. // {
  102. // if (PbCacheMonitor.ltMeterBaseScalePoint[j].baseSpotNo == PbCacheMonitor.sportInfoList[i].baseSpotNo &&
  103. // PbCacheMonitor.ltMeterBaseScalePoint[j].scalePointNo.Contains("001")){
  104. // dr["monitorUserNo"] = PbCacheMonitor.ltMeterBaseScalePoint[j].monitorUserNo;
  105. // dr["collectionCodeA"] = PbCacheMonitor.ltMeterBaseScalePoint[j].collectionCode;
  106. // dr["scalePointNo"] = PbCacheMonitor.ltMeterBaseScalePoint[j].scalePointNo;
  107. // }
  108. // if (PbCacheMonitor.ltMeterBaseScalePoint[j].baseSpotNo == PbCacheMonitor.sportInfoList[i].baseSpotNo &&
  109. // PbCacheMonitor.ltMeterBaseScalePoint[j].scalePointNo.Contains("002")) {
  110. // dr["collectionCodeB"] = PbCacheMonitor.ltMeterBaseScalePoint[j].collectionCode;
  111. // }
  112. // }
  113. // dt.Rows.Add(dr);
  114. //}
  115. }
  116. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtJGPointInfo, true);
  117. // ClsControlPack.RefreshAndAutoSize(this.ultraGridPW);
  118. }
  119. private string openPointNo = "";
  120. private void VoiceOption(BeltScaleMeterControl um, bool bMainUm)
  121. {
  122. if (PbCacheMonitor.ltMeterBaseScalePoint == null || PbCacheMonitor.ltMeterBaseScalePoint.Count == 0)
  123. {
  124. MessageBox.Show("获取计量点信息异常,请稍后再试");
  125. return;
  126. }
  127. MeterBaseScalePoint monitor = PbCacheMonitor.ltMeterBaseScalePoint.Where(s => s.baseSpotNo == um.sPointNo).FirstOrDefault();
  128. if (monitor == null)
  129. {
  130. MessageBox.Show("获取当前计量点信息异常,请稍后再试");
  131. return;
  132. }
  133. }
  134. /// <summary>
  135. /// 修改数据到接管表
  136. /// </summary>
  137. private void UpdateCarijeg(MeterBaseScalePoint monitor)
  138. {
  139. RESTfulResult<string> rms = monitorService.doUpdateWf(monitor);
  140. if (!rms.Succeed)
  141. {
  142. lg.WriteLog(4, "写入数据失败");
  143. }
  144. }
  145. /// <summary>
  146. /// 重量采集
  147. /// </summary>
  148. /// <param name="o"></param>
  149. /// <param name="e"></param>
  150. private void weightCollect(object o, List<CollectModel> e)
  151. {
  152. try
  153. {
  154. if (e != null)
  155. {
  156. foreach (var item in e)
  157. {
  158. foreach (MeterBaseScalePoint mwm in PbCacheMonitor.ltMeterBaseScalePoint)
  159. {
  160. if (mwm.collectionCode.Equals(item.pointid))
  161. {
  162. mwm.weight = item.weight;
  163. }
  164. if (mwm.collectionCodeB.Equals(item.pointid))
  165. {
  166. mwm.weightB = item.weight;
  167. }
  168. }
  169. }
  170. }
  171. }
  172. catch (Exception)
  173. {
  174. throw;
  175. }
  176. }
  177. /// <summary>
  178. /// 重点!!!
  179. /// 从主界面向用户控件中插入信息
  180. /// </summary>
  181. /// <param name="sender"></param>
  182. /// <param name="e"></param>
  183. private void timer2_Tick(object sender, EventArgs e)
  184. {
  185. try
  186. {
  187. foreach (MeterBaseScalePoint mon in PbCacheMonitor.ltMeterBaseScalePoint)
  188. {
  189. foreach (Control cn in flPanel.Controls)
  190. {
  191. if (cn.Name.Contains("uc"))
  192. {
  193. BeltScaleMeterControl uc = cn as BeltScaleMeterControl;
  194. if (uc.sPointNo == mon.baseSpotNo)
  195. {
  196. // uc.rowPointInfo = mon;
  197. }
  198. }
  199. }
  200. }
  201. //if (bd.getDb())
  202. //{
  203. //}
  204. //else
  205. //{
  206. // lg.WriteLog(4, "未找到实时监控数据");
  207. //}
  208. //*/
  209. }
  210. catch (Exception ex)
  211. {
  212. lg.WriteLog(4, "数据库连接异常"+ex.Message);
  213. }
  214. }
  215. private void ultraGridPW_CellChange(object sender, CellEventArgs e)
  216. {
  217. ultraGridPW.UpdateData();
  218. UltraGridRow ugr = ultraGridPW.ActiveRow;
  219. if (ugr != null)
  220. {
  221. if (ugr.Cells["UNCK"].Value.ToString().ToLower() == "false")
  222. {
  223. BeltScaleMeterControl uc = (BeltScaleMeterControl)flPanel.Controls["uc" + ugr.Cells["baseSpotNo"].Text];
  224. flPanel.Controls.RemoveByKey("uc" + ugr.Cells["baseSpotNo"].Text);
  225. uc.Close();
  226. RESTfulResult<string> rm = monitorService.doUpdateWf(new MeterBaseScalePoint { scalePointNo = ugr.Cells["scalePointNo"].Text.Trim(), monitorUserNo = "" });
  227. if (!rm.Succeed)
  228. {
  229. lg.WriteLog(4, "写入取消接管信息失败");
  230. }
  231. }
  232. else
  233. {
  234. bd.setBaseDbScalePoint();
  235. MeterBaseScalePoint mwm = PbCacheMonitor.ltMeterBaseScalePoint.Where(s => s.scalePointNo == ugr.Cells["scalePointNo"].Text.Trim()).FirstOrDefault();
  236. //先查一次是否接管了
  237. if (mwm != null && !string.IsNullOrEmpty(mwm.monitorUserNo))
  238. {
  239. ugr.Cells["UNCK"].Value = false;
  240. MessageBox.Show("当前计量点已被账号【" + mwm.monitorUserNo + "】接管");
  241. return;
  242. }
  243. BeltScaleMeterControl uc = new BeltScaleMeterControl();//点击数据行进行接管
  244. //uc.strCollectNo = ugr.Cells["collectionCode"].Text.Trim();
  245. uc.Name = "uc" + ugr.Cells["baseSpotNo"].Text;
  246. uc.sUserId = userId;
  247. uc.sUserName = userName;
  248. uc.sIpAddress = strIpAddress;
  249. uc.sPointNo = ugr.Cells["baseSpotNo"].Text;
  250. uc.sPointName = ugr.Cells["baseSpotName"].Text;
  251. uc.userClass = userinfo.userClass;
  252. uc.userGroup = userinfo.userGroup;
  253. //uc.ucMonitoringEvent += new EventHandler(ucEvent);
  254. //uc.evoice += new EventVoice(setsVoice);
  255. //****************************************注意下面这个**********************
  256. // uc.moxaip = dtPointInfo.Rows[k]["MOXAIP"].ToString().Trim();
  257. //uc.openMsg += new EventOpenMsg(OpenMsg);
  258. uc.BorderStyle = BorderStyle.FixedSingle;
  259. // uc.db = db;
  260. flPanel.Controls.Add(uc);
  261. RESTfulResult<string> rm = monitorService.doUpdateWf(new MeterBaseScalePoint { scalePointNo = ugr.Cells["scalePointNo"].Text.Trim(), monitorUserNo = userName });
  262. if (!rm.Succeed)
  263. {
  264. lg.WriteLog(4, "写入接管信息失败");
  265. }
  266. }
  267. }
  268. }
  269. /// <summary>
  270. /// 界面关闭方法:还原接管状态
  271. /// </summary>
  272. /// <param name="sender"></param>
  273. /// <param name="e"></param>
  274. private void frmMonitor_FormClosing(object sender, FormClosingEventArgs e)
  275. {
  276. try
  277. {
  278. List<UltraGridRow> uGrid = GridHelper.UltraGridGetChooseRows(ultraGridPW, "UNCK");
  279. if (uGrid.Count == 0)
  280. {
  281. return;
  282. }
  283. foreach (UltraGridRow ugr in uGrid)
  284. {
  285. if (ugr.Cells["UNCK"].Value.ToString().ToUpper() == "TRUE")
  286. {
  287. UpdateCarijeg(new MeterBaseScalePoint { scalePointNo = ugr.Cells["scalePointNo"].Text.Trim(), monitorUserNo = "", monitorUserIP = "" });
  288. BeltScaleMeterControl u = (BeltScaleMeterControl)flPanel.Controls["uc" + ugr.Cells["baseSpotNo"].Text];
  289. flPanel.Controls.RemoveByKey("uc" + ugr.Cells["baseSpotNo"].Text);
  290. u.Close();
  291. ugr.Cells["UNCK"].Value = false;
  292. }
  293. }
  294. }
  295. catch (Exception ex)
  296. {
  297. lg.WriteLog(4, "关闭皮带秤计量异常:" + ex.Message);
  298. }
  299. finally
  300. {
  301. }
  302. }
  303. private void flPanel_ControlRemoved(object sender, ControlEventArgs e)
  304. {
  305. // string aa = e.Control.Name;
  306. }
  307. /// <summary>
  308. /// 获取IP地址
  309. /// </summary>
  310. /// <returns></returns>
  311. public string GetIP()
  312. {
  313. try
  314. {
  315. IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
  316. IPAddress ipAddr = ipHost.AddressList[0];
  317. return ipAddr.ToString();
  318. }
  319. catch (Exception ex)
  320. {
  321. Random rd = new Random();
  322. MessageBox.Show("GetIP方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n!" + ex);
  323. lg.WriteLog(13, "GetIP方法异常:" + ex.Message);
  324. return rd.Next(99999, 999999) + "";
  325. }
  326. }
  327. }
  328. }