Administrator
2024-03-23 667736c9393c0f12814150c0c1cef77c078576e1
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -313,24 +313,30 @@
                {
                    throw new Exception($"{palletNo}托盘上存在箱码信息,无法在数量拣货进行操作!");
                }
                //出库单明细
                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0");
                if (noticeDetail == null)
                BllExportAllot allot = null;
                if (!string.IsNullOrWhiteSpace(soDetailId))
                {
                    throw new Exception($"未查询到对应出库单明细信息,请核实!");
                    //出库单明细
                    var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0");
                    if (noticeDetail == null)
                    {
                        throw new Exception($"未查询到对应出库单明细信息,请核实!");
                    }
                    //出库单总单
                    var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo);
                    if (notice == null)
                    {
                        throw new Exception($"未查询到对应出库单总单信息,请核实!");
                    }
                    //分配信息
                    allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.PalletNo == palletNo && (a.Status == "2" || a.Status == "3"));
                    if (allot == null)
                    {
                        throw new Exception($"未查询到对应分配信息,请核实!");
                    }
                }
                //出库单总单
                var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo);
                if (notice == null)
                {
                    throw new Exception($"未查询到对应出库单总单信息,请核实!");
                }
                //分配信息
                var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.PalletNo == palletNo && (a.Status == "2" || a.Status == "3"));
                if (allot == null)
                {
                    throw new Exception($"未查询到对应分配信息,请核实!");
                }
                //库存明细
                var detail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo);
                if (detail == null)
@@ -346,8 +352,8 @@
                {
                    SkuNo = detail.SkuNo,
                    BoxNo = detail.SkuNo,
                    Qty = (int)allot.Qty,
                    PickedQty = (int)allot.CompleteQty,
                    Qty = allot == null ? (int)(detail.Qty-detail.LockQty) : (int)allot.Qty,
                    PickedQty = allot == null ? 0 : (int)allot.CompleteQty,
                };
                pdaInfo.Add(info);
@@ -831,6 +837,7 @@
                var comList = new List<BllCompleteDetail>();
                //判断是否存在拣货明细
                isComplete = 0;// 所有无箱码或一级箱码拣货时,拣货明细应重新插入数据(体现多次拣货流程记录)
                if (isComplete == 0)
                {
                    //添加拣货明细
@@ -869,8 +876,6 @@
                    Db.Updateable(complete).ExecuteCommand();
                }
                //修改出库分配信息
                allot.CompleteQty += int.Parse(PickQty);
@@ -2538,6 +2543,13 @@
                {
                    throw new Exception("新托盘码不能为空");
                }
                if (palletNo == palletNoNew)//原托盘与新托盘一致
                {
                    if (!string.IsNullOrEmpty(boxNo))
                    {
                        throw new Exception("原托盘与新托盘一致,请选择整托出库");
                    }
                }
                //出库单
                var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
@@ -2588,13 +2600,16 @@
                var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                if (pinStockDetail != null)
                {
                    if (pinStockDetail.SONo != notice.SONo)
                    if (palletNo != palletNoNew)//非整托拣货
                    {
                        throw new Exception("拼托托盘上只能放同一个出库单下的物料!");
                    }
                    if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
                    {
                        isNew = true;
                        if (pinStockDetail.SONo != notice.SONo)
                        {
                            throw new Exception("拼托托盘上只能放同一个出库单下的物料!");
                        }
                        if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
                        {
                            isNew = true;
                        }
                    }
                    sdId = pinStockDetail.Id;
                }
@@ -2710,11 +2725,15 @@
                            CreateUser = userId
                        };
                        comList.Add(completeDetail);
                        if (palletNo != palletNoNew)
                        {
                            item.StockDetailId = sdId;
                            item.BindNo = null;//托盘绑定号
                            item.PalletNo = palletNoNew;
                        }
                        item.Status = "5";//箱支状态,0:未组托  1:已组托 2:已入库 3:已出库 4:已分配 5:已拣货
                        //修改库存箱码明细
                        item.StockDetailId = sdId;
                        item.BindNo = null;//托盘绑定号
                        item.PalletNo = palletNoNew;
                        Db.Updateable(item).ExecuteCommand();
                        pickQty += item.Qty;
@@ -2726,17 +2745,27 @@
                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
                    allot.UpdateTime = DateTime.Now;
                    Db.Updateable(allot).ExecuteCommand();
                    //删除原托盘库存明细
                    Db.Deleteable(stockDetail).ExecuteCommand();
                    //改变托盘状态为:未使用
                    var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
                    if (pallet == null)
                    if (palletNo != palletNoNew)
                    {
                        throw new Exception("未在托盘表中查询到托盘信息");
                        //删除原托盘库存明细
                        Db.Deleteable(stockDetail).ExecuteCommand();
                        //改变原托盘状态为:未使用
                        var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
                        if (pallet == null)
                        {
                            throw new Exception("未在托盘表中查询到托盘信息");
                        }
                        pallet.Status = "0";
                        Db.Updateable(pallet).ExecuteCommand();
                    }
                    pallet.Status = "0";
                    Db.Updateable(pallet).ExecuteCommand();
                    else
                    {
                        stockDetail.SONo = soNo;
                        Db.Updateable(stockDetail).ExecuteCommand();
                    }
                    //修改出库单明细拣货数量
                    noticeDetail.CompleteQty += pickQty;
                    Db.Updateable(noticeDetail).ExecuteCommand();
