SMT_MaterialsWaring.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Drawing;
  5. using System.Windows.Forms;
  6. using UAS_MES_NEW.DataOperate;
  7. using UAS_MES_NEW.PublicMethod;
  8. namespace UAS_MES_NEW.SMT
  9. {
  10. public partial class SMT_MaterialsWaring : Form
  11. {
  12. AutoSizeFormClass asc = new AutoSizeFormClass();
  13. DataTable dt;
  14. DataHelper dh;
  15. SMT_WaringSetting setting;
  16. List<int> WaringRowIndex = new List<int>();
  17. LogStringBuilder sql = new LogStringBuilder();
  18. public SMT_MaterialsWaring()
  19. {
  20. InitializeComponent();
  21. }
  22. private void 用料预警_Load(object sender, EventArgs e)
  23. {
  24. dh = new DataHelper();
  25. asc.controllInitializeSize(this);
  26. }
  27. private void Setting_Click(object sender, EventArgs e)
  28. {
  29. DoSerach.Stop();
  30. setting = new SMT_WaringSetting();
  31. setting.Controls["Confirm"].Click += ConfirmClick;
  32. BaseUtil.SetFormCenter(setting);
  33. setting.ShowDialog();
  34. }
  35. private void ConfirmClick(object sender, EventArgs e)
  36. {
  37. string de_code = setting.Controls["de_code"].Text;
  38. sql.Clear();
  39. sql.Append("select dsl_devcode,ma_code,ma_qty,ma_madeqty from make left join devsmtlocation on dsl_makecode = ma_code");
  40. sql.Append(" left join device on dsl_devcode=de_code where dsl_devcode='" + de_code + "' and nvl( de_macode,' ')<>' ' ");
  41. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  42. if (dt.Rows.Count > 0)
  43. {
  44. BaseUtil.SetFormValue(this.Controls, dt);
  45. }
  46. else
  47. {
  48. BaseUtil.ShowError("机台:" + de_code + "未使用!");
  49. }
  50. //设置轮询的时间间隔,开启轮询
  51. DoSerach.Interval = int.Parse(setting.Controls["Cycle"].Text) * 1000;
  52. DoSerach.Tick += StartMonitor;
  53. DoSerach.Start();
  54. LoadData();
  55. }
  56. private void StartMonitor(object sender, EventArgs e)
  57. {
  58. LoadData();
  59. WaringRowIndex.Clear();
  60. for (int i = 0; i < SMTMaterialsDGV.RowCount; i++)
  61. {
  62. //单件事件
  63. int unitTime = int.Parse(setting.Controls["UnitTime"].Text);
  64. //提前预警
  65. int earlywaring = int.Parse(setting.Controls["UnitTime"].Text);
  66. //剩余数量
  67. int remainQTY = int.Parse(SMTMaterialsDGV.Rows[i].Cells["dsl_remainqty"].Value.ToString());
  68. if (unitTime * remainQTY < earlywaring * 60)
  69. {
  70. WaringRowIndex.Add(i);
  71. }
  72. }
  73. }
  74. private void LoadData()
  75. {
  76. string de_code = setting.Controls["de_code"].Text;
  77. sql.Clear();
  78. sql.Append("select dsl_fecode,dsl_barcode,dsl_prodcode,dsl_fespec,dsl_fecode,dsl_getqty,dsl_remainqty,dsl_needqty,dsl_baseqty,");
  79. sql.Append("dsl_table,dsl_location from makeCraft left join devsmtlocation on dsl_mcid=mc_id left join device on ");
  80. sql.Append("dsl_devcode=de_code where dsl_devcode='" + de_code + "' and dsl_status=0");
  81. BaseUtil.FillDgvWithDataTable(SMTMaterialsDGV, (DataTable)dh.ExecuteSql(sql.GetString(), "select"));
  82. }
  83. private void SMTMaterialsDGV_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
  84. {
  85. //如果用量不足的红色提示
  86. if (WaringRowIndex.Contains(e.RowIndex))
  87. {
  88. e.Graphics.FillRectangle(Brushes.Red, e.CellBounds);
  89. Rectangle border = e.CellBounds;
  90. border.Width -= 1;
  91. e.Graphics.DrawRectangle(Pens.White, border);
  92. e.PaintContent(e.CellBounds);
  93. e.Handled = true;
  94. }
  95. }
  96. private void 用料预警_SizeChanged(object sender, EventArgs e)
  97. {
  98. asc.controlAutoSize(this);
  99. }
  100. }
  101. }