admin
13 小时以前 7e88876cd6c68e963ec0560f4e329e5dad483d9c
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -42,7 +42,7 @@
        /// <param name="boxNo"></param>
        /// <param name="palletNoNew"></param>
        /// <param name="userId"></param>
        public async Task SoSetPinPick34(string soNo, string soDetailId, string palletNo, string boxNo , string palletNoNew, int userId)
        public async Task SoSetPinPick34(string soNo, string soDetailId, string palletNo, string boxNo, string palletNoNew, int userId)
        {
            Db.BeginTran();
            try
@@ -85,16 +85,13 @@
                    throw Oops.Bah("出库单的状态不是正在执行,不能拣货");
                }
                //出库单明细
                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
                    .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                if (noticeDetail == null)
                {
                    throw Oops.Bah("未查询到该出库单明细的信息");
                }
                //出库分配信息
                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                    m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.SONo == soNo &&
                    m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                if (allot == null)
                {
                    throw Oops.Bah("未查询到该托盘的分配信息");
@@ -122,25 +119,33 @@
                bool isNew = false;
                var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
                if (pinStockDetail != null)
                //var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                if (pinStockDetail != null)
                {
                    //修改托盘表状态让托盘表和库存明细表保持一致
                    string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'";
                    int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql);
                    Db.CommitTran();
                    if (palletNo != palletNoNew)//非整托拣货                                                
                    {
                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id!= pinStockDetail.Id).ToList();
                        if (pinStockDetails.Count(m=>m.SONo != notice.SONo) > 0)
                        //var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew).ToList();
                        //只允许绑定同一个出库单下的物料
                        if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
                        {
                            throw Oops.Bah("拼托托盘上只能放同一个出库单下的物料!");
                        }
                    }
                    sdId = pinStockDetail.Id;
                }
                else
                {
                    isNew = true;
                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);//&& m.Status == "0"
                    if (newPalletInfo == null)
                    {
                        throw Oops.Bah("新托盘信息不存在!");
@@ -148,6 +153,7 @@
                    if (newPalletInfo.Status == "0")
                    {
                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && (m.SkuNo != stockDetail.SkuNo || m.LotNo != stockDetail.LotNo)).ToList();
                        //只允许绑定同一个出库单下的物料
                        if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
                        {
                            throw Oops.Bah("一个托盘只能接受一个出库单拼托!");
@@ -159,9 +165,9 @@
                        newPalletInfo.Status = "1";
                        await Db.Updateable(newPalletInfo).ExecuteCommandAsync();
                    }
                }
                var sd = new DataStockDetail();
                if (isNew)
                {
@@ -207,6 +213,10 @@
                    sd.UDF5 = "1";
                    //新增拼托库存明细信息
                    sdId = await Db.Insertable(sd).ExecuteReturnIdentityAsync();
                    //修改托盘表状态让托盘表和库存明细表保持一致
                    string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'";
                    int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql);
                }
                #endregion
@@ -234,10 +244,10 @@
                        {
                            throw Oops.Bah($"当前{item.BoxNo}已拣货完成,请勿重复拣货");
                        }
                        if (item.SkuNo != allot.SkuNo || item.LotNo != allot.LotNo)
                        {
                            throw Oops.Bah("当前托盘上有其他不同物料批次,拣货失败");
                        }
                        //if (item.SkuNo != allot.SkuNo || item.LotNo != allot.LotNo)
                        //{
                        //    throw Oops.Bah("当前托盘上有其他不同物料批次,拣货失败");
                        //}
                        //添加拣货明细
                        var completeDetail = new BllCompleteDetail()
                        {
@@ -347,9 +357,9 @@
                    }
                    boxInfos = boxInfo.ToList();
                    var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync();
                    //整箱拣货
                    if (boxInfo.Any(m => m.PalletNo != palletNo))
                    {
                        throw Oops.Bah("该托盘与箱码没有绑定关系");
@@ -359,7 +369,7 @@
                    //{
                    //    throw Oops.Bah("拣货数量不能大于箱内剩余待拣数量");
                    //}
                    foreach (var item in boxInfos)
                    {
                        if (comDetailList.Any(m => m.BoxNo == item.BoxNo))
@@ -367,7 +377,7 @@
                            throw Oops.Bah($"当前{item.BoxNo}已拣货完成,请勿重复拣货");
                        }
                    }
                    var comList = new List<BllCompleteDetail>();
                    foreach (var item in boxInfos)
