yuyou_x
2024-03-16 ecb386a4201213c6635f28f9e9e02e3faf217b51
Wms/WMS.BLL/BllAsnServer/BllLabelBoxNoServer.cs
@@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using Model.ModelDto.BllAsnDto;
using Model.ModelVm.BllAsnVm;
using SqlSugar;
using Utility.Tools;
using WMS.DAL;
using WMS.Entity.BllAsnEntity;
using WMS.Entity.Context;
@@ -138,667 +140,568 @@
            }
        }
        //获取标签信息(生成标签)
        public List<LabelBoxDto> AddLabelBoxReturn(int imId, string isReset,decimal arriveQty, string skuName, string standard, string packStandard, string skuNo,
            string supplierLot, string productionTime, string expirationTime, string storeTime, int userId)
        {
            try
            {
                #region 必填验证
        ///// <summary>
        /////  获取物料标签信息JC06
        ///// </summary>
        ///// <param name="imId"></param>
        ///// <param name="isPrint">是否重新生成自有批次 0:否 1:是 </param>
        ///// <param name="createUser">创建人</param>
        ///// <param name="number">箱内数量(一级标签必填)</param>
        ///// <param name="productionDate">生产日期</param>
        ///// <param name="supplierName">生产厂家</param>
        ///// <param name="supplierLot">生产厂家批号</param>
        ///// <param name="inspectTime">有效期</param>
        ///// <param name="expirationTime">保质期</param>
        ///// <param name="bQNum">外箱标签数量</param>
        ///// <param name="skuNum">到货数量</param>
        ///// <returns></returns>
        //public List<LabelPrint5Model> GetImport5Id(string imId, string isPrint, string createUser, decimal number, string productionDate,
        //    string supplierName, string supplierLot, string inspectTime, string expirationTime, int? bQNum, string skuNum)
        //{
        //    try
        //    {
        //        using (LinqModelDataContext DataContext = new LinqModelDataContext(DataConnection.GetDataConnection))
        //        {
        //            #region 必填验证
                //if (string.IsNullOrWhiteSpace(productionDate))
                //{
                //    throw new Exception("生产日期需必填,不能为空");
                //}
        //            if (string.IsNullOrWhiteSpace(productionDate))
        //            {
        //                throw new Exception("生产日期需必填,不能为空");
        //            }
                //var twoSeletOne = true;//有效期、复验期二选一
                //if (string.IsNullOrWhiteSpace(expirationTime))
                //{
                //    twoSeletOne = false;
                //}
                //if (string.IsNullOrWhiteSpace(inspectTime))
                //{
                //    twoSeletOne = false;
                //}
        //            var twoSeletOne = true;//有效期、复验期二选一
        //            if (string.IsNullOrWhiteSpace(expirationTime))
        //            {
        //                twoSeletOne = false;
        //            }
        //            if (string.IsNullOrWhiteSpace(inspectTime))
        //            {
        //                twoSeletOne = false;
        //            }
                //if (twoSeletOne)
                //{
                //    throw new Exception("有效期、复验期最好填写一个");
                //}
                //if (string.IsNullOrWhiteSpace(supplierName))
                //{
                //    throw new Exception("生产厂家需必填,不能为空");
                //}
                //if (string.IsNullOrWhiteSpace(supplierLot))
                //{
                //    throw new Exception("厂家批号需必填,不能为空");
                //}
        //            if (twoSeletOne)
        //            {
        //                throw new Exception("有效期、复验期最好填写一个");
        //            }
        //            if (string.IsNullOrWhiteSpace(supplierName))
        //            {
        //                throw new Exception("生产厂家需必填,不能为空");
        //            }
        //            if (string.IsNullOrWhiteSpace(supplierLot))
        //            {
        //                throw new Exception("厂家批号需必填,不能为空");
        //            }
                //if (bQNum <= 0)
                //{
                //    throw new Exception("外箱标签数量不能为空或小于等于0");
                //}
        //            if (bQNum <= 0)
        //            {
        //                throw new Exception("外箱标签数量不能为空或小于等于0");
        //            }
                #endregion
        //            #endregion
        //            #region MyRegion
                #region 单据、物料、包装、标签信息获取
        //            var list = DataContext.View_ImportNotify.FirstOrDefault(a => a.ImportId == imId && a.IsDel == 0);
        //            List<LabelPrint5Model> printModel = new List<LabelPrint5Model>();
                var asnList = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == imId && m.IsDel == "0");
                if (asnList == null)
                {
                    throw new Exception("未查询到单据明细信息");
                }
                var asn = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == asnList.ASNNo && m.IsDel == "0");
                if (asn == null)
                {
                    throw new Exception("未查询到单据信息");
                }
                //物料
                var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == asnList.SkuNo);
                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == asnList.PackagNo);
                if (pack == null)
                {
                    throw new Exception("未查询到当前单据中物料的包装信息");
                }
                //标签表
                var label = Db.Queryable<BllLabelBoxNo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == imId).ToList();
        //            if (list == null)
        //            {
        //                throw new Exception("未查询到单据信息");
        //            }
        //            var goodMap = DataContext.GoodMapAndMes.FirstOrDefault(m => m.WmsGoodCode == list.GoodsCode && m.IsDel == 0);
        //            var mesGood = "AAAA";
        //            if (goodMap != null)
        //            {
        //                mesGood = goodMap.MesGoodCode;
        //            }
        //            //物料
        //            var good = DataContext.WmsBaseGoods.FirstOrDefault(m => m.GoodsDeleteFlag == 0 && m.GoodsCode == list.GoodsCode);
        //            var pack = DataContext.WmsBasePackaging.FirstOrDefault(m => m.IsDel == 0 && m.Id == good.GoodsPackaging);
        //            if (pack == null)
        //            {
        //                throw new Exception("未查询到当前单据中物料的包装信息");
        //            }
        //            //标签表
        //            var labelData = DataContext.LabelPrint.Where(m => m.ImportId == imId).ToList();
                #endregion
        //            if (bQNum == null)
        //            {
        //                bQNum = 0;
        //            }
        //            var bNum = 0;//箱物品数量
        //            var zNum = 0;//支物品数量
        //            var packLevel = 0;
        //            var isGo = false;
                #region 包装查询
        //            #endregion
                var bNum = 0;//箱物品数量
                var zNum = 0;//支物品数量
                var packLevel = 0;
                var isGo = true;
        //            #region 包装查询
                if (pack.L5Num.HasValue)
                {
                    if (pack.L5Name != "托")
                    {
                        isGo = false;
                        packLevel = 5;
                        bNum = Convert.ToInt32(pack.L5Num);
                    }
                }
                if (pack.L4Num.HasValue && isGo)
                {
                    if (pack.L4Name != "托")
                    {
                        isGo = false;
                        packLevel = 4;
                        bNum = Convert.ToInt32(pack.L4Num);
                    }
                }
                if (pack.L3Num.HasValue && isGo)
                {
                    if (pack.L4Name != "托")
                    {
                        isGo = false;
                        packLevel = 3;
                        bNum = Convert.ToInt32(pack.L3Num);
                    }
                }
                if (pack.L2Num.HasValue)
                {
                    packLevel = 2;
                    bNum = Convert.ToInt32(pack.L2Num);
        //            //if (!string.IsNullOrWhiteSpace(pack.FivelevelNum))
        //            //{
        //            //    if (pack.FivelevelUnit != "托")
        //            //    {
        //            //        isGo = false;
        //            //        packLevel = 5;
        //            //        bNum = Convert.ToInt32(pack.FivelevelNum);
        //            //    }
        //            //}
        //            //if (!string.IsNullOrWhiteSpace(pack.FourlevelNum) && isGo)
        //            //{
        //            //    if (pack.FourlevelUnit != "托")
        //            //    {
        //            //        isGo = false;
        //            //        packLevel = 4;
        //            //        bNum = Convert.ToInt32(pack.FourlevelNum);
        //            //    }
        //            //}
        //            //if (!string.IsNullOrWhiteSpace(pack.ThreelevelNum) && isGo)
        //            //{
        //            //    if (pack.ThreelevelUnit != "托")
        //            //    {
        //            //        isGo = false;
        //            //        packLevel = 3;
        //            //        bNum = Convert.ToInt32(pack.ThreelevelNum);
        //            //    }
        //            //}
        //            if (!string.IsNullOrWhiteSpace(pack.TwolevelNum))
        //            {
        //                packLevel = 2;
        //                bNum = Convert.ToInt32(pack.TwolevelNum);
                }
                if (pack.L1Num.HasValue)
                {
                    if (packLevel == 0)
                    {
                        packLevel = 1;
                        bNum = Convert.ToInt32(pack.L1Num);
                    }
                    zNum = Convert.ToInt32(pack.L1Num);
                }
        //            }
        //            if (!string.IsNullOrWhiteSpace(pack.OnelevelNum))
        //            {
        //                if (packLevel == 0)
        //                {
        //                    packLevel = 1;
        //                    bNum = Convert.ToInt32(pack.OnelevelNum);
        //                }
        //                zNum = Convert.ToInt32(pack.OnelevelNum);
        //            }
                if (packLevel <= 1)//包装等级小于1,按照1级标签打印
                {
                    packLevel = 1;
                }
        //            if (packLevel <= 1)//包装等级小于1,按照1级标签打印
        //            {
        //                packLevel = 1;
        //            }
                #endregion
        //            #endregion
                if (packLevel == 1)
                {
                    #region 一级包装
        //            if (packLevel == 1)
        //            {
        //                #region 一级包装
                    // 根据用户输入的箱数量计算需要的条码数
                    var labQty = label.Sum(m => m.Qty);
                    var qty = asnList.Qty - labQty;//当前单据剩余需要打印的物料数量(不是标签数量)
                    if (qty <= 0)
                    {
                        throw new Exception("当前单据物料标签已打印完毕,如有需要请补打");
                    }
        //                // 根据用户输入的箱数量计算需要的条码数
        //                var labQty = labelData.Sum(m => m.Qty);
        //                var qty = Convert.ToDecimal(list.ImportQuantity) - (decimal)labQty;//当前单据剩余需要打印的数量
        //                if (qty <= 0)
        //                {
        //                    throw new Exception("当前单据物料标签已打印完毕,如有需要请补打");
        //                }
                    #region 到货数量
                    if (arriveQty - qty > 0)
                    {
                        throw new Exception("到货数量大于未打标签数量,请重新输入到货数量并核实!");
                    }
                    else
                    {
                        qty = arriveQty;
                    }
        //                #region 增加到货数量
        //                if (skuNum != "")
        //                {
        //                    if (qty - Convert.ToDecimal(skuNum) < 0)
        //                    {
        //                        throw new Exception("到货数量大于未打标签数量,请重新输入到货数量!");
        //                    }
        //                    else
        //                    {
        //                        qty = Convert.ToDecimal(skuNum);
        //                    }
        //                }
        //                #endregion
                    #endregion
        //                int labelNum = 1; //生产条码数量
        //                if (number > 0)
        //                {
        //                    labelNum = int.Parse(Math.Ceiling(qty / number).ToString());//标签数量
        //                }
        //                else
        //                {
        //                    throw new Exception("当前单据物料是一级包装,请输入箱内数量且大于0");
        //                }
                    int labelNum = 1; //生产条码数量
                    if (zNum > 0)
                    {
                        labelNum = int.Parse(Math.Ceiling(qty / zNum).ToString());//标签数量
                    }
                    else
                    {
                        throw new Exception("当前单据物料是一级包装,未查询到一级包装信息");
                    }
        //                if (bQNum >= 1)//打印标签数量是否大于1 (有打印标签数量)
        //                {
        //                    if (bQNum > 100)
        //                    {
        //                        throw new Exception("打印标签数量建议在100张以内");
        //                    }
        //                    if (bQNum < labelNum) //打印的标签数量大于等于剩余能打印的张数量
        //                    {
        //                        labelNum = (int)bQNum;
        //                    }
        //                }
                    #region 获取/生成批次号
        //                if (labelNum > 100)
        //                {
        //                    labelNum = 100;
        //                }
                    string maxLotNoStr = ""; //批次号
                    string maxBoxCode = ""; //箱码号
                    // 生成自编批号
                    string toDayTime = DateTime.Now.ToString("yyyyMMdd");
                    var diJiJian = 0;
        //                string maxCodestr = "";
        //                string maxboxcode = "";
        //                // 生成自编批号
        //                string toDayTime = DateTime.Now.ToString("yyyyMMdd");
        //                var diJiJian = 0;
        //                if (isPrint == "0")
        //                {
        //                    var maxCode = DataContext.LabelPrint.Where(b => b.ImportId == imId).ToList().Max(a => a.ImportLotNo);
        //                    var boxCode1 = DataContext.LabelPrint.Where(b => b.ImportId == imId).ToList().Max(a => a.LabelStream);
        //                    maxCodestr = maxCode;
        //                    maxboxcode = boxCode1;
        //                    if (string.IsNullOrWhiteSpace(maxCodestr))
        //                    {
        //                        maxCodestr = toDayTime.Substring(2, 6) + "0001";
        //                    }
        //                    else
        //                    {
        //                        var q = DataContext.LabelPrint
        //                            .Where(m => m.ImportId == imId && m.ImportLotNo == maxCodestr)
        //                            .GroupBy(m => m.LabelStream).ToList();
        //                        diJiJian = q.Count;
        //                    }
        //                }
        //                else
        //                {
        //                    var maxCode = DataContext.LabelPrint.Max(a => a.ImportLotNo);                        // 获取今天最大批次号
        //                    if (string.IsNullOrWhiteSpace(maxCode))
        //                    {
        //                        maxCodestr = toDayTime.Substring(2, 6) + "0001";
        //                    }
        //                    else
        //                    {
        //                        var lotStr = maxCode.Substring(0, 6);
        //                        var timeStr = toDayTime.Substring(2, 6);
        //                        if (lotStr == timeStr)
        //                        {
        //                            maxCodestr = toDayTime.Substring(2, 6) + (int.Parse(maxCode.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
        //                        }
        //                        else
        //                        {
        //                            maxCodestr = timeStr + "0001";
        //                        }
                    var maxLotNo = label.Max(a => a.LotNo);
                    var maxBoxNo = label.Max(a => a.BoxNo);
                    if (isReset == "0")
                    {
                        maxLotNoStr = maxLotNo;
                        maxBoxCode = maxBoxNo;
                        if (string.IsNullOrWhiteSpace(maxLotNoStr))
                        {
                            maxLotNoStr = toDayTime.Substring(2, 6) + "0001";
                        }
                    }
                    else
                    {
                        var maxCode = Db.Queryable<BllLabelBoxNo>().Max(a => a.LotNo);                        // 获取今天最大批次号
                        if (string.IsNullOrWhiteSpace(maxCode))
                        {
                            maxLotNoStr = toDayTime.Substring(2, 6) + "0001";
                        }
                        else
                        {
                            var lotStr = maxCode.Substring(0, 6);
                            var timeStr = toDayTime.Substring(2, 6);
                            if (lotStr == timeStr)
                            {
                                maxLotNoStr = toDayTime.Substring(2, 6) + (int.Parse(maxCode.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
                            }
                            else
                            {
                                maxLotNoStr = timeStr + "0001";
                            }
        //                    }
        //                }
        //                var sapNo = "";
        //                if (!string.IsNullOrWhiteSpace(list.OuterBillCode) && !string.IsNullOrWhiteSpace(list.SequenceNo))
        //                {
        //                    sapNo = list.OuterBillCode + "-" + list.SequenceNo;
        //                }
                        }
                    }
        //                for (int i = 1; i <= labelNum; i++)
        //                {
        //                    // 物料条码信息赋值
        //                    LabelPrint5Model model = new LabelPrint5Model();
        //                    model.ImportId = imId;
        //                    model.OuterBillCode = list.OuterBillCode;
        //                    model.ImportBillCode = list.ImportBillCode;
        //                    model.SkuNo = list.GoodsCode;
        //                    model.SkuName = list.GoodsName;
        //                    model.QtyCount = (int)bQNum;                          // 总件数
                    #endregion
        //                    model.SupplierName = supplierName;                        // 生产厂家
        //                    model.ProductionDate = productionDate;                      // 生产日期
        //                    model.SapSkuNo = sapNo;                            // SAP代码  SAP单号+行号
        //                    model.Standard = good.GoodsStandard;                            // 规格
        //                    model.SupplierLot = supplierLot;                         // 厂家批号
                    var modelList = new List<LabelBoxDto>();
                    for (int i = 1; i <= labelNum; i++)
                    {
                        // 物料条码信息赋值
                        LabelBoxDto model = new LabelBoxDto();
                        model.AsnDetailNo = imId;
                        model.SkuNo = asnList.SkuNo;
                        model.SkuName = asnList.SkuName;
                        model.SupplierName = asn.CustomerName;                        // 供应商
                        model.Standard = asnList.Standard;                            // 规格
                        model.PackageStandard = packStandard;
                        model.SupplierLot = supplierLot;                         // 厂家批号
                        model.LotNo = maxLotNoStr;                      //批次
        //                    model.LotNo = maxCodestr;                      //批次
                        model.ProductionTime = DateTime.Parse(productionTime);          // 生产日期
                        model.StoreTime = DateTime.Parse(storeTime);                     // 储存期至
                        model.ExpirationTime = DateTime.Parse(expirationTime);          // 有效期至/贮存期
                        if (i == labelNum)
                        {
                            // 最后一个条码
                            var s = zNum * (i - 1);
                            if (zNum > qty - s)
                            {
                                model.Qty = qty - s;// 数量
                            }
                            else
                            {
                                model.Qty = zNum;// 数量
                            }
                        }
                        else
                        {
                            model.Qty = zNum;         // 数量
                        }
                        if (maxBoxCode == "")
                        {
                            var str = model.LotNo + "000001";
                            model.BoxNo = str;                 // 支号     批号+ 流水  2302010001000001
                            maxBoxCode = model.BoxNo;
                        }
                        else
                        {
                            model.BoxNo = maxBoxCode.Substring(0, 10) + (int.Parse(maxBoxCode.Substring(10, 6)) + 1).ToString().PadLeft(6, '0');
                            maxBoxCode = model.BoxNo;
                        }
                        model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 80, 50);
        //                    model.InspectTime = inspectTime;                     // 复验期至
        //                    model.ExpirationTime = expirationTime;                  // 有效期至/贮存期
        //                    model.ExpirationType = good.GoodsTemp;                  // 贮存条件
        //                    if (i == labelNum)
        //                    {
        //                        // 最后一个条码
        //                        var s = number * (i - 1);
        //                        if (number > qty - s)
        //                        {
        //                            model.Qty = qty - s;// 数量
        //                        }
        //                        else
        //                        {
        //                            model.Qty = number;// 数量
        //                        }
        //                    }
        //                    else
        //                    {
        //                        model.Qty = number;                                                         // 数量
        //                    }
                        // 添加到list集合
                        modelList.Add(model);
                        // 将条码保存到原料条码表
                        var labelModel = new BllLabelBoxNo()
                        {
                            ASNNo = asnList.ASNNo,
                            ASNDetailNo = asnList.Id,
                            BoxNo = model.BoxNo,
                            ParentBoxNo = "",
                            Qty = model.Qty,
                            SkuNo = model.SkuNo,
                            SkuName = model.SkuName,
                            Standard = model.Standard,
                            PackageStandard = model.PackageStandard,
        //                    model.QtyOrd = i + diJiJian;                                               // 第几件
                            LotNo = model.LotNo,
                            SupplierName = asn.CustomerName,
                            ProductionTime = model.ProductionTime,
                            SupplierLot = model.SupplierLot,
                            StoreTime = model.StoreTime,
                            ExpirationTime = model.ExpirationTime,
                            IsUse = "0",
                            Level = "1",
        //                    if (maxboxcode == "")
        //                    {
        //                        var str = mesGood.PadRight(16, ' ') + model.LotNo.PadRight(12, ' ') + "0001";
        //                        model.BoxCode = str;                 // 支号     批号+第几箱
        //                        maxboxcode = model.BoxCode;
        //                    }
        //                    else
        //                    {
        //                        model.BoxCode = maxboxcode.Substring(0, 28) + (int.Parse(maxboxcode.Substring(28, 4)) + 1).ToString().PadLeft(4, '0');
        //                        maxboxcode = model.BoxCode;
        //                    }
        //                    model.imageStr = Utility.Extra.BarcodeHelper.GetQrCodeBase64(model.BoxCode, 85, 85);
                            CreateUser = userId,
                            CreateTime = DateTime.Now,
                        };
        //                    // 添加到list集合
        //                    printModel.Add(model);
                        Db.Insertable(labelModel).ExecuteCommand();
        //                    //if (number <= 0)
        //                    //{
        //                    //    return printModel;
        //                    //}
        //                    var guid = Guid.NewGuid().ToString("N");
        //                    // 将条码保存到原料条码表
        //                    var LabelModel = new LabelPrint
        //                    {
        //                        LabelID = guid,
        //                        LabelStream = model.BoxCode,
        //                        GoodsCode = model.SkuNo,
        //                        GoodsName = model.SkuName,
        //                        GoodsStandard = model.Standard,
        //                        ImportLotNo = model.LotNo,
        //                        SupplierName = model.SupplierName,
        //                        ImportId = model.ImportId,
        //                        OuterBillCode = model.OuterBillCode,
        //                        ImportBillCode = model.ImportBillCode,
        //                        ProductionDate = model.ProductionDate,
        //                        SapSkuNo = model.SapSkuNo,
        //                        Qty = model.Qty,
        //                        SupplierLot = model.SupplierLot,
        //                        InspectTime = model.InspectTime,
        //                        ExpirationTime = model.ExpirationTime,
        //                        QtyCount = model.QtyCount,
        //                        QtyOrd = model.QtyOrd,
        //                        ExpirationType = model.ExpirationType,
        //                        BoxNum = number,// model.Qty,
        //                        BulkTank = model.Qty == number ? 0 : 1,//零头箱
        //                        BulkCase = 0,//零头盒
        //                        CreateUser = createUser,
        //                        CreateTime = DateTime.Now,
        //                        IsUse = 0
        //                    };
        //                    DataContext.LabelPrint.InsertOnSubmit(LabelModel);
                    }
        //                }
        //                DataContext.SubmitChanges();
        //                #endregion
        //            }
        //            else //(packLevel == 2)
        //            {
        //                #region 二级包装
                    #endregion
                }
                else //(packLevel == 2)
                {
                    #region 二级包装
        //                // 根据用户输入的箱数量计算需要的条码数
        //                var labQty = labelData.Sum(m => m.Qty);
        //                var qty2 = Convert.ToDecimal(list.ImportQuantity) - (decimal)labQty;
        //                if (qty2 <= 0)
        //                {
        //                    throw new Exception("当前单据物料标签已打印完毕,如有需要请补打");
        //                }
                    // 根据用户输入的箱数量计算需要的条码数
                    var labQty = label.Sum(m => m.Qty);
                    var qty2 = asnList.Qty - labQty;
                    if (qty2 <= 0)
                    {
                        throw new Exception("当前单据物料标签已打印完毕,如有需要请补打");
                    }
        //                #region 增加到货数量
        //                if (skuNum != "")
        //                {
        //                    if (qty2 - Convert.ToDecimal(skuNum) < 0)
        //                    {
        //                        throw new Exception("到货数量大于未打标签数量,请重新输入到货数量!");
        //                    }
        //                    else
        //                    {
        //                        qty2 = Convert.ToDecimal(skuNum);
        //                    }
        //                }
        //                #endregion
                    #region 增加到货数量
                    if (arriveQty - qty2 > 0)
                    {
                        throw new Exception("到货数量大于未打标签数量,请重新输入到货数量!");
                    }
                    else
                    {
                        qty2 = arriveQty;
                    }
                    #endregion
        //                int labelNum2 = 1; //生产箱条码数量
                    int labelNum2 = 1; //生产箱条码数量
        //                labelNum2 = int.Parse(Math.Ceiling(qty2 / bNum).ToString());
                    labelNum2 = int.Parse(Math.Ceiling(qty2 / bNum).ToString());
        //                if (bQNum >= 1)//打印标签数量是否大于1 (有打印标签数量)
        //                {
        //                    if (bQNum > 100)
        //                    {
        //                        throw new Exception("打印标签数量建议在100张以内");
        //                    }
        //                    if (bQNum < labelNum2) //打印的标签数量大于等于剩余能打印的张数量
        //                    {
        //                        labelNum2 = (int)bQNum;
        //                    }
        //                }
        //                //var bCount = Math.Floor(qty2 / bNum); //整箱的数量
        //                //var zCount = qty2 - bCount* bNum; //剩余数量
                    var ss = bNum / zNum; //每箱支标签数量
                    var labelNumZ2 = Math.Ceiling((decimal)ss);
                    #region 获取/生成批次号
        //                var ss = bNum / zNum; //每箱支标签数量
        //                var labelNumZ2 = Math.Ceiling((decimal)ss);
                    string maxCodestr2 = "";    //批次
                    string maxboxcode2 = "";    //箱码
                    string maxboxcode3 = "";    //支码
                                                // 生成自编批号
                    string toDayTime2 = DateTime.Now.ToString("yyyyMMdd");
                    if (isReset == "0")
                    {
                        var maxCode = label.Max(a => a.LotNo);
                        var boxCode1 = label.Where(m=>m.Level == "1").Max(a => a.BoxNo);//箱号
                        var boxCode2 = label.Where(m => m.Level == "2").Max(a => a.BoxNo);//支号
                        maxCodestr2 = maxCode;
                        maxboxcode2 = boxCode1;
                        maxboxcode3 = boxCode2;
                        if (string.IsNullOrWhiteSpace(maxCodestr2))
                        {
                            maxCodestr2 = toDayTime2.Substring(2, 6) + "0001";
                        }
                    }
                    else
                    {
                        var maxCode = Db.Queryable<BllLabelBoxNo>().Max(a => a.LotNo);                        // 获取今天最大批次号
                        if (string.IsNullOrWhiteSpace(maxCode))
                        {
                            maxCodestr2 = toDayTime2.Substring(2, 6) + "0001";
                        }
                        else
                        {
                            var lotStr = maxCode.Substring(0, 6);
                            var timeStr = toDayTime2.Substring(2, 6);
                            if (lotStr == timeStr)
                            {
                                maxCodestr2 = timeStr + (int.Parse(maxCode.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
                            }
                            else
                            {
                                maxCodestr2 = timeStr + "0001";
                            }
        //                if (labelNum2 * labelNumZ2 > 100)
        //                {
        //                    if (labelNumZ2 <= 100)
        //                    {
        //                        labelNum2 = (int)Math.Floor((decimal)(100 / labelNumZ2));
        //                    }
        //                    else
        //                    {
        //                        labelNum2 = 1;
        //                    }
        //                }
                        }
                    }
        //                string maxCodestr2 = "";    //批次
        //                string maxboxcode2 = "";    //箱码
        //                string maxboxcode3 = "";    //支码
        //                                            // 生成自编批号
        //                string toDayTime2 = DateTime.Now.ToString("yyyyMMdd");
        //                var diJiJian = 0;
        //                if (isPrint == "0")
        //                {
        //                    var maxCode = DataContext.LabelPrint.Where(b => b.ImportId == imId).ToList().Max(a => a.ImportLotNo);
        //                    var boxCode1 = DataContext.LabelPrint.Where(b => b.ImportId == imId).ToList().Max(a => a.LabelStream);
        //                    var boxCode2 = DataContext.LabelPrint.Where(b => b.ImportId == imId).ToList().Max(a => a.BoxCode1);//支号
        //                    maxCodestr2 = maxCode;
        //                    maxboxcode2 = boxCode1;
        //                    maxboxcode3 = boxCode2;
        //                    if (string.IsNullOrWhiteSpace(maxCodestr2))
        //                    {
        //                        maxCodestr2 = toDayTime2.Substring(2, 6) + "0001";
        //                    }
        //                    else
        //                    {
        //                        var q = DataContext.LabelPrint
        //                            .Where(m => m.ImportId == imId && m.ImportLotNo == maxCodestr2)
        //                            .GroupBy(m => m.LabelStream).ToList();
        //                        diJiJian = q.Count;
        //                    }
        //                }
        //                else
        //                {
        //                    var maxCode = DataContext.LabelPrint.Max(a => a.ImportLotNo);                        // 获取今天最大批次号
        //                    if (string.IsNullOrWhiteSpace(maxCode))
        //                    {
        //                        maxCodestr2 = toDayTime2.Substring(2, 6) + "0001";
        //                    }
        //                    else
        //                    {
        //                        var lotStr = maxCode.Substring(0, 6);
        //                        var timeStr = toDayTime2.Substring(2, 6);
        //                        if (lotStr == timeStr)
        //                        {
        //                            maxCodestr2 = timeStr + (int.Parse(maxCode.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
        //                        }
        //                        else
        //                        {
        //                            maxCodestr2 = timeStr + "0001";
        //                        }
                    #endregion
        //                    }
        //                }
        //                var sapNo = "";
        //                if (!string.IsNullOrWhiteSpace(list.OuterBillCode) && !string.IsNullOrWhiteSpace(list.SequenceNo))
        //                {
        //                    sapNo = list.OuterBillCode + "-" + list.SequenceNo;
        //                }
        //                for (int i = 1; i <= labelNum2; i++)//箱码标签
        //                {
        //                    // 物料条码信息赋值
        //                    LabelPrint5Model model = new LabelPrint5Model();
        //                    model.ImportId = imId;
        //                    model.OuterBillCode = list.OuterBillCode;
        //                    model.ImportBillCode = list.ImportBillCode;
        //                    model.SkuNo = list.GoodsCode;
        //                    model.SkuName = list.GoodsName;
        //                    model.QtyCount = (int)bQNum;                          // 总件数
                    var modelList = new List<LabelBoxDto>();
        //                    model.SupplierName = supplierName;                        // 生产厂家
        //                    model.ProductionDate = productionDate;                      // 生产日期
        //                    model.SapSkuNo = sapNo;                            // SAP代码
        //                    model.Standard = good.GoodsStandard;                            // 规格
        //                    model.SupplierLot = supplierLot;                         // 厂家批号
                    for (int i = 1; i <= labelNum2; i++)//箱码标签
                    {
                        // 物料条码信息赋值
                        LabelBoxDto model = new LabelBoxDto();
                        model.AsnDetailNo = imId;
                        model.SkuNo = asnList.SkuNo;
                        model.SkuName = asnList.SkuName;
                        model.Standard = asnList.Standard;               // 规格
                        model.PackageStandard = packStandard;
        //                    model.LotNo = maxCodestr2;                      //批次
                        model.SupplierLot = supplierLot;                 // 厂家批号
                        model.LotNo = maxCodestr2;                      //批次
                        model.ProductionTime = DateTime.Parse(productionTime);          // 生产日期
                        model.StoreTime = DateTime.Parse(storeTime);                     // 储存期至
                        model.ExpirationTime = DateTime.Parse(expirationTime);          // 有效期至/贮存期
                        if (i == labelNum2)
                        {
                            // 最后一个条码
                            var s = bNum * (i - 1);
                            if (bNum > qty2 - s)
                            {
                                model.Qty = qty2 - s;// 数量
                            }
                            else
                            {
                                model.Qty = bNum;// 数量
                            }
                        }
                        else
                        {
                            model.Qty = bNum;                                                         // 数量
                        }
                        if (maxboxcode2 == "")
                        {
                            maxboxcode2 =  model.LotNo +"000001";
                            model.BoxNo = maxboxcode2;        // 箱号     批号+第几箱
                            maxboxcode2 = model.BoxNo;
                        }
                        else
                        {
                            model.BoxNo = maxboxcode2.Substring(0, 10) + (int.Parse(maxboxcode2.Substring(10, 6)) + 1).ToString().PadLeft(6, '0');
                            maxboxcode2 = model.BoxNo;
                        }
                        model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 80, 50);
        //                    model.InspectTime = inspectTime;                     // 复验期至
        //                    model.ExpirationTime = expirationTime;                  // 有效期至/贮存期
        //                    model.ExpirationType = good.GoodsTemp;                  // 贮存条件
        //                    if (i == labelNum2)
        //                    {
        //                        // 最后一个条码
        //                        var s = bNum * (i - 1);
        //                        if (bNum > qty2 - s)
        //                        {
        //                            model.Qty = qty2 - s;// 数量
        //                        }
        //                        else
        //                        {
        //                            model.Qty = bNum;// 数量
        //                        }
        //                    }
        //                    else
        //                    {
        //                        model.Qty = bNum;                                                         // 数量
        //                    }
                        // 添加到list集合
                        modelList.Add(model);
        //                    model.QtyOrd = i + diJiJian;                                               // 第几件
        //                    if (maxboxcode2 == "")
        //                    {
        //                        maxboxcode2 = "B" + model.LotNo + i.ToString().PadLeft(5, '0');
        //                        model.BoxCode = maxboxcode2;                                // 箱号     批号+第几箱
        //                    }
        //                    else
        //                    {
        //                        maxboxcode2 = maxboxcode2.Substring(0, 11) + (int.Parse(maxboxcode2.Substring(11, 5)) + 1).ToString().PadLeft(5, '0');
        //                        model.BoxCode = maxboxcode2;
        //                    }
        //                    model.imageStr = Utility.Extra.BarcodeHelper.GetQrCodeBase64(model.BoxCode, 85, 85);
                        if (i == labelNum2)
                        {
                            var isGo2 = false;
                            var sl = 0;
                            for (int j = 1; j <= labelNumZ2; j++)
                            {
                                if (isGo2)
                                {
                                    break;
                                }
                                var d = zNum;
                                if (i == labelNum2)
                                {
                                    var s = bNum * (i - 1);
                                    var s2 = zNum * (j - 1);
                                    if (zNum >= qty2 - s - s2)
                                    {
                                        d = (int)(qty2 - s - s2);    // 数量
                                        isGo2 = true;
                                    }
                                }
                                sl++;
                            }
                            labelNumZ2 = sl;
                        }
        //                    // 添加到list集合
        //                    printModel.Add(model);
                        for (int j = 1; j <= labelNumZ2; j++)//最小单位标签
                        {
                            if (isGo)
                            {
                                break;
                            }
                            var d = zNum;
                            if (i == labelNum2)
                            {
                                var s = bNum * (i - 1);
                                var s2 = zNum * (j - 1);
                                if (zNum >= qty2 - s - s2)
                                {
                                    d = (int)(qty2 - s - s2);    // 数量
                                    isGo = true;
                                }
                            }
                            //// 物料条码信息赋值
                            //LabelPrint5Model model2 = new LabelPrint5Model();
                            //model2.ImportId = imId;
                            //model2.OuterBillCode = list.OuterBillCode;
                            //model2.ImportBillCode = list.ImportBillCode;
                            //model2.SkuNo = list.GoodsCode;
                            //model2.SkuName = list.GoodsName;
                            //model2.QtyCount = (int)labelNumZ2;                          // 总件数(int)labelNumZ2
        //                    if (i == labelNum2)
        //                    {
        //                        var isGo2 = false;
        //                        var sl = 0;
        //                        for (int j = 1; j <= labelNumZ2; j++)
        //                        {
        //                            if (isGo2)
        //                            {
        //                                break;
        //                            }
        //                            var d = zNum;
        //                            if (i == labelNum2)
        //                            {
        //                                var s = bNum * (i - 1);
        //                                var s2 = zNum * (j - 1);
        //                                if (zNum >= qty2 - s - s2)
        //                                {
        //                                    d = (int)(qty2 - s - s2);    // 数量
        //                                    isGo2 = true;
        //                                }
        //                            }
        //                            sl++;
        //                        }
        //                        labelNumZ2 = sl;
        //                    }
                            //model2.SupplierName = supplierName;                        // 生产厂家
                            //model2.ProductionDate = productionDate;                      // 生产日期
                            //model2.SapSkuNo = sapNo;                            // SAP代码
                            //model2.Standard = good.GoodsStandard;                            // 规格
                            //model2.SupplierLot = supplierLot;                         // 厂家批号
        //                    for (int j = 1; j <= labelNumZ2; j++)//最小单位标签
        //                    {
        //                        if (isGo)
        //                        {
        //                            break;
        //                        }
        //                        var d = zNum;
        //                        if (i == labelNum2)
        //                        {
        //                            var s = bNum * (i - 1);
        //                            var s2 = zNum * (j - 1);
        //                            if (zNum >= qty2 - s - s2)
        //                            {
        //                                d = (int)(qty2 - s - s2);    // 数量
        //                                isGo = true;
        //                            }
        //                        }
        //                        // 物料条码信息赋值
        //                        LabelPrint5Model model2 = new LabelPrint5Model();
        //                        model2.ImportId = imId;
        //                        model2.OuterBillCode = list.OuterBillCode;
        //                        model2.ImportBillCode = list.ImportBillCode;
        //                        model2.SkuNo = list.GoodsCode;
        //                        model2.SkuName = list.GoodsName;
        //                        model2.QtyCount = (int)labelNumZ2;                          // 总件数(int)labelNumZ2
                            //model2.LotNo = maxCodestr2;                      //批次
        //                        model2.SupplierName = supplierName;                        // 生产厂家
        //                        model2.ProductionDate = productionDate;                      // 生产日期
        //                        model2.SapSkuNo = sapNo;                            // SAP代码
        //                        model2.Standard = good.GoodsStandard;                            // 规格
        //                        model2.SupplierLot = supplierLot;                         // 厂家批号
        //                        model2.LotNo = maxCodestr2;                      //批次
                            //model2.InspectTime = inspectTime;                     // 复验期至
                            //model2.ExpirationTime = expirationTime;                  // 有效期至/贮存期
                            //model2.ExpirationType = good.GoodsTemp;                  // 贮存条件
                            //model2.Qty = d;                                                         // 数量
                            //model2.QtyOrd = j;                                               // 第几件
                            //if (maxboxcode3 == "")
                            //{
                            //    var str = mesGood.PadRight(16, ' ') + model.LotNo.PadRight(12, ' ') + "0001";
                            //    model2.BoxCode = str;                 // 支号     批号+第几箱
                            //    maxboxcode3 = model2.BoxCode;
                            //}
                            //else
                            //{
                            //    model2.BoxCode = maxboxcode3.Substring(0, 28) + (int.Parse(maxboxcode3.Substring(28, 4)) + 1).ToString().PadLeft(4, '0');
                            //    maxboxcode3 = model2.BoxCode;
                            //}
        //                        model2.InspectTime = inspectTime;                     // 复验期至
        //                        model2.ExpirationTime = expirationTime;                  // 有效期至/贮存期
        //                        model2.ExpirationType = good.GoodsTemp;                  // 贮存条件
        //                        model2.Qty = d;                                                         // 数量
                            //model2.imageStr = Utility.Extra.BarcodeHelper.GetQrCodeBase64(model2.BoxCode, 85, 85);
                            //// 添加到list集合
        //                        model2.QtyOrd = j;                                               // 第几件
        //                        if (maxboxcode3 == "")
        //                        {
        //                            var str = mesGood.PadRight(16, ' ') + model.LotNo.PadRight(12, ' ') + "0001";
        //                            model2.BoxCode = str;                 // 支号     批号+第几箱
        //                            maxboxcode3 = model2.BoxCode;
        //                        }
        //                        else
        //                        {
        //                            model2.BoxCode = maxboxcode3.Substring(0, 28) + (int.Parse(maxboxcode3.Substring(28, 4)) + 1).ToString().PadLeft(4, '0');
        //                            maxboxcode3 = model2.BoxCode;
        //                        }
                            //if (printModel.Count(m => m.BoxCode.Length > 17) <= 100)//排除待箱码判断支码是否小于100
                            //{
                            //    printModel.Add(model2);
                            //}
                            //var guid = Guid.NewGuid().ToString("N");
                            //// 将条码保存到原料条码表
                            //var LabelModel2 = new LabelPrint
                            //{
                            //    LabelID = guid,
                            //    LabelStream = model.BoxCode,
                            //    BoxCode1 = model2.BoxCode,
                            //    GoodsCode = model2.SkuNo,
                            //    GoodsName = model2.SkuName,
                            //    GoodsStandard = model2.Standard,
                            //    ImportLotNo = model2.LotNo,
                            //    SupplierName = model2.SupplierName,
                            //    ImportId = model2.ImportId,
                            //    OuterBillCode = model2.OuterBillCode,
                            //    ImportBillCode = model2.ImportBillCode,
                            //    ProductionDate = model2.ProductionDate,
                            //    SapSkuNo = model2.SapSkuNo,
                            //    Qty = model2.Qty,
                            //    SupplierLot = model2.SupplierLot,
                            //    InspectTime = model2.InspectTime,
                            //    ExpirationTime = model2.ExpirationTime,
                            //    QtyCount = model2.QtyCount,
                            //    QtyOrd = model2.QtyOrd,
                            //    ExpirationType = model2.ExpirationType,
                            //    BoxNum = bNum,//model.Qty,
        //                        model2.imageStr = Utility.Extra.BarcodeHelper.GetQrCodeBase64(model2.BoxCode, 85, 85);
        //                        // 添加到list集合
                            //    BulkTank = model.Qty == bNum ? 0 : 1,//零头箱
                            //    BulkCase = 0,//零头盒
        //                        if (printModel.Count(m => m.BoxCode.Length > 17) <= 100)//排除待箱码判断支码是否小于100
        //                        {
        //                            printModel.Add(model2);
        //                        }
        //                        var guid = Guid.NewGuid().ToString("N");
        //                        // 将条码保存到原料条码表
        //                        var LabelModel2 = new LabelPrint
        //                        {
        //                            LabelID = guid,
        //                            LabelStream = model.BoxCode,
        //                            BoxCode1 = model2.BoxCode,
        //                            GoodsCode = model2.SkuNo,
        //                            GoodsName = model2.SkuName,
        //                            GoodsStandard = model2.Standard,
        //                            ImportLotNo = model2.LotNo,
        //                            SupplierName = model2.SupplierName,
        //                            ImportId = model2.ImportId,
        //                            OuterBillCode = model2.OuterBillCode,
        //                            ImportBillCode = model2.ImportBillCode,
        //                            ProductionDate = model2.ProductionDate,
        //                            SapSkuNo = model2.SapSkuNo,
        //                            Qty = model2.Qty,
        //                            SupplierLot = model2.SupplierLot,
        //                            InspectTime = model2.InspectTime,
        //                            ExpirationTime = model2.ExpirationTime,
        //                            QtyCount = model2.QtyCount,
        //                            QtyOrd = model2.QtyOrd,
        //                            ExpirationType = model2.ExpirationType,
        //                            BoxNum = bNum,//model.Qty,
                            //    CreateUser = createUser,
                            //    CreateTime = DateTime.Now,
                            //    IsUse = 0
                            //};
        //                            BulkTank = model.Qty == bNum ? 0 : 1,//零头箱
        //                            BulkCase = 0,//零头盒
                            //DataContext.LabelPrint.InsertOnSubmit(LabelModel2);
                        }
        //                            CreateUser = createUser,
        //                            CreateTime = DateTime.Now,
        //                            IsUse = 0
        //                        };
        //                        DataContext.LabelPrint.InsertOnSubmit(LabelModel2);
        //                    }
                    }
                    #endregion
                }
        //                }
        //                DataContext.SubmitChanges();
                //return printModel;
        //                #endregion
        //            }
        //            return printModel;
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        throw new Exception(ex.Message);
        //    }
        //}
                throw new NotImplementedException();
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
    }