using BBWY.Client.Models.APIModel; using BBWY.Client.Models.PackTask; using BBWY.Client.Views.SealBox; using BBWY.Controls; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Drawing.Printing; using System.IO; using System.Reflection; 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.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace BBWY.Client.Views.FallWare { /// /// PrintLSOrderWindow.xaml 的交互逻辑 /// public partial class PrintLSOrderWindow : BWindow { public PrintLSOrderWindow(List getWareLSOrderPurchases, string prewOrder, GetWareLSAcceptOrderResponse getWareLSAcceptOrderResponse) { InitializeComponent(); InitPrintList(); this.DataContext = this; GetWareLSOrderPurchases = getWareLSOrderPurchases; PrewOrder = prewOrder; GetWareLSAcceptOrderResponse = getWareLSAcceptOrderResponse; } /// /// 打印机列表 /// public ObservableCollection PrintList { get; set; } public string PrintName { get; set; } public int PrintCount { get; set; } = 1; public void InitPrintList() { //TaskImage = MyPrintHelper.GetBarcodeImage(TaskId.ToString(), 300, 60); //BarcodeImage = MyPrintHelper.GetBarcodeImage(SkuId, 300, 60); PrintList = new ObservableCollection(); var printingNames = PrinterSettings.InstalledPrinters;//获取本机的打印机数据 int index = -1; int selectIndex = 0; foreach (string name in printingNames) { if (name == "Microsoft XPS Document Writer" || name == "Microsoft Print to PDF" || name == "Fax") { continue; } index++; if (name.Contains("Deli")) { selectIndex = index; } PrintList.Add(name); } try { var applicationPath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string printNames = System.IO.Path.Combine(applicationPath, "printName.init"); if (File.Exists(printNames)) { PrintName = File.ReadAllText(printNames); } else { if (PrintList.Count > 0) { PrintName = PrintList[0].ToString(); } } } catch (Exception) { } } /// /// 采购单列表 /// public List GetWareLSOrderPurchases { get; set; } public string PrewOrder { get; set; } public GetWareLSAcceptOrderResponse GetWareLSAcceptOrderResponse { get; set; } private void BButton_Click(object sender, RoutedEventArgs e) { int limitIndex = 10;//单页限制数量 int totalPageIndex = GetWareLSOrderPurchases.Count % 10 == 0 ? GetWareLSOrderPurchases.Count / 10 : GetWareLSOrderPurchases.Count / 10 + 1; Task.Factory.StartNew(() => { for (int i = 0; i < PrintCount; i++)//打印份数 { int nowPageIndex = 0; again: nowPageIndex++; if (GetWareLSOrderPurchases.Count > limitIndex) { PrintBox(GetWareLSOrderPurchases.GetRange(0, limitIndex), nowPageIndex, totalPageIndex); GetWareLSOrderPurchases.RemoveRange(0, limitIndex); goto again; } else { PrintBox(GetWareLSOrderPurchases, nowPageIndex, totalPageIndex); } } App.Current.Dispatcher.Invoke(() => { this.Close(); }); }); } public void PrintBox(List GetWareLSOrderPurchases, int nowPageIndex, int totalPageIndex) { App.Current.Dispatcher.Invoke(() => { WareLSAcceptOrderWindow lSAcceptOrderWindow = new WareLSAcceptOrderWindow(GetWareLSAcceptOrderResponse, GetWareLSOrderPurchases, nowPageIndex, totalPageIndex, PrewOrder); //lSAcceptOrderWindow.Show(); lSAcceptOrderWindow.PrintLSOrder(PrintName); }); //SealBoxPolicyDetailsWindow policyDetailsWindow = new SealBoxPolicyDetailsWindow(sealBoxSkus, SealBoxModel.ShopName, SealBoxModel.WareName, SealBoxModel.SealBoxId); //policyDetailsWindow.PrintBox(PrintName); } } }