using ButcherFactory.BO; using ButcherFactory.BO.Utils; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ButcherFactory.SegmentProduction_ { public static class SegmentProductionPrint { static int id = 1; const string PRINTFILE = @"PrintTemplate\"; const string ENDFILE = @"PrintTemplate\SegmentProductionPrintEnd.html"; const string IMGFILE = @"TempImg\_img{0}.png"; static string CustomerDefine = "GB/T9959.2-2008"; public static void Print(SegmentProduction entity, DateTime? dt, string template) { if (BO.Utils.AppContext.ConnectInfo.TraceBackUrl == "default") throw new Exception("请先配置追溯服务器地址"); if (dt == null) dt = DateTime.Today; var dic = new Dictionary(); dic.Add("$ShotPrintName", entity.ShotPrintName); dic.Add("$Goods_Name", entity.Goods_Name); var info = string.Empty; if (entity.StandardPic) info = string.Format("规格:{0}", entity.Goods_Spec); else info = string.Format("重量:{0:#0.##}{1}", entity.Weight, entity.MainUnit); dic.Add("$Info", info); dic.Add("$Date", dt.Value.ToString("yyyy/MM/dd")); var customerDefine = entity.Goods_CustomerDefine; if (string.IsNullOrEmpty(customerDefine)) customerDefine = CustomerDefine; dic.Add("$CustomerDefine", customerDefine); var code = entity.BarCode; if (code.Length > 17) code = code.Substring(17); dic.Add("$Code", code); var imgUrl = string.Format(IMGFILE, id); var url = string.Format(BO.Utils.AppContext.ConnectInfo.TraceBackUrl + "?code={0}", entity.BarCode); BwpClientPrint.BwpClientWebPrint.Create2DPic(url, imgUrl, 120); dic.Add("$ImageUrl", imgUrl); dic.Add("$Identity", entity.Identify); var barImgUrl = string.Format(IMGFILE, id + "_bar"); try { BwpClientPrint.BwpClientWebPrint.CreateBarCode("69212203" + entity.Goods_Code, barImgUrl, new Size(120, 40)); } catch (Exception ex) { if (ex.Message == "Contents do not pass checksum") { BwpClientPrint.BwpClientWebPrint.CreateBarCode("69738841" + entity.Goods_Code, barImgUrl, new Size(120, 40)); } } dic.Add("$BarImg", barImgUrl); string unit = entity.MainUnit; int rate = 1; if (unit.ToUpper() == "KG") { rate = 1000; unit = "g"; } dic.Add("$Weight", string.Format("{0:#0.##}{1}", entity.Weight * rate, unit)); BwpClientPrint.BwpClientWebPrint.Print(PRINTFILE + template, dic); AfterPrint(); } public static void PrintEnd(List list) { string firstRow = "{0}:{1}{2:#0.######}"; string template = "{0}:{1}{2:#0.######}"; var builder = new StringBuilder(); bool first = true; var count = list.GroupBy(x => x.Goods_Name).Count(); foreach (var item in list.GroupBy(x => x.Goods_Name)) { var weight = item.Sum(x => x.Weight); var num = item.Count(); if (first) { builder.Append(string.Format(firstRow, item.Key, num, weight, count)); first = false; } else builder.Append(string.Format(template, item.Key, num, weight)); } var dic = new Dictionary(); dic.Add("$tableContent", builder.ToString()); var groupID = list.First().GroupID.ToString(); var imgUrl = string.Format(IMGFILE, id); BwpClientPrint.BwpClientWebPrint.Create2DPic(groupID, imgUrl, 120); dic.Add("$ImageUrl", imgUrl); dic.Add("$DateTime", DateTime.Now.ToString("yyyy/MM/dd HH:ss")); BwpClientPrint.BwpClientWebPrint.Print(ENDFILE, dic); AfterPrint(); } static DirectoryInfo TempImage = null; private static void AfterPrint() { if (id == 100) id = 0; id++; if (TempImage == null) TempImage = new DirectoryInfo("TempImg"); var files = TempImage.GetFiles(); while (files.Length > 100) { var last = files.OrderBy(x => x.CreationTime).First().FullName; File.Delete(last); files = TempImage.GetFiles(); } } } }