/******************************************************************************* * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential * 类的信息: * 1.程序名称:BarcodePrintLogic.cs * 2.功能描述:条码打印服务端业务逻辑 * 编辑履历: * 作者 日期 版本 修改内容 * 陈晓野 2017/03/15 1.00 新建 *******************************************************************************/ using System; using System.Collections.Generic; using System.Data; using Curtain.DataAccess; using Curtain.Framework.Json; using Curtain.Log; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Basics.DataAccess; using Dongke.IBOSS.PRD.Service.DataModels; using Dongke.IBOSS.PRD.WCF.DataModels; using Dongke.WinForm.Controls.InvoiceLayout; using Oracle.ManagedDataAccess.Client; namespace Dongke.IBOSS.PRD.Service.BarcodePrintService { /// /// 条码打印服务端业务逻辑 /// public static class BarcodePrintLogic { // /// // /// 打印条码 // /// // /// 条码 // /// 打印份数 // /// 工序打印时:null;补打时:打印机ID // /// // /// // public static ServiceResultEntity PrintBarcode(string barcode, int copies, int? printerID, SUserInfo sUserInfo) // { // // TODO 异常分析 // int err_lable = 0; //#if DEBUG // Dongke.IBOSS.PRD.Basics.Library.OutputLog.TraceLog(Dongke.IBOSS.PRD.Basics.Library.LogPriority.Debug, // "PrintBarcode", // "begin -- " + barcode, // DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), // Dongke.IBOSS.PRD.Basics.Library.LocalPath.LogExePath+@"printdebug\"); //#endif // IDBTransaction oracleTrConn = null; // string printerName = null; // LayoutBox layoutBox = null; // try // { // ServiceResultEntity sre = new ServiceResultEntity(); // oracleTrConn = ClsDbFactory.CreateDBTransaction(IBOSS.PRD.Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString); // oracleTrConn.Connect(); // // 补打 // int printWay = 2; // // 工序打印 // if (printerID == null) // { // // 打印 // printWay = 1; // string sqlPrinterName = // "SELECT p.printername\n" + // " FROM tp_mst_user u\n" + // " INNER JOIN tp_mst_barcodeprinter p\n" + // " ON p.printerid = u.barcodeprinterid\n" + // " WHERE u.userid = :userid\n" + // " AND p.valueflag = '1'"; // OracleParameter[] pps = new OracleParameter[]{ // new OracleParameter(":userid", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input), // }; // printerName = oracleTrConn.GetSqlResultToStr(sqlPrinterName, pps); // if (string.IsNullOrWhiteSpace(printerName)) // { // return sre; // } // } // System.Drawing.Printing.PrinterSettings.StringCollection installedPrinters = // System.Drawing.Printing.PrinterSettings.InstalledPrinters; // if (installedPrinters.Count < 1) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "服务器没有安装打印驱动"; // return sre; // } // err_lable = 1; // //oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString); // //oracleTrConn.Connect(); // List parameters = new List(); // // 补打时,获得打印机名 // if (printerID.HasValue) // { // string sqlPrinterName = // "SELECT p.printername\n" + // " FROM tp_mst_barcodeprinter p\n" + // " WHERE p.printerID = :printerID\n" + // " AND p.valueflag = '1'"; // parameters.Clear(); // parameters.Add(new OracleParameter(":printerID", OracleDbType.Int32, printerID.Value, ParameterDirection.Input)); // printerName = oracleTrConn.GetSqlResultToStr(sqlPrinterName, parameters.ToArray()); // } // err_lable = 2; // // 工序打印时,获取当前工号配置的打印机 // //if (string.IsNullOrWhiteSpace(printerName)) // //{ // // string sqlPrinterName = // // "SELECT p.printername\n" + // // " FROM tp_mst_user u\n" + // // " INNER JOIN tp_mst_barcodeprinter p\n" + // // " ON p.printerid = u.barcodeprinterid\n" + // // " WHERE u.userid = :userid\n" + // // " AND p.valueflag = '1'"; // // parameters.Clear(); // // parameters.Add(new OracleParameter(":userid", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input)); // // printerName = oracleTrConn.GetSqlResultToStr(sqlPrinterName, parameters.ToArray()); // //} // err_lable = 3; // if (string.IsNullOrWhiteSpace(printerName)) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "此用户没有设置打印机"; // return sre; // } // bool hasPrinter = false; // foreach (string item in installedPrinters) // { // if (item == printerName) // { // hasPrinter = true; // break; // } // } // if (!hasPrinter) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "服务器没有连接相应打印机【" + printerName + "】"; // return sre; // } // err_lable = 4; // // 打印 // //LayoutBox layoutBox = new LayoutBox(); // layoutBox = new LayoutBox(); // err_lable = 5; // layoutBox.Name = "layoutBox"; // layoutBox.LayoutMode = LayoutMode.Preview; // // 设置打印机 // layoutBox.PrinterSettings.PrinterName = printerName; // layoutBox.NumberOfCopies = copies; // err_lable = 6; // string message = layoutBox.CheckPrintSettingIn(PrintType.Print); // if (!string.IsNullOrWhiteSpace(message)) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = message; // return sre; // } // //err_lable = 7; // if (printerID != null) // { // string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL"; // OracleParameter[] paras1 = new OracleParameter[]{ // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), // new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), // }; // barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1); // } // err_lable = 8; // // 获取打印数据 // parameters.Clear(); // parameters.Add(new OracleParameter("in_Barcode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input)); // parameters.Add(new OracleParameter("in_AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input)); // parameters.Add(new OracleParameter("in_UserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input)); // parameters.Add(new OracleParameter("out_Status", OracleDbType.Int32, ParameterDirection.Output)); // parameters.Add(new OracleParameter("out_Message", OracleDbType.NVarchar2, 2000, null, ParameterDirection.Output)); // parameters.Add(new OracleParameter("out_LayoutData", OracleDbType.RefCursor, ParameterDirection.Output)); // parameters.Add(new OracleParameter("out_PrintData", OracleDbType.RefCursor, ParameterDirection.Output)); // DataSet data = oracleTrConn.ExecStoredProcedure("PRO_PM_GETBarCodePrintDATA", parameters.ToArray()); // err_lable = 9; // int status = Convert.ToInt32(parameters[3].Value.ToString()); // if (status < 0) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = parameters[4].Value.ToString(); // return sre; // } // if (data == null || data.Tables.Count != 2) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "没有打印数据"; // return sre; // } // DataTable layoutData = data.Tables[0]; // DataTable printData = data.Tables[1]; // if (printData.Rows.Count == 0) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "此条码不存在"; // return sre; // } // if (layoutData.Rows.Count == 0) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = string.Format("此产品类别【{0}】或商标【{1}】没有对应的打印模板", // printData.Rows[0]["goodstypename"], // printData.Rows[0]["logoname"] // ); // return sre; // } // if (printerID == null && printData.Rows.Count > 0) // { // int goodsCopies = Convert.ToInt32(printData.Rows[0]["printcopies"]); // if (goodsCopies > 0) // { // copies = goodsCopies; // layoutBox.NumberOfCopies = copies; // } // } // //err_lable = 10; // int layoutID = Convert.ToInt32(layoutData.Rows[0]["LayoutID"]); // byte[] bytes = layoutData.Rows[0]["LayoutData"] as byte[]; // if (bytes != null) // { // try // { // layoutBox.ReadLayout(bytes); // } // catch (Exception ex) // { // throw new Exception("ReadLayout", ex); // } // layoutBox.ReadLayout(bytes); // } // err_lable = 11; // bool isPrint = false; // //try // { // //layoutBox.DataSource = printData; // //layoutBox.Refresh(); // layoutBox.PrintDataSource = printData; // layoutBox.PrintAreaVisible = false; // layoutBox.PrintBackground = false; // isPrint = layoutBox.Print(false); // } // err_lable = 12; // //catch (Exception ex) // //{ // // throw new Exception("Print", ex); // //} // if (!isPrint) // { // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "打印失败"; // return sre; // } // sre.Result = printData; // /* // // 记录打印信息 // string sqlString = "INSERT INTO TP_MST_BarCodePrintLog\n" + // " (BARCODE, LAYOUTID, ACCOUNTID, CREATEUSERID)\n" + // "VALUES\n" + // " (:BARCODE, :LAYOUTID, :ACCOUNTID, :CREATEUSERID)"; // parameters.Clear(); // parameters.Add(new OracleParameter(":BARCODE", OracleDbType.NVarchar2, barcode, ParameterDirection.Input)); // parameters.Add(new OracleParameter(":LAYOUTID", OracleDbType.Int32, layoutData.Rows[0]["LayoutID"], ParameterDirection.Input)); // parameters.Add(new OracleParameter(":ACCOUNTID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input)); // parameters.Add(new OracleParameter(":CREATEUSERID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input)); // int result = oracleTrConn.ExecuteNonQuery(sqlString, parameters.ToArray()); // //if (result == 0) // //{ // // sre.Status = Constant.ServiceResultStatus.NoModifyData; // // return sre; // //} // */ // oracleTrConn.Commit(); // // 外箱码1 // SetPrintLog(layoutID, printData, sUserInfo, 1, printWay); // return sre; // } // catch (Exception ex) // { // if (oracleTrConn != null && // oracleTrConn.ConnState == ConnectionState.Open) // { // oracleTrConn.Rollback(); // } // // TODO 异常分析 // Dongke.IBOSS.PRD.Basics.Library.OutputLog.TraceLog(Dongke.IBOSS.PRD.Basics.Library.LogPriority.Debug, // "PrintBarcode --- " + err_lable, // "barcode -- " + barcode + System.Environment.NewLine + // "copies -- " + copies + System.Environment.NewLine + // "printerID -- " + printerID + System.Environment.NewLine + // "printerName -- " + printerName + System.Environment.NewLine // , // DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffffff"), // Dongke.IBOSS.PRD.Basics.Library.LocalPath.LogExePath + @"printdebug\"); // throw ex; // } // finally // { // if (oracleTrConn != null && // oracleTrConn.ConnState == ConnectionState.Open) // { // oracleTrConn.Disconnect(); // } // //layoutBox?.Dispose(); // } // } /// /// 获取条码打印机 /// /// /// public static DataSet GetBarcodePrinter(SUserInfo sUserInfo, int printType=0) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(IBOSS.PRD.Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString); try { //获取系统参数管理的数据 string sqlString = "SELECT bp.printerid, bp.printername, bp.PRINTTYPE\n" + " FROM tp_mst_barcodeprinter bp\n" + " LEFT JOIN tp_mst_user u\n" + " ON u.userid = :userid\n" + " AND u.barcodeprinterid = bp.printerid\n" + " WHERE bp.valueflag = '1'\n" + " AND bp.accountid = :accountid\n" + //" AND (:PRINTTYPE = 0 or bp.PRINTTYPE = :PRINTTYPE)\n" + " ORDER BY nvl2(u.userid, 0, 1), bp.displayno"; Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[] { new Oracle.ManagedDataAccess.Client.OracleParameter(":userid",sUserInfo.UserID), new Oracle.ManagedDataAccess.Client.OracleParameter(":accountid",sUserInfo.AccountID), //new Oracle.ManagedDataAccess.Client.OracleParameter(":PRINTTYPE",printType), }; oracleConn.Open(); DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); oracleConn.Close(); return result; } catch (Exception ex) { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } throw ex; } finally { if (oracleConn != null && oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 设置当期用户默认打印机配置 /// /// 打印机ID /// /// public static ServiceResultEntity SetCurrentUserPrinter(int printerID, SUserInfo sUserInfo) { IDBTransaction oracleTrConn = null; ServiceResultEntity sre = new ServiceResultEntity(); try { System.Drawing.Printing.PrinterSettings.StringCollection installedPrinters = System.Drawing.Printing.PrinterSettings.InstalledPrinters; if (installedPrinters.Count < 1) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "服务器没有安装打印驱动"; return sre; } oracleTrConn = ClsDbFactory.CreateDBTransaction(IBOSS.PRD.Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString); oracleTrConn.Connect(); List parameters = new List(); string sqlPrinterName = "SELECT p.printername\n" + " FROM tp_mst_barcodeprinter p\n" + " WHERE p.printerID = :printerID\n" + " AND p.valueflag = '1'"; parameters.Add(new OracleParameter(":printerID", OracleDbType.Int32, printerID, ParameterDirection.Input)); DataTable printer = oracleTrConn.GetSqlResultToDt(sqlPrinterName, parameters.ToArray()); if (printer == null || printer.Rows.Count == 0) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "系统中不存在此打印机"; return sre; } string sqlString = "UPDATE tp_mst_user u\n" + " SET u.barcodeprinterid = :printerid\n" + " WHERE u.userid = :userid"; parameters.Add(new OracleParameter(":userid", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input)); sre.Result = oracleTrConn.ExecuteNonQuery(sqlString, parameters.ToArray()); oracleTrConn.Commit(); } catch (Exception ex) { if (oracleTrConn != null && oracleTrConn.ConnState == ConnectionState.Open) { oracleTrConn.Rollback(); } throw ex; } finally { if (oracleTrConn != null && oracleTrConn.ConnState == ConnectionState.Open) { oracleTrConn.Disconnect(); } } return sre; } public static void SetPrintLog(int layoutID, DataTable printData, SUserInfo sUserInfo, int PrintTypeID, int PrintWay) { IDataAccess dataAccess = null; try { string pdata = JsonHelper.FromObject(printData); if (pdata.Length > 2000) { pdata = pdata.Substring(0, 2000); } DataRow dataRow = printData.Rows[0]; CDASqlStrParameter[] ps = new CDASqlStrParameter[] { new CDASqlStrParameter("LogID", "SEQ_MST_BarCodePrintLog.nextval"), new CDASqlStrParameter("GroutingDailyDetailID", "@GroutingDailyDetailID@", dataRow["GroutingDailyDetailID"]), new CDASqlStrParameter("BarCode", "@BarCode@", dataRow["BarCode"]), new CDASqlStrParameter("Outlabelcode", "@Outlabelcode@", dataRow["OutOnlyCode"]), new CDASqlStrParameter("PrintTypeID", "@PrintTypeID@", PrintTypeID), new CDASqlStrParameter("PrintWay", "@PrintWay@", PrintWay), new CDASqlStrParameter("PrintData", "@PrintData@", pdata), new CDASqlStrParameter("LayoutID", "@LayoutID@", layoutID), new CDASqlStrParameter("AccountID", "@AccountID@", sUserInfo.AccountID), new CDASqlStrParameter("CreateUserID", "@CreateUserID@", sUserInfo.UserID), }; dataAccess = DataAccess.Create(Curtain.DataAccess.DataBaseType.Oracle, DataManager.ConnectionString); dataAccess.Insert("TP_MST_BarCodePrintLog", ps); } catch (Exception ex) { Logger.Error(ex); } finally { dataAccess?.Dispose(); } } /// /// 打印条码 3车间 /// 0:工序打印(根据工号绑定打印机的打印类型选择打印模版,要求onlycode已存在), /// 1:直接打印(根据工号绑定打印机的打印类型选择打印模版,重新分配onlycode), /// 2:补打(根据选择打印机的打印类型选择打印模版,要求onlycode已存在) /// /// 条码 /// 打印份数 /// 工序打印时:null;补打时:打印机ID /// /// public static ServiceResultEntity PrintBarcode_3C(string barcode, int copies, int? printerID, SUserInfo sUserInfo, int printWay) { IDBTransaction oracleTrConn = null; string printerName = null; int printtype = 0; //LayoutBox layoutBox = null; try { ServiceResultEntity sre = new ServiceResultEntity(); System.Drawing.Printing.PrinterSettings.StringCollection installedPrinters = System.Drawing.Printing.PrinterSettings.InstalledPrinters; if (installedPrinters.Count < 1) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "服务器没有安装打印驱动"; return sre; } oracleTrConn = ClsDbFactory.CreateDBTransaction(IBOSS.PRD.Basics.DataAccess.DataBaseType.ORACLE, DataManager.ConnectionString); oracleTrConn.Connect(); List parameters = new List(); if (printerID == null) { // 打印 //printWay = 1; string sqlPrinterName = "SELECT p.printername, p.printtype\n" + " FROM tp_mst_user u\n" + " INNER JOIN tp_mst_barcodeprinter p\n" + " ON p.printerid = u.barcodeprinterid\n" + " WHERE u.userid = :userid\n" + " AND p.valueflag = '1'"; OracleParameter[] pps = new OracleParameter[]{ new OracleParameter(":userid", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input), }; //printerName = oracleTrConn.GetSqlResultToStr(sqlPrinterName, pps); DataTable dataTable = oracleTrConn.GetSqlResultToDt(sqlPrinterName, pps); if (dataTable == null || dataTable.Rows.Count == 0) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "此工号没有关联打印机"; return sre; } printerName = dataTable.Rows[0]["printername"] + ""; if (string.IsNullOrWhiteSpace(printerName) || !int.TryParse(dataTable.Rows[0]["printtype"] + "", out printtype)) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "此工号没有关联打印机类型"; return sre; } } // 补打时,获得打印机名 if (printerID.HasValue) { string sqlPrinterName = "SELECT p.printername, p.printtype\n" + " FROM tp_mst_barcodeprinter p\n" + " WHERE p.printerID = :printerID\n" + " AND p.valueflag = '1'"; parameters.Clear(); parameters.Add(new OracleParameter(":printerID", OracleDbType.Int32, printerID.Value, ParameterDirection.Input)); //printerName = oracleTrConn.GetSqlResultToStr(sqlPrinterName, parameters.ToArray()); DataTable dataTable = oracleTrConn.GetSqlResultToDt(sqlPrinterName, parameters.ToArray()); if (dataTable == null || dataTable.Rows.Count == 0) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "选择的打印机不存在"; return sre; } printerName = dataTable.Rows[0]["printername"] + ""; if (string.IsNullOrWhiteSpace(printerName) || !int.TryParse(dataTable.Rows[0]["printtype"] + "", out printtype)) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "此打印机没有关联类型"; return sre; } } //if (string.IsNullOrWhiteSpace(printerName)) //{ // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "此用户没有设置打印机"; // return sre; //} bool hasPrinter = false; foreach (string item in installedPrinters) { if (item == printerName) { hasPrinter = true; break; } } if (!hasPrinter) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "服务器没有连接相应打印机【" + printerName + "】"; return sre; } // 打印 ////LayoutBox layoutBox = new LayoutBox(); //layoutBox = new LayoutBox(); //layoutBox.Name = "layoutBox"; //layoutBox.LayoutMode = LayoutMode.Preview; //// 设置打印机 //layoutBox.PrinterSettings.PrinterName = printerName; //layoutBox.NumberOfCopies = copies; //string message = layoutBox.CheckPrintSettingIn(PrintType.Print); //if (!string.IsNullOrWhiteSpace(message)) //{ // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = message; // return sre; //} if (printerID != null) { string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1); } // 获取打印数据 parameters.Clear(); parameters.Add(new OracleParameter("in_Barcode", OracleDbType.NVarchar2, barcode, ParameterDirection.Input)); parameters.Add(new OracleParameter("in_AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input)); parameters.Add(new OracleParameter("in_UserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input)); parameters.Add(new OracleParameter("in_PrintTypeID", OracleDbType.Int32, printtype, ParameterDirection.Input)); parameters.Add(new OracleParameter("in_PrintWay", OracleDbType.Int32, printWay, ParameterDirection.Input)); parameters.Add(new OracleParameter("out_Status", OracleDbType.Int32, ParameterDirection.Output)); parameters.Add(new OracleParameter("out_Message", OracleDbType.NVarchar2, 2000, null, ParameterDirection.Output)); parameters.Add(new OracleParameter("out_LayoutData", OracleDbType.RefCursor, ParameterDirection.Output)); parameters.Add(new OracleParameter("out_PrintData", OracleDbType.RefCursor, ParameterDirection.Output)); DataSet data = oracleTrConn.ExecStoredProcedure("PRO_PM_GETBarCodePrintDATA_3C", parameters.ToArray()); int status = Convert.ToInt32(parameters[5].Value.ToString()); if (status < 0) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = parameters[6].Value.ToString(); return sre; } if (data == null || data.Tables.Count != 2) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "没有打印数据"; return sre; } DataTable layoutData = data.Tables[0]; DataTable printData = data.Tables[1]; if (printData.Rows.Count == 0) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = "此条码不存在"; return sre; } if (layoutData.Rows.Count == 0) { sre.Status = Constant.ServiceResultStatus.Other; sre.Message = string.Format("此产品类别【{0}】或商标【{1}】没有对应的打印模板", printData.Rows[0]["goodstypename"], printData.Rows[0]["logoname"] ); return sre; } //if (printerID == null && printData.Rows.Count > 0) //{ // int goodsCopies = Convert.ToInt32(printData.Rows[0]["printcopies"]); // if (goodsCopies > 0) // { // copies = goodsCopies; // layoutBox.NumberOfCopies = copies; // } //} int layoutID = Convert.ToInt32(layoutData.Rows[0]["LayoutID"]); byte[] bytes = layoutData.Rows[0]["LayoutData"] as byte[]; //if (bytes != null) //{ // //try // //{ // // layoutBox.ReadLayout(bytes); // //} // //catch (Exception ex) // //{ // // throw new Exception("ReadLayout", ex); // //} // layoutBox.ReadLayout(bytes); //} //bool isPrint = false; //layoutBox.PrintDataSource = printData; //layoutBox.PrintAreaVisible = false; //layoutBox.PrintBackground = false; //isPrint = layoutBox.Print(false); oracleTrConn.Commit(); //生成电子票据 //List images = InvoiceLayoutPrinter.Print(layoutBytes, printData.Tables[0].Rows[0], printData.Tables[1]); InvoiceLayoutPrinter.Print(printerName, Convert.ToInt16(copies), bytes, printData.Rows[0], printData); //if (!isPrint) //{ // sre.Status = Constant.ServiceResultStatus.Other; // sre.Message = "打印失败"; // return sre; //} sre.Result = printData; // 打印记录 SetPrintLog(layoutID, printData, sUserInfo, printtype, printWay); return sre; } catch (Exception ex) { //if (oracleTrConn != null && // oracleTrConn.ConnState == ConnectionState.Open) //{ // oracleTrConn.Rollback(); //} // TODO 异常分析 Dongke.IBOSS.PRD.Basics.Library.OutputLog.TraceLog(Dongke.IBOSS.PRD.Basics.Library.LogPriority.Debug, "PrintBarcode_3C", "barcode -- " + barcode + System.Environment.NewLine + "copies -- " + copies + System.Environment.NewLine + "printerID -- " + printerID + System.Environment.NewLine + "printerName -- " + printerName + System.Environment.NewLine + "printType -- " + printtype + System.Environment.NewLine + "printWay -- " + printWay, ex.ToString(), Dongke.IBOSS.PRD.Basics.Library.LocalPath.LogExePath + @"printdebug\"); throw ex; } finally { if (oracleTrConn != null && oracleTrConn.ConnState == ConnectionState.Open) { oracleTrConn.Disconnect(); } //layoutBox?.Dispose(); } } } }