@@ -403,20 +413,20 @@
                            item.BindNo = null;//托盘绑定号
                            item.PalletNo = palletNoNew;
                        }
                        item.Status = "5";//箱支状态,0:未组托  1:已组托 2:已入库 3:已出库 4:已分配 5:已拣货
                        await Db.Updateable(item).ExecuteCommandAsync();
                        pickQty += item.Qty;
                    }
                    await Db.Insertable(comList).ExecuteCommandAsync();
                    //修改出库分配信息
                    allot.CompleteQty += pickQty;
                    allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
                    allot.UpdateTime = DateTime.Now;
                    await Db.Updateable(allot).ExecuteCommandAsync();
                    //删除或修改库存明细
@@ -465,13 +475,13 @@
                                locate.Status = "0";
                                Db.Updateable(locate).ExecuteCommand();
                            }
                        }
                        }
                    }
                    else
                    {
                        await Db.Updateable(stockDetail).ExecuteCommandAsync();
                    }
                    //修改出库单明细拣货数量
                    noticeDetail.CompleteQty += pickQty;
                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
@@ -502,7 +512,7 @@
                        pinStockDetail.LockQty += pickQty;
                        await Db.Updateable(pinStockDetail).ExecuteCommandAsync();
                    }
                }
                }
                //添加操作日志记录
                var k = new OperationSOServer().AddLogOperationSo("PDA模块", "拣货拼托", soNo, "拣货", $"在PDA上对出库单号为:{soNo}的原托盘码为:{palletNo},新托盘码为:{palletNoNew}的拣货拼托操作", userId);
