zhaowc
2025-02-28 157abc191c34e57c1b958ae74fc3de6518ca8a30
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
@@ -4,13 +4,21 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using Model.ModelDto.BllAsnDto;
using Model.ModelVm.BllAsnVm;
using Utility.Tools;
using WMS.BLL.LogServer;
using WMS.DAL;
using WMS.Entity.BllAsnEntity;
using WMS.Entity.Context;
using WMS.Entity.SysEntity;
using WMS.IBLL.IBllAsnServer;
using ZXing;
using Model.ModelDto.BllCheckDto;
using WMS.Entity.BllCheckEntity;
using System.Data.SqlTypes;
namespace WMS.BLL.BllAsnServer
{
@@ -260,7 +268,7 @@
                  .AndIF(!string.IsNullOrWhiteSpace(model.ProductionTime), it => it.ProductionTime >= Convert.ToDateTime(model.ProductionTime))
                  .AndIF(!string.IsNullOrWhiteSpace(model.InspectMark), it => it.InspectMark == model.InspectMark.Trim())
                  .AndIF(!string.IsNullOrWhiteSpace(model.BitBoxMark), it => it.BitBoxMark == model.BitBoxMark.Trim())
                  .AndIF(!string.IsNullOrWhiteSpace(model.Origin), it => it.Origin == model.Origin.Trim())
                  .AndIF(!string.IsNullOrWhiteSpace(model.Origin), it => model.Origin.Trim().Contains(it.Origin))
                  .And(m => m.SkuNo != "100099" && m.IsDel == "0" && m.Status == "0")
                  .ToExpression();//注意 这一句 不能少
                var total = 0;
@@ -292,6 +300,7 @@
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime
                    })
                    .OrderByDescending(a=>a.BoxNo)
                    .OrderByDescending(a => a.CreateTime)
                    .ToOffsetPage(model.Page, model.Limit, ref total);
                count = total;
