Make_PositionStock.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. using System;
  2. using System.Data;
  3. using System.Drawing;
  4. using System.Text;
  5. using System.Windows.Forms;
  6. using UAS_MES.DataOperate;
  7. using UAS_MES.Entity;
  8. using UAS_MES.PublicMethod;
  9. namespace UAS_MES.Make
  10. {
  11. public partial class Make_PositionStock : Form
  12. {
  13. AutoSizeFormClass asc = new AutoSizeFormClass();
  14. DataHelper dh;
  15. DataTable dt;
  16. LogStringBuilder sql = new LogStringBuilder();
  17. DataTable Dbfind;
  18. string ma_id;
  19. string craftcode_condition = "";
  20. public Make_PositionStock()
  21. {
  22. InitializeComponent();
  23. }
  24. private void 岗位备料_Load(object sender, EventArgs e)
  25. {
  26. asc.controllInitializeSize(this);
  27. ma_code.TableName = "make left join product on ma_prodcode=pr_code ";
  28. ma_code.SelectField = "ma_code # 工单号,ma_prodcode # 产品编号,ma_craftcode # 工艺路线,pr_detail # 产品名称";
  29. ma_code.FormName = Name;
  30. ma_code.DBTitle = "工单查询";
  31. ma_code.SetValueField = new string[] { "ma_code", "ma_prodcode", "pr_detail", "ma_craftcode" };
  32. ma_code.Condition = "ma_statuscode='STARTED'";
  33. ma_code.DbChange += Ma_code_DbChange;
  34. sc_stepcode.Text = User.CurrentStepCode;
  35. ma_code.SetLockCheckBox(Lock);
  36. Lock.GetMakeCodeCtl(ma_code);
  37. dh = new DataHelper();
  38. }
  39. private void Ma_code_DbChange(object sender, EventArgs e)
  40. {
  41. Dbfind = ma_code.ReturnData;
  42. BaseUtil.SetFormValue(this.Controls, Dbfind);
  43. }
  44. private void 岗位备料_SizeChanged(object sender, EventArgs e)
  45. {
  46. asc.controlAutoSize(this);
  47. }
  48. private void Clean_Click(object sender, EventArgs e)
  49. {
  50. OperateResult.Clear();
  51. }
  52. //物料批号Enter事件
  53. private void pr_batchnum_KeyDown(object sender, KeyEventArgs e)
  54. {
  55. if (e.KeyCode == Keys.Enter)
  56. {
  57. if (pr_batchnum.Text != "")
  58. {
  59. if (ma_code.Text != "")
  60. {
  61. sql.Clear();
  62. sql.Append("select cr_code from craft left join craftdetail on cd_crid=cr_id where cr_code in (" + craftcode_condition + ") ");
  63. sql.Append("and cr_prodcode='" + ma_prodcode.Text + "' and cr_statuscode='AUDITED' and cd_stepcode='" + User.CurrentStepCode + "'");
  64. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  65. if (dt.Rows.Count > 0)
  66. {
  67. dt = (DataTable)dh.ExecuteSql("select bar_remain,bar_prodcode from barcode inner join product on pr_code=bar_prodcode where bar_code ='" + pr_batchnum.Text + "' and bar_status = 1 ", "select");
  68. if (dt.Rows.Count > 0)
  69. {
  70. string bar_remain = dt.Rows[0]["bar_remain"].ToString();
  71. string bar_prodcode = dt.Rows[0]["bar_prodcode"].ToString();
  72. sql.Clear();
  73. sql.Append("select * from stepproduct inner join product on pr_code=sp_soncode left join makematerial on mm_prodcode=sp_soncode where ");
  74. sql.Append("sp_craftcode='" + ma_craftcode.Text + "' and sp_stepcode='" + User.CurrentStepCode + "' and sp_soncode='" + bar_prodcode + "' and pr_tracekind=2 ");
  75. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  76. if (dt.Rows.Count > 0)
  77. {
  78. string mm_oneuseqty = dt.Rows[0]["mm_oneuseqty"].ToString();
  79. string mm_prodcode = dt.Rows[0]["mm_prodcode"].ToString();
  80. if (dh.getRowCount("makesourcestock", "mss_makecode='" + ma_code.Text + "' and mss_prodcode='" + mm_prodcode + "' and mss_barcode='" + pr_batchnum.Text + "'") == 0)
  81. {
  82. sql.Clear();
  83. sql.Append("insert into makesourcestock (mss_id,mss_makecode,mss_linecode ,mss_craftcode,");
  84. sql.Append("mss_stepcode,mss_barcode,mss_fprodcode,mss_indate,mss_inman,mss_qty,");
  85. sql.Append("mss_remain ,mss_baseqty ,mss_prodcode,mss_maid) values(makesourcestock_seq.nextval,'" + ma_code.Text + "','" + User.UserLineCode + "',");
  86. sql.Append("'','" + sc_stepcode.Text + "','" + pr_batchnum.Text + "','" + mm_prodcode + "',");
  87. sql.Append("sysdate,'" + User.UserCode + "','" + bar_remain + "','" + bar_remain + "','" + mm_oneuseqty + "','" + bar_prodcode + "','" + ma_id + "')");
  88. dh.ExecuteSql(sql.GetString(), "insert");
  89. dh.UpdateByCondition("barcode", "bar_place='" + ma_code.Text + "'", "bar_code='" + pr_batchnum.Text + "'");
  90. //数据插入成功后加载Grid的数据
  91. FillDataGridView();
  92. OperateResult.AppendText(">>批次号" + pr_batchnum.Text + "备料成功\n", Color.Green, pr_batchnum);
  93. }
  94. else OperateResult.AppendText(">>批次号" + pr_batchnum.Text + "的物料已分配\n", Color.Red, pr_batchnum);
  95. }
  96. else OperateResult.AppendText(">>批次" + pr_batchnum.Text + "对应的物料不是当前工单当前工序需要备的物料\n", Color.Red, pr_batchnum);
  97. }
  98. else OperateResult.AppendText(">>批号:" + pr_batchnum.Text + "不存在,或者状态无效\n", Color.Red, pr_batchnum);
  99. }
  100. else OperateResult.AppendText(">>当前岗位资源工序不在工单对应的途程中\n", Color.Red);
  101. }
  102. else OperateResult.AppendText(">>工单号不能为空\n", Color.Red, pr_batchnum);
  103. }
  104. else OperateResult.AppendText(">>物料批号不允许为空\n", Color.Red);
  105. }
  106. }
  107. //加载Grid数据
  108. private void FillDataGridView()
  109. {
  110. sql.Clear();
  111. sql.Append("select nvl(mss_id,0) mss_id,sp_soncode,mss_prodcode,sp_oneuseqty,mss_barcode,nvl(mss_qty,0) mss_qty ,mss_remain,");
  112. sql.Append("pr_detail,nvl(mss_useqty,0) mss_useqty from stepbom left join stepproduct on sp_sbid=sb_id left join product on ");
  113. sql.Append("pr_code=sp_mothercode left join makesourcestock on mss_makecode='" + ma_code.Text + "' and mss_craftcode=sb_craftcode ");
  114. sql.Append("and mss_stepcode=sp_stepcode where sb_prodcode='" + ma_prodcode.Text + "' and sb_craftcode='" + ma_craftcode.Text + "' ");
  115. sql.Append("and sp_stepcode='" + User.CurrentStepCode + "' and sp_tracekind=2");
  116. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  117. BaseUtil.FillDgvWithDataTable(BatchProductDGV, dt);
  118. }
  119. private void Confirm_Click(object sender, EventArgs e)
  120. {
  121. KeyEventArgs e1 = new KeyEventArgs(Keys.Enter);
  122. pr_batchnum_KeyDown(sender, e1);
  123. }
  124. private void Screen_Click(object sender, EventArgs e)
  125. {
  126. FillDataGridView();
  127. }
  128. private void ma_prodcode_TextChanged(object sender, EventArgs e)
  129. {
  130. if (ma_code.Text != "")
  131. {
  132. dt = (DataTable)dh.ExecuteSql("select ma_id,ma_craftcode,ma_statuscode,ma_code,ma_prodcode,pr_spec,pr_detail from make left join product on ma_prodcode=pr_code where ma_code='" + ma_code.Text + "'", "select");
  133. if (dt.Rows.Count > 0)
  134. {
  135. ma_id = dt.Rows[0]["ma_id"].ToString();
  136. string craftcode = dt.Rows[0]["ma_craftcode"].ToString();
  137. BaseUtil.SetFormValue(this.Controls, dt);
  138. }
  139. else OperateResult.AppendText(">>工单号不存在\n", Color.Red);
  140. }
  141. else OperateResult.AppendText(">>工单号不允许为空\n", Color.Red);
  142. }
  143. private void BatchProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
  144. {
  145. if (BatchProductDGV.Columns[e.ColumnIndex].Name == "DeleteRow")
  146. {
  147. string id = BatchProductDGV.Rows[e.RowIndex].Cells["mss_id"].Value.ToString();
  148. if (id != "0")
  149. {
  150. dh.ExecuteSql("delete from makesourcestock where mss_id='" + id + "'", "delete");
  151. }
  152. }
  153. }
  154. private void ma_code_UserControlTextChanged(object sender, EventArgs e)
  155. {
  156. if (ma_code.Text.Length > 4)
  157. {
  158. craftcode_condition = "";
  159. DataTable dt = (DataTable)dh.ExecuteSql("select ma_craftcode from make where ma_code='" + ma_code.Text + "'", "select");
  160. string craftcode = "";
  161. if (dt.Rows.Count > 0)
  162. {
  163. craftcode = dt.Rows[0]["ma_craftcode"].ToString();
  164. }
  165. sql.Clear();
  166. sql.Append("select distinct ms_craftcode ma_craftcode from makeserial left join craft on cr_code=ms_craftcode ");
  167. sql.Append("where ms_makecode='" + ma_code.Text + "' and ms_craftcode<>'" + craftcode + "'");
  168. dt.Merge((DataTable)dh.ExecuteSql(sql.GetString(), "select"));
  169. ma_craftcode.DisplayMember = "ma_craftcode";
  170. ma_craftcode.ValueMember = "ma_craftcode";
  171. ma_craftcode.DataSource = dt;
  172. for (int i = 0; i < dt.Rows.Count; i++)
  173. {
  174. if (dt.Rows.Count - 1 == i)
  175. craftcode_condition += "'" + dt.Rows[i]["ma_craftcode"].ToString() + "'";
  176. else
  177. craftcode_condition += "'" + dt.Rows[i]["ma_craftcode"].ToString() + "',";
  178. }
  179. }
  180. }
  181. }
  182. }