@@ -556,16 +566,13 @@
                    throw Oops.Bah("出库单的状态不是正在执行,不能拣货");
                }
                //出库单明细
                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
                    .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                if (noticeDetail == null)
                {
                    throw Oops.Bah("未查询到该出库单明细的信息");
                }
                //出库分配信息
                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
                    m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
                    m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                if (allot == null)
                {
                    throw Oops.Bah("未查询到该托盘的分配信息");
@@ -600,12 +607,19 @@
                #region 拼托信息
                bool isNew = false;
                var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo== stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
                var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
                //var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                if (pinStockDetail != null)
                {
                    //修改托盘表状态让托盘表和库存明细表保持一致
                    string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'";
                    int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql);
                    Db.CommitTran();
                    if (palletNo != palletNoNew)//非整托拣货
                    {
                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
                        //var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew).ToList();
                        if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
                        {
                            throw Oops.Bah("拼托托盘上只能放同一个出库单下的物料!");
@@ -616,8 +630,13 @@
                {
                    isNew = true;
                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
                    //var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                    if (newPalletInfo == null)
                    {
                        throw Oops.Bah("新托盘信息不存在!");
                    }
                    if (newPalletInfo.Status == "0")
                    {
                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && (m.SkuNo != stockDetail.SkuNo && m.LotNo != stockDetail.LotNo)).ToList();
                        if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
@@ -635,54 +654,58 @@
                if (isNew)
                {
                    var sd = new DataStockDetail();
                    var sd = new DataStockDetail
                    {
                        LotNo = stockDetail.LotNo,
                        LotText = stockDetail.LotText,
                        SupplierLot = stockDetail.SupplierLot,
                        SkuNo = stockDetail.SkuNo,
                        SkuName = stockDetail.SkuName,
                        Standard = stockDetail.Standard,
                    sd.LotNo = stockDetail.LotNo;
                    sd.LotText = stockDetail.LotText;
                    sd.SupplierLot = stockDetail.SupplierLot;
                    sd.SkuNo = stockDetail.SkuNo;
                    sd.SkuName = stockDetail.SkuName;
                    sd.Standard = stockDetail.Standard;
                        Qty = int.Parse(PickQty),
                        LockQty = int.Parse(PickQty),
                    sd.Qty = int.Parse(PickQty);
                    sd.LockQty = int.Parse(PickQty);
                        FrozenQty = 0,
                        InspectQty = 0,
                        ASNNo = "",
                        ASNDetailNo = null,
                        SONo = soNo,//出库单号
                        WareHouseNo = "",
                        RoadwayNo = "",
                        AreaNo = "",
                        LocatNo = "",
                        PalletNo = palletNoNew,
                        PalletNo2 = "",
                        PalletNo3 = "",
                        //PalletType = item.PalletType,
                        CompleteTime = nowDate,
                        ProductionTime = stockDetail.ProductionTime,
                        ExpirationTime = stockDetail.ExpirationTime,
                        Status = "2",//状态,已分配
                        InspectMark = stockDetail.InspectMark,
                        InspectStatus = stockDetail.InspectStatus,
                        BitPalletMark = "0",
                        PackagNo = noticeDetail.PackagNo,
                        IsBale = stockDetail.IsBale,
                        IsBelt = stockDetail.IsBelt,
                        Demo = stockDetail.Demo,
                        OwnerName = stockDetail.OwnerName,
                        OwnerNo = stockDetail.OwnerNo,
                        SupplierName = stockDetail.SupplierName,
                        SupplierNo = stockDetail.SupplierNo,
                    sd.FrozenQty = 0;
                    sd.InspectQty = 0;
                    sd.ASNNo = "";
                    sd.ASNDetailNo = null;
                    sd.SONo = soNo;//出库单号
                    sd.WareHouseNo = "";
                    sd.RoadwayNo = "";
                    sd.AreaNo = "";
                    sd.LocatNo = "";
                    sd.PalletNo = palletNoNew;
                    sd.PalletNo2 = "";
                    sd.PalletNo3 = "";
                    //PalletType = item.PalletType,
                    sd.CompleteTime = nowDate;
                    sd.ProductionTime = stockDetail.ProductionTime;
                    sd.ExpirationTime = stockDetail.ExpirationTime;
                    sd.Status = "2";//状态,已分配
                    sd.InspectMark = stockDetail.InspectMark;
                    sd.InspectStatus = stockDetail.InspectStatus;
                    sd.BitPalletMark = "0";
                    sd.PackagNo = noticeDetail.PackagNo;
                    sd.IsBale = stockDetail.IsBale;
                    sd.IsBelt = stockDetail.IsBelt;
                    sd.Demo = stockDetail.Demo;
                    sd.OwnerName = stockDetail.OwnerName;
                    sd.OwnerNo = stockDetail.OwnerNo;
                    sd.SupplierName = stockDetail.SupplierName;
                    sd.SupplierNo = stockDetail.SupplierNo;
                    sd.IsDel = "0";
                    sd.CreateUser = userId;
                    sd.CreateTime = nowDate;
                    sd.UDF5 = "1";
                        IsDel = "0",
                        CreateUser = userId,
                        CreateTime = nowDate,
                        UDF5 = "1"
                    };
                    //新增拼托库存明细信息
                    await Db.Insertable(sd).ExecuteReturnIdentityAsync();
                    //修改托盘表状态让托盘表和库存明细表保持一致
                    string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'";
                    int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql);
                }
                else
                {
@@ -809,8 +832,8 @@
                    await Db.Updateable(pallet).ExecuteCommandAsync();
                    //更改储位状态为空储位
                    var locate = Db.Queryable<SysStorageLocat>().First(m=>m.IsDel == "0" && m.LocatNo == locateStr);
                    if (locate!=null)
                    var locate = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == locateStr);
                    if (locate != null)
                    {
                        locate.Status = "0";
                        Db.Updateable(locate).ExecuteCommand();
@@ -822,8 +845,7 @@
                noticeDetail.CompleteQty += int.Parse(PickQty);
                await Db.Updateable(noticeDetail).ExecuteCommandAsync();
                var num = await Db.Queryable<BllExportNoticeDetail>()
                    .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                var num = await Db.Queryable<BllExportNoticeDetail>().CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                if (num <= 0)
                {
                    notice.Status = "4"; //更改为执行完成
@@ -1529,7 +1551,7 @@
                //库存明细
                var stockDetail = await Db.Queryable<DataStockDetail>()
                    .FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo
                    .FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo
                    && m.SkuNo == boxInfos.First().SkuNo && m.LotNo == boxInfos.First().LotNo);
                if (stockDetail == null)
                {
@@ -1584,7 +1606,7 @@
                else
                {
                    await Db.Updateable(stockDetail).ExecuteCommandAsync();
                }
                }
                stock.Qty -= pickQty;
                stock.LockQty -= pickQty;
                if (stock.Qty <= 0)
@@ -1627,14 +1649,14 @@
                //添加操作日志记录
                var k = new OperationSOServer().AddLogOperationSo("PDA模块", "车间出库",
                var k = new OperationSOServer().AddLogOperationSo("PDA模块", "车间出库",
                    boxNo, "出库", $"在PDA上对箱号为:{boxNo}的托盘码为:{palletNo}的拣货操作", userId);
                Db.CommitTran();
            }
            catch (AppFriendlyException e)
            {
                Db.RollbackTran();
            }
            //catch (AppFriendlyException e)
            //{
            //    Db.RollbackTran();
            //}
            catch (Exception e)
            {
                Db.RollbackTran();
@@ -1643,7 +1665,7 @@
        }
        // 车间Pda拣货-数量
        public async Task ChejianPickNum(PdaSoVm model, int userId)
        public async Task ChejianPickNum(PdaSoVm model, int userId)
        {
            Db.BeginTran();
            try
@@ -1664,10 +1686,10 @@
                {
                    throw Oops.Bah("物料数量不可为null");
                }
                else
                else
                {
                    skuNum = decimal.Parse(model.PickQty);
                    if (skuNum <= 0)
                    if (skuNum <= 0)
                    {
                        throw Oops.Bah("物料数量应大于0!");
                    }
@@ -1679,9 +1701,9 @@
                {
                    throw Oops.Bah("物料不存在,请检查物料编码是否拯却!");
                }
                else
                else
                {
                    if (skuModel.IsPasteCode != "0")
                    if (skuModel.IsPasteCode != "0")
                    {
                        throw Oops.Bah("该物料为贴标物料,请到标签页面拣货!");
                    }
@@ -1691,7 +1713,7 @@
                //库存明细
                var stockDetail = await Db.Queryable<DataStockDetail>()
                    .FirstAsync(m => m.IsDel == "0" && m.PalletNo == model.PalletNo
                    && m.SkuNo == model.SkuNo  && m.LotNo == model.LotNo);
                    && m.SkuNo == model.SkuNo && m.LotNo == model.LotNo);
                if (stockDetail == null)
                {
                    throw Oops.Bah("未查询到该托盘上货物的库存明细信息!");
@@ -1779,14 +1801,13 @@
                #endregion
                //添加操作日志记录
                var k = new OperationSOServer().AddLogOperationSo("PDA模块", "车间出库",
                    skuModel.SkuName, "拣货", $"在PDA车间出库页上对::{skuModel.SkuName}的物料进行拣货操作", userId);
                var k = new OperationSOServer().AddLogOperationSo("PDA模块", "车间出库", skuModel.SkuName, "拣货", $"在PDA车间出库页上对:{skuModel.SkuName}的物料进行拣货操作", userId);
                Db.CommitTran();
            }
            catch (AppFriendlyException e)
            {
                Db.RollbackTran();
            }
            //catch (AppFriendlyException e)
            //{
            //    Db.RollbackTran();
            //}
            catch (Exception e)
            {
                Db.RollbackTran();
@@ -1870,12 +1891,12 @@
            //}
            if (type == "1")//平库出库获取单据
            {
                var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
                var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).OrderByDescending(m => m.SONo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
                return allotList;
            }
            var noticeList = Db.Queryable<BllExportNotice>().Where(w => w.IsDel == "0" && (w.Status == "3" || w.Status == "4")).Select(s => s.SONo).ToList();
            //获取状态为待拣货或者部分拣货的出库单
            var allotList2 = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.PalletNo == palletNo && noticeList.Contains(m.SONo)).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
            var allotList2 = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.PalletNo == palletNo && noticeList.Contains(m.SONo)).OrderByDescending(m => m.SONo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
            //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
            //获取出库单据不为待拣货 执行完毕 订单关闭 等待执行的单据
@@ -1891,18 +1912,18 @@
            if (string.IsNullOrWhiteSpace(soNo))//判断托盘是否为空
            {
                throw Oops.Bah("出库单为空,请选择出库单");
            }
            }
            if (string.IsNullOrWhiteSpace(soDetailId))
            {
                throw Oops.Bah("出库明细为空,请选择物料-批次");
            }
            var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "0" && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId)).Select(m => m.PalletNo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
            return allotList;
        }
        //获取托盘中含有的执行中的单据
@@ -1910,7 +1931,7 @@
        {
            if (type == "1")//平库出库获取单据
            {
                var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "1" || m.Status =="0")).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
                var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "1" || m.Status == "0")).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
                return allotList;
            }
            //获取状态为待拣货或者部分拣货的出库单
