123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- using PdfSharp.Drawing;
- using PdfSharp.Pdf;
- using SixLabors.ImageSharp.Formats.Png;
- using SixLabors.ImageSharp.PixelFormats;
- using WMS.Info;
- using WMS.Util;
- using ZXing;
- using ZXing.Common;
- using ZXing.QrCode;
- namespace WMS.Core.ServiceCore.FeiXu
- {
- public class FxBaseBarCodeCore
- {
- /// <summary>
- /// 获取列表数据
- /// <summary>
- /// <returns></returns>
- public IEnumerable<BASE_BARCODE> GetList(string keyword)
- {
- try
- {
- return SysDbCore.GetDbCtx().Queryable<BASE_BARCODE>().WhereIF(!keyword.IsEmpty(), it => it.F_barCode.Contains(keyword)).ToList();
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- /// <summary>
- /// 获取分页数据
- /// <summary>
- /// <returns></returns>
- public IEnumerable<BASE_BARCODE> GetPageList(string queryJson, Pagination pagination)
- {
- try
- {
- var db = SysDbCore.GetDbCtx().Queryable<BASE_BARCODE>();
- int count = 0;
- var queryParam = queryJson.ToJObject();
- //单据日期
- if (!queryParam["Btime"].IsEmpty() && !queryParam["Etime"].IsEmpty())
- {
- db.Where(ord => ord.F_addTime >= queryParam["Btime"].ToDate() && ord.F_addTime <= queryParam["Etime"].ToDate());
- }
- if (!queryParam["keyword"].IsEmpty())
- {
- string matNo = queryParam["keyword"].ToString();
- db.Where(ord => ord.F_barCode.Contains(matNo));
- }
- if (!queryParam["F_addUserNo"].IsEmpty())
- {
- string userNo = queryParam["trayNo"].ToString();
- db.Where(ord => ord.F_addUserNo.Contains(userNo));
- }
- if (!queryParam["F_barType"].IsEmpty())
- {
- int barType = FuncStr.NullToInt(queryParam["F_barType"]);
- db.Where(ord => ord.F_barType == barType);
- }
- List<BASE_BARCODE> list = null;
- if (pagination.sord.ToUpper() == "ASC")
- {
- list = db.OrderBy(pagination.sidx).ToPageList(pagination.page, pagination.rows, ref count);
- }
- else
- {
- string orderstr = pagination.sidx + " desc";
- list = db.OrderBy(orderstr).ToPageList(pagination.page, pagination.rows, ref count);
- }
- pagination.records = count;
- return list;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- public void PrintBarCode(List<BASE_BARCODE> lstBaseCode, LoginUserInfo loginInfo)
- {
- using (var ctx = SysDbCore.GetDbCtx())
- {
- lstBaseCode.ForEach(code =>
- {
- code.F_printNumber += 1;
- code.F_printTime = DateTime.Now;
- code.F_printUserNo = loginInfo.UserNo;
- });
- ctx.Updateable(lstBaseCode).UpdateColumns(it => new { it.F_printNumber, it.F_printTime, it.F_printUserNo }).WhereColumns(it => it.F_no).ExecuteCommand();
- }
- }
- public string CreatePrintBarCodePDF(List<BASE_BARCODE> lstBaseCode, string path)
- {
- int Resolution = 300;//300 dpi high resolution of the barcode image
- var ssdocument = new PdfDocument();
- //Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document();
- foreach (var item in lstBaseCode)
- {
- var sspage = ssdocument.AddPage();
- if (item.F_barType == 1)
- {
- //BarcodeGenerator generator = new BarcodeGenerator(EncodeTypes.Code39Standard, item.F_barCode);
- //generator.Parameters.Resolution = Resolution;//set the barcode image resolution
- //var ssimage = generator.GenerateBarCodeImage();
- //MemoryStream imageStream = new MemoryStream();
- //generator.Save(imageStream, BarCodeImageFormat.Png);
- //imageStream.Position = 0;
- //var ximage = PdfSharp.Drawing.XImage.FromStream(imageStream);
- //DrawBarcodeImageFull(sspage, ximage);
- var writer = new ZXing.ImageSharp.BarcodeWriter<Rgba32>();
- writer.Format = BarcodeFormat.CODE_128;
- QrCodeEncodingOptions options = new QrCodeEncodingOptions();
- options.DisableECI = true;
- //设置内容编码
- options.CharacterSet = "UTF-8";
- //设置二维码的宽度和高度
- options.Width = 750;
- options.Height = 400;
-
- //设置二维码的边距,单位不是固定像素
- options.Margin = 1;
- writer.Options = options;
- //var ms = new MemoryStream();
- //using (var image = writer.Write(item.F_barCode))
- //{
- // image.SaveAsJpeg(ms);//保存于流
- //}
- var imagesharp = writer.WriteAsImageSharp<Rgba32>(item.F_barCode);
- var ms = new MemoryStream();
- imagesharp.Save(ms, new PngEncoder());
- ms.Position = 0;//设置位置
- var ximage = PdfSharp.Drawing.XImage.FromStream(ms);
- DrawQrCodeImageFull(sspage, ximage);
- }
- else
- {
- var writer = new ZXing.ImageSharp.BarcodeWriter<Rgba32>();
- writer.Format = BarcodeFormat.QR_CODE;
- QrCodeEncodingOptions options = new QrCodeEncodingOptions();
- options.DisableECI = true;
- //设置内容编码
- options.CharacterSet = "UTF-8";
- //设置二维码的宽度和高度
- options.Width = 500;
- options.Height = 500;
- //设置二维码的边距,单位不是固定像素
- options.Margin = 1;
- writer.Options = options;
- //var ms = new MemoryStream();
- //using (var image = writer.Write(item.F_barCode))
- //{
- // image.SaveAsJpeg(ms);//保存于流
- //}
- var imagesharp = writer.WriteAsImageSharp<Rgba32>(item.F_barCode);
- var ms = new MemoryStream();
- imagesharp.Save(ms, new PngEncoder());
- ms.Position = 0;//设置位置
- var ximage = PdfSharp.Drawing.XImage.FromStream(ms);
- DrawQrCodeImageFull(sspage, ximage);
- }
- }
- var dirPath = $@"DataFiles\{DateTime.Now.Year}\{DateTime.Now.Month}\{DateTime.Now.Day}\";
- DirFileUtil.CreateDir(@"wwwroot\"+dirPath);
- var filename = $"{DateTime.Now.Ticks}.pdf";
- var xxpath = $"{path}wwwroot\\{dirPath}{filename}";
- if (System.IO.File.Exists(xxpath))
- System.IO.File.Delete(xxpath);
- ssdocument.Save(xxpath);
- return @"\" + dirPath + filename;
- //using (var ctx = SysDbCore.GetDbCtx())
- //{
- // lstBaseCode.ForEach(code =>
- // {
- // code.F_printNumber += 1;
- // code.F_printTime = DateTime.Now;
- // code.F_printUserNo = loginInfo.UserNo;
- // });
- // ctx.Updateable(lstBaseCode).UpdateColumns(it => new { it.F_printNumber, it.F_printTime, it.F_printUserNo }).WhereColumns(it => it.F_no).ExecuteCommand();
- //}
- }
- public byte[] GenerateBarcode(string text)
- {
- var writer = new ZXing.ImageSharp.BarcodeWriter<Rgba32>()
- {
- Format = BarcodeFormat.CODE_128,
- Options = new EncodingOptions
- {
- Height = 500,
- Width =500
- }
- };
- var bitmap = writer.Write(text);
- using var stream = new MemoryStream();
- //bitmap.Save(stream, ImageFormat.Png);
- return stream.ToArray();
- }
- /// <summary>
- /// Draws image to pdf page
- /// </summary>
- /// <param name="image"></param>
- private static void DrawBarcodeImageFull(PdfPage page, XImage image)
- {
- page.Width = image.PixelWidth;
- page.Height = image.PixelHeight + 800;
- var gfx = XGraphics.FromPdfPage(page);
- //System.Drawing.Rectangle imageRect = new System.Drawing.Rectangle(leftBarcodePosition, topBarcodePosition, (image.Width * 72) / Resolution, (image.Height * 72) / Resolution);
- gfx.DrawImage(image, (image.PixelWidth - 20) / 3, 20, 300, (image.PixelHeight * 72) / 200);
- }
- /// <summary>
- /// Draws image to pdf page
- /// </summary>
- /// <param name="image"></param>
- private static void DrawQrCodeImageFull(PdfPage page, XImage image)
- {
- page.Width = image.PixelWidth + 600;
- page.Height = image.PixelHeight + 500;
- var gfx = XGraphics.FromPdfPage(page);
- //System.Drawing.Rectangle imageRect = new System.Drawing.Rectangle(leftBarcodePosition, topBarcodePosition, (image.Width * 72) / Resolution, (image.Height * 72) / Resolution);
- gfx.DrawImage(image, (image.PixelWidth - 20), 20, (image.PixelWidth * 72) / 200, (image.PixelHeight * 72) / 200);
- }
- /// <summary>
- /// 生成条码
- /// <summary>
- /// <returns></returns>
- public void generateBarCode(BarCodeRequest req, LoginUserInfo loginInfo)
- {
- try
- {
- using (var ctx = SysDbCore.GetDbCtx())
- {
- List<BASE_BARCODE> lstBarCode = new List<BASE_BARCODE>();
- for (int i = req.F_code; i < req.F_maxNum; i++)
- {
- string barCode = $"{req.F_prefix}{i.ToString().PadLeft(req.F_length - req.F_prefix.Length - req.F_suffix.Length, req.F_replenish)}{req.F_suffix}";
- lstBarCode.Add(new BASE_BARCODE
- {
- F_addTime = DateTime.Now,
- F_addUserNo = loginInfo.AppDeviceNo,
- F_barCode = barCode,
- F_barType = req.F_barType
- });
- }
- ctx.Insertable(lstBarCode).ExecuteCommand();
- }
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- }
- }
|