zhaowc
2025-03-27 d07f25c163706ac46a83bd2c63db1e3c52715222
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -70,11 +70,11 @@
                {
                    throw new Exception("托盘码为空,请输入托盘码");
                }
                var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
                if (!string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1")
                {
                    throw new Exception("该托盘还未出库");
                }
                //var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
                //if (string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1")
                //{
                //    throw new Exception("该托盘还未出库");
                //}
                if (type == "1")//平库出库获取单据
                {
                    var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
@@ -82,6 +82,11 @@
                }
                //获取状态为待拣货或者部分拣货的出库单
                var allotList2 = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
                if (allotList2.Count == 0)
                {
                    throw new Exception("此托盘已拣货或无拣货任务");
                }
                //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
                //获取出库单据不为待拣货 执行完毕 订单关闭 等待执行的单据
@@ -529,6 +534,13 @@
                    {
                        throw new Exception("未在托盘表中查询到托盘信息");
                    }
                    //修改储位状态
                    var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo);
                    if (locate != null)
                    {
                        locate.Status = "0";
                        Db.Updateable(locate).ExecuteCommand();
                    }
                    pallet.Status = "0";
                    Db.Updateable(pallet).ExecuteCommand();
                    //修改出库单明细拣货数量
@@ -757,6 +769,13 @@
                        }
                        pallet.Status = "0";
                        Db.Updateable(pallet).ExecuteCommand();
                        //修改储位状态
                        var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo);
                        if (locate != null)
                        {
                            locate.Status = "0";
                            Db.Updateable(locate).ExecuteCommand();
                        }
                    }
                    //修改出库单明细拣货数量
                    noticeDetail.CompleteQty += pickQty;
@@ -955,12 +974,19 @@
                {
                    throw new Exception("未在托盘表中查询到托盘信息");
                }
                //判断托盘上物料是否拣货完毕
                if (isDel == 0)
                {
                    pallet.Status = "0";
                    Db.Updateable(pallet).ExecuteCommand();
                }
                //修改储位状态
                var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo);
                if (locate != null)
                {
                    locate.Status = "0";
                    Db.Updateable(locate).ExecuteCommand();
                }
                //修改出库单明细拣货数量
@@ -2435,7 +2461,20 @@
                        throw new Exception("没有可用的空托盘");
                    }
                    StartLocate = Db.Queryable<SysStorageLocat>().First(w => w.Status == "1" && (w.LocatNo == "B13010101" || w.LocatNo == "B13020101" || w.LocatNo == "B13030101")).LocatNo;
                    EndLocate = "B15010101";
                    //校验是否为第2层拣货托盘位
                    var locate = Db.Queryable<SysStorageLocat>().First(w => w.Row == 2 && w.LocatNo == model.OutCode);
                    if (locate == null)
                    {
                        throw new Exception("请选择正确的拣货位");
                    }
                    //校验目的货位是否可用
                    var isuse = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && w.LocatNo == model.OutCode);
                    if (locate == null)
                    {
                        throw new Exception("此拣货位状态不为空货位");
                    }
                    EndLocate = model.OutCode;
                }
                else//东侧拣货位叫空托盘
                {
@@ -2445,7 +2484,20 @@
                        throw new Exception("没有可用的空托盘");
                    }
                    StartLocate = Db.Queryable<SysStorageLocat>().First(w => w.Status == "1" && (w.LocatNo == "B13030101" || w.LocatNo == "B13040101" || w.LocatNo == "B13050101")).LocatNo;
                    EndLocate = "B15020101";
                    //校验是否为第2层拣货托盘位
                    var locate = Db.Queryable<SysStorageLocat>().First(w => w.Row == 4 && w.LocatNo == model.OutCode);
                    if (locate == null)
                    {
                        throw new Exception("请选择正确的拣货位");
                    }
                    //校验目的货位是否可用
                    var isuse = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && w.LocatNo == model.OutCode);
                    if (locate == null)
                    {
                        throw new Exception("此拣货位状态不为空货位");
                    }
                    EndLocate = model.OutCode;
                }
                //添加出库任务
@@ -3213,6 +3265,13 @@
                        }
                        pallet.Status = "0";
                        Db.Updateable(pallet).ExecuteCommand();
                        //修改储位状态
                        var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo);
                        if (locate != null)
                        {
                            locate.Status = "0";
                            Db.Updateable(locate).ExecuteCommand();
                        }
                    }
                    //修改出库单明细拣货数量
                    noticeDetail.Qty += pickQty;
