Make_SMTBind.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740
  1. using System;
  2. using System.Data;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using UAS_MES_NEW.CustomControl.TextBoxWithIcon;
  6. using UAS_MES_NEW.DataOperate;
  7. using UAS_MES_NEW.Entity;
  8. using UAS_MES_NEW.PublicMethod;
  9. using System.Drawing;
  10. using System.Text.RegularExpressions;
  11. using System.Collections.Generic;
  12. using System.Threading;
  13. using UAS_MES_NEW.PublicForm;
  14. using System.Net.Sockets;
  15. using System.Net;
  16. namespace UAS_MES_NEW.Make
  17. {
  18. public partial class Make_SMTBind : Form
  19. {
  20. string ErrorMessage = "";
  21. List<string> TSN = new List<string>();
  22. Dictionary<string, string> CheckBarcode = new Dictionary<string, string>();
  23. DataHelper dh;
  24. LogStringBuilder sql = new LogStringBuilder();
  25. DataTable DBFind;
  26. //保存ListB中的数据
  27. DataTable dt1;
  28. DataTable dt = new DataTable();
  29. DataTable dbfind;
  30. ExcelHandler eh;
  31. Thread thread;
  32. AutoSizeFormClass asc = new AutoSizeFormClass();
  33. List<string> CollectData = new List<string>();
  34. List<string> CollectDataSonCode = new List<string>();
  35. List<string> SPID = new List<string>();
  36. public Make_SMTBind()
  37. {
  38. InitializeComponent();
  39. }
  40. private void Make_FeedingCollection_Load(object sender, EventArgs e)
  41. {
  42. asc.controllInitializeSize(this);
  43. LockMakeCode.GetMakeCodeCtl(ma_code);
  44. ma_code.SetLockCheckBox(LockMakeCode);
  45. //工单号放大镜配置
  46. eh = new ExcelHandler();
  47. ma_code.TableName = "make left join product on ma_prodcode=pr_code";
  48. ma_code.SelectField = "ma_code # 工单号,ma_prodcode # 产品编号,ma_qty # 工单数量,ma_craftcode # 途程编号,pr_spec # 产品名称,ma_bomversion # Bom版本,ma_softversion # 软件版本,ma_ecncode # ECN号,pr_pcbacount # 拼版数";
  49. ma_code.FormName = Name;
  50. ma_code.DBTitle = "工单查询";
  51. ma_code.SetValueField = new string[] { "ma_code", "ma_prodcode", "ma_qty", "pr_spec", "ma_craftcode", "ma_bomversion", "ma_softversion", "ma_ecncode", "pr_pcbacount" };
  52. ma_code.Condition = "ma_statuscode='STARTED'";
  53. ma_code.DbChange += Ma_code_DBChange;
  54. code.GotFocus+= text_getfocus;
  55. code.Focus();
  56. dh = SystemInf.dh;
  57. StepCount.StepCode = User.CurrentStepCode;
  58. StepCount.Source = User.UserSourceCode;
  59. StepCount.LineCode = User.UserLineCode;
  60. StepCount.Dh = dh;
  61. StepCount.Start();
  62. }
  63. private void text_getfocus(object sender, EventArgs e)
  64. {
  65. code.ImeMode = ImeMode.Close;
  66. }
  67. private void Ma_code_DBChange(object sender, EventArgs e)
  68. {
  69. DBFind = ma_code.ReturnData;
  70. BaseUtil.SetFormValue(this.Controls, DBFind);
  71. }
  72. private void Make_FeedingCollection_SizeChanged(object sender, EventArgs e)
  73. {
  74. asc.controlAutoSize(this);
  75. }
  76. private void Clean_Click(object sender, EventArgs e)
  77. {
  78. OperateResult.Clear();
  79. }
  80. private void Confirm_Click(object sender, EventArgs e)
  81. {
  82. KeyEventArgs e2 = new KeyEventArgs(Keys.Enter);
  83. code_KeyDown(sender, e2);
  84. }
  85. private void code_KeyDown(object sender, KeyEventArgs e)
  86. {
  87. if (e.KeyCode == Keys.Enter)
  88. {
  89. if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage))
  90. {
  91. if (Loading.Checked)
  92. {
  93. if (code.Text.Replace(" ", "") == ""||pr_pcbacount.Value == 0 )
  94. {
  95. OperateResult.AppendText(">>采集数据与拼版数不可为空\n", Color.Red);
  96. return;
  97. }
  98. else
  99. {
  100. if (sn_code.Text == "")
  101. {
  102. if (ma_code.Text != "" && !LogicHandler.CheckSnRule(ma_code.Text, ma_prodcode.Text, code.Text, out ErrorMessage))
  103. {
  104. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, code);
  105. return;
  106. }
  107. int maqty = int.Parse(dh.getFieldDataByCondition("make", "ma_qty", "ma_code = '" + ma_code.Text + "'").ToString());
  108. int nowqty = int.Parse(dh.getFieldDataByCondition("smtbind", "count(1) cn ", "sb_makecode = '" + ma_code.Text + "'").ToString());
  109. if (nowqty+ pr_pcbacount.Value > maqty)
  110. {
  111. OperateResult.AppendText(">>已绑定数"+ nowqty + "+拼版数"+ pr_pcbacount.Value + "大于工单数"+ maqty + "不允许操作\n", Color.Red);
  112. return;
  113. }
  114. sql.Clear();
  115. sql.Append("select rownum,sb_maincode,sb_makecode,sb_barcode,sb_prodcode,sb_indate from SMTBIND where sb_maincode=(select sb_maincode from SMTBIND ");
  116. sql.Append("where sb_barcode='" + code.Text + "')");
  117. dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  118. if (dt1.Rows.Count > 0)
  119. {
  120. string sb_makecode = dt1.Rows[0]["sb_makecode"].ToString();
  121. if (ma_code.Text != "" && ma_code.Text != sb_makecode)
  122. {
  123. OperateResult.AppendText(">>条码已绑定至工单" + sb_makecode + "\n", Color.Red, code);
  124. return;
  125. }
  126. ma_code.Text = dt1.Rows[0]["sb_makecode"].ToString();
  127. LockMakeCode.Checked = true;
  128. ma_code_UserControlTextChanged(sender, e);
  129. BaseUtil.FillDgvWithDataTable(LabelDataGridView, dt1);
  130. if (dt1.Rows.Count < pr_pcbacount.Value)
  131. {
  132. sn_code.Text = dt1.Rows[0]["sb_maincode"].ToString();
  133. }
  134. code.Text = "";
  135. }
  136. else
  137. {
  138. if (ma_code.Text == "")
  139. {
  140. OperateResult.AppendText(">>请先选择工单号\n", Color.Red, code);
  141. return;
  142. }
  143. if (!LogicHandler.CheckSnRule(ma_code.Text, ma_prodcode.Text, code.Text, out ErrorMessage))
  144. {
  145. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, code);
  146. return;
  147. }
  148. sn_code.Text = code.Text;
  149. sql.Clear();
  150. sql.Append("insert into smtbind(sb_id,sb_maincode,sb_barcode,sb_makecode,sb_prodcode,sb_inman,sb_indate,sb_status)");
  151. sql.Append("values(smtbind_seq.nextval,'" + sn_code.Text + "','" + code.Text + "','" + ma_code.Text + "','" + ma_prodcode.Text + "',");
  152. sql.Append("'" + User.UserCode + "',sysdate,0)");
  153. dh.ExecuteSql(sql.GetString(), "insert");
  154. RefreshData();
  155. sql.Clear();
  156. sql.Append("select rownum,sb_maincode,sb_barcode,sb_prodcode,sb_indate from SMTBIND where sb_maincode=(select sb_maincode from SMTBIND ");
  157. sql.Append("where sb_barcode='" + code.Text + "')");
  158. dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  159. BaseUtil.FillDgvWithDataTable(LabelDataGridView, dt1);
  160. if (LabelDataGridView.Rows.Count == pr_pcbacount.Value)
  161. {
  162. OperateResult.AppendText(">>拼版主码" + sn_code.Text + "绑定完成\n", Color.Green);
  163. sn_code.Text = "";
  164. }
  165. code.Text = "";
  166. }
  167. }
  168. else
  169. {
  170. if (ma_code.Text == "")
  171. {
  172. OperateResult.AppendText(">>请先选择工单号\n", Color.Red, code);
  173. return;
  174. }
  175. if (!LogicHandler.CheckSnRule(ma_code.Text, ma_prodcode.Text, code.Text, out ErrorMessage))
  176. {
  177. OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, code);
  178. return;
  179. }
  180. if (dh.CheckExist("smtbind", "sb_barcode='" + code.Text + "'"))
  181. {
  182. OperateResult.AppendText(">>条码" + code.Text + "已绑定\n", Color.Red, code);
  183. return;
  184. }
  185. sql.Clear();
  186. sql.Append("insert into smtbind(sb_id,sb_maincode,sb_barcode,sb_makecode,sb_prodcode,sb_inman,sb_indate,sb_status)");
  187. sql.Append("values(smtbind_seq.nextval,'" + sn_code.Text + "','" + code.Text + "','" + ma_code.Text + "','" + ma_prodcode.Text + "',");
  188. sql.Append("'" + User.UserCode + "',sysdate,0)");
  189. dh.ExecuteSql(sql.GetString(), "insert");
  190. RefreshData();
  191. sql.Clear();
  192. sql.Append("select rownum,sb_maincode,sb_barcode,sb_prodcode,sb_indate from SMTBIND where sb_maincode=(select sb_maincode from SMTBIND ");
  193. sql.Append("where sb_barcode='" + code.Text + "')");
  194. dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  195. BaseUtil.FillDgvWithDataTable(LabelDataGridView, dt1);
  196. if (LabelDataGridView.Rows.Count == pr_pcbacount.Value)
  197. {
  198. OperateResult.AppendText(">>拼版主码" + sn_code.Text + "绑定完成\n", Color.Green);
  199. sn_code.Text = "";
  200. }
  201. code.Text = "";
  202. }
  203. }
  204. }
  205. //勾选了下料的时候
  206. else if (UnLoading.Checked)
  207. {
  208. sql.Clear();
  209. sql.Append("select rownum,sb_maincode,sb_makecode,sb_barcode,sb_prodcode,sb_indate from SMTBIND where sb_maincode=(select sb_maincode from SMTBIND ");
  210. sql.Append("where sb_barcode='" + code.Text + "')");
  211. dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  212. if (dt1.Rows.Count > 0)
  213. {
  214. string sb_makecode = dt1.Rows[0]["sb_makecode"].ToString();
  215. if (ma_code.Text != "" && ma_code.Text != sb_makecode)
  216. {
  217. OperateResult.AppendText(">>条码已绑定至工单" + sb_makecode + "\n", Color.Red, code);
  218. return;
  219. }
  220. ma_code.Text = dt1.Rows[0]["sb_makecode"].ToString();
  221. LockMakeCode.Checked = true;
  222. ma_code_UserControlTextChanged(sender, e);
  223. BaseUtil.FillDgvWithDataTable(LabelDataGridView, dt1);
  224. string sb_maincode = dt1.Rows[0]["sb_maincode"].ToString();
  225. //如果采集的是主条码则拆分所有的条码
  226. if (sb_maincode == code.Text)
  227. {
  228. string closetab_confirm = MessageBox.Show(this.ParentForm, "确认拆解所有条码", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question).ToString();
  229. if (closetab_confirm == "Yes")
  230. {
  231. dh.ExecuteSql("delete from smtbind where sb_maincode='" + code.Text + "'", "delete");
  232. }
  233. }
  234. else
  235. {
  236. dh.ExecuteSql("delete from smtbind where sb_barcode='" + code.Text + "'", "delete");
  237. }
  238. sql.Clear();
  239. sql.Append("select rownum,sb_maincode,sb_barcode,sb_prodcode,sb_indate from SMTBIND where sb_maincode='" + sb_maincode + "'");
  240. dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  241. BaseUtil.FillDgvWithDataTable(LabelDataGridView, dt1);
  242. sn_code.Text = "";
  243. code.Text = "";
  244. RefreshData();
  245. }
  246. }
  247. }
  248. else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, code);
  249. }
  250. }
  251. private void ClearSn_code_Click(object sender, EventArgs e)
  252. {
  253. sn_code.Clear();
  254. SPID.Clear();
  255. TSN.Clear();
  256. CheckBarcode.Clear();
  257. CollectData.Clear();
  258. CollectDataSonCode.Clear();
  259. if (dt1 != null)
  260. BaseUtil.CleanDataTableData(dt1);
  261. BaseUtil.CleanDGVData(LabelDataGridView);
  262. OperateResult.AppendText(">>请采集序列号\n", Color.Black);
  263. }
  264. private void ma_code_UserControlTextChanged(object sender, EventArgs e)
  265. {
  266. if (ma_code.Text.Length > 5)
  267. {
  268. string ErrMessage = "";
  269. if (LogicHandler.CheckMakeStatus(ma_code.Text, out ErrMessage))
  270. {
  271. mcd_inqty.Text = "";
  272. mcd_remainqty.Text = "";
  273. sql.Clear();
  274. sql.Append("select ma_qty,ma_prodcode,pr_detail,pr_pcbacount ");
  275. sql.Append("from make left join makecraftdetail on mcd_macode=ma_code left join product on ma_prodcode=pr_code where ");
  276. sql.Append("ma_code='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'");
  277. DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  278. if (dt.Rows.Count > 0)
  279. BaseUtil.SetFormValue(Controls, dt);
  280. RefreshData();
  281. sql.Clear();
  282. sql.Append("select rownum,sb_maincode,sb_barcode,sb_prodcode,sb_makecode,sb_indate from SMTBIND where sb_maincode=(select sb_maincode from SMTBIND ");
  283. sql.Append("where sb_barcode='" + code.Text + "')");
  284. dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  285. BaseUtil.FillDgvWithDataTable(LabelDataGridView, dt1);
  286. }
  287. }
  288. }
  289. /// <summary>
  290. /// 刷新采集数据
  291. /// </summary>
  292. private void RefreshData()
  293. {
  294. sql.Clear();
  295. sql.Append("select count(1) mcd_inqty,max(ma_qty)-count(1) mcd_remainqty from smtbind left join make on ma_code= sb_makecode where sb_makecode='" + ma_code.Text + "' ");
  296. DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  297. if (dt.Rows.Count > 0)
  298. BaseUtil.SetFormValue(Controls, dt);
  299. }
  300. string mincode;
  301. int sncount;
  302. int startsn;
  303. string firstsn;
  304. string lastsn;
  305. private void Crbut_Click(object sender, EventArgs e)
  306. {
  307. if(ma_code.Text==""|| Prefix.Text == "" || Num.Text == "" || Rn.Text == "" || pr_pcbacount.Value == 0 || Rnle.Value == 0)
  308. {
  309. OperateResult.AppendText(">>有关信息未录入或拼版数,流水长度未维护\n", Color.Red);
  310. return;
  311. }
  312. try
  313. {
  314. sncount = int.Parse(Num.Text);
  315. int maqty = int.Parse(dh.getFieldDataByCondition("make", "ma_qty", "ma_code = '" + ma_code.Text + "'").ToString());
  316. int nowqty = int.Parse(dh.getFieldDataByCondition("smtbind", "count(1) cn ", "sb_makecode = '" + ma_code.Text + "'").ToString());
  317. if (nowqty + sncount > maqty)
  318. {
  319. OperateResult.AppendText(">>已绑定数" + nowqty + "+待绑定数" + sncount + "大于工单数" + maqty + "不允许操作\n", Color.Red);
  320. return;
  321. }
  322. if (DSCIN.Checked)
  323. {
  324. startsn = int.Parse(Rn.Text);
  325. }
  326. else {
  327. startsn = int.Parse(Hex2Ten(Rn.Text));
  328. }
  329. if (sncount % pr_pcbacount.Value != 0)
  330. {
  331. OperateResult.AppendText(">>数量不是拼版数倍数\n", Color.Red);
  332. return;
  333. }
  334. if (DSCIN.Checked)
  335. {
  336. if ((startsn + (sncount - 1)*(sqit.Value)).ToString().Length > Rnle.Value)
  337. {
  338. OperateResult.AppendText(">>流水号长度超过设置长度\n", Color.Red);
  339. return;
  340. }
  341. }
  342. else {
  343. if (ConvertNumToHex((startsn + (sncount - 1) * (sqit.Value )).ToString()).Length > Rnle.Value)
  344. {
  345. OperateResult.AppendText(">>流水号长度超过设置长度\n", Color.Red);
  346. return;
  347. }
  348. }
  349. if (DSCIN.Checked)
  350. {
  351. firstsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), startsn.ToString());
  352. lastsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), (startsn + (sncount - 1) * (sqit.Value)).ToString());
  353. }
  354. else {
  355. firstsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), ConvertNumToHex(startsn.ToString()));
  356. lastsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), ConvertNumToHex((startsn + (sncount - 1) * (sqit.Value )).ToString()));
  357. }
  358. if (dh.CheckExist("SMTBIND", "sb_barcode between '"+ firstsn + "' and '"+ lastsn + "' "))
  359. {
  360. OperateResult.AppendText(">>SN导入重复\n", Color.Red);
  361. return;
  362. }
  363. thread = new Thread(NewPrint);
  364. SetLoadingWindow stw = new SetLoadingWindow(thread, "请稍候...");
  365. BaseUtil.SetFormCenter(stw);
  366. stw.ShowDialog();
  367. RefreshData();
  368. }
  369. catch (Exception ex)
  370. {
  371. OperateResult.AppendText(">>"+ex.Message+"\n", Color.Red);
  372. }
  373. }
  374. private void NewPrint()
  375. {
  376. List<string> maincodelist = new List<string>();
  377. List<string> nowcodelist = new List<string>();
  378. if (DSCIN.Checked)
  379. {
  380. for (int i = 0; i < sncount; i++)
  381. {
  382. string nowsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), (startsn + i*(sqit.Value)).ToString());
  383. if (i % pr_pcbacount.Value == 0)
  384. mincode = nowsn;
  385. maincodelist.Add(mincode);
  386. nowcodelist.Add(nowsn);
  387. }
  388. }
  389. else {
  390. for (int i = 0; i < sncount; i++)
  391. {
  392. string nowsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), ConvertNumToHex((startsn + i * (sqit.Value )).ToString()));
  393. if (i % pr_pcbacount.Value == 0)
  394. mincode = nowsn;
  395. maincodelist.Add(mincode);
  396. nowcodelist.Add(nowsn);
  397. }
  398. }
  399. sql.Clear();
  400. sql.Append("insert into smtbind(sb_id,sb_maincode,sb_barcode,sb_makecode,sb_prodcode,sb_inman,sb_indate,sb_status)");
  401. sql.Append("values(smtbind_seq.nextval,:maincode,:nowcode,'" + ma_code.Text + "','" + ma_prodcode.Text + "',");
  402. sql.Append("'" + User.UserCode + "',sysdate,0)");
  403. dh.BatchInsert(sql.GetString(), new string[] { "maincode", "nowcode" }, maincodelist.ToArray(), nowcodelist.ToArray());
  404. MessageBox.Show("导入成功!");
  405. OperateResult.AppendText(">>生成完毕\n", Color.Black);
  406. OperateResult.AppendText(">>起始号:" + firstsn + "\n", Color.Black);
  407. OperateResult.AppendText(">>截止号:" + lastsn + "\n", Color.Black);
  408. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "SMT拼版绑定", firstsn+"到"+lastsn+"绑定成功,数量"+ sncount+",间隔"+ sqit.Value, "","");
  409. }
  410. private static string lpad(int length, string number)
  411. {
  412. while (number.Length < length)
  413. {
  414. number = "0" + number;
  415. }
  416. number = number.Substring(number.Length - length, length);
  417. return number;
  418. }
  419. private void Debut_Click(object sender, EventArgs e)
  420. {
  421. //if (!(ma_code.Text == ""))
  422. //{
  423. // string logout_confirm = MessageBox.Show(this.ParentForm, "是否删除此工单拼版绑定记录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question).ToString();
  424. // if (logout_confirm == "Yes")
  425. // {
  426. // dh.ExecuteSql("delete SMTBIND where sb_makecode ='"+ma_code.Text+"'", "delete");
  427. // OperateResult.AppendText(">>工单"+ma_code.Text+ "拼版绑定记录清除成功\n", Color.Green);
  428. // }
  429. //}
  430. //else {
  431. // OperateResult.AppendText(">>工单号不能为空\n", Color.Red);
  432. //}
  433. try
  434. {
  435. sncount = int.Parse(Num.Text);
  436. if (DSCIN.Checked)
  437. {
  438. startsn = int.Parse(Rn.Text);
  439. }
  440. else
  441. {
  442. startsn = int.Parse(Hex2Ten(Rn.Text));
  443. }
  444. if (sncount % pr_pcbacount.Value != 0)
  445. {
  446. OperateResult.AppendText(">>数量不是拼版数倍数\n", Color.Red);
  447. return;
  448. }
  449. if (DSCIN.Checked)
  450. {
  451. if ((startsn + (sncount - 1) * (sqit.Value)).ToString().Length > Rnle.Value)
  452. {
  453. OperateResult.AppendText(">>流水号长度超过设置长度\n", Color.Red);
  454. return;
  455. }
  456. }
  457. else
  458. {
  459. if (ConvertNumToHex((startsn + (sncount - 1) * (sqit.Value)).ToString()).Length > Rnle.Value)
  460. {
  461. OperateResult.AppendText(">>流水号长度超过设置长度\n", Color.Red);
  462. return;
  463. }
  464. }
  465. if (DSCIN.Checked)
  466. {
  467. firstsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), startsn.ToString());
  468. lastsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), (startsn + (sncount - 1) * (sqit.Value)).ToString());
  469. }
  470. else
  471. {
  472. firstsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), ConvertNumToHex(startsn.ToString()));
  473. lastsn = Prefix.Text + lpad(int.Parse(Rnle.Value.ToString()), ConvertNumToHex((startsn + (sncount - 1) * (sqit.Value)).ToString()));
  474. }
  475. string logout_confirm = MessageBox.Show(this.ParentForm, "是否删除SN: "+ firstsn + " 到 "+ lastsn + " 拼版绑定记录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question).ToString();
  476. if (logout_confirm == "Yes")
  477. {
  478. dh.ExecuteSql("delete SMTBIND where sb_barcode between '" + firstsn + "' and '" + lastsn + "'", "delete");
  479. OperateResult.AppendText(">>SN: " + firstsn + " 到 " + lastsn + " 拼版绑定记录清除成功\n", Color.Green);
  480. }
  481. }
  482. catch (Exception ex)
  483. {
  484. OperateResult.AppendText(">>" + ex.Message + "\n", Color.Red);
  485. }
  486. }
  487. /// <summary>
  488. /// 从十进制转换到十六进制
  489. /// </summary>
  490. /// <param name="ten"></param>
  491. /// <returns></returns>
  492. public static string ConvertNumToHex(string ten)
  493. {
  494. ulong Numb = Convert.ToUInt64(ten);
  495. ulong divValue, resValue;
  496. string hex = "";
  497. do
  498. {
  499. divValue = (ulong)Math.Floor((decimal)(Numb / 16));
  500. resValue = Numb % 16;
  501. hex = GetNumb(resValue) + hex;
  502. Numb = divValue;
  503. }
  504. while (Numb >= 16);
  505. if (Numb != 0)
  506. hex = GetNumb(Numb) + hex;
  507. return hex;
  508. }
  509. public static string GetNumb(ulong Numb)
  510. {
  511. switch (Numb)
  512. {
  513. case 0:
  514. case 1:
  515. case 2:
  516. case 3:
  517. case 4:
  518. case 5:
  519. case 6:
  520. case 7:
  521. case 8:
  522. case 9:
  523. return Numb.ToString();
  524. case 10:
  525. return "A";
  526. case 11:
  527. return "B";
  528. case 12:
  529. return "C";
  530. case 13:
  531. return "D";
  532. case 14:
  533. return "E";
  534. case 15:
  535. return "F";
  536. default:
  537. return "";
  538. }
  539. }
  540. public static string Hex2Ten(string hex)
  541. {
  542. int ten = 0;
  543. for (int i = 0, j = hex.Length - 1; i < hex.Length; i++)
  544. {
  545. ten += HexChar2Value(hex.Substring(i, 1)) * ((int)Math.Pow(16, j));
  546. j--;
  547. }
  548. return ten.ToString();
  549. }
  550. public static int HexChar2Value(string hexChar)
  551. {
  552. switch (hexChar)
  553. {
  554. case "0":
  555. case "1":
  556. case "2":
  557. case "3":
  558. case "4":
  559. case "5":
  560. case "6":
  561. case "7":
  562. case "8":
  563. case "9":
  564. return Convert.ToInt32(hexChar);
  565. case "a":
  566. case "A":
  567. return 10;
  568. case "b":
  569. case "B":
  570. return 11;
  571. case "c":
  572. case "C":
  573. return 12;
  574. case "d":
  575. case "D":
  576. return 13;
  577. case "e":
  578. case "E":
  579. return 14;
  580. case "f":
  581. case "F":
  582. return 15;
  583. default:
  584. return 0;
  585. }
  586. }
  587. private void normalButton2_Click(object sender, EventArgs e)
  588. {
  589. DialogResult result = openFileDialog1.ShowDialog();
  590. if (result == DialogResult.OK)
  591. {
  592. textBox1.Text = openFileDialog1.FileName;
  593. }
  594. }
  595. private void normalButton3_Click(object sender, EventArgs e)
  596. {
  597. if (ma_code.Text == "" || textBox1.Text == "" || ma_prodcode.Text == "")
  598. {
  599. MessageBox.Show("工单号,产品编号与文件地址不可为空");
  600. return;
  601. }
  602. dt = eh.ImportExcel(textBox1.Text, "test");
  603. int number = 0;
  604. //for (int i = 0; i < dt.Rows.Count; i++)
  605. //{
  606. // MessageBox.Show(dt.Rows[i]["RefDes"].ToString()+":"+ dt.Rows[i]["Layer"].ToString());
  607. //}
  608. //BaseUtil.FillDgvWithDataTable(LabelDataGridView, dt);
  609. List<string> maincodelist = new List<string>();
  610. List<string> nowcodelist = new List<string>();
  611. for (int i = 0; i < dt.Rows.Count; i++)
  612. {
  613. if (dt.Rows[i]["工单"].ToString().Trim() != ma_code.Text)
  614. {
  615. OperateResult.AppendText(">>镭雕日志工单与所选工单不一致,请检查\n", Color.Red);
  616. return;
  617. }
  618. if (dt.Rows[i]["工单"].ToString().Trim() == ma_code.Text
  619. && dt.Rows[i]["拼板号"].ToString().Trim().Length >2
  620. && dt.Rows[i]["打码内容"].ToString().Trim()!= ma_code.Text
  621. && dt.Rows[i]["打码内容"].ToString().Trim().Length > 7
  622. && dt.Rows[i]["拼板号"].ToString().Trim().Substring(0, 2) == dt.Rows[i]["打码内容"].ToString().Trim().Substring(0, 2))
  623. {
  624. maincodelist.Add(dt.Rows[i]["拼板号"].ToString().Trim());
  625. nowcodelist.Add(dt.Rows[i]["打码内容"].ToString().Trim());
  626. //number++;
  627. }
  628. }
  629. IPHostEntry IpEntry = Dns.GetHostEntry(Dns.GetHostName());
  630. string IPAddress = "";
  631. for (int i = 0; i < IpEntry.AddressList.Length; i++)
  632. {
  633. if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
  634. IPAddress = IpEntry.AddressList[i].ToString();
  635. }
  636. sql.Clear();
  637. sql.Append("insert into smtbind_temp(MAINCODE,BARCODE,MAKECODE)");
  638. sql.Append("values(:maincode,:nowcode,'"+ma_code.Text+"')");
  639. dh.BatchInsert(sql.GetString(), new string[] { "maincode", "nowcode" }, maincodelist.ToArray(), nowcodelist.ToArray());
  640. number = int.Parse(dh.getFieldDataByCondition("smtbind_temp", "count(1) cn ", "BARCODE not in (select sb_barcode from smtbind ) and MAKECODE = '"+ma_code.Text+"'").ToString());
  641. int maqty = int.Parse(dh.getFieldDataByCondition("make", "ma_qty", "ma_code = '" + ma_code.Text + "'").ToString());
  642. int nowqty = int.Parse(dh.getFieldDataByCondition("smtbind", "count(1) cn ", "sb_makecode = '" + ma_code.Text + "'").ToString());
  643. if (nowqty + number > maqty)
  644. {
  645. OperateResult.AppendText(">>已绑定数" + nowqty + "+待绑定数" + number + "大于工单数" + maqty + "不允许操作\n", Color.Red);
  646. dh.ExecuteSql("delete SMTBIND_TEMP where MAKECODE = '"+ma_code.Text+"'", "delete");
  647. return;
  648. }
  649. sql.Clear();
  650. sql.Append("merge into smtbind using (select * from SMTBIND_TEMP where MAKECODE = '"+ma_code.Text+"') on (sb_barcode = barcode) when not MATCHED then insert (sb_id,sb_maincode,sb_barcode,sb_makecode,sb_prodcode,sb_inman,sb_indate,sb_status)");
  651. sql.Append(" values (SMTBIND_seq.nextval ,maincode,barcode,'" + ma_code.Text + "','"+ma_prodcode.Text+"','"+User.UserCode+"',sysdate,0)");
  652. dh.ExecuteSql(sql.GetString(), "insert");
  653. dh.ExecuteSql("delete SMTBIND_TEMP where MAKECODE = '" + ma_code.Text + "'", "delete");
  654. MessageBox.Show("导入成功"+ number + "条!");
  655. OperateResult.AppendText(">>导入成功" + number + "条!\n", Color.Green);
  656. LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "SMT拼版绑定", $"镭雕日志绑定拼板成功,已绑定: {number}", "", "");
  657. RefreshData();
  658. }
  659. }
  660. }