SystemSetting_PrinterTest.cs 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. using Seagull.BarTender.Print;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Drawing.Printing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Text.RegularExpressions;
  11. using System.Windows.Forms;
  12. using UAS_MES_NEW.DataOperate;
  13. using UAS_MES_NEW.Entity;
  14. using UAS_MES_NEW.PublicMethod;
  15. using UAS_MES_NEW.Query;
  16. using static System.Runtime.CompilerServices.RuntimeHelpers;
  17. namespace UAS_MES_NEW.SystemSetting
  18. {
  19. public partial class SystemSetting_PrinterTest : Form
  20. {
  21. Engine engine = new Engine();
  22. LabelFormatDocument format;
  23. DataHelper dh = SystemInf.dh;
  24. DataTable Dbfind;
  25. public SystemSetting_PrinterTest()
  26. {
  27. InitializeComponent();
  28. }
  29. private void PrintTest_Click(object sender, EventArgs e)
  30. {
  31. PrintDocument print = new PrintDocument();
  32. print.PrinterSettings.PrinterName = PrinterList.Text;
  33. print.PrintPage += Print_PrintPage;
  34. print.Print();
  35. }
  36. private void Print_PrintPage(object sender, PrintPageEventArgs e)
  37. {
  38. Graphics g = e.Graphics;
  39. float leftMargin = 10f; //左边距
  40. SolidBrush myBrush = new SolidBrush(System.Drawing.Color.Black);//刷子
  41. float yPosition = 5f;//行定位
  42. Font printFont = new Font("微软雅黑", 20f, FontStyle.Bold);//设置字体
  43. yPosition += printFont.GetHeight(g);//另起一行
  44. g.DrawString("成功连接此打印机", printFont, myBrush, leftMargin, yPosition, new StringFormat());
  45. }
  46. private void Setting_Click(object sender, EventArgs e)
  47. {
  48. PrintDialog printd = new PrintDialog();
  49. printd.PrinterSettings.PrinterName = PrinterList.Text;
  50. printd.ShowDialog();
  51. }
  52. private void Export_Click(object sender, EventArgs e)
  53. {
  54. if (!dh.CheckExist("make", "ma_code='" + ma_code.Text + "'"))
  55. {
  56. MessageBox.Show("工单号不存在");
  57. return;
  58. }
  59. /*DataTable dt = (DataTable)dh.ExecuteSql("select pr_machinetype from make left join product on ma_prodcode=pr_code where ma_code='" + ma_code.Text + "'", "select");
  60. if (dt.Rows.Count > 0)
  61. {
  62. string pr_machinetype = dt.Rows[0]["pr_machinetype"].ToString();
  63. if (pr_machinetype != Prefix.Text)
  64. {
  65. MessageBox.Show("前缀和产品机型" + pr_machinetype + "不匹配");
  66. return;
  67. }
  68. }*/
  69. if (OneColumn.Checked)
  70. {
  71. format = engine.Documents.Open(Application.StartupPath + "/单排.btw");
  72. for (int i = int.Parse(Rn.Text); i < (int.Parse(Num.Text) + int.Parse(Rn.Text)); i = i + 1)
  73. {
  74. int temp = i;
  75. for (int j = 0; j < format.SubStrings.Count; j++)
  76. {
  77. switch (format.SubStrings[j].Name)
  78. {
  79. case "SN":
  80. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp).ToString()));
  81. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  82. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  83. break;
  84. case "COLOR":
  85. format.SubStrings[j].Value = Color.Text;
  86. break;
  87. case "MACHINE":
  88. format.SubStrings[j].Value = MachineType.Text;
  89. break;
  90. case "RAM":
  91. format.SubStrings[j].Value = Ram.Text;
  92. break;
  93. default:
  94. break;
  95. }
  96. }
  97. format.PrintSetup.PrinterName = PrinterList.Text;
  98. format.PrintSetup.IdenticalCopiesOfLabel = 1;
  99. format.Print();
  100. DataTable dt = (DataTable)dh.ExecuteSql("select ma_qty,ma_prodcode,pr_detail,ma_printnum from make left join product on ma_prodcode=pr_code left join (select count(1)ma_printnum,msl_makecode from makesnlist where msl_printstatus=-1 group by msl_makecode) on msl_makecode=ma_code where ma_code='" + ma_code.Text + "'", "select");
  101. if (dt.Rows.Count > 0)
  102. {
  103. pr_code.Text = dt.Rows[0]["ma_prodcode"].ToString();
  104. ma_qty.Text = dt.Rows[0]["ma_qty"].ToString();
  105. ma_printcount.Text = dt.Rows[0]["ma_printnum"].ToString();
  106. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  107. }
  108. }
  109. }
  110. if (TwoColumn.Checked)
  111. {
  112. format = engine.Documents.Open(Application.StartupPath + "/双排.btw");
  113. for (int i = int.Parse(Rn.Text); i < (int.Parse(Num.Text) + int.Parse(Rn.Text)); i = i + 2)
  114. {
  115. int temp = i;
  116. for (int j = 0; j < format.SubStrings.Count; j++)
  117. {
  118. switch (format.SubStrings[j].Name)
  119. {
  120. case "SN":
  121. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp).ToString()));
  122. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  123. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  124. break;
  125. case "SN2":
  126. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 1).ToString()));
  127. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  128. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  129. break;
  130. default:
  131. break;
  132. }
  133. }
  134. format.PrintSetup.PrinterName = PrinterList.Text;
  135. format.PrintSetup.IdenticalCopiesOfLabel = 1;
  136. format.Print();
  137. DataTable dt = (DataTable)dh.ExecuteSql("select ma_qty,ma_prodcode,pr_detail,ma_printnum from make left join product on ma_prodcode=pr_code left join (select count(1)ma_printnum,msl_makecode from makesnlist where msl_printstatus=-1 group by msl_makecode) on msl_makecode=ma_code where ma_code='" + ma_code.Text + "'", "select");
  138. if (dt.Rows.Count > 0)
  139. {
  140. pr_code.Text = dt.Rows[0]["ma_prodcode"].ToString();
  141. ma_qty.Text = dt.Rows[0]["ma_qty"].ToString();
  142. ma_printcount.Text = dt.Rows[0]["ma_printnum"].ToString();
  143. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  144. }
  145. }
  146. }
  147. if (ThreeColumn.Checked)
  148. {
  149. format = engine.Documents.Open(Application.StartupPath + "/Label.btw");
  150. for (int i = int.Parse(Rn.Text); i < (int.Parse(Num.Text) + int.Parse(Rn.Text)); i = i + 3)
  151. {
  152. int temp = i;
  153. for (int j = 0; j < format.SubStrings.Count; j++)
  154. {
  155. switch (format.SubStrings[j].Name)
  156. {
  157. case "SN":
  158. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp).ToString()));
  159. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  160. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  161. break;
  162. case "SN2":
  163. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 1).ToString()));
  164. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  165. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  166. break;
  167. case "SN3":
  168. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 2).ToString()));
  169. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  170. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  171. break;
  172. default:
  173. break;
  174. }
  175. }
  176. format.PrintSetup.PrinterName = PrinterList.Text;
  177. format.PrintSetup.IdenticalCopiesOfLabel = 1;
  178. format.Print();
  179. DataTable dt = (DataTable)dh.ExecuteSql("select ma_qty,ma_prodcode,pr_detail,ma_printnum from make left join product on ma_prodcode=pr_code left join (select count(1)ma_printnum,msl_makecode from makesnlist where msl_printstatus=-1 group by msl_makecode) on msl_makecode=ma_code where ma_code='" + ma_code.Text + "'", "select");
  180. if (dt.Rows.Count > 0)
  181. {
  182. pr_code.Text = dt.Rows[0]["ma_prodcode"].ToString();
  183. ma_qty.Text = dt.Rows[0]["ma_qty"].ToString();
  184. ma_printcount.Text = dt.Rows[0]["ma_printnum"].ToString();
  185. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  186. }
  187. }
  188. }
  189. if (FourColumn.Checked)
  190. {
  191. format = engine.Documents.Open(Application.StartupPath + "/四排.btw");
  192. for (int i = int.Parse(Rn.Text); i < (int.Parse(Num.Text) + int.Parse(Rn.Text)); i = i + 4)
  193. {
  194. int temp = i;
  195. for (int j = 0; j < format.SubStrings.Count; j++)
  196. {
  197. switch (format.SubStrings[j].Name)
  198. {
  199. case "SN":
  200. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp).ToString()));
  201. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  202. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  203. break;
  204. case "SN2":
  205. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 1).ToString()));
  206. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  207. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  208. break;
  209. case "SN3":
  210. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 2).ToString()));
  211. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  212. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  213. break;
  214. case "SN4":
  215. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 3).ToString()));
  216. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  217. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  218. break;
  219. default:
  220. break;
  221. }
  222. }
  223. format.PrintSetup.PrinterName = PrinterList.Text;
  224. format.PrintSetup.IdenticalCopiesOfLabel = 1;
  225. format.Print();
  226. DataTable dt = (DataTable)dh.ExecuteSql("select ma_qty,ma_prodcode,pr_detail,ma_printnum from make left join product on ma_prodcode=pr_code left join (select count(1)ma_printnum,msl_makecode from makesnlist where msl_printstatus=-1 group by msl_makecode) on msl_makecode=ma_code where ma_code='" + ma_code.Text + "'", "select");
  227. if (dt.Rows.Count > 0)
  228. {
  229. pr_code.Text = dt.Rows[0]["ma_prodcode"].ToString();
  230. ma_qty.Text = dt.Rows[0]["ma_qty"].ToString();
  231. ma_printcount.Text = dt.Rows[0]["ma_printnum"].ToString();
  232. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  233. }
  234. }
  235. }
  236. if (FiveColumn2.Checked)
  237. {
  238. format = engine.Documents.Open(Application.StartupPath + "/五排13_13.btw");
  239. for (int i = int.Parse(Rn.Text); i < (int.Parse(Num.Text) + int.Parse(Rn.Text)); i = i + 5)
  240. {
  241. int temp = i;
  242. for (int j = 0; j < format.SubStrings.Count; j++)
  243. {
  244. switch (format.SubStrings[j].Name)
  245. {
  246. case "SN":
  247. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp).ToString()));
  248. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  249. {
  250. return;
  251. }
  252. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  253. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  254. break;
  255. case "SN2":
  256. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 1).ToString()));
  257. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  258. {
  259. return;
  260. }
  261. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  262. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  263. break;
  264. case "SN3":
  265. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 2).ToString()));
  266. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  267. {
  268. return;
  269. }
  270. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  271. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  272. break;
  273. case "SN4":
  274. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 3).ToString()));
  275. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  276. {
  277. return;
  278. }
  279. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  280. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  281. break;
  282. case "SN5":
  283. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 4).ToString()));
  284. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  285. {
  286. return;
  287. }
  288. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  289. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  290. break;
  291. default:
  292. break;
  293. }
  294. }
  295. format.PrintSetup.PrinterName = PrinterList.Text;
  296. format.PrintSetup.IdenticalCopiesOfLabel = 1;
  297. format.Print();
  298. DataTable dt = (DataTable)dh.ExecuteSql("select ma_qty,ma_prodcode,pr_detail,ma_printnum from make left join product on ma_prodcode=pr_code left join (select count(1)ma_printnum,msl_makecode from makesnlist where msl_printstatus=-1 group by msl_makecode) on msl_makecode=ma_code where ma_code='" + ma_code.Text + "'", "select");
  299. if (dt.Rows.Count > 0)
  300. {
  301. pr_code.Text = dt.Rows[0]["ma_prodcode"].ToString();
  302. ma_qty.Text = dt.Rows[0]["ma_qty"].ToString();
  303. ma_printcount.Text = dt.Rows[0]["ma_printnum"].ToString();
  304. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  305. }
  306. }
  307. }
  308. if (FiveColumn1.Checked)
  309. {
  310. format = engine.Documents.Open(Application.StartupPath + "/五排15_15.btw");
  311. for (int i = int.Parse(Rn.Text); i < (int.Parse(Num.Text) + int.Parse(Rn.Text)); i = i + 5)
  312. {
  313. int temp = i;
  314. for (int j = 0; j < format.SubStrings.Count; j++)
  315. {
  316. switch (format.SubStrings[j].Name)
  317. {
  318. case "SN":
  319. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp).ToString()));
  320. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  321. {
  322. return;
  323. }
  324. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  325. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  326. break;
  327. case "SN2":
  328. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 1).ToString()));
  329. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  330. {
  331. return;
  332. }
  333. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  334. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  335. break;
  336. case "SN3":
  337. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 2).ToString()));
  338. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  339. {
  340. return;
  341. }
  342. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  343. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  344. break;
  345. case "SN4":
  346. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 3).ToString()));
  347. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  348. {
  349. return;
  350. }
  351. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  352. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  353. break;
  354. case "SN5":
  355. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 4).ToString()));
  356. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  357. {
  358. return;
  359. }
  360. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  361. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  362. break;
  363. default:
  364. break;
  365. }
  366. }
  367. format.PrintSetup.PrinterName = PrinterList.Text;
  368. format.PrintSetup.IdenticalCopiesOfLabel = 1;
  369. format.Print();
  370. DataTable dt = (DataTable)dh.ExecuteSql("select ma_qty,ma_prodcode,pr_detail,ma_printnum from make left join product on ma_prodcode=pr_code left join (select count(1)ma_printnum,msl_makecode from makesnlist where msl_printstatus=-1 group by msl_makecode) on msl_makecode=ma_code where ma_code='" + ma_code.Text + "'", "select");
  371. if (dt.Rows.Count > 0)
  372. {
  373. pr_code.Text = dt.Rows[0]["ma_prodcode"].ToString();
  374. ma_qty.Text = dt.Rows[0]["ma_qty"].ToString();
  375. ma_printcount.Text = dt.Rows[0]["ma_printnum"].ToString();
  376. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  377. }
  378. }
  379. }
  380. if (FiveColumn.Checked)
  381. {
  382. format = engine.Documents.Open(Application.StartupPath + "/五排15_10.btw");
  383. for (int i = int.Parse(Rn.Text); i < (int.Parse(Num.Text) + int.Parse(Rn.Text)); i = i + 5)
  384. {
  385. int temp = i;
  386. for (int j = 0; j < format.SubStrings.Count; j++)
  387. {
  388. switch (format.SubStrings[j].Name)
  389. {
  390. case "SN":
  391. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp).ToString()));
  392. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  393. {
  394. return;
  395. }
  396. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  397. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  398. break;
  399. case "SN2":
  400. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 1).ToString()));
  401. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  402. {
  403. return;
  404. }
  405. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  406. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  407. break;
  408. case "SN3":
  409. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 2).ToString()));
  410. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  411. {
  412. return;
  413. }
  414. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  415. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  416. break;
  417. case "SN4":
  418. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 3).ToString()));
  419. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  420. {
  421. return;
  422. }
  423. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  424. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  425. break;
  426. case "SN5":
  427. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 4).ToString()));
  428. if (dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_printstatus='-1'"))
  429. {
  430. return;
  431. }
  432. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  433. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  434. break;
  435. default:
  436. break;
  437. }
  438. }
  439. format.PrintSetup.PrinterName = PrinterList.Text;
  440. format.PrintSetup.IdenticalCopiesOfLabel = 1;
  441. format.Print();
  442. DataTable dt = (DataTable)dh.ExecuteSql("select ma_qty,ma_prodcode,pr_detail,ma_printnum from make left join product on ma_prodcode=pr_code left join (select count(1)ma_printnum,msl_makecode from makesnlist where msl_printstatus=-1 group by msl_makecode) on msl_makecode=ma_code where ma_code='" + ma_code.Text + "'", "select");
  443. if (dt.Rows.Count > 0)
  444. {
  445. pr_code.Text = dt.Rows[0]["ma_prodcode"].ToString();
  446. ma_qty.Text = dt.Rows[0]["ma_qty"].ToString();
  447. ma_printcount.Text = dt.Rows[0]["ma_printnum"].ToString();
  448. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  449. }
  450. }
  451. }
  452. if (EightColumn.Checked)
  453. {
  454. format = engine.Documents.Open(Application.StartupPath + "/八排.btw");
  455. for (int i = int.Parse(Rn.Text); i < (int.Parse(Num.Text) + int.Parse(Rn.Text)); i = i + 8)
  456. {
  457. int temp = i;
  458. for (int j = 0; j < format.SubStrings.Count; j++)
  459. {
  460. switch (format.SubStrings[j].Name)
  461. {
  462. case "SN":
  463. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp).ToString()));
  464. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  465. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  466. break;
  467. case "SN2":
  468. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 1).ToString()));
  469. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  470. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  471. break;
  472. case "SN3":
  473. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 2).ToString()));
  474. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  475. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  476. break;
  477. case "SN4":
  478. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 3).ToString()));
  479. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  480. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  481. break;
  482. case "SN5":
  483. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 4).ToString()));
  484. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  485. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  486. break;
  487. case "SN6":
  488. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 5).ToString()));
  489. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  490. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  491. break;
  492. case "SN7":
  493. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 6).ToString()));
  494. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  495. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  496. break;
  497. case "SN8":
  498. format.SubStrings[j].Value = (ma_code.Text + Date.Value.ToString("yyMMdd") + lpad(int.Parse(numericUpDown1.Value.ToString()), (temp + 7).ToString()));
  499. if (!dh.CheckExist("makesnlist", "msl_sncode='" + format.SubStrings[j].Value + "' and msl_makecode='" + ma_code.Text + "'"))
  500. dh.ExecuteSql("insert into makesnlist(msl_id,msl_indate,msl_makecode,msl_sncode,msl_type,msl_printstatus)values(makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "','" + format.SubStrings[j].Value + "','before',-1)", "insert");
  501. break;
  502. default:
  503. break;
  504. }
  505. }
  506. format.PrintSetup.PrinterName = PrinterList.Text;
  507. format.PrintSetup.IdenticalCopiesOfLabel = 1;
  508. format.Print();
  509. DataTable dt = (DataTable)dh.ExecuteSql("select ma_qty,ma_prodcode,pr_detail,ma_printnum from make left join product on ma_prodcode=pr_code left join (select count(1)ma_printnum,msl_makecode from makesnlist where msl_printstatus=-1 group by msl_makecode) on msl_makecode=ma_code where ma_code='" + ma_code.Text + "'", "select");
  510. if (dt.Rows.Count > 0)
  511. {
  512. pr_code.Text = dt.Rows[0]["ma_prodcode"].ToString();
  513. ma_qty.Text = dt.Rows[0]["ma_qty"].ToString();
  514. ma_printcount.Text = dt.Rows[0]["ma_printnum"].ToString();
  515. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  516. }
  517. }
  518. }
  519. }
  520. private static string lpad(int length, string number)
  521. {
  522. while (number.Length < length)
  523. {
  524. number = "0" + number;
  525. }
  526. number = number.Substring(number.Length - length, length);
  527. return number;
  528. }
  529. private void SystemSetting_PrinterTest_Load(object sender, EventArgs e)
  530. {
  531. engine.Start();
  532. ma_code.TableName = " make left join product on ma_prodcode=pr_code";
  533. ma_code.SelectField = "ma_code # 工单编号,pr_code # 产品编号,pr_spec # 型号";
  534. ma_code.FormName = Name;
  535. ma_code.SetValueField = new string[] { "ma_code" };
  536. ma_code.Condition = "ma_statuscode='STARTED'";
  537. ma_code.DbChange += pr_code_DbChange;
  538. }
  539. private void pr_code_DbChange(object sender, EventArgs e)
  540. {
  541. Dbfind = ma_code.ReturnData;
  542. BaseUtil.SetFormValue(this.Controls, Dbfind);
  543. DataTable dt = (DataTable)dh.ExecuteSql("select ma_submodel,ma_color,ma_qty,ma_prodcode,pr_detail,ma_printnum from make left join product on ma_prodcode=pr_code left join (select count(1)ma_printnum,mil_makecode from makeimeilist where mil_printstatus=-1 group by mil_makecode) on mil_makecode=ma_code where ma_code='" + ma_code.Text + "'", "select");
  544. if (dt.Rows.Count > 0)
  545. {
  546. Color.Text = dt.Rows[0]["ma_color"].ToString();
  547. MachineType.Text = dt.Rows[0]["ma_submodel"].ToString();
  548. pr_code.Text = dt.Rows[0]["ma_prodcode"].ToString();
  549. ma_qty.Text = dt.Rows[0]["ma_qty"].ToString();
  550. ma_printcount.Text = dt.Rows[0]["ma_printnum"].ToString();
  551. pr_detail.Text = dt.Rows[0]["pr_detail"].ToString();
  552. }
  553. }
  554. private void OneColumn_CheckedChanged(object sender, EventArgs e)
  555. {
  556. }
  557. int custserialnum = 0;
  558. private void Gen_SN_Click(object sender, EventArgs e)
  559. {
  560. string Prefix = "";
  561. string Suffix = "";
  562. //获取编码规则
  563. if (!dh.CheckExist("make", "ma_code='" + ma_code.Text + "'"))
  564. {
  565. MessageBox.Show("工单号不存在");
  566. return;
  567. }
  568. DataTable dt = (DataTable)dh.ExecuteSql("select pr_exbarcode,ma_qty from make left join product on ma_prodcode=pr_code where ma_code='" + ma_code.Text + "'", "select");
  569. string pr_exbarcode = "";
  570. string ma_qty = "";
  571. if (dt.Rows.Count > 0)
  572. {
  573. pr_exbarcode = dt.Rows[0]["pr_exbarcode"].ToString();
  574. ma_qty = dt.Rows[0]["ma_qty"].ToString();
  575. }
  576. if (dh.getRowCount("makesnlist", "msl_makecode='" + ma_code.Text + "' and msl_type='转号前'") + int.Parse(Num.Text) > int.Parse(ma_qty))
  577. {
  578. MessageBox.Show("工单号" + ma_code.Text + "生产序列号超出工单数");
  579. return;
  580. }
  581. DataTable Nr = (DataTable)dh.ExecuteSql("select nrd_detno,nrd_name,nrd_type,nrd_radix,nrd_sql,nrd_length,nrd_content,nvl(nr_changenum,0)nr_changenum from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_code='" + pr_exbarcode + "' order by nrd_detno", "select");
  582. //如果没有则取公共规则
  583. if (Nr.Rows.Count == 0)
  584. Nr = (DataTable)dh.ExecuteSql("select nrd_detno,nrd_name,nrd_radix,nrd_type,nrd_sql,nrd_length,nrd_content,nvl(nr_changenum,0)nr_changenum from NoRuleDetail left join norule on nrd_nrid=nr_id where nr_custcode is null and nr_isdefault <> 0 order by nrd_detno", "select");
  585. //用于过滤参数的正则表达式
  586. Regex match = new Regex("{\\w+}");
  587. //用于存放每一项的明细的数据
  588. string[] NrData = new string[Nr.Rows.Count];
  589. //流水号的索引
  590. int SerialNumIndex = 0;
  591. //流水长度
  592. int SerialNumLength = 0;
  593. //存放键值对
  594. int Radix = 10;
  595. string PrefixFixed = "";
  596. string char_out = "";
  597. string nr_changenum = Nr.Rows[0]["nr_changenum"].ToString();
  598. //如果是
  599. if (nr_changenum != "-1")
  600. {
  601. for (int m = 0; m < Nr.Rows.Count; m++)
  602. {
  603. switch (Nr.Rows[m]["nrd_type"].ToString())
  604. {
  605. //常量直接进行拼接
  606. case "常量":
  607. NrData[m] = Nr.Rows[m]["nrd_sql"].ToString();
  608. Prefix += NrData[m];
  609. Suffix += NrData[m];
  610. break;
  611. case "SQL":
  612. string SQL = Nr.Rows[m]["nrd_sql"].ToString();
  613. DataTable Temp;
  614. //如果不包含参数替换
  615. if (SQL.IndexOf("{") == 0)
  616. {
  617. Temp = (DataTable)dh.ExecuteSql(SQL, "select");
  618. }
  619. else
  620. {
  621. //替换参数后重新执行SQL
  622. foreach (Match mch in match.Matches(SQL))
  623. {
  624. SQL = SQL.Replace(mch.Value.Trim(), "'" + ma_code.Text + "'");
  625. }
  626. Temp = (DataTable)dh.ExecuteSql(SQL, "select");
  627. }
  628. if (Temp.Rows.Count > 0)
  629. {
  630. NrData[m] = Temp.Rows[0][0].ToString();
  631. Prefix += NrData[m];
  632. Suffix += NrData[m];
  633. }
  634. else
  635. {
  636. NrData[m] = "";
  637. Prefix += NrData[m];
  638. Suffix += NrData[m];
  639. }
  640. break;
  641. //流水需要通过MaxNumber去取
  642. case "流水":
  643. NrData[m] = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "'").ToString();
  644. Suffix = "";
  645. PrefixFixed = Prefix;
  646. //设置当前流水
  647. custserialnum = int.Parse(NrData[m] == "" ? "0" : NrData[m]);
  648. SerialNumIndex = m;
  649. SerialNumLength = int.Parse(Nr.Rows[m]["nrd_length"].ToString());
  650. Radix = int.Parse(Nr.Rows[m]["nrd_radix"].ToString());
  651. char_out = Nr.Rows[m]["nrd_content"].ToString();
  652. break;
  653. default:
  654. break;
  655. }
  656. }
  657. //获取最大的流水号
  658. string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "' and rmn_prefix='" + Prefix + "'").ToString();
  659. //如果流水号为空则插入一条新记录,从1开始取
  660. if (maxnum == "")
  661. {
  662. dh.ExecuteSql("insert into RuleMaxNum(rmn_id,rmn_nrcode,rmn_prefix,rmn_maxnumber) values(RuleMaxNum_seq.nextval,'" + pr_exbarcode + "','" + Prefix + "','1')", "insert");
  663. custserialnum = 1;
  664. }
  665. //如果流水号不为空则取当前流水
  666. else
  667. {
  668. custserialnum = int.Parse(maxnum);
  669. }
  670. //遍历整个Grid,勾选的项目全部进行条码生成
  671. ArrayList<string> custbarcode = new ArrayList<string>();
  672. for (int i = 0; i < int.Parse(Num.Text); i++)
  673. {
  674. string data = BarcodeMethod1(PrefixFixed, Suffix, SerialNumIndex, SerialNumLength, Radix);
  675. if (!custbarcode.Contains(data))
  676. custbarcode.Add(data);
  677. }
  678. //插入条码
  679. string sql = "insert into makesnlist(MSL_ID, MSL_INDATE, MSL_MAKECODE, MSL_SNCODE,msl_status,MSL_TYPE)" +
  680. "select makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "',:custbarcode,0,'before' from dual where :custbarcode not in " +
  681. "(select msl_sncode from makesnlist)";
  682. dh.BatchInsert(sql, new string[] { "custbarcode", "custbarcode" }, custbarcode.ToArray(), custbarcode.ToArray());
  683. //更新最大流水号
  684. dh.UpdateByCondition("RuleMaxNum", "rmn_maxnumber='" + custserialnum + "'", "rmn_nrcode='" + pr_exbarcode + "' and rmn_prefix='" + Prefix + "'");
  685. }
  686. else
  687. {
  688. for (int m = 0; m < Nr.Rows.Count; m++)
  689. {
  690. switch (Nr.Rows[m]["nrd_type"].ToString())
  691. {
  692. //常量直接进行拼接
  693. case "常量":
  694. NrData[m] = Nr.Rows[m]["nrd_sql"].ToString();
  695. Prefix += NrData[m];
  696. Suffix += NrData[m];
  697. break;
  698. case "SQL":
  699. string SQL = Nr.Rows[m]["nrd_sql"].ToString();
  700. DataTable Temp;
  701. //如果不包含参数替换
  702. if (SQL.IndexOf("{") == 0)
  703. {
  704. Temp = (DataTable)dh.ExecuteSql(SQL, "select");
  705. }
  706. else
  707. {
  708. //替换参数后重新执行SQL
  709. foreach (Match mch in match.Matches(SQL))
  710. {
  711. SQL = SQL.Replace(mch.Value.Trim(), "'" + ma_code.Text + "'");
  712. }
  713. Temp = (DataTable)dh.ExecuteSql(SQL, "select");
  714. }
  715. if (Temp.Rows.Count > 0)
  716. {
  717. NrData[m] = Temp.Rows[0][0].ToString();
  718. Prefix += NrData[m];
  719. Suffix += NrData[m];
  720. }
  721. else
  722. {
  723. NrData[m] = "";
  724. Prefix += NrData[m];
  725. Suffix += NrData[m];
  726. }
  727. break;
  728. //流水需要通过MaxNumber去取
  729. case "流水":
  730. NrData[m] = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "'").ToString();
  731. Suffix = "";
  732. PrefixFixed = Prefix;
  733. //设置当前流水
  734. custserialnum = int.Parse(NrData[m] == "" ? "0" : NrData[m]);
  735. SerialNumIndex = m;
  736. SerialNumLength = int.Parse(Nr.Rows[m]["nrd_length"].ToString());
  737. Radix = int.Parse(Nr.Rows[m]["nrd_radix"].ToString());
  738. char_out = Nr.Rows[m]["nrd_content"].ToString();
  739. break;
  740. default:
  741. break;
  742. }
  743. }
  744. //获取最大的流水号
  745. string maxnum = dh.getFieldDataByCondition("RuleMaxNum", "rmn_maxnumber", "rmn_nrcode='" + pr_exbarcode + "'").ToString();
  746. //如果流水号为空则插入一条新记录,从1开始取
  747. if (maxnum == "")
  748. {
  749. dh.ExecuteSql("insert into RuleMaxNum(rmn_id,rmn_nrcode,rmn_maxnumber) values(RuleMaxNum_seq.nextval,'" + pr_exbarcode + "','1')", "insert");
  750. custserialnum = 1;
  751. }
  752. //如果流水号不为空则取当前流水
  753. else
  754. {
  755. custserialnum = int.Parse(maxnum);
  756. }
  757. //遍历整个Grid,勾选的项目全部进行条码生成
  758. ArrayList<string> custbarcode = new ArrayList<string>();
  759. for (int i = 0; i < int.Parse(Num.Text); i++)
  760. {
  761. string data = BarcodeMethod1(PrefixFixed, Suffix, SerialNumIndex, SerialNumLength, Radix);
  762. if (!custbarcode.Contains(data))
  763. custbarcode.Add(data);
  764. }
  765. string sql = "insert into makesnlist(MSL_ID, MSL_INDATE, MSL_MAKECODE, MSL_SNCODE, MSL_TYPE,msl_status)" +
  766. "select makesnlist_seq.nextval,sysdate,'" + ma_code.Text + "',:custbarcode,'before',0 from dual where :custbarcode not in " +
  767. "(select msl_sncode from makesnlist)";
  768. dh.BatchInsert(sql, new string[] { "custbarcode", "custbarcode" }, custbarcode.ToArray(), custbarcode.ToArray());
  769. //更新最大流水号
  770. dh.UpdateByCondition("RuleMaxNum", "rmn_maxnumber='" + custserialnum + "'", "rmn_nrcode='" + pr_exbarcode + "'");
  771. }
  772. //插入条码
  773. MessageBox.Show("工单" + ma_code.Text + "生成SN清单成功");
  774. }
  775. public string BarcodeMethod1(string Prefix, string Suffix, int Index, int Length, int radix)
  776. {
  777. string str = Prefix;
  778. //如果是流水则需要在前面加0
  779. string serialcode = BaseUtil.DToAny(custserialnum, radix);
  780. for (int j = serialcode.ToString().Length; j < Length; j++)
  781. {
  782. serialcode = "0" + serialcode;
  783. }
  784. str += serialcode;
  785. str += Suffix;
  786. custserialnum = custserialnum + 1;
  787. return str;
  788. }
  789. }
  790. }