@@ -3493,6 +3552,13 @@
                        }
                        pallet.Status = "0";
                        Db.Updateable(pallet).ExecuteCommand();
                        //修改储位状态
                        var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo);
                        if (locate != null)
                        {
                            locate.Status = "0";
                            Db.Updateable(locate).ExecuteCommand();
                        }
                    }
                    //修改出库单明细拣货数量
                    noticeDetail.CompleteQty += pickQty;
@@ -3779,6 +3845,13 @@
                        pallet.Status = "0";
                        Db.Updateable(pallet).ExecuteCommand();
                    }
                    //修改储位状态
                    var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo);
                    if (locate != null)
                    {
                        locate.Status = "0";
                        Db.Updateable(locate).ExecuteCommand();
                    }
                    //修改出库单明细拣货数量
                    noticeDetail.Qty += decimal.Parse(PickQty);
@@ -3962,6 +4035,13 @@
                    {
                        pallet.Status = "0";
                        Db.Updateable(pallet).ExecuteCommand();
                    }
                    //修改储位状态
                    var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo);
                    if (locate != null)
                    {
                        locate.Status = "0";
                        Db.Updateable(locate).ExecuteCommand();
                    }
                    //修改出库单明细拣货数量
@@ -4207,6 +4287,7 @@
                            LotNo = allot.LotNo,
                            LotText = allot.LotText,
                            SupplierLot = allot.SupplierLot,
                            SkuNo = allot.SkuNo,
                            SkuName = allot.SkuName,
                            Standard = allot.Standard,
@@ -4303,10 +4384,10 @@
                            throw new Exception("该托盘与箱码没有绑定关系");
                        }
                        var boxQty = boxInfos.First().Qty;
                        if (boxQty > needQty)
                        {
                            throw new Exception("拣货数量不能大于剩余待拣数量");
                        }
                        //if (boxQty > needQty)
                        //{
                        //    throw new Exception("拣货数量不能大于剩余待拣数量");
                        //}
                        foreach (var item in boxInfos)
                        {
@@ -4329,10 +4410,10 @@
                        {
                            throw new Exception("拣货数量不能大于箱内数量");
                        }
                        if (decimal.Parse(pickQty1) > needQty)
                        {
                            throw new Exception("拣货数量不能大于剩余待拣数量");
                        }
                        //if (decimal.Parse(pickQty1) > needQty)
                        //{
                        //    throw new Exception("拣货数量不能大于剩余待拣数量");
                        //}
                        biaoShi = "2";
                    }
@@ -4347,10 +4428,10 @@
                            throw new Exception("该托盘与箱码没有绑定关系");
                        }
                        var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList();
                        if (boxQty[0] > needQty)
                        {
                            throw new Exception("拣货数量不能大于箱内剩余待拣数量");
                        }
                        //if (boxQty[0] > needQty)
                        //{
                        //    throw new Exception("拣货数量不能大于箱内剩余待拣数量");
                        //}
                        foreach (var item in boxInfos)
                        {
@@ -4448,6 +4529,7 @@
                                        SkuName = item.SkuName,
                                        Standard = item.Standard,
                                        ProductionTime = item.ProductionTime,
                                        ExpirationTime = item.ExpirationTime,
                                        SupplierLot = item.SupplierLot,
                                        InspectMark = item.InspectMark,
                                        BitBoxMark = "1",
@@ -4537,6 +4619,14 @@
                        }
                        pallet.Status = "0";
                        Db.Updateable(pallet).ExecuteCommand();
                        //修改储位状态
                        var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo);
                        if (locate != null)
                        {
                            locate.Status = "0";
                            Db.Updateable(locate).ExecuteCommand();
                        }
                    }
                    //修改出库单明细拣货数量
                    noticeDetail.CompleteQty += pickQty;
@@ -4646,10 +4736,10 @@
                }
                //剩余拣货数量(待拣减去已拣)
                var needQty = allot.Qty - allot.CompleteQty;
                if (decimal.Parse(PickQty) > needQty)
                {
                    throw new Exception("拣货数量不能大于托内剩余待拣数量");
                }
                //if (decimal.Parse(PickQty) > needQty)
                //{
                //    throw new Exception("拣货数量不能大于托内剩余待拣数量");
                //}
                //库存明细
                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
@@ -4874,6 +4964,13 @@
                    pallet.Status = "0";
                    Db.Updateable(pallet).ExecuteCommand();
                    //修改储位状态
                    var locate = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == stockDetail.LocatNo);
                    if (locate != null)
                    {
                        locate.Status = "0";
                        Db.Updateable(locate).ExecuteCommand();
                    }
                }
                //修改出库单明细拣货数量