using UAS_MES.DataOperate; using LabelManager2; using System.Data; using System.Text; using System.IO; using UAS_MES.Entity; using System.Windows; using System.Text.RegularExpressions; namespace UAS_MES.PublicMethod { class Print { static DataHelper dh = new DataHelper(); //CodeSoft打印的驱动和文件 static Document doc; ////CodeSoft的打印机 //string CodeSpft_Printer; static FileInfo info; public Print() { } public static void CodeSoft(string iCaller, Document doc, string LabelName, string LaID, string PrinterName, string SnCode, int PrintNum) { //打开模板路径 //查询模板对应的取值SQL和参数名称 DataTable dt = (DataTable)dh.ExecuteSql("select lp_name,lp_sql from label left join LABELPARAMETER on la_id=lp_laid where la_id='" + LaID + "'", "select"); StringBuilder sb = new StringBuilder(); if (doc == null) { MessageBox.Show("打印文件不存在"); return; } //执行全部的SQL for (int i = 0; i < dt.Rows.Count; i++) { string sql = dt.Rows[i]["lp_sql"].ToString(); try { Regex ConnoteA = new Regex("{\\w+}"); foreach (Match mch in ConnoteA.Matches(sql)) { string x = mch.Value.Trim(); sql = sql.Replace(x, "'" + SnCode + "'"); } DataTable Param = (DataTable)dh.ExecuteSql(sql.ToString(), "select"); if (Param.Rows.Count == 0) continue; //查询的结果的参数个数大于1需要给标签的多个参数赋值 if (Param.Rows.Count > 0) { int LoopTime = Param.Rows.Count > 100 ? 100 : Param.Rows.Count; for (int j = 0; j < LoopTime; j++) { for (int k = 0; k < doc.Variables.FormVariables.Count; k++) { if (j == 0 & doc.Variables.FormVariables.Item(k + 1).Name == dt.Rows[i]["lp_name"].ToString()) { doc.Variables.FormVariables.Item(k + 1).Value = Param.Rows[0][0].ToString(); } //使用SN开头的参数赋值SN1,SN2,SN3等参数 if (doc.Variables.FormVariables.Item(k + 1).Name == dt.Rows[i]["lp_name"].ToString() + j) { doc.Variables.FormVariables.Item(k + 1).Value = Param.Rows[j][0].ToString(); } } } } ////否则只查询名称相等的参数赋值 //else //{ // for (int j = 0; j < doc.Variables.FormVariables.Count; j++) // { // if (doc.Variables.FormVariables.Item(j + 1).Name == dt.Rows[i]["lp_name"].ToString()) // { // doc.Variables.FormVariables.Item(j + 1).Value = Param.Rows[0][0].ToString(); // break; // } // } //} } catch (System.Exception ex) { MessageBox.Show("SQL维护不正确"); } } LogManager.DoLog(sb.ToString()); //保存本次赋值进行打印 //doc.Save(); doc.Printer.SwitchTo(PrinterName); doc.PrintDocument(PrintNum); LogicHandler.DoCommandLog(iCaller, User.UserCode, "", User.UserLineCode, User.UserSourceCode, "打印", "成功打印", SnCode, ""); } } }