using HandyControl.Controls; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Drawing.Printing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using MessageBox = System.Windows.MessageBox; using System.Windows.Threading; using JSMachine.WMS.Infrastructure.AppConfiguration; using JSMachine.WMS.Common; using JSMachine.WMS.App.Dto; using JSMachine.WMS.Infrastructure.Helper; using JSMachine.WMS.App.Dto.Enum; using static JSMachine.WMS.Common.EventBus.GlobalEventBus; using Prism.Events; using Prism.Ioc; namespace JSMachine.WMS.Storage.BusinessModules.Views { /// /// 标签打印window ,不使用prism /// public partial class PrintLabelWindow : System.Windows.Window { FastReport.Design.StandardDesigner.DesignerControl designerControl = new FastReport.Design.StandardDesigner.DesignerControl(); FastReport.Preview.PreviewControl prewControl = new FastReport.Preview.PreviewControl(); FastReport.Report fDesignerReport = new FastReport.Report(); //报表设计 FastReport.Report fPrewControlReport = new FastReport.Report();//报表预览 private string companyName = Global.AppSettings.CompanyName; private IEventAggregator eventAggregator = ContainerLocator.Container.Resolve(); private PrintType _printType; public PrintType PrintType { get { return _printType; } set { _printType = value; } } private PaperNewStockInDto _selectedPaperNewStockIn; /// /// 当前选中新卷入库信息 /// public PaperNewStockInDto SelectedPaperNewStockIn { get { return _selectedPaperNewStockIn; } set { _selectedPaperNewStockIn = value; } } /// /// 当前选中进纸信息 /// private PaperStockOutDto _selectePpaperStockOut; public PaperStockOutDto SelectePpaperStockOut { get { return _selectePpaperStockOut; } set { _selectePpaperStockOut = value; } } private PaperReStockInDto _selectedPaperReStockIn; /// /// 当前选中残卷入库信息 /// public PaperReStockInDto SelectedPaperReStockIn { get { return _selectedPaperReStockIn ;} set { _selectedPaperReStockIn = value;} } public PrintLabelWindow() { InitializeComponent(); GetPrinters(); //添加打印机下拉选项 eventAggregator.GetEvent().Subscribe(PrinteLable); } /// /// 添加打印机下拉选项 /// private void GetPrinters() { var fPrinters = GetLocalPrinters(); if (fPrinters != null && fPrinters.Any()) { foreach (var f in fPrinters) { cbPrinters.Items.Add(f); } cbPrinters.SelectedIndex = 0; } } /// /// 编辑模板 /// /// /// private void ButtonDesigner_Click(object sender, RoutedEventArgs e) { LoadFrxAndData(fDesignerReport, Environment.CurrentDirectory + Global.AppSettings.LabelReportFilePathStr); designerControl.Report = fDesignerReport;//编辑模板 ControlVisibility(true, false); } /// /// 打印选中标签 /// /// /// private void ButtonClose_Click(object sender, RoutedEventArgs e) { //PrinteLable(PrintType); this.Close(); } /// /// 标签打印 /// private void PrinteLable(PrintType printType) { try { PrintType= printType; LoadFrxAndData(fPrewControlReport, Environment.CurrentDirectory + Global.AppSettings.LabelReportFilePathStr); if (printType == PrintType.NewStock) { var paperCode = string.IsNullOrEmpty(SelectedPaperNewStockIn.PaperCode) ? "" : SelectedPaperNewStockIn.PaperCode.Replace("-", ""); fPrewControlReport.SetParameterValue("companyname", companyName); fPrewControlReport.SetParameterValue("papercode", paperCode); fPrewControlReport.SetParameterValue("supplier", SelectedPaperNewStockIn.Supplier); fPrewControlReport.SetParameterValue("paperwidth", SelectedPaperNewStockIn.PaperWidth); fPrewControlReport.SetParameterValue("weight", Convert.ToInt32(SelectedPaperNewStockIn.InWeight)); fPrewControlReport.SetParameterValue("paperlabel", SelectedPaperNewStockIn.PaperLabel); fPrewControlReport.SetParameterValue("paperlength", Convert.ToInt32(SelectedPaperNewStockIn.MeterLength)); fPrewControlReport.SetParameterValue("unitweight", SelectedPaperNewStockIn.PaperUnitWeight); } else if (printType == PrintType.ReStock) { var paperCode = string.IsNullOrEmpty(SelectedPaperReStockIn.PaperCode) ? "" : SelectedPaperReStockIn.PaperCode.Replace("-", ""); fPrewControlReport.SetParameterValue("companyname", companyName); fPrewControlReport.SetParameterValue("papercode", paperCode); fPrewControlReport.SetParameterValue("supplier", SelectedPaperReStockIn.Supplier); fPrewControlReport.SetParameterValue("paperwidth", SelectedPaperReStockIn.PaperWidth); fPrewControlReport.SetParameterValue("weight", Convert.ToInt32(SelectedPaperReStockIn.InWeight)); fPrewControlReport.SetParameterValue("paperlabel", SelectedPaperReStockIn.PaperLabel); fPrewControlReport.SetParameterValue("paperlength", Convert.ToInt32(SelectedPaperReStockIn.MeterLength)); fPrewControlReport.SetParameterValue("unitweight", SelectedPaperReStockIn.PaperUnitWeight); } else if (printType == PrintType.StockOut) { var paperCode = string.IsNullOrEmpty(SelectePpaperStockOut.PaperCode) ? "" : SelectePpaperStockOut.PaperCode.Replace("-", ""); fPrewControlReport.SetParameterValue("companyname", companyName); fPrewControlReport.SetParameterValue("papercode", paperCode); fPrewControlReport.SetParameterValue("supplier", SelectePpaperStockOut.Supplier); fPrewControlReport.SetParameterValue("paperwidth", SelectePpaperStockOut.PaperWidth); fPrewControlReport.SetParameterValue("weight", Convert.ToInt32(SelectePpaperStockOut.OutWeight)); fPrewControlReport.SetParameterValue("paperlabel", SelectePpaperStockOut.PaperLabel); fPrewControlReport.SetParameterValue("paperlength", Convert.ToInt32(SelectePpaperStockOut.MeterLength)); fPrewControlReport.SetParameterValue("unitweight", SelectePpaperStockOut.PaperUnitWeight); } PrepareReprot(fPrewControlReport, prewControl); ControlVisibility(false, true); } catch (Exception ex) { LogHelper.Error($"新卷入库:手动打印标签出错: {ex.Message} \n {ex.StackTrace}"); } } /// /// 预览报表 /// private void PrepareReprot(FastReport.Report report, FastReport.Preview.PreviewControl prewControl) { report.Preview = prewControl; report.Prepare(); report.ShowPrepared(); } /// /// 载入报表路径和报表数据 /// private void LoadFrxAndData(FastReport.Report report, string filePathStr) { //1 编辑指定路径下的frx,先load frx report.Load(filePathStr); } /// /// 报表设计与预览显示在同一个区域,每次只显示一个 /// /// /// private void ControlVisibility(bool designerControlVisibility, bool previewControlVisibility) { if (designerControlVisibility == true && previewControlVisibility == false) { WindowsFornsHostPreviewControl.Visibility = Visibility.Collapsed; WindowsFornsHostDesignerControl.Visibility = Visibility.Visible; WindowsFornsHostDesignerControl.Child = designerControl; } else if (designerControlVisibility == false && previewControlVisibility == true) { WindowsFornsHostDesignerControl.Visibility = Visibility.Collapsed; WindowsFornsHostPreviewControl.Visibility = Visibility.Visible; WindowsFornsHostPreviewControl.Child = prewControl; } } private static PrintDocument fPrintDocument = new PrintDocument(); private static string DefaultPrinter { get { return fPrintDocument.PrinterSettings.PrinterName; } } /// /// 获取打印机列表 /// private static List GetLocalPrinters() { List fPrinters = new List(); fPrinters.Add(DefaultPrinter); foreach (string fPrinterName in PrinterSettings.InstalledPrinters) { if (!fPrinters.Contains(fPrinterName)) fPrinters.Add(fPrinterName); } return fPrinters; } } }