/// <summary> /// /// </summary> private void GetInfo() { try { //根据源ID,获取对应数据信息 string sql_TL_SYS_AUTO_PRINT_TASK = @"SELECT TOP {0} [ID],[FID],[SHEET_FID],[PULL_MODEL],[PART_BOX_CODE],[PRINT_CONFIG_CODE],[PRINT_FILEPATH],[STATUS],[PRINT_TIME],[VALID_FLAG], [SOURCE_ID],[CREATE_DATE],[CREATE_USER],[MODIFY_DATE],[MODIFY_USER] FROM [dbo].[TL_SYS_AUTO_PRINT_TASK] WHERE [STATUS]=10 AND [SOURCE_ID]={1} ORDER BY [ID] ASC"; List <AutoPrintTaskInfo> autoprinttaskinfos = new AutoPrintTaskBLL().GetList(String.Format(sql_TL_SYS_AUTO_PRINT_TASK, topSize, sourceId)); if (autoprinttaskinfos.Count < 1) { return; } ///获取基本配置信息 string sql_TM_AUTO_PRINTER_CONFIG = @"SELECT [ID] ,[FID],[VALID_FLAG],[CREATE_USER],[CREATE_DATE],[MODIFY_USER],[MODIFY_DATE] ,[COMMENTS],[PULL_MODEL],[PART_BOX_CODE],[PRINT_CONFIG_CODE],[PRINTER_NAME] ,[PRINTER_IPADDRESS],[IS_AUTO_PRINTER],[PAPER_SIZE],[PRINT_DIRECTION] FROM [dbo].[TM_AUTO_PRINTER_CONFIG]"; List <PrinterConfigInfo> printerconfiginfos = new PrinterConfigBLL().GetList(sql_TM_AUTO_PRINTER_CONFIG); if (printerconfiginfos.Count < 1) { return; } ///加载打印机配置信息 string sql_TS_SYS_PRINT_CONFIG = @"SELECT [ID],[FID],[PRINT_CONFIG_CODE],[PRINT_CONFIG_NAME],[PRINT_TEMPLATE_FILENAME],[PRINT_TEMPLATE_URL],[TEMPLATE_FILE_TYPE] ,[PRINT_COPIES],[PRINTER_NAME],[LAST_UPLOADFILE_TIME],[STATUS],[COMMENTS],[VALID_FLAG],[CREATE_USER],[CREATE_DATE],[MODIFY_USER],[MODIFY_DATE] FROM [dbo].[TS_SYS_PRINT_CONFIG]"; List <PrintConfigInfo> printconfiginfos = new PrintConfigBLL().GetList(sql_TS_SYS_PRINT_CONFIG); ///循环匹配打印机设置 foreach (var item in autoprinttaskinfos) { string pullModel = item.PullModel.GetValueOrDefault().ToString(); string partBoxCode = item.PartBoxCode; if (string.IsNullOrEmpty(pullModel) || string.IsNullOrEmpty(partBoxCode)) { continue; } //开始匹配,如果不为NULL,则表示匹配成功 var selectlist = printerconfiginfos.FirstOrDefault(a => a.PullModel == int.Parse(pullModel) && a.PartBoxCode == partBoxCode); if (selectlist == null) { continue; } string printConfigCode = item["PRINT_CONFIG_CODE"].ToString(); //通过匹配到的PRINT_CONFIG_CODE 在printconfiginfos集合中匹配,如果匹配成功,则获取打印信息; var listPathRout = printconfiginfos.FirstOrDefault(a => a.PrintConfigCode == printConfigCode && a.Status == 20); if (listPathRout == null) { continue; } //Thread.Sleep(100); string printTemplateFilename = listPathRout.PrintTemplateFilename; //获取模板名称 string printTemplateUrl = listPathRout.PrintTemplateUrl; //获取路径 ///根据打印配置代码①从打印配置TS_SYS_PRINT_CONFIG中获取对应的配置信息,如未能获取有效数据则提示<打印配置信息错误>,并记录系统日志 PrintConfigInfo info = new PrintConfigBLL().GetInfoByCode(printConfigCode); if (info == null) { throw new Exception("MC:0x00000731");///打印配置信息错误 } ///根据打印配置中的打印模板路径④及打印模板文件名称③获取服务端中的两个文件 ///一个为打印模板文件名称③,另一个为同名的xml字段匹配配置文件 string templateFileType = "html"; switch (info.TemplateFileType.GetValueOrDefault()) { case (int)TemplateFileTypeConstants.xlsx: templateFileType = "xlsx"; break; case (int)TemplateFileTypeConstants.xls: templateFileType = "xls"; break; default: templateFileType = "html"; break; } ///根据打印文件路径名称在服务端获取相应的文件,如未能成功获取则提示<打印文件错误>,并记录系统日志TL_SYS_OPERATION_LOG if (!info.PrintTemplateUrl.StartsWith("/")) { info.PrintTemplateUrl = "/" + info.PrintTemplateUrl; } string templateFileName = HttpContext.Current.Server.MapPath(info.PrintTemplateUrl) + "/" + info.PrintTemplateFilename + "." + templateFileType; if (!File.Exists(templateFileName)) { throw new Exception("MC:0x00000061");///打印模板文件不存在 } string configFileName = HttpContext.Current.Server.MapPath(info.PrintTemplateUrl) + "/" + info.PrintTemplateFilename + ".xml"; if (!File.Exists(configFileName)) { throw new Exception("MC:0x00000067");///打印配置文件不存在 } /// string tempPrintFilePathConfig = "/TEMP/PRINTFILES"; /// string tempPrintFilePath = HttpContext.Current.Server.MapPath(tempPrintFilePathConfig); ///文件夹是否存在 if (!Directory.Exists(tempPrintFilePath)) { Directory.CreateDirectory(tempPrintFilePath); } List <string> listfiles = new PrintBLL().CreatePrintFiles(templateFileName, configFileName, templateFileType, GetPrintDataInfos("A", item["SHEET_FID"].ToString()), tempPrintFilePath, tempPrintFilePathConfig); } } catch (Exception ex) { throw ex; } }
public void Handler() { while (status != 10) { #region 获取第一条数据 string idswhere = string.Empty; //数据库执行语句 StringBuilder sqlText = new StringBuilder(); //集合大于0,排除 if (dealedIds.Count > 0) { idswhere = "and [ID] not in (" + string.Join(",", dealedIds.ToArray()) + ")"; } AutoPrintTaskInfo autoPrintTaskInfo = new AutoPrintTaskBLL().GetTopInfo(idswhere); if (autoPrintTaskInfo == null) { throw new Exception("0x00000001");///TODO:没有未打印的任务 } dealedIds.Add(autoPrintTaskInfo.Id); #endregion #region 打印 PrintConfigInfo printConfigInfo = new PrintConfigBLL().GetInfoByCode(autoPrintTaskInfo.PrintConfigCode); if (printConfigInfo == null) { throw new Exception("0x00000002");///TODO:没有配置信息 } System.Diagnostics.Process p = new System.Diagnostics.Process(); //不现实调用程序窗口,但是对于某些应用无效 p.StartInfo.CreateNoWindow = true; p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //采用操作系统自动识别的模式 p.StartInfo.UseShellExecute = true; //要打印的文件路径 p.StartInfo.FileName = printConfigInfo.PrintTemplateUrl; //指定执行的动作,是打印,即print,打开是 open p.StartInfo.Verb = "print"; //将指定的打印机设为默认打印机 SetDefaultPrinter(printConfigInfo.PrinterName); //打印数量 for (int i = 0; i < printConfigInfo.PrintCopies; i++) { //开始打印 p.Start(); } ////等待十秒 //p.WaitForExit(10000); #endregion //ü 记录打印时间到最后修改时间⑦,同时标记状态③为20.已打印 sqlText.AppendFormat(@" update TL_SYS_AUTO_PRINT_TASK set [STATUS] = 20,[MODIFY_TIME]=getdate(),[MODIFY_USER]='{0}' where [ID]={1}", loginUser, autoPrintTaskInfo.Id); #region 执行 using (TransactionScope trans = new TransactionScope()) { if (!BLL.LES.CommonBLL.ExecuteNonQueryBySql(sqlText.ToString())) { throw new Exception("0x00000003");///TODO:写入数据库失败 } trans.Complete(); } #endregion } }