using BarcodeStandard; using OfficeOpenXml.FormulaParsing.Excel.Functions.Information; using SkiaSharp; using SqlSugar; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Printing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Helper; using WIDESEA_DTO.Basic; using WIDESEA_IBasicRepository; using WIDESEA_IBasicService; using WIDESEA_Model.Models; namespace WIDESEA_BasicService { public class PalletCodeInfoService : ServiceBase, IPalletCodeInfoService { private readonly IWarehouseRepository _warehouseRepository; public PalletCodeInfoService(IPalletCodeInfoRepository BaseDal, IWarehouseRepository warehouseRepository) : base(BaseDal) { _warehouseRepository = warehouseRepository; } public override WebResponseContent AddData(SaveModel saveModel) { try { string PalletCode = saveModel.MainData["palletCode"].ToString(); int Width = saveModel.MainData["width"].ObjToInt(); int Height = saveModel.MainData["height"].ObjToInt(); int Size = saveModel.MainData["size"].ObjToInt(); if (string.IsNullOrEmpty(PalletCode)) throw new Exception("托盘号不能为空"); Dt_PalletCodeInfo palletCodeInfo = BaseDal.QueryFirst(x => x.PalletCode == PalletCode); if (palletCodeInfo != null) throw new Exception("托盘号已存在"); palletCodeInfo = new Dt_PalletCodeInfo() { PalletCode = PalletCode, Width = Width, Height = Height, Size = Size, Qty = 1, PrintFrequency = 2, }; BaseDal.AddData(palletCodeInfo); return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } /// /// 打印条码 /// /// /// public WebResponseContent PrintBarcodeLib(List keys) { try { Dt_PalletCodeInfo palletCodeInfo = BaseDal.QueryFirst(x => keys.Contains(x.Id)); if (palletCodeInfo == null) throw new Exception("信息有误"); #region 生成条码 Barcode barcode = new Barcode();//创建条形码对象 barcode.IncludeLabel = true;//确保包括标签 barcode.Alignment = AlignmentPositions.Center;//条形码对齐方式 barcode.LabelFont = new SKFont { Typeface = SKTypeface.FromFamilyName("Arial", SKFontStyle.Normal),//字体样式 Size = palletCodeInfo.Size,// 标签字体 }; barcode.EncodedType = BarcodeStandard.Type.Code128; barcode.Width = palletCodeInfo.Width; barcode.Height = palletCodeInfo.Height; #endregion for (int i = 1; i <= palletCodeInfo.Qty; i++) { #region 生成条形码图像 var n = DateTime.Now.ToString("yy"); var Barcode = n + palletCodeInfo.Code.ToString("000000"); //var Barcode = palletCodeInfo.PalletCode + palletCodeInfo.Code.ToString("00000000"); palletCodeInfo.Code++; SKImage bitmap = barcode.Encode(Barcode); #endregion for (int j = 1; j <= palletCodeInfo.PrintFrequency; j++) { } } return WebResponseContent.Instance.OK("打印成功"); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } public string newBarcodeLib(int key) { Dt_PalletCodeInfo palletCodeInfo = BaseDal.QueryFirst(x => key == x.Id); Barcode barcode = new Barcode();//创建条形码对象 barcode.IncludeLabel = true;//确保包括标签 barcode.Alignment = AlignmentPositions.Center;//条形码对齐方式 barcode.LabelFont = new SKFont { Typeface = SKTypeface.FromFamilyName("Arial", SKFontStyle.Bold),//字体样式 Size = palletCodeInfo.Size,// 标签字体 }; barcode.EncodedType = BarcodeStandard.Type.Code128; barcode.Width = palletCodeInfo.Width; barcode.Height = palletCodeInfo.Height; var Barcode = DateTime.Now.ToString("yy") + palletCodeInfo.Code.ToString("000000"); palletCodeInfo.Code++; BaseDal.UpdateData(palletCodeInfo); SKImage bitmap = barcode.Encode(Barcode); var a = barcode.EncodedImageBytes; return Convert.ToBase64String(a, 0, (int)a.Length); } public string newBarcodeLib(palletCodeInfoDTO palletCodeInfo) { #region 生成条形码 if (palletCodeInfo == null) throw new Exception("信息有误"); Barcode barcode = new Barcode();//创建条形码对象 barcode.IncludeLabel = true;//确保包括标签 barcode.Alignment = AlignmentPositions.Center;//条形码对齐方式 barcode.LabelFont = new SKFont { Typeface = SKTypeface.FromFamilyName("Arial", SKFontStyle.Normal),//字体样式 Size = palletCodeInfo.Size,// 标签字体 }; //设置条形码类型 //barcode.EncodedType = BarcodeStandard.Type.UpcA;//11-12纯数字 barcode.EncodedType = BarcodeStandard.Type.Code128;// 数据应该包括数字和字母 //设置条形码数据 //barcode.RawData = "AA12345"; //设置条形码尺寸 barcode.Width = palletCodeInfo.Width; barcode.Height = palletCodeInfo.Height; var Barcode = DateTime.Now.ToString("yy") + palletCodeInfo.Code.ToString("000000"); //生成条形码图像 SKImage bitmap = barcode.Encode(Barcode); var a = barcode.EncodedImageBytes; var b = Convert.ToBase64String(a, 0, (int)a.Length); //保存条形码图像到文件(可选) //barcode.SaveImage("C://Users//dell//Desktop//1.控制打印机/barcode.png", SaveTypes.Png); // 打印条形码图像(需要有打印机,并且配置好打印机) //barcode.Print(); // 清理资源 //barcode.Dispose(); #endregion return b; } } }