244 lines
10 KiB
C#
244 lines
10 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 标签打印window ,不使用prism
|
|
/// </summary>
|
|
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<IEventAggregator>();
|
|
|
|
private PrintType _printType;
|
|
public PrintType PrintType
|
|
{
|
|
get { return _printType; }
|
|
set { _printType = value; }
|
|
}
|
|
private PaperNewStockInDto _selectedPaperNewStockIn;
|
|
/// <summary>
|
|
/// 当前选中新卷入库信息
|
|
/// </summary>
|
|
public PaperNewStockInDto SelectedPaperNewStockIn
|
|
{
|
|
get { return _selectedPaperNewStockIn; }
|
|
set { _selectedPaperNewStockIn = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 当前选中进纸信息
|
|
/// </summary>
|
|
private PaperStockOutDto _selectePpaperStockOut;
|
|
public PaperStockOutDto SelectePpaperStockOut
|
|
{
|
|
get { return _selectePpaperStockOut; }
|
|
set { _selectePpaperStockOut = value; }
|
|
}
|
|
|
|
private PaperReStockInDto _selectedPaperReStockIn;
|
|
/// <summary>
|
|
/// 当前选中残卷入库信息
|
|
/// </summary>
|
|
public PaperReStockInDto SelectedPaperReStockIn
|
|
{
|
|
get { return _selectedPaperReStockIn ;}
|
|
set { _selectedPaperReStockIn = value;}
|
|
}
|
|
|
|
public PrintLabelWindow()
|
|
{
|
|
InitializeComponent();
|
|
GetPrinters(); //添加打印机下拉选项
|
|
eventAggregator.GetEvent<PrintLabelEvent>().Subscribe(PrinteLable);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加打印机下拉选项
|
|
/// </summary>
|
|
private void GetPrinters()
|
|
{
|
|
var fPrinters = GetLocalPrinters();
|
|
if (fPrinters != null && fPrinters.Any())
|
|
{
|
|
foreach (var f in fPrinters)
|
|
{
|
|
cbPrinters.Items.Add(f);
|
|
}
|
|
cbPrinters.SelectedIndex = 0;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 编辑模板
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void ButtonDesigner_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
LoadFrxAndData(fDesignerReport, Environment.CurrentDirectory + Global.AppSettings.LabelReportFilePathStr);
|
|
designerControl.Report = fDesignerReport;//编辑模板
|
|
ControlVisibility(true, false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印选中标签
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void ButtonClose_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
//PrinteLable(PrintType);
|
|
this.Close();
|
|
}
|
|
/// <summary>
|
|
/// 标签打印
|
|
/// </summary>
|
|
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}");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 预览报表
|
|
/// </summary>
|
|
private void PrepareReprot(FastReport.Report report, FastReport.Preview.PreviewControl prewControl)
|
|
{
|
|
report.Preview = prewControl;
|
|
report.Prepare();
|
|
report.ShowPrepared();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 载入报表路径和报表数据
|
|
/// </summary>
|
|
private void LoadFrxAndData(FastReport.Report report, string filePathStr)
|
|
{
|
|
//1 编辑指定路径下的frx,先load frx
|
|
report.Load(filePathStr);
|
|
}
|
|
/// <summary>
|
|
/// 报表设计与预览显示在同一个区域,每次只显示一个
|
|
/// </summary>
|
|
/// <param name="designerControlVisibility"></param>
|
|
/// <param name="designerControlVisibility"></param>
|
|
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; }
|
|
}
|
|
/// <summary>
|
|
/// 获取打印机列表
|
|
/// </summary>
|
|
private static List<string> GetLocalPrinters()
|
|
{
|
|
List<string> fPrinters = new List<string>();
|
|
fPrinters.Add(DefaultPrinter);
|
|
foreach (string fPrinterName in PrinterSettings.InstalledPrinters)
|
|
{
|
|
if (!fPrinters.Contains(fPrinterName))
|
|
fPrinters.Add(fPrinterName);
|
|
}
|
|
return fPrinters;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|