@@ -1932,7 +1953,7 @@
            }
            //获取状态为待拣货或者部分拣货的出库单
            var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.Status == "0" || m.Status == "1"));
            var list = await allotList.GroupBy(m => new { m.SODetailNo, m.SkuNo, m.SkuName, m.LotNo }).Select(m => new DetailIdSkuLotNo()
            {
                SoDetailId = m.SODetailNo,
@@ -2129,7 +2150,7 @@
        /// <param name="boxNo"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public decimal CheckBoxForPick(string palletNo ,string boxNo)
        public decimal CheckBoxForPick(string palletNo, string boxNo)
        {
            try
            {
@@ -2390,7 +2411,7 @@
                        pallet.Status = "0";
                        await Db.Updateable(pallet).ExecuteCommandAsync();
                    }
                    //修改出库单明细拣货数量
                    noticeDetail.CompleteQty += pickQty;
                    await Db.Updateable(noticeDetail).ExecuteCommandAsync();
@@ -3057,7 +3078,7 @@
                                await Db.Updateable(item).ExecuteCommandAsync();
                            }
                            pickQty += decimal.Parse(pickQty1);
                        }
                        }
                    }
                    //改变库内箱码是否零箱信息
                    if (biaoShi == "1" || biaoShi == "2")
@@ -3198,7 +3219,7 @@
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public async Task SoSetPickCode34(string soNo, string soDetailId, string palletNo, List<string> boxNoList, int userId)
        {
        {
            try
            {
                #region 判断
@@ -3801,7 +3822,7 @@
                else
                {
                    stockDetail.Status = "0";
                }
                }
                if (stockDetail.Qty <= 0)
                {
                    await Db.Deleteable(stockDetail).ExecuteCommandAsync();
@@ -4029,7 +4050,7 @@
                    {
                        endroad = new AllotLocation().RoadwayToStationNum(locat.RoadwayNo, model.OutMode);
                    }
                    outDtoList.Add(new OutCommandDto()
                    {
                        TaskNo = exTask.TaskNo, // 任务号
@@ -4114,8 +4135,8 @@
            var info = Db.Queryable<BllExportAllot>()
                .LeftJoin<DataStockDetail>((a, b) => a.PalletNo == b.PalletNo)
                .Where(a=>a.IsDel == "0" && (a.Status == "0"||a.Status =="1") && a.SONo == soNo)
                .GroupBy((a,b) => new { a.SkuNo, a.SkuName, a.LotNo}).Select((a,b) => new BoxInfo()
                .Where(a => a.IsDel == "0" && (a.Status == "0" || a.Status == "1") && a.SONo == soNo)
                .GroupBy((a, b) => new { a.SkuNo, a.SkuName, a.LotNo }).Select((a, b) => new BoxInfo()
                {
                    SkuNo = a.SkuNo,
                    SkuName = a.SkuName,
@@ -4140,15 +4161,15 @@
        }
        //获取平库单据中托盘位置信息
        public async Task<List<BoxInfo>> GetPingKuLocationInfo(string soNo,string skuno,string lotno)
        public async Task<List<BoxInfo>> GetPingKuLocationInfo(string soNo, string skuno, string lotno)
        {
            var info = Db.Queryable<BllExportAllot>()
                .LeftJoin<DataStockDetail>((a, b) => a.PalletNo == b.PalletNo)
                .LeftJoin<SysWareHouse>((a,b,c)=>b.WareHouseNo == c.WareHouseNo)
                .LeftJoin<SysStorageArea>((a,b,c,d)=>b.AreaNo == d.AreaNo)
                .LeftJoin<SysWareHouse>((a, b, c) => b.WareHouseNo == c.WareHouseNo)
                .LeftJoin<SysStorageArea>((a, b, c, d) => b.AreaNo == d.AreaNo)
                .Where(a => a.IsDel == "0" && (a.Status == "0" || a.Status == "1") && a.SONo == soNo && a.SkuNo == skuno && a.LotNo == lotno)
                .GroupBy((a, b,c,d) => new { a.PalletNo, b.LocatNo,c.WareHouseName,d.AreaName }).Select((a, b,c,d) => new BoxInfo()
                .GroupBy((a, b, c, d) => new { a.PalletNo, b.LocatNo, c.WareHouseName, d.AreaName }).Select((a, b, c, d) => new BoxInfo()
                {
                    PalletNo = a.PalletNo,
                    LocatNo = b.LocatNo,
@@ -4368,7 +4389,7 @@
        }
        //取样出库拣货(标签)
        public async Task SampleSoSetPick(string soType, string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3,
        public async Task SampleSoSetPick(string soType, string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3,
            string pickQty1, string asnNo, int userId)
        {
            Db.BeginTran();