Make_SMTBind.cs 29 KB

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