@@ -395,5 +404,1478 @@
            }
        }
        //获取标签箱码信息
        public List<BoxInfoDto> GetLabelBoxList(LabelBoxInfoVm model, out int count)
        {
            try
            {
                Expression<Func<BllBoxInfo, bool>> item = Expressionable.Create<BllBoxInfo>()
                    .AndIF(!string.IsNullOrWhiteSpace(model.AsnNo), it => it.ASNNo.Contains(model.AsnNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(model.BoxNo), it => it.BoxNo.Contains(model.BoxNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo), it => it.SkuNo.Contains(model.SkuNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => it.LotNo.Contains(model.LotNo.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(model.SupplierLot), it => it.SupplierLot.Contains(model.SupplierLot.Trim()))
                    .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status)
                    .AndIF(!string.IsNullOrWhiteSpace(model.ProductionTime), it => it.ProductionTime >= Convert.ToDateTime(model.ProductionTime))
                    .AndIF(!string.IsNullOrWhiteSpace(model.ProductionTime), it => it.ProductionTime <= Convert.ToDateTime(model.ProductionTime).AddDays(1))
                    .And(it => it.IsDel == "0" && it.Origin == "WMS生成")
                    .ToExpression();
                var total = 0;
                var data = GetAllWhereAsync(item)
                    .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id)
                    .LeftJoin<SysUserInfor>((a, b, c) => a.UpdateUser == c.Id)
                    .LeftJoin<SysMaterials>((a, b, c,d) => a.SkuNo == d.SkuNo)
                    .LeftJoin<SysUnit>((a, b, c, d,e) => d.UnitNo == e.UnitNo)
                    .Select((a, b, c,d,e) => new BoxInfoDto()
                    {
                        Id = a.Id,
                        ASNNo = a.ASNNo,
                        ASNDetailNo = a.ASNDetailNo,
                        BoxNo = a.BoxNo,
                        BoxNo2 = a.BoxNo2,
                        BoxNo3 = a.BoxNo3,
                        Qty = a.Qty,
                        FullQty = a.FullQty,
                        SkuNo = a.SkuNo,
                        SkuName = a.SkuName,
                        Standard = a.Standard,
                        PackageStandard = a.PackageStandard,
                        LotNo = a.LotNo,
                        LotText = a.LotText,
                        unit =  e.UnitName,
                        Status = a.Status,
                        SupplierLot = a.SupplierLot,
                        ProductionTime = a.ProductionTime,
                        ExpirationTime = a.ExpirationTime,
                        StoreTime = a.StoreTime,
                        CompleteTime = a.CompleteTime,
                        InspectMark = a.InspectMark,
                        BitBoxMark = a.BitBoxMark,
                        InspectStatus = a.InspectStatus,
                        Origin = a.Origin,
                        QtyCount = a.QtyCount,
                        QtyOrd = a.QtyOrd,
                        CreateUserName = b.RealName,
                        UpdateUserName = c.RealName,
                        CreateTime = a.CreateTime,
                        UpdateTime = a.UpdateTime
                    }).OrderBy(a => a.BoxNo).OrderByDescending(a => a.CreateTime).ToOffsetPage(model.Page, model.Limit, ref total);
                count = total;
                return data;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        //获取标签模板根据入库单明细ID
        public BoxInfoDto GetLabelBoxModel(int id)
        {
            try
            {
                var asnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == id && m.IsDel == "0");
                if (asnDetail == null)
                {
                    throw new Exception("未查询到单据明细信息,请核实");
                }
                var packInfo = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == asnDetail.PackagNo);
                if (packInfo == null)
                {
                    throw new Exception("未查询到单据明细中的物料包装信息");
                }
                var str = "";
                if (!string.IsNullOrWhiteSpace(packInfo.L1Name))
                {
                    str += packInfo.L1Num + "/" + packInfo.L1Name;
                }
                if (!string.IsNullOrWhiteSpace(packInfo.L2Name))
                {
                    str += "-" + packInfo.L2Num + "/" + packInfo.L2Name;
                }
                if (!string.IsNullOrWhiteSpace(packInfo.L3Name))
                {
                    str += "-" + packInfo.L3Num + "/" + packInfo.L3Name;
                }
                if (!string.IsNullOrWhiteSpace(packInfo.L4Name))
                {
                    str += "-" + packInfo.L4Num + "/" + packInfo.L4Name;
                }
                if (!string.IsNullOrWhiteSpace(packInfo.L5Name))
                {
                    str += "-" + packInfo.L5Num + "/" + packInfo.L5Name;
                }
                var data = new BoxInfoDto();
                data.SkuNo = asnDetail.SkuNo;
                data.SkuName = asnDetail.SkuName;
                data.Standard = asnDetail.Standard;
                data.SupplierLot = asnDetail.SupplierLot;
                data.PackageStandard = str;
                data.SupplierLot = asnDetail.SupplierLot;
                return data;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        //获取标签信息(生成标签)
        public List<BllBoxInfo> AddLabelBox(int imId, string isReset, decimal arriveQty, string productionTime, string expirationTime, string storeTime,string supplierLot, int userId)
        {
            try
            {
                #region 单据、物料、包装、标签信息获取
                if (string.IsNullOrWhiteSpace(productionTime))
                {
                    throw new Exception("生产日期不能为空");
                }
                if (!string.IsNullOrWhiteSpace(expirationTime) && !string.IsNullOrWhiteSpace(storeTime))
                {
                    throw new Exception("有效期和储存期不能同时填写");
                }
                if (isReset != "0")
                {
                    throw new Exception("不可重置批次");
                }
                DateTime proTime;
                DateTime expTime;
                DateTime stoTime;
                var bl1= DateTime.TryParse(productionTime, out proTime);
                var bl2= DateTime.TryParse(expirationTime, out expTime);
                var bl3= DateTime.TryParse(storeTime, out stoTime);
                if (!bl1)
                {
                    throw new Exception("生产日期转换失败");
                }
                if (!bl2 && !string.IsNullOrWhiteSpace(expirationTime))
                {
                    throw new Exception("有效期转换失败");
                }
                if (!bl3 && !string.IsNullOrWhiteSpace(storeTime))
                {
                    throw new Exception("储存期转换失败");
                }
                var asnList = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == imId && m.IsDel == "0");
                if (asnList == null)
                {
                    throw new Exception("未查询到单据明细信息");
                }
                //if (asnList.LotNo.Length != 10 && asnList.LotNo.Length != 11 && asnList.LotNo.Length != 12)
                //{
                //    throw new Exception("单据进厂编号位数长度错误");
                //}
                var asn = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == asnList.ASNNo && m.IsDel == "0");
                if (asn == null)
                {
                    throw new Exception("未查询到单据信息");
                }
                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == asnList.PackagNo);
                if (pack == null)
                {
                    throw new Exception("未查询到当前单据中物料的包装信息");
                }
                var packStr = "";
                if (!string.IsNullOrWhiteSpace(pack.L1Name))
                {
                    packStr += pack.L1Num + "/" + pack.L1Name;
                }
                if (!string.IsNullOrWhiteSpace(pack.L2Name))
                {
                    packStr += "-" + pack.L2Num + "/" + pack.L2Name;
                }
                if (!string.IsNullOrWhiteSpace(pack.L3Name))
                {
                    packStr += "-" + pack.L3Num + "/" + pack.L3Name;
                }
                if (!string.IsNullOrWhiteSpace(pack.L4Name))
                {
                    packStr += "-" + pack.L4Num + "/" + pack.L4Name;
                }
                if (!string.IsNullOrWhiteSpace(pack.L5Name))
                {
                    packStr += "-" + pack.L5Num + "/" + pack.L5Name;
                }
                //标签表
                var label = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Origin == "WMS生成").ToList();
                #endregion
                #region 包装查询
                var bNum = 0;//箱物品数量
                var zNum = 0;//支物品数量
                var packLevel = 0;
                if (pack.L2Num.HasValue)
                {
                    if (pack.L2Name != "托")
                    {
                        packLevel = 2;
                        bNum = Convert.ToInt32(pack.L2Num);
                    }
                }
                if (pack.L1Num.HasValue)
                {
                    if (packLevel == 0)
                    {
                        packLevel = 1;
                        bNum = Convert.ToInt32(pack.L1Num);
                    }
                    zNum = Convert.ToInt32(pack.L1Num);
                }
                if (packLevel < 1)//包装等级小于1,按照1级标签打印
                {
                    throw new Exception("包装信息有误,小于一级");
                }
                #endregion
                var modelList = new List<BllBoxInfo>();
                var addLotNo = "";
                if (arriveQty <= 0)
                {
                    throw new Exception("到货数量不能小于等于0!");
                }
                Db.BeginTran();
                if (packLevel == 1)
                {
                    #region 一级包装
                    // 根据用户输入的箱数量计算需要的条码数
                    //var labQty = label.Sum(m => m.Qty);
                    //var qty = asnList.Qty - labQty;//当前单据剩余需要打印的物料数量(不是标签数量)
                    //if (qty <= 0)
                    //{
                    //    throw new Exception("当前单据物料标签已打印完毕,如有需要请补打");
                    //}
                    #region 到货数量
                    //if (arriveQty - qty > 0)
                    //{
                    //    throw new Exception("到货数量大于未打标签数量,请重新输入到货数量并核实!");
                    //}
                    //else
                    //{
                    //    qty = arriveQty;
                    //}
                    var qty = arriveQty;
                    #endregion
                    int labelNum = 1; //生产条码数量
                    if (zNum > 0)
                    {
                        labelNum = int.Parse(Math.Ceiling(qty / zNum).ToString());//标签数量
                    }
                    else
                    {
                        throw new Exception("当前单据物料是一级包装,未查询到一级包装信息");
                    }
                    #region 获取/生成批次号
                    string maxLotNoStr = ""; //批次号
                    string maxBoxCode = ""; //箱码号
                    // 生成自编批号
                    string toDayTime = DateTime.Now.ToString("yyyyMMdd");
                    if (isReset == "0")
                    {
                        //判断单据是否是余料退回单
                        if (asn.Type == "4")
                        {
                            maxLotNoStr = asnList.LotNo;
                            maxBoxCode = label.Where(m=>m.LotNo == maxLotNoStr).Max(a => a.BoxNo);
                            if (string.IsNullOrWhiteSpace(maxLotNoStr))
                            {
                                throw new Exception("车间余料退回单据批次不能为空");
                            }
                        }
                        else
                        {
                            //var labelCount = label.Where(m => m.ASNDetailNo == imId).ToList();
                            //if (labelCount.Count <= 0)
                            //{
                            //    throw new Exception("当前单据明细还未生成标签,请选择重置批次选项为‘是’;");
                            //}
                            //maxLotNoStr = labelCount.Max(a => a.LotNo);
                            maxLotNoStr = asnList.LotNo;
                            //if (string.IsNullOrWhiteSpace(maxLotNoStr))
                            //{
                            //    maxLotNoStr = toDayTime.Substring(2, 6) + "0001";
                            //}
                            maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo);
                        }
                    }
                    else
                    {
                        var maxCode = Db.Queryable<BllBoxInfo>().Where(m=>m.Origin == "WMS生成").Max(a => a.LotNo); // 获取今天最大批次号 20241013
                        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(maxCode.Length - 4, 4)) + 1).ToString().PadLeft(4, '0');
                            }
                            else
                            {
                                maxLotNoStr = timeStr + "0001";
                            }
                        }
                    }
                    addLotNo = maxLotNoStr;
                    #endregion
                    for (int i = 1; i <= labelNum; i++)
                    {
                        decimal boxQty = 0;
                        if (i == labelNum)
                        {
                            // 最后一个条码
                            var s = zNum * (i - 1);
                            if (zNum > qty - s)
                            {
                                boxQty = qty - s;// 数量
                            }
                            else
                            {
                                boxQty = zNum;// 数量
                            }
                        }
                        else
                        {
                            boxQty = zNum;         // 数量
                        }
                        //获取箱码
                        if (string.IsNullOrWhiteSpace(maxBoxCode))
                        {
                            var str = "B"+maxLotNoStr + "000001"; //批号+ 流水  2302010001000001
                            maxBoxCode = str;
                        }
                        else
                        {
                            maxBoxCode = maxBoxCode.Substring(0, maxBoxCode.Length - 6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0');
                        }
                        // 将条码保存到原料条码表
                        var labelModel = new BllBoxInfo()
                        {
                            ASNNo = asnList.ASNNo,
                            ASNDetailNo = asnList.Id,
                            BoxNo = maxBoxCode,
                            Qty = boxQty,
                            FullQty = bNum,
                            Status = "0",
                            SkuNo = asnList.SkuNo,
                            SkuName = asnList.SkuName,
                            LotNo = maxLotNoStr,
                            Standard = asnList.Standard,
                            PackageStandard = packStr,
                            SupplierLot = supplierLot,
                            InspectMark = "0",
                            BitBoxMark = bNum > boxQty ? "1":"0",
                            InspectStatus = "0",
                            ProductionTime = proTime,
                            Origin = "WMS生成",
                            CreateUser = userId,
                            CreateTime = DateTime.Now,
                        };
                        if (bl2)
                        {
                            labelModel.ExpirationTime = expTime;
                        }
                        if (bl3)
                        {
                            labelModel.StoreTime = stoTime;
                        }
                        Db.Insertable(labelModel).ExecuteCommand();
                        modelList.Add(labelModel);
                    }
                    #endregion
                }
                else //(packLevel == 2)
                {
                    #region 二级包装
                    // 根据用户输入的箱数量计算需要的条码数
                    //var labQty = label.Sum(m => m.Qty);
                    //var qty2 = asnList.Qty - labQty;
                    //if (qty2 <= 0)
                    //{
                    //    throw new Exception("当前单据物料标签已打印完毕,如有需要请补打");
                    //}
                    #region 增加到货数量
                    //if (arriveQty - qty2 > 0)
                    //{
                    //    throw new Exception("到货数量大于未打标签数量,请重新输入到货数量!");
                    //}
                    //else
                    //{
                    //    qty2 = arriveQty;
                    //}
                    #endregion
                    var qty2 = arriveQty;
                    int labelNum2 = 1; //生产箱条码数量
                    labelNum2 = int.Parse(Math.Ceiling(qty2 / bNum).ToString());
                    var ss = bNum / zNum; //每箱支标签数量
                    var labelNumZ2 = Math.Ceiling((decimal)ss);
                    #region 获取/生成批次号
                    string maxCodestr2 = "";    //批次
                    string maxboxcode2 = "";    //箱码
                    string maxboxcode3 = "";    //支码
                                                // 生成自编批号
                    string toDayTime2 = DateTime.Now.ToString("yyyyMMdd");
                    if (isReset == "0")
                    {
                        //判断单据是否是余料退回单
                        if (asn.Type == "4")
                        {
                            maxCodestr2 = asnList.LotNo;
                            maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);
                            maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//支号
                            if (string.IsNullOrWhiteSpace(maxCodestr2))
                            {
                                throw new Exception("车间余料退回单据批次不能为空");
                            }
                        }
                        else
                        {
                            //var labelCount = label.Where(m => m.ASNDetailNo == imId).ToList();
                            //if (labelCount.Count <= 0)
                            //{
                            //    throw new Exception("当前单据明细还未生成标签,请选择重置批次选项为‘是’;");
                            //}
                            //maxCodestr2 = labelCount.Max(a => a.LotNo); ;
                            maxCodestr2 = asnList.LotNo;
                            //if (string.IsNullOrWhiteSpace(maxCodestr2))
                            //{
                            //    maxCodestr2 = toDayTime2.Substring(2, 6) + "0001";
                            //}
                            maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);//箱号;
                            maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//支号;
                        }
                    }
                    else
                    {
                        var maxCode = Db.Queryable<BllBoxInfo>().Where(m => m.Origin == "WMS生成").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";
                            }
                        }
                    }
                    addLotNo = maxCodestr2;
                    #endregion
                    for (int i = 1; i <= labelNum2; i++)//箱码标签
                    {
                        //箱内数量
                        decimal boxQty = 0;
                        if (i == labelNum2)
                        {
                            // 最后一个条码
                            var s = bNum * (i - 1);
                            if (bNum > qty2 - s)
                            {
                                boxQty = qty2 - s;// 数量
                            }
                            else
                            {
                                boxQty = bNum;// 数量
                            }
                        }
                        else
                        {
                            boxQty = bNum;                                                         // 数量
                        }
                        //获取箱码
                        if (string.IsNullOrWhiteSpace(maxboxcode2))
                        {
                            maxboxcode2 = "B"+maxCodestr2 + "000001"; // 箱号     批号+第几箱
                        }
                        else
                        {
                            maxboxcode2 = maxboxcode2.Substring(0, maxboxcode2.Length - 6) + (int.Parse(maxboxcode2.Substring(maxboxcode2.Length-6, 6)) + 1).ToString().PadLeft(6, '0');
                        }
                        //获取箱内支标签数量
                        if (i == labelNum2)
                        {
                            var isGo2 = false;
                            var sl = 0;
                            for (int j = 1; j <= labelNumZ2; j++)
                            {
                                if (isGo2)
                                {
                                    break;
                                }
                                var s = bNum * (i - 1);
                                var s2 = zNum * (j - 1);
                                if (zNum >= qty2 - s - s2)
                                {
                                    isGo2 = true;
                                }
                                sl++;
                            }
                            labelNumZ2 = sl;
                        }
                        for (int j = 1; j <= labelNumZ2; j++)//最小单位标签
                        {
                            decimal d = zNum;
                            if (i == labelNum2)
                            {
                                var s = bNum * (i - 1);
                                var s2 = zNum * (j - 1);
                                if (zNum >= qty2 - s - s2)
                                {
                                    d = qty2 - s - s2;    // 数量
                                }
                            }
                            if (string.IsNullOrWhiteSpace(maxboxcode3))
                            {
                                maxboxcode3 = "Z"+maxCodestr2 + "0001"; // 支号     批号+第几箱
                            }
                            else
                            {
                                maxboxcode3 = maxboxcode3.Substring(0, maxboxcode3.Length - 4) + (int.Parse(maxboxcode3.Substring(maxboxcode3.Length - 4, 4)) + 1).ToString().PadLeft(4, '0');
                            }
                            //var ssss = d.ToString("0");
                            //var sss = int.Parse(ssss);
                            // 将条码保存到原料条码表
                            var labelModel = new BllBoxInfo()
                            {
                                ASNNo = asnList.ASNNo,
                                ASNDetailNo = asnList.Id,
                                BoxNo = maxboxcode2,
                                BoxNo3 = maxboxcode3,
                                Qty = d,
                                FullQty = bNum,
                                Status = "0",
                                SkuNo = asnList.SkuNo,
                                SkuName = asnList.SkuName,
                                LotNo = maxCodestr2,
                                Standard = asnList.Standard,
                                PackageStandard = packStr,
                                SupplierLot = supplierLot,
                                InspectMark = "0",
                                BitBoxMark = bNum > boxQty ? "1" : "0",
                                InspectStatus = "0",
                                ProductionTime = proTime,
                                Origin = "WMS生成",
                                CreateUser = userId,
                                CreateTime = DateTime.Now,
                            };
                            if (bl2)
                            {
                                labelModel.ExpirationTime = expTime;
                            }
                            if (bl3)
                            {
                                labelModel.StoreTime = stoTime;
                            }
                            Db.Insertable(labelModel).ExecuteCommand();
                            modelList.Add(labelModel);
                        }
                    }
                    #endregion
                }
                if (string.IsNullOrWhiteSpace(asnList.LotNo))
                {
                    asnList.LotNo = addLotNo;
                    Db.Updateable(asnList).ExecuteCommand();
                }
                else
                {
                    if (!asnList.LotNo.Contains(addLotNo))
                    {
                        asnList.LotNo += ";" + addLotNo;
                        Db.Updateable(asnList).ExecuteCommand();
                    }
                }
                Db.CommitTran();
                return modelList;
                //throw new NotImplementedException();
            }
            catch (Exception e)
            {
                Db.RollbackTran();
                throw new Exception(e.Message);
            }
        }
        // 补打标签
        public List<BoxInfoDto> GetBuDaLabelList(string boxNo, string endBoxNo, string boxNo2, string endBoxNo2, string type, int userId)
        {
            try
            {
                //打印数据集合
                var printList = new List<BoxInfoDto>();
                List<BoxInfoDto> printModelList = new List<BoxInfoDto>();
                //List<WmsLabelPrintLog> printlog = new List<WmsLabelPrintLog>();
                //标签表数据信息
                var list = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Origin == "WMS生成").ToList();
                #region MyRegion
                switch (type)
                {
                    case "1":
                        if (string.IsNullOrWhiteSpace(endBoxNo))
                        {
                            #region 单个箱码标签
                            if (string.IsNullOrWhiteSpace(boxNo))
                            {
                                throw new Exception($"起始箱码不能为空");
                            }
                            var dataList = list.Where(m => m.BoxNo == boxNo);
                            var data = list.FirstOrDefault(m => m.BoxNo == boxNo);
                            if (data == null)
                            {
                                throw new Exception($"未查询到{boxNo}信息");
                            }
                            //单位
                            var sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'";
                            var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault() ;
                            // 物料条码信息赋值
                            BoxInfoDto model = new BoxInfoDto();
                            model.SkuNo = data.SkuNo;
                            model.SkuName = data.SkuName;
                            model.LotNo = data.LotNo;                      //批次
                            model.SupplierLot = data.SupplierLot;                        // 原厂批号
                            model.Standard = data.Standard;                              // 规格/型号
                            model.PackageStandard = data.PackageStandard;                // 包装规格
                            model.ExpirationTime = data.ExpirationTime;                  // 有效期至
                            model.StoreTime = data.StoreTime;                     // 储存期至
                            model.Qty = dataList.Sum(m=>m.Qty);// 数量
                            model.unit = unitname.unit;
                            model.BoxNo = data.BoxNo;                 // 箱号
                            model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo,160, 40,false);
                            // 添加到list集合
                            printModelList.Add(model);
                            //添加打印记录
                            //WmsLabelPrintLog log = new WmsLabelPrintLog();
                            //log.BoxCode = data.LabelStream;
                            //log.CreateTime = DateTime.Now;
                            //log.Demo = Demo;
                            //log.Isdel = 0;
                            //log.CreateUser = userId;
                            //printlog.Add(log);
                            #endregion
                        }
                        else
                        {
                            #region 多个箱码标签  开始-结束
                            if (string.IsNullOrWhiteSpace(boxNo))
                            {
                                throw new Exception("起始箱码不能为空");
                            }
                            var sql = $@"select * from BllBoxInfo where IsDel = '0' and Origin = 'WMS生成' and BoxNo >='{boxNo}' and BoxNo <= '{endBoxNo}'";
                            var data2 = Db.Ado.SqlQuery<BllBoxInfo>(sql);
                            var data3 = data2.GroupBy(m => m.BoxNo).Select(m => m.Key).OrderBy(m => m).ToList();
                            if (data3.Count == 0)
                            {
                                throw new Exception($"未查询到{boxNo}-{endBoxNo}中信息");
                            }
                            var i = 0;
                            foreach (var item in data3)
                            {
                                var data1 = data2.Where(m => m.BoxNo == item);
                                var data = data2.FirstOrDefault(m => m.BoxNo == item);
                                if (data == null)
                                {
                                    throw new Exception($"未查询到{item}信息");
                                }
                                //单位
                                var sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'";
                                var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                                // 物料条码信息赋值
                                BoxInfoDto model = new BoxInfoDto();
                                model.SkuNo = data.SkuNo;
                                model.SkuName = data.SkuName;
                                model.LotNo = data.LotNo;                      //批次
                                model.SupplierLot = data.SupplierLot;                        // 原厂批号
                                model.Standard = data.Standard;                              // 规格/型号
                                model.PackageStandard = data.PackageStandard;                // 包装规格
                                model.ExpirationTime = data.ExpirationTime;                  // 有效期至
                                model.StoreTime = data.StoreTime;                     // 储存期至
                                model.Qty = data1.Sum(m => m.Qty);// 数量
                                model.unit = unitname.unit;
                                model.BoxNo = data.BoxNo;                 // 箱号
                                model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false);
                                // 添加到list集合
                                printModelList.Add(model);
                                i++;
                                ////添加打印记录
                                //WmsLabelPrintLog log = new WmsLabelPrintLog();
                                //log.BoxCode = data.LabelStream;
                                //log.CreateTime = DateTime.Now;
                                //log.Demo = Demo;
                                //log.Isdel = 0;
                                //log.CreateUser = userId;
                                //printlog.Add(log);
                                if (i >= 100)
                                {
                                    break;
                                }
                            }
                            #endregion
                        }
                        break;
                    case "2":
                        if (string.IsNullOrWhiteSpace(endBoxNo2))
                        {
                            #region 单个支码标签
                            if (string.IsNullOrWhiteSpace(boxNo2))
                            {
                                throw new Exception($"起始支码不能为空");
                            }
                            var data = list.FirstOrDefault(m => m.BoxNo3 == boxNo2);
                            if (data == null)
                            {
                                throw new Exception($"未查询到{boxNo2}信息");
                            }
                            //单位
                            var sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'";
                            var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                            // 物料条码信息赋值
                            BoxInfoDto model = new BoxInfoDto();
                            model.SkuNo = data.SkuNo;
                            model.SkuName = data.SkuName;
                            model.LotNo = data.LotNo;                      //批次
                            model.SupplierLot = data.SupplierLot;                        // 原厂批号
                            model.Standard = data.Standard;                              // 规格/型号
                            model.PackageStandard = data.PackageStandard;                // 包装规格
                            model.ExpirationTime = data.ExpirationTime;                  // 有效期至
                            model.StoreTime = data.StoreTime;                     // 储存期至
                            model.Qty = data.Qty;// 数量
                            model.unit = unitname.unit;
                            model.BoxNo = data.BoxNo3;                 // 支号
                            model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false);
                            // 添加到list集合
                            printModelList.Add(model);
                            ////添加打印记录
                            //WmsLabelPrintLog log = new WmsLabelPrintLog();
                            //log.BoxCode = data.BoxCode1;
                            //log.CreateTime = DateTime.Now;
                            //log.Demo = Demo;
                            //log.Isdel = 0;
                            //log.CreateUser = userId;
                            //printlog.Add(log);
                            #endregion
                        }
                        else
                        {
                            #region 多个支码标签  开始-结束
                            if (string.IsNullOrWhiteSpace(boxNo2))
                            {
                                throw new Exception("起始支码不能为空");
                            }
                            var sql = $@"select * from BllBoxInfo where IsDel = '0' and Origin = 'WMS生成' and BoxNo3 >='{boxNo2}' and BoxNo3 <= '{endBoxNo2}'";
                            var data2 = Db.Ado.SqlQuery<BllBoxInfo>(sql);
                            if (data2.Count == 0)
                            {
                                throw new Exception($"未查询到{boxNo2}-{endBoxNo2}中信息");
                            }
                            var i = 0;
                            foreach (var data in data2)
                            {
                                //单位
                                var sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'";
                                var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                                // 物料条码信息赋值
                                BoxInfoDto model = new BoxInfoDto();
                                model.SkuNo = data.SkuNo;
                                model.SkuName = data.SkuName;
                                model.LotNo = data.LotNo;                      //批次
                                model.SupplierLot = data.SupplierLot;                        // 原厂批号
                                model.Standard = data.Standard;                              // 规格/型号
                                model.PackageStandard = data.PackageStandard;                // 包装规格
                                model.ExpirationTime = data.ExpirationTime;                  // 有效期至
                                model.StoreTime = data.StoreTime;                     // 储存期至
                                model.Qty = data.Qty;// 数量
                                model.unit = unitname.unit;
                                model.BoxNo = data.BoxNo3;                 // 箱号
                                model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false);
                                // 添加到list集合
                                printModelList.Add(model);
                                i++;
                                ////添加打印记录
                                //WmsLabelPrintLog log = new WmsLabelPrintLog();
                                //log.BoxCode = data.BoxCode1;
                                //log.CreateTime = DateTime.Now;
                                //log.Demo = Demo;
                                //log.Isdel = 0;
                                //log.CreateUser = userId;
                                //printlog.Add(log);
                                if (i >= 100)
                                {
                                    break;
                                }
                            }
                            #endregion
                        }
                        break;
                    case "3":
                        if (string.IsNullOrWhiteSpace(endBoxNo))
                        {
                            if (string.IsNullOrWhiteSpace(boxNo))
                            {
                                throw new Exception("起始箱码不能为空");
                            }
                            #region 箱码和箱码内的支码
                            if (!string.IsNullOrWhiteSpace(boxNo2))
                            {
                                if (string.IsNullOrWhiteSpace(endBoxNo2)) //单个支码和箱码
                                {
                                    #region 单个支码和箱码
                                    var dataList = list.Where(m => m.BoxNo == boxNo);
                                    var data = list.FirstOrDefault(m => m.BoxNo3 == boxNo2);
                                    if (data == null)
                                    {
                                        throw new Exception($"未查询到{boxNo2}信息");
                                    }
                                    if (data.BoxNo != boxNo)//判断箱码是否相同
                                    {
                                        throw new Exception($"当前支码不是箱码内");
                                    }
                                    //单位
                                    var sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'";
                                    var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                                    // 物料条码信息赋值 箱码
                                    BoxInfoDto model1 = new BoxInfoDto();
                                    model1.SkuNo = data.SkuNo;
                                    model1.SkuName = data.SkuName;
                                    model1.LotNo = data.LotNo;                      //批次
                                    model1.SupplierLot = data.SupplierLot;                        // 原厂批号
                                    model1.Standard = data.Standard;                              // 规格/型号
                                    model1.PackageStandard = data.PackageStandard;                // 包装规格
                                    model1.ExpirationTime = data.ExpirationTime;                  // 有效期至
                                    model1.StoreTime = data.StoreTime;                     // 储存期至
                                    model1.Qty = dataList.Sum(m=>m.Qty);// 数量
                                    model1.unit = unitname.unit;
                                    model1.BoxNo = data.BoxNo;                 // 箱号
                                    model1.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false);
                                    // 添加到list集合
                                    printModelList.Add(model1);
                                    // 物料条码信息赋值  支码
                                    BoxInfoDto model = new BoxInfoDto();
                                    model.SkuNo = data.SkuNo;
                                    model.SkuName = data.SkuName;
                                    model.LotNo = data.LotNo;                      //批次
                                    model.SupplierLot = data.SupplierLot;                        // 原厂批号
                                    model.Standard = data.Standard;                              // 规格/型号
                                    model.PackageStandard = data.PackageStandard;                // 包装规格
                                    model.ExpirationTime = data.ExpirationTime;                  // 有效期至
                                    model.StoreTime = data.StoreTime;                     // 储存期至
                                    model.Qty = data.Qty;// 数量
                                    model.unit = unitname.unit;
                                    model.BoxNo = data.BoxNo3;                 // 支号
                                    model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false);
                                    // 添加到list集合
                                    printModelList.Add(model);
                                    ////添加打印记录
                                    //WmsLabelPrintLog log = new WmsLabelPrintLog();
                                    //log.BoxCode = data.BoxCode1;
                                    //log.CreateTime = DateTime.Now;
                                    //log.Demo = Demo;
                                    //log.Isdel = 0;
                                    //log.CreateUser = userId;
                                    //printlog.Add(log);
                                    #endregion
                                }
                                else//一箱内某几个支码
                                {
                                    #region 单个箱码和多个支码
                                    var sql = $@"select * from  BllBoxInfo where IsDel = '0' and Origin = 'WMS生成' and BoxNo3 >='{boxNo2}' and BoxNo3 <= '{endBoxNo2}'";
                                    var data2 = Db.Ado.SqlQuery<BllBoxInfo>(sql);
                                    if (data2.Count == 0)
                                    {
                                        throw new Exception($"未查询到{boxNo2}-{endBoxNo2}中信息");
                                    }
                                    if (data2.Count(m => m.BoxNo != boxNo) > 0)
                                    {
                                        throw new Exception($"{boxNo2}-{endBoxNo2}中信息有不属于{boxNo}箱码内的");
                                    }
                                    var data = list.Where(m => m.BoxNo == boxNo);
                                    var boxData = data2.FirstOrDefault();
                                    //单位
                                    var sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + boxData.SkuNo + "'";
                                    var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                                    // 物料条码信息赋值
                                    BoxInfoDto model = new BoxInfoDto();
                                    model.SkuNo = boxData.SkuNo;
                                    model.SkuName = boxData.SkuName;
                                    model.LotNo = boxData.LotNo;                      //批次
                                    model.SupplierLot = boxData.SupplierLot;                        // 原厂批号
                                    model.Standard = boxData.Standard;                              // 规格/型号
                                    model.PackageStandard = boxData.PackageStandard;                // 包装规格
                                    model.ExpirationTime = boxData.ExpirationTime;                  // 有效期至
                                    model.StoreTime = boxData.StoreTime;                     // 储存期至
                                    model.Qty = data.Sum(m => m.Qty);     // 数量
                                    model.unit = unitname.unit;
                                    model.BoxNo = boxData.BoxNo;                 // 支号
                                    model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false);
                                    // 添加到list集合
                                    printModelList.Add(model);
                                    var i = 0;
                                    foreach (var item in data2)
                                    {
                                        //单位
                                        sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + item.SkuNo + "'";
                                        unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                                        // 物料条码信息赋值
                                        BoxInfoDto model1 = new BoxInfoDto();
                                        model1.SkuNo = item.SkuNo;
                                        model1.SkuName = item.SkuName;
                                        model1.LotNo = item.LotNo;                      //批次
                                        model1.SupplierLot = item.SupplierLot;                        // 原厂批号
                                        model1.Standard = item.Standard;                              // 规格/型号
                                        model1.PackageStandard = item.PackageStandard;                // 包装规格
                                        model1.ExpirationTime = item.ExpirationTime;                  // 有效期至
                                        model1.StoreTime = item.StoreTime;                     // 储存期至
                                        model1.Qty = item.Qty;// 数量
                                        model1.unit = unitname.unit;
                                        model1.BoxNo = item.BoxNo3;                 // 支号
                                        model.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false);
                                        // 添加到list集合
                                        printModelList.Add(model);
                                        i++;
                                        ////添加打印记录
                                        //WmsLabelPrintLog log = new WmsLabelPrintLog();
                                        //log.BoxCode = item.BoxCode1;
                                        //log.CreateTime = DateTime.Now;
                                        //log.Demo = Demo;
                                        //log.Isdel = 0;
                                        //log.CreateUser = userId;
                                        //printlog.Add(log);
                                        if (i >= 100)
                                        {
                                            break;
                                        }
                                    }
                                    #endregion
                                }
                            }
                            else //整箱支码和一个箱码
                            {
                                #region 整箱支码和一个箱码
                                var data = list.Where(m => m.BoxNo == boxNo).ToList();
                                var boxData = data.FirstOrDefault();
                                if (boxData == null)
                                {
                                    throw new Exception($"未查询到{boxNo}箱码信息");
                                }
                                //单位
                                var sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + boxData.SkuNo + "'";
                                var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                                // 物料条码信息赋值
                                BoxInfoDto model = new BoxInfoDto();
                                model.SkuNo = boxData.SkuNo;
                                model.SkuName = boxData.SkuName;
                                model.LotNo = boxData.LotNo;                      //批次
                                model.SupplierLot = boxData.SupplierLot;                        // 原厂批号
                                model.Standard = boxData.Standard;                              // 规格/型号
                                model.PackageStandard = boxData.PackageStandard;                // 包装规格
                                model.ExpirationTime = boxData.ExpirationTime;                  // 有效期至
                                model.StoreTime = boxData.StoreTime;                     // 储存期至
                                model.Qty = data.Sum(m => m.Qty);     // 数量
                                model.unit = unitname.unit;
                                model.BoxNo = boxData.BoxNo;                 // 支号
                                model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false);
                                // 添加到list集合
                                printModelList.Add(model);
                                if (data.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) //判断是否有支码
                                {
                                    var i = 0;
                                    foreach (var item in data)
                                    {
                                        //单位
                                        sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + item.SkuNo + "'";
                                        unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                                        // 物料条码信息赋值
                                        BoxInfoDto model1 = new BoxInfoDto();
                                        model1.SkuNo = item.SkuNo;
                                        model1.SkuName = item.SkuName;
                                        model1.LotNo = item.LotNo;                      //批次
                                        model1.SupplierLot = item.SupplierLot;                        // 原厂批号
                                        model1.Standard = item.Standard;                              // 规格/型号
                                        model1.PackageStandard = item.PackageStandard;                // 包装规格
                                        model1.ExpirationTime = item.ExpirationTime;                  // 有效期至
                                        model1.StoreTime = item.StoreTime;                     // 储存期至
                                        model1.Qty = item.Qty;     // 数量
                                        model1.unit = unitname.unit;
                                        model1.BoxNo = item.BoxNo3;                 // 支号
                                        model1.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false);
                                        // 添加到list集合
                                        printModelList.Add(model1);
                                        i++;
                                        ////添加打印记录
                                        //WmsLabelPrintLog log = new WmsLabelPrintLog();
                                        //log.BoxCode = item.BoxCode1;
                                        //log.CreateTime = DateTime.Now;
                                        //log.Demo = Demo;
                                        //log.Isdel = 0;
                                        //log.CreateUser = userId;
                                        //printlog.Add(log);
                                        if (i >= 100)
                                        {
                                            break;
                                        }
                                    }
                                }
                                else
                                {
                                    throw new Exception("当前箱内没有支码");
                                }
                                #endregion
                            }
                            #endregion
                        }
                        else
                        {
                            if (string.IsNullOrWhiteSpace(boxNo))
                            {
                                throw new Exception("起始箱码不能为空");
                            }
                            #region 多个箱码和内支码
                            var sql = $@"select * from  BllBoxInfo where IsDel = '0' and Origin = 'WMS生成' and BoxNo >='{boxNo}' and BoxNo <= '{endBoxNo}'";
                            var data2 = Db.Ado.SqlQuery<BllBoxInfo>(sql);
                            var data3 = data2.GroupBy(m => m.BoxNo).Select(m => m.Key).OrderBy(m => m).ToList();
                            if (data3.Count == 0)
                            {
                                throw new Exception($"未查询到{boxNo}-{endBoxNo}中信息");
                            }
                            var i = 0;
                            var j = 0;
                            foreach (var demo in data3)
                            {
                                var data = list.Where(m => m.BoxNo == demo).ToList();
                                var boxData = data.FirstOrDefault();
                                if (boxData == null)
                                {
                                    throw new Exception($"未查询到{demo}箱码信息");
                                }
                                //单位
                                var sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + boxData.SkuNo + "'";
                                var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                                // 物料条码信息赋值
                                BoxInfoDto model = new BoxInfoDto();
                                model.SkuNo = boxData.SkuNo;
                                model.SkuName = boxData.SkuName;
                                model.LotNo = boxData.LotNo;                      //批次
                                model.SupplierLot = boxData.SupplierLot;                        // 原厂批号
                                model.Standard = boxData.Standard;                              // 规格/型号
                                model.PackageStandard = boxData.PackageStandard;                // 包装规格
                                model.ExpirationTime = boxData.ExpirationTime;                  // 有效期至
                                model.StoreTime = boxData.StoreTime;                     // 储存期至
                                model.Qty = data.Sum(m => m.Qty);     // 数量
                                model.unit = unitname.unit;
                                model.BoxNo = boxData.BoxNo;                 // 支号
                                model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false);
                                // 添加到list集合
                                printModelList.Add(model);
                                j++;
                                if (j >= 100)
                                {
                                    break;
                                }
                                if (data.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) //判断是否有支码
                                {
                                    foreach (var item in data.OrderBy(m => m.BoxNo3).ToList())
                                    {
                                        //单位
                                        sqlString = "select a.UnitName as unit from  SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + item.SkuNo + "'";
                                        unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault();
                                        // 物料条码信息赋值
                                        BoxInfoDto model1 = new BoxInfoDto();
                                        model1.SkuNo = item.SkuNo;
                                        model1.SkuName = item.SkuName;
                                        model1.LotNo = item.LotNo;                      //批次
                                        model1.SupplierLot = item.SupplierLot;                        // 原厂批号
                                        model1.Standard = item.Standard;                              // 规格/型号
                                        model1.PackageStandard = item.PackageStandard;                // 包装规格
                                        model1.ExpirationTime = item.ExpirationTime;                  // 有效期至
                                        model1.StoreTime = item.StoreTime;                     // 储存期至
                                        model1.Qty = item.Qty;// 数量
                                        model1.unit = unitname.unit;
                                        model1.BoxNo = item.BoxNo3;                 // 支号
                                        model1.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false);
                                        // 添加到list集合
                                        printModelList.Add(model1);
                                        i++;
                                        ////添加打印记录
                                        //WmsLabelPrintLog log = new WmsLabelPrintLog();
                                        //log.BoxCode = item.BoxCode1;
                                        //log.CreateTime = DateTime.Now;
                                        //log.Demo = Demo;
                                        //log.Isdel = 0;
                                        //log.CreateUser = userId;
                                        //printlog.Add(log);
                                        if (i >= 100)
                                        {
                                            break;
                                        }
                                    }
                                }
                            }
                            #endregion
                        }
                        break;
                    default:
                        throw new Exception("请选择补打类型");
                }
                #endregion
                return printModelList;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        //根据入库单号过去单据下所有批次号
        public List<string> GetLotNoListByAsn(string asnNo)
        {
            try
            {
                var data = new List<string>();
                var asnList = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo).ToList();
                if (asnList.Count == 0)
                {
                    throw new Exception("未查询到该单据号的信息");
                }
                foreach (var item in asnList)
                {
                    if (string.IsNullOrWhiteSpace(item.LotNo))
                    {
                        continue;
                    }
                    var strList = item.LotNo.Split(";");
                    foreach (var str in strList)
                    {
                        if (string.IsNullOrWhiteSpace(str))
                        {
                            continue;
                        }
                        data.Add(str);
                    }
                }
                return data;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        //删除单据下单个或多个批次的标签
        public void DelLabelByAsnNo(string asnNo,string lotNo, int userId)
        {
            try
            {
                var asnList = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo).ToList();
                if (asnList.Count == 0)
                {
                    throw new Exception("未查询到该单据号的信息");
                }
                Db.BeginTran();
                //批次为空:当前单据下所有批次的标签全部删除; 有批次:伤处当前单据下当前批次的标签
                if (string.IsNullOrWhiteSpace(lotNo)) //删除全部标签
                {
                    var labelList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo).ToList();
                    if (labelList.Count(m => m.Status != "0") >= 1)
                    {
                        throw new Exception("当前单据批次的标签已有已使用,不能删除");
                    }
                    //foreach (var item in asnList)
                    //{
                    //    if (string.IsNullOrWhiteSpace(item.LotNo))
                    //    {
                    //        continue;
                    //    }
                    //    item.LotNo = "";
                    //    Db.Updateable(item).ExecuteCommand();
                    //}
                    Db.Deleteable(labelList).ExecuteCommand();
                }
                else  //删除固定批次标签
                {
                    var labelList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.LotNo == lotNo).ToList();
                    if (labelList.Count(m=>m.Status != "0") >= 1 )
                    {
                        throw new Exception("当前单据批次的标签已有已使用,不能删除");
                    }
                    //foreach (var item in asnList)
                    //{
                    //    if (string.IsNullOrWhiteSpace(item.LotNo) || item.LotNo!=lotNo)
                    //    {
                    //        continue;
                    //    }
                    //    var strList = item.LotNo.Split(";");
                    //    var updateLotNo = "";
                    //    foreach (var str in strList)
                    //    {
                    //        if (string.IsNullOrWhiteSpace(str) || str == lotNo)
                    //        {
                    //            continue;
                    //        }
                    //        if (string.IsNullOrWhiteSpace(updateLotNo))
                    //        {
                    //            updateLotNo = str;
                    //        }
                    //        else
                    //        {
                    //            updateLotNo += ";" + str;
                    //        }
                    //    }
                    //    item.LotNo = updateLotNo;
                    //    Db.Updateable(item).ExecuteCommand();
                    //}
                    Db.Deleteable(labelList).ExecuteCommand();
                }
                Db.CommitTran();
                var msg = $"删除了单据号:{asnNo}";
                if (!string.IsNullOrWhiteSpace(lotNo))
                {
                    msg += $"、批次号:{lotNo}";
                }
                msg += "的标签信息";
                new OperationASNServer().AddLogOperationAsn("入库作业", "物料标签", asnNo, "删除", msg, userId);
            }
            catch (Exception e)
            {
                Db.RollbackTran();
                throw new Exception(e.Message);
            }
        }
        //编辑标签数量
        public void EditLabelQty(int id, string qty, int userId)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(qty))
                {
                    throw new Exception("编辑数量不可为空");
                }
                var qtyData = 0m;
                var isOk = decimal.TryParse(qty, out qtyData);
                var boxInfo = Db.Queryable<BllBoxInfo>().First(m => m.IsDel == "0" && m.Id == id);
                if (boxInfo == null)
                {
                    throw new Exception("未查询到该标签信息");
                }
                if (isOk)
                {
                    if (qtyData <= 0)
                    {
                        throw new Exception("数量不能小于等于0");
                    }
                    boxInfo.Qty = qtyData;
                    Db.Updateable(boxInfo).ExecuteCommand();
                }
                else
                {
                    throw new Exception("数量转换失败");
                }
                var msg = $"编辑了箱号:{boxInfo.BoxNo}";
                if (!string.IsNullOrWhiteSpace(boxInfo.BoxNo3))
                {
                    msg += $"、支号:{boxInfo.BoxNo3}";
                }
                msg += "的标签数量信息";
                new OperationASNServer().AddLogOperationAsn("入库作业", "物料标签", boxInfo.BoxNo, "编辑", msg, userId);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
    }
}