SystemSetting_PrinterTest.cs 59 KB

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