@@ -2871,6 +2900,7 @@
                            item.StockDetailId = sdId;
                            item.BindNo = null;//托盘绑定号
                            item.PalletNo = palletNoNew;
                            item.Status = "5";//箱支状态,0:未组托  1:已组托 2:已入库 3:已出库 4:已分配 5:已拣货
                            Db.Updateable(item).ExecuteCommand();
                            pickQty += item.Qty;
@@ -2882,7 +2912,8 @@
                            item.BindNo = null;//托盘绑定号
                            item.PalletNo = palletNoNew;
                            item.BoxNo = item.BoxNo3;//将支码赋给箱码
                            item.BitBoxMark = "1";
                            item.BitBoxMark = "1";//零箱标记
                            item.Status = "5";//箱支状态,0:未组托  1:已组托 2:已入库 3:已出库 4:已分配 5:已拣货
                            Db.Updateable(item).ExecuteCommand();
                            pickQty += item.Qty;
@@ -2895,6 +2926,7 @@
                                item.StockDetailId = sdId;
                                item.BindNo = null;//托盘绑定号
                                item.PalletNo = palletNoNew;
                                item.Status = "5";//箱支状态,0:未组托  1:已组托 2:已入库 3:已出库 4:已分配 5:已拣货
                                Db.Updateable(item).ExecuteCommand();
                            }
                            else
@@ -2987,10 +3019,13 @@
                }
                else
                {
                    //修改拼托托盘库存明细
                    pinStockDetail.Qty += pickQty;
                    pinStockDetail.LockQty += pickQty;
                    Db.Updateable(pinStockDetail).ExecuteCommand();
                    if (palletNo != palletNoNew)
                    {
                        //修改拼托托盘库存明细
                        pinStockDetail.Qty += pickQty;
                        pinStockDetail.LockQty += pickQty;
                        Db.Updateable(pinStockDetail).ExecuteCommand();
                    }
                }
                
                //添加操作日志记录
@@ -3081,6 +3116,13 @@
                {
                    throw new Exception("未查询到该托盘分配的库存信息!");
                }
                if (palletNo == palletNoNew)//原托盘与新托盘一致
                {
                    if (int.Parse(PickQty) != stockDetail.Qty)
                    {
                        throw new Exception("原托盘与新托盘一致,需要把托盘上所有数量拣货");
                    }
                }
                #endregion
                #region 拼托信息
@@ -3088,13 +3130,16 @@
                var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                if (pinStockDetail != null)
                {
                    if (pinStockDetail.SONo != notice.SONo)
                    if (palletNo != palletNoNew)//非整托拣货
                    {
                        throw new Exception("拼托托盘上只能放同一个出库单下的物料!");
                    }
                    if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
                    {
                        isNew = true;
                        if (pinStockDetail.SONo != notice.SONo)
                        {
                            throw new Exception("拼托托盘上只能放同一个出库单下的物料!");
                        }
                        if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
                        {
                            isNew = true;
                        }
                    }
                }
                else
@@ -3163,10 +3208,18 @@
                }
                else
                {
                    //修改拼托托盘库存明细
                    pinStockDetail.Qty += int.Parse(PickQty);
                    pinStockDetail.LockQty += int.Parse(PickQty);
                    Db.Updateable(pinStockDetail).ExecuteCommand();
                    if (palletNo != palletNoNew)
                    {
                        //修改拼托托盘库存明细
                        pinStockDetail.Qty += int.Parse(PickQty);
                        pinStockDetail.LockQty += int.Parse(PickQty);
                        Db.Updateable(pinStockDetail).ExecuteCommand();
                    }
                    else
                    {
                        pinStockDetail.SONo = soNo;
                        Db.Updateable(pinStockDetail).ExecuteCommand();
                    }
                }
                #endregion
@@ -3182,6 +3235,7 @@
                var comList = new List<BllCompleteDetail>();
                //判断是否存在拣货明细
                isComplete = 0;//所有无箱码或一级箱码拣货时,拣货明细应重新插入数据(体现多次拣货流程记录)
                if (isComplete == 0)
                {
                    //添加拣货明细
@@ -3229,32 +3283,38 @@
                int isDel = 0;
                //删除或修改库存明细
                stockDetail.BitPalletMark = "1";//修改为零托标识
                stockDetail.Qty -= int.Parse(PickQty);
                stockDetail.LockQty -= int.Parse(PickQty);
                if (stockDetail.Qty == stockDetail.LockQty)
                if (palletNo != palletNoNew)
                {
                    stockDetail.Status = "2";
                }
                else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0)
                {
                    stockDetail.Status = "1";
                }
                else
                {
                    stockDetail.Status = "0";
                }
                if (stockDetail.Qty <= 0)
                {
                    Db.Deleteable(stockDetail).ExecuteCommand();
                    //删除或修改库存明细
                    stockDetail.BitPalletMark = "1";//修改为零托标识
                    stockDetail.Qty -= int.Parse(PickQty);
                    stockDetail.LockQty -= int.Parse(PickQty);
                    if (stockDetail.Qty == stockDetail.LockQty)
                    {
                        stockDetail.Status = "2";
                    }
                    else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0)
                    {
                        stockDetail.Status = "1";
                    }
                    else
                    {
                        stockDetail.Status = "0";
                    }
                    if (stockDetail.Qty <= 0)
                    {
                        Db.Deleteable(stockDetail).ExecuteCommand();
                    }
                    else
                    {
                        isDel = 1;
                        Db.Updateable(stockDetail).ExecuteCommand();
                    }
                }
                else
                {
                    isDel = 1;
                    Db.Updateable(stockDetail).ExecuteCommand();
                }
                //判断托盘上物料是否拣货完毕
                if (isDel == 0)
                {