zhaowc
2025-04-07 19e95f4acc328bbf62a0427fe658d00268019e66
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;
                }
                //添加出库任务
@@ -2818,26 +2870,44 @@
                    throw new Exception("当前托盘未在库存中");
                }
                //怎么判断当前托盘是库外要取样的托盘,正常出库剩余托盘目前这种情况也能拣货啊,也没有分配信息
                var allot = Db.Queryable<BllExportAllot>().First(m =>
                    m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6");
                if (allot != null)
                //先获取单据分配信息,再获取托盘分配信息
                var allotnotice = Db.Queryable<BllExportNotice>().Where(m =>
                    m.IsDel == "0" && m.Type == "3").ToList();
                if (allotnotice.Count  == 0)
                {
                    var soNo = Db.Queryable<BllExportNotice>()
                        .First(m => m.IsDel == "0" && m.SONo == allot.SONo);
                    if (soNo == null)
                    throw new Exception("未找到取样单据信息");
                }
                int pano = 0;
                var sono = "";
                foreach (var item in allotnotice)
                {
                    var allot = Db.Queryable<BllExportAllot>().First(m =>
                    m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6" && m.SONo == item.SONo);
                    if (allot != null)
                    {
                        throw new Exception("未找到托盘上出库单据信息");
                        pano++;
                        sono = item.SONo;
                    }
                    if (soNo.Type != "3")
                }
                if (pano > 0)
                {
                    var locate = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == palletNo);
                    if (locate != null)
                    {
                        throw new Exception("该托盘不是取样托盘");
                        if (locate.WareHouseNo == "w01")
                        {
                            type = "0";//库内取样
                        }
                        else
                        {
                            type = "1";
                        }
                    }
                    type = "0";//库内取样
                }
                else
                {
                    //判断当前托盘是否是在平库或库外
                    type = "1";//库前取样
                    throw new Exception("未找到取样托盘信息");
                }
                return type;
            }
@@ -3213,6 +3283,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 +3570,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 +3863,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 +4053,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 +4305,7 @@
                            LotNo = allot.LotNo,
                            LotText = allot.LotText,
                            SupplierLot = allot.SupplierLot,
                            SkuNo = allot.SkuNo,
                            SkuName = allot.SkuName,
                            Standard = allot.Standard,
@@ -4303,10 +4402,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 +4428,10 @@
                        {
                            throw new Exception("拣货数量不能大于箱内数量");
                        }
                        if (decimal.Parse(pickQty1) > needQty)
                        {
                            throw new Exception("拣货数量不能大于剩余待拣数量");
                        }
                        //if (decimal.Parse(pickQty1) > needQty)
                        //{
                        //    throw new Exception("拣货数量不能大于剩余待拣数量");
                        //}
                        biaoShi = "2";
                    }
@@ -4347,10 +4446,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 +4547,7 @@
                                        SkuName = item.SkuName,
                                        Standard = item.Standard,
                                        ProductionTime = item.ProductionTime,
                                        ExpirationTime = item.ExpirationTime,
                                        SupplierLot = item.SupplierLot,
                                        InspectMark = item.InspectMark,
                                        BitBoxMark = "1",
@@ -4537,6 +4637,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 +4754,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 +4982,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();
                    }
                }
                //修改出库单明细拣货数量