frmBeltScale_Res.cs 15 KB

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