FrmGateFrim.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  1. using Core.Mes.Client.Comm.Control;
  2. using Core.Mes.Client.Comm.Format;
  3. using Core.Mes.Client.Comm.Server;
  4. using Core.Mes.Client.Comm.Tool;
  5. using Core.StlMes.Client.YdmBcPipeManage.Entity;
  6. using CoreFS.CA06;
  7. using Infragistics.Win;
  8. using Infragistics.Win.UltraWinGrid;
  9. using System;
  10. using System.Collections;
  11. using System.Collections.Generic;
  12. using System.ComponentModel;
  13. using System.Data;
  14. using System.Drawing;
  15. using System.Linq;
  16. using System.Text;
  17. using System.Threading;
  18. using System.Windows.Forms;
  19. namespace Core.StlMes.Client.YdmBcPipeManage
  20. {
  21. public partial class FrmGateFrim : FrmBase
  22. {
  23. public FrmGateFrim()
  24. {
  25. InitializeComponent();
  26. try
  27. {
  28. string[] portnames = System.IO.Ports.SerialPort.GetPortNames(); //获取计算机串口数组
  29. if (portnames is Infragistics.Win.UltraWinGrid.Nullable || portnames.Length < 1)
  30. {
  31. portnames = new string[10] { "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "COM10" };
  32. }
  33. txtCom.DataSource = portnames;
  34. }
  35. catch (Exception eex3)
  36. {
  37. MessageBox.Show(eex3.Message);
  38. }
  39. }
  40. private string[] arr = null;
  41. private TalentICTGXControl.TalentICTGXClass icClass;
  42. private void FrmGateFrim_Load(object sender, EventArgs e)
  43. {
  44. DateTime now = DateTime.Now;
  45. DateTime dt1 = new DateTime(now.Year, now.Month, 1);//当月第一天
  46. DateTime dt2 = dt1.AddMonths(1).AddDays(-1);//当月最后一天
  47. this.RegStartTime.Value = DateTime.Parse(dt1.ToString("yyyy-MM-dd") + " 00:00:00");
  48. this.RegEndTime.Value = DateTime.Parse(dt2.ToString("yyyy-MM-dd") + " 23:59:59");
  49. BaseMethod.InitCellPosition(ultraGrid1, new string[] { "ActWeight", "ActCount", "ActDimater", "ActHeight", "ActLenMin", "ActLenMax", "ActLen" });
  50. BaseMethod.InitCellPosition(ultraGrid2, new string[] { "ActWeight", "ActCount", "ActDimater", "ActHeight", "ActLenMin", "ActLenMax", "ActLen" });
  51. EntityHelper.ShowGridCaption<YdmBcOutlistEntity>(ultraGrid1.DisplayLayout.Bands[0]);
  52. EntityHelper.ShowGridCaption<YdmGpOutlistEntity>(ultraGrid2.DisplayLayout.Bands[0]);
  53. EntityHelper.ShowGridCaption<YdmBcOutlistEntity>(ultraGrid3.DisplayLayout.Bands[0]);
  54. EntityHelper.ShowGridCaption<YdmGpOutlistEntity>(ultraGrid4.DisplayLayout.Bands[0]);
  55. arr = this.ValidDataPurviewIds;
  56. this.txtCom.SelectedIndex = 0;
  57. }
  58. /// <summary>
  59. /// 重写基类方法
  60. /// </summary>
  61. /// <param name="sender"></param>
  62. /// <param name="ToolbarKey"></param>
  63. public override void ToolBar_Click(object sender, string ToolbarKey)
  64. {
  65. switch (ToolbarKey)
  66. {
  67. case "ReadCard":
  68. readData();
  69. break;
  70. case "Query":
  71. //if (!CheckQuery()) return;
  72. doQueryData();
  73. break;
  74. case"QueryFrim":
  75. doQueryFrim();
  76. break;
  77. case "Comfrim":
  78. doComfrim();
  79. break;
  80. case"CancelComfrim":
  81. cancelComfrim();
  82. break;
  83. case "Close":
  84. close();
  85. break;
  86. }
  87. }
  88. /// <summary>
  89. /// 查询已出厂确认
  90. /// </summary>
  91. private void doQueryFrim()
  92. {
  93. string strRegStart = "";
  94. string strRegEnd = "";
  95. string heatNo = "";
  96. string outDoc = "";
  97. ArrayList parm = new ArrayList();
  98. if (chkRegTime.Checked)
  99. {
  100. strRegStart = RegStartTime.Value.ToString();
  101. strRegEnd = RegEndTime.Value.ToString();
  102. }
  103. if (chkFurnace.Checked)
  104. {
  105. heatNo = this.txtFurnace.Text.Trim();
  106. }
  107. if (chkDk.Checked)
  108. {
  109. outDoc = this.txtOutList.Text.Trim();
  110. }
  111. parm.Add(strRegStart);
  112. parm.Add(strRegEnd);
  113. parm.Add(heatNo);
  114. parm.Add(outDoc);
  115. List<YdmBcOutlistEntity> listSource = EntityHelper.GetData<YdmBcOutlistEntity>(
  116. "com.steering.ydm.bc.FrmGateFrim.doQueryBcOutList2", new object[] { parm,arr }, this.ob);
  117. ydmBcOutlistEntityBindingSource1.DataSource = listSource;
  118. List<YdmGpOutlistEntity> listSource1 = EntityHelper.GetData<YdmGpOutlistEntity>(
  119. "com.steering.ydm.bc.FrmGateFrim.doQueryGpOutList2", new object[] { parm,arr }, this.ob);
  120. ydmGpOutlistEntityBindingSource1.DataSource = listSource1;
  121. }
  122. private bool CheckQuery()
  123. {
  124. if (DataTimeUtil.JudgeTime(DateTime.Parse(RegStartTime.Value.ToString()), DateTime.Parse(RegEndTime.Value.ToString())) == 0)
  125. {
  126. MessageUtil.ShowTips("开始时间不能大于结束时间!");
  127. return false;
  128. }
  129. if (chkFurnace.Checked && string.IsNullOrEmpty(txtFurnace.Text.Trim()))
  130. {
  131. MessageBox.Show("请输入炉号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  132. return false;
  133. }
  134. if (chkDk.Checked && string.IsNullOrEmpty(txtOutList.Text.Trim()))
  135. {
  136. MessageUtil.ShowTips("请输入倒库单号!");
  137. return false;
  138. }
  139. if (string.IsNullOrEmpty(txtFurnace.Text.Trim()) && string.IsNullOrEmpty(txtOutList.Text.Trim()))
  140. {
  141. MessageUtil.ShowTips("不读卡时,请输入炉号或者倒库单号!");
  142. return false;
  143. }
  144. return true;
  145. }
  146. /// <summary>
  147. /// 查询倒库信息
  148. /// </summary>
  149. private void doQueryData()
  150. {
  151. string strRegStart = "";
  152. string strRegEnd = "";
  153. string heatNo = "";
  154. string outDoc = "";
  155. ArrayList parm = new ArrayList();
  156. if (chkRegTime.Checked)
  157. {
  158. strRegStart = RegStartTime.Value.ToString();
  159. strRegEnd = RegEndTime.Value.ToString();
  160. }
  161. if (chkFurnace.Checked)
  162. {
  163. heatNo = this.txtFurnace.Text.Trim();
  164. }
  165. if (chkDk.Checked)
  166. {
  167. outDoc = this.txtOutList.Text.Trim();
  168. }
  169. parm.Add(strRegStart);
  170. parm.Add(strRegEnd);
  171. parm.Add(heatNo);
  172. parm.Add(outDoc);
  173. List<YdmBcOutlistEntity> listSource = EntityHelper.GetData<YdmBcOutlistEntity>(
  174. "com.steering.ydm.bc.FrmGateFrim.doQueryBcOutList1", new object[] { parm }, this.ob);
  175. ydmBcOutlistEntityBindingSource.DataSource = listSource;
  176. List<YdmGpOutlistEntity> listSource1 = EntityHelper.GetData<YdmGpOutlistEntity>(
  177. "com.steering.ydm.bc.FrmGateFrim.doQueryGpOutList1", new object[] { parm }, this.ob);
  178. ydmGpOutlistEntityBindingSource.DataSource = listSource1;
  179. foreach (UltraGridRow ugr in ultraGrid1.Rows)
  180. {
  181. if (!ugr.Cells["ProductFlag"].Value.ToString().Equals("在制品") && (ugr.Cells["PonderGrossWt"].Value == null || String.IsNullOrEmpty(ugr.Cells["PonderGrossWt"].Value.ToString())) && ugr.Cells["MeterWeight"].Value == null && (ugr.Cells["PlineCode"].Value.ToString().Equals("C008") || ugr.Cells["PlineCode"].Value.ToString().Equals("C009") || ugr.Cells["PlineCode"].Value.ToString().Equals("C017")))
  182. {
  183. ugr.Appearance.BackColor = Color.Red;
  184. }
  185. }
  186. }
  187. /// <summary>
  188. /// 出厂确认
  189. /// </summary>
  190. private void doComfrim()
  191. {
  192. this.ultraGrid1.UpdateData();
  193. this.ultraGrid2.UpdateData();
  194. UltraGridRow uRow = this.ultraGrid1.ActiveRow;
  195. UltraGridRow uRow1 = this.ultraGrid2.ActiveRow;
  196. if (uRow == null && uRow1 == null)
  197. {
  198. return;
  199. }
  200. YdmGpOutlistEntity ydmGpEntity = new YdmGpOutlistEntity();
  201. string ydmGpTity = "";
  202. YdmBcOutlistEntity ydmBcEntity = new YdmBcOutlistEntity();
  203. string ydmBcTity = "";
  204. if (uRow != null)
  205. {
  206. ydmBcEntity = (YdmBcOutlistEntity)uRow.ListObject;
  207. ydmBcTity = JSONFormat.Format(ydmBcEntity);
  208. }
  209. if (uRow1 != null)
  210. {
  211. ydmGpEntity = (YdmGpOutlistEntity)uRow1.ListObject;
  212. ydmGpTity = JSONFormat.Format(ydmGpEntity);
  213. }
  214. if (MessageUtil.ShowYesNoAndQuestion("是否确认出厂?") == DialogResult.No)
  215. {
  216. return;
  217. }
  218. CoreClientParam ccp = new CoreClientParam();
  219. ccp.ServerName = "com.steering.ydm.bc.FrmGateFrim";
  220. ccp.MethodName = "doComfrim";
  221. ccp.ServerParams = new object[] { ydmBcTity, ydmGpTity,UserInfo.GetUserName(),UserInfo.GetDeptid(),UserInfo.GetDepartment() };
  222. ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  223. if (ccp.ReturnCode != -1)
  224. {
  225. if (ccp.ReturnInfo.Equals("确认出厂成功!"))
  226. {
  227. ydmBcOutlistEntityBindingSource.Clear();
  228. ydmGpOutlistEntityBindingSource.Clear();
  229. //readData();
  230. MessageUtil.ShowTips(ccp.ReturnInfo);
  231. }
  232. else
  233. {
  234. MessageUtil.ShowTips(ccp.ReturnInfo);
  235. }
  236. }
  237. }
  238. /// <summary>
  239. /// 撤销出厂确认
  240. /// </summary>
  241. private void cancelComfrim()
  242. {
  243. this.ultraGrid3.UpdateData();
  244. this.ultraGrid4.UpdateData();
  245. UltraGridRow uRow = this.ultraGrid3.ActiveRow;
  246. UltraGridRow uRow1 = this.ultraGrid4.ActiveRow;
  247. if (uRow == null && uRow1 == null)
  248. {
  249. return;
  250. }
  251. YdmGpOutlistEntity ydmGpEntity = new YdmGpOutlistEntity();
  252. string ydmGpTity = "";
  253. YdmBcOutlistEntity ydmBcEntity = new YdmBcOutlistEntity();
  254. string ydmBcTity = "";
  255. if (uRow != null)
  256. {
  257. ydmBcEntity = (YdmBcOutlistEntity)uRow.ListObject;
  258. ydmBcTity = JSONFormat.Format(ydmBcEntity);
  259. }
  260. if (uRow1 != null)
  261. {
  262. ydmGpEntity = (YdmGpOutlistEntity)uRow1.ListObject;
  263. ydmGpTity = JSONFormat.Format(ydmGpEntity);
  264. }
  265. if (MessageUtil.ShowYesNoAndQuestion("是否确认撤销出厂?") == DialogResult.No)
  266. {
  267. return;
  268. }
  269. CoreClientParam ccp = new CoreClientParam();
  270. ccp.ServerName = "com.steering.ydm.bc.FrmGateFrim";
  271. ccp.MethodName = "cancelComfrim";
  272. ccp.ServerParams = new object[] { ydmBcTity, ydmGpTity };
  273. ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  274. if (ccp.ReturnCode != -1)
  275. {
  276. if (ccp.ReturnInfo.Equals("撤销确认成功!"))
  277. {
  278. doQueryFrim();
  279. MessageUtil.ShowTips(ccp.ReturnInfo);
  280. }
  281. else
  282. {
  283. MessageUtil.ShowTips(ccp.ReturnInfo);
  284. }
  285. }
  286. }
  287. private void close()
  288. {
  289. this.Close();
  290. }
  291. /// <summary>
  292. /// 读卡
  293. /// </summary>
  294. private void readData()
  295. {
  296. WaitingForm2 wf = new WaitingForm2("正在加载,请稍候....");
  297. try
  298. {
  299. string outDoc = "";
  300. if (!ConnectCard(wf))
  301. {
  302. disConnect();
  303. return;
  304. }
  305. icClass.PrepareReadTemp();
  306. //bool b = icClass.DoReadTemp(1, 39);
  307. if (icClass.DoReadTemp(1, 39))
  308. {
  309. int count = icClass.RecordCount;
  310. if (count == 0) //判断卡上的记录数
  311. {
  312. wf.Close();
  313. MessageUtil.ShowTips("IC卡无记录,请核实!");
  314. disConnect();
  315. return;
  316. }
  317. else
  318. {
  319. outDoc = icClass.taskid;
  320. }
  321. //disConnect();
  322. }
  323. else
  324. {
  325. wf.Close();
  326. MessageUtil.ShowTips("读取IC卡出现错误!");
  327. disConnect();
  328. return;
  329. }
  330. doQueryBcOutList(outDoc);
  331. doQueryGpOutList(outDoc);
  332. }
  333. finally
  334. {
  335. disConnect();
  336. wf.Close();
  337. }
  338. }
  339. /// <summary>
  340. /// 读卡查询管坯倒库信息
  341. /// </summary>
  342. /// <param name="outDoc"></param>
  343. private void doQueryGpOutList(string outDoc)
  344. {
  345. List<YdmGpOutlistEntity> listSource = EntityHelper.GetData<YdmGpOutlistEntity>(
  346. "com.steering.ydm.bc.FrmGateFrim.doQueryGpOutList", new object[] { outDoc }, this.ob);
  347. ydmGpOutlistEntityBindingSource.DataSource = listSource;
  348. }
  349. /// <summary>
  350. /// 读卡查询钢管倒库信息
  351. /// </summary>
  352. /// <param name="outDoc"></param>
  353. private void doQueryBcOutList(string outDoc)
  354. {
  355. List<YdmBcOutlistEntity> listSource = EntityHelper.GetData<YdmBcOutlistEntity>(
  356. "com.steering.ydm.bc.FrmGateFrim.doQueryBcOutList", new object[] { outDoc }, this.ob);
  357. ydmBcOutlistEntityBindingSource.DataSource = listSource;
  358. foreach (UltraGridRow ugr in ultraGrid1.Rows)
  359. {
  360. if (!ugr.Cells["ProductFlag"].Value.ToString().Equals("在制品") && (ugr.Cells["PonderGrossWt"].Value == null || String.IsNullOrEmpty(ugr.Cells["PonderGrossWt"].Value.ToString())) && ugr.Cells["MeterWeight"].Value == null && (ugr.Cells["PlineCode"].Value.ToString().Equals("C008") || ugr.Cells["PlineCode"].Value.ToString().Equals("C009") || ugr.Cells["PlineCode"].Value.ToString().Equals("C017")))
  361. {
  362. ugr.Appearance.BackColor = Color.Red;
  363. }
  364. }
  365. }
  366. ///<summary>
  367. /// 关闭连接
  368. /// </summary>
  369. /// <returns></returns>
  370. private bool disConnect()
  371. {
  372. if (icClass.Active)
  373. {
  374. icClass.AlarmBeep(1);
  375. //设置Active属性为false,则断开与读卡器的连接。
  376. icClass.ToFindCard = false;
  377. icClass.Active = false;
  378. return true;
  379. }
  380. else
  381. {
  382. return true;
  383. }
  384. }
  385. void icClass_OnFindCard()
  386. {
  387. icClass.OnFindCard -= new TalentICTGXControl.ITalentICTGXEvents_OnFindCardEventHandler(icClass_OnFindCard);
  388. icClass.OnDropCard += new TalentICTGXControl.ITalentICTGXEvents_OnDropCardEventHandler(icClass_OnDropCard);
  389. }
  390. void icClass_OnDropCard()
  391. {
  392. //将OnDropCard事件从委托链中删除,并加入OnFindCard事件到委托链中。
  393. //这样就实现了程序中自动寻卡的功能。
  394. icClass.OnDropCard -= new TalentICTGXControl.ITalentICTGXEvents_OnDropCardEventHandler(icClass_OnDropCard);
  395. icClass.OnFindCard += new TalentICTGXControl.ITalentICTGXEvents_OnFindCardEventHandler(icClass_OnFindCard);
  396. }
  397. /// <summary>
  398. /// 连接读卡器
  399. /// </summary>
  400. /// <returns></returns>
  401. private bool ConnectCard(WaitingForm2 wf)
  402. {
  403. //if (icClass == null)
  404. //{
  405. // icClass = new TalentICTGXControl.TalentICTGXClass();
  406. // //委托OnFindCard事件,icClass_OnFindCard是该事件要执行的方法。
  407. // //此事件在当IC卡放到读卡器上时触发。
  408. // icClass.OnFindCard += new TalentICTGXControl.ITalentICTGXEvents_OnFindCardEventHandler(icClass_OnFindCard);
  409. //}
  410. icClass = IcReadWrite.getIcClass();
  411. int comNum = (short)(short.Parse(txtCom.Text.Replace("COM", "")) - 1);
  412. icClass.CommPort = comNum;
  413. if (!icClass.Active)
  414. {
  415. //利用ToFindCard属性连接读卡器,启动OnFindCard事件。
  416. icClass.ToFindCard = true;
  417. if (icClass.Active)
  418. {
  419. //AlarmBeep(int times)方法实现了让IC卡读卡器发出警示音,
  420. //参数为发出几次警示音。
  421. icClass.AlarmBeep(2);
  422. Thread.Sleep(500);
  423. return true;
  424. }
  425. else
  426. {
  427. wf.Close();
  428. MessageUtil.ShowTips("读卡器连接失败!或请切换端口尝试!");
  429. return false;
  430. }
  431. }
  432. return true;
  433. }
  434. /// <summary>
  435. /// 清卡
  436. /// </summary>
  437. private void clearCard()
  438. {
  439. WaitingForm2 wf = new WaitingForm2("正在加载,请稍候....");
  440. try
  441. {
  442. if (ConnectCard(wf) == false)
  443. {
  444. return;
  445. }
  446. icClass.ClearCard();
  447. icClass.AlarmBeep(1);
  448. }
  449. catch
  450. {
  451. }
  452. finally
  453. {
  454. disConnect();
  455. wf.Close();
  456. }
  457. }
  458. private void chkRegTime_CheckedChanged(object sender, EventArgs e)
  459. {
  460. this.RegStartTime.Enabled = this.chkRegTime.Checked;
  461. this.RegEndTime.Enabled = this.chkRegTime.Checked;
  462. }
  463. private void chkDk_CheckedChanged(object sender, EventArgs e)
  464. {
  465. this.txtOutList.Enabled = this.chkDk.Checked;
  466. }
  467. private void chkFurnace_CheckedChanged(object sender, EventArgs e)
  468. {
  469. txtFurnace.Enabled = this.chkFurnace.Checked;
  470. }
  471. private void ultraTabControl1_SelectedTabChanged(object sender, Infragistics.Win.UltraWinTabControl.SelectedTabChangedEventArgs e)
  472. {
  473. if (toolMenu == null || toolMenu.Toolbars == null) return;
  474. if (toolMenu.Toolbars[0].Tools.Exists("ReadCard")) { toolMenu.Toolbars[0].Tools["ReadCard"].InstanceProps.Visible = this.ultraTabControl1.SelectedTab.Index == 0 ? DefaultableBoolean.True : DefaultableBoolean.False; }
  475. if (toolMenu.Toolbars[0].Tools.Exists("Query")) { toolMenu.Toolbars[0].Tools["Query"].InstanceProps.Visible = this.ultraTabControl1.SelectedTab.Index == 0 ? DefaultableBoolean.True : DefaultableBoolean.False; }
  476. if (toolMenu.Toolbars[0].Tools.Exists("Comfrim")) { toolMenu.Toolbars[0].Tools["Comfrim"].InstanceProps.Visible = this.ultraTabControl1.SelectedTab.Index == 0 ? DefaultableBoolean.True : DefaultableBoolean.False; }
  477. if (toolMenu.Toolbars[0].Tools.Exists("QueryFrim")) { toolMenu.Toolbars[0].Tools["QueryFrim"].InstanceProps.Visible = this.ultraTabControl1.SelectedTab.Index == 1 ? DefaultableBoolean.True : DefaultableBoolean.False; }
  478. if (toolMenu.Toolbars[0].Tools.Exists("CancelComfrim")) { toolMenu.Toolbars[0].Tools["CancelComfrim"].InstanceProps.Visible = this.ultraTabControl1.SelectedTab.Index == 1 ? DefaultableBoolean.True : DefaultableBoolean.False; }
  479. }
  480. private void FrmGateFrim_Shown(object sender, EventArgs e)
  481. {
  482. if (toolMenu == null) return;
  483. if (toolMenu.Toolbars[0].Tools.Exists("QueryFrim"))
  484. {
  485. toolMenu.Toolbars[0].Tools["QueryFrim"].InstanceProps.Visible = DefaultableBoolean.False;
  486. }
  487. if (toolMenu.Toolbars[0].Tools.Exists("CancelComfrim"))
  488. {
  489. toolMenu.Toolbars[0].Tools["CancelComfrim"].InstanceProps.Visible = DefaultableBoolean.False;
  490. }
  491. }
  492. }
  493. }