Demo
2024-03-26 19be6575a27a007b3dba7b0d28ddb769b5a1fed6
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -506,7 +506,8 @@
                    SkuName = it.SkuName,
                    LotNo = it.LotNo,
                    Standard = it.Standard,
                    Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty
                    //Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty,
                    Qty = it.Qty - it.LockQty - it.FrozenQty,
                }).ToList();
@@ -2116,7 +2117,7 @@
                            var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
                            if (taskNo == null)
                            {
                                taskNo = logTaskList.First(m => m.PalletNo == item.PalletNo);//当前有同托盘不同物料出库
                                taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//当前有同托盘不同物料出库
                            }
                            if (taskNo == null)
                            {
@@ -2548,6 +2549,38 @@
                    {
                        throw new Exception("未查询到任务信息");
                    }
                    //获取对应库位信息
                    var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
                    if (startlocat == null)
                    {
                        throw new Exception("未查询到储位信息");
                    }
                    startlocat.Status = "0";//修改分配信息状态
                    //获取储位信息
                    var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
                    //获取移库任d务对应目标储位信息
                    SysStorageLocat endlocat = new SysStorageLocat();
                    if (task.Type == "2")
                    {
                        endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.EndLocat);
                        if (endlocat == null)
                        {
                            throw new Exception("未查询到目标储位信息");
                        }
                    }
                    if (locat == null)
                    {
                        Db.RollbackTran();
                        throw new Exception("未查询到储位信息,请核实!");
                    }
                    locat.Status = "1"; //有物品
                    Db.Updateable(locat).ExecuteCommand();
                    if (endlocat != null)
                    {
                        endlocat.Status = "0"; //空储位 0
                        Db.Updateable(endlocat).ExecuteCommand();
                    }
                    //修改任务 
                    task.IsSuccess = 1;
                    task.IsSend = 0;
@@ -2571,31 +2604,6 @@
                        noticeDetail.FactQty -= item.Qty; //修改出库单明细的下架数量
                        Db.Updateable(noticeDetail).ExecuteCommand();
                        //获取储位信息
                        var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
                        //获取移库任务对应目标储位信息
                        SysStorageLocat endlocat = new SysStorageLocat();
                        if (task.Type == "2")
                        {
                            endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W03" && a.LocatNo == task.EndLocat);
                            if (endlocat == null)
                            {
                                throw new Exception("未查询到目标储位信息");
                            }
                        }
                        if (locat == null)
                        {
                            Db.RollbackTran();
                            throw new Exception("未查询到储位信息,请核实!");
                        }
                        locat.Status = "1"; //有物品
                        Db.Updateable(locat).ExecuteCommand();
                        if (endlocat != null)
                        {
                            endlocat.Status = "0"; //空储位 0
                            Db.Updateable(endlocat).ExecuteCommand();
                        }
                        if (noticeDetail.FactQty == 0)
                        {
@@ -2838,7 +2846,7 @@
                        }
                        else
                        {
                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0").ToList(); //&& string.IsNullOrWhiteSpace(m.LotNo)
                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0" && string.IsNullOrWhiteSpace(m.LotNo)).ToList(); //
                        }
                        if (stockDetail.Count < 1)
@@ -2866,41 +2874,43 @@
                        #region 包装信息
                        var pack = packList.FirstOrDefault(p => p.PackagNo == detail.PackagNo);
                        if (pack == null)
                        {
                            throw new Exception("未查询到物料包装");
                        }
                        var pNum = 0;//托盘物品数量
                        var bNum = 0;//箱物品数量
                        if (pack.L5Num.HasValue)
                        if (pack != null)
                        {
                            pNum = Convert.ToInt32(pack.L5Num);
                            bNum = Convert.ToInt32(pack.L4Num);
                            //throw new Exception("未查询到物料包装");
                            if (pack.L5Num.HasValue)
                            {
                                pNum = Convert.ToInt32(pack.L5Num);
                                bNum = Convert.ToInt32(pack.L4Num);
                            }
                            else if (pack.L4Num.HasValue)
                            {
                                pNum = Convert.ToInt32(pack.L4Num);
                                bNum = Convert.ToInt32(pack.L3Num);
                            }
                            else if (pack.L3Num.HasValue)
                            {
                                pNum = Convert.ToInt32(pack.L3Num);
                                bNum = Convert.ToInt32(pack.L2Num);
                            }
                            else if (pack.L2Num.HasValue)
                            {
                                pNum = Convert.ToInt32(pack.L2Num);
                                bNum = Convert.ToInt32(pack.L1Num);
                            }
                            else if (pack.L1Num.HasValue)
                            {
                                pNum = Convert.ToInt32(pack.L1Num);
                                bNum = Convert.ToInt32(pack.L1Num);
                            }
                        }
                        else if (pack.L4Num.HasValue)
                        {
                            pNum = Convert.ToInt32(pack.L4Num);
                            bNum = Convert.ToInt32(pack.L3Num);
                        }
                        else if (pack.L3Num.HasValue)
                        {
                            pNum = Convert.ToInt32(pack.L3Num);
                            bNum = Convert.ToInt32(pack.L2Num);
                        }
                        else if (pack.L2Num.HasValue)
                        {
                            pNum = Convert.ToInt32(pack.L2Num);
                            bNum = Convert.ToInt32(pack.L1Num);
                        }
                        else if (pack.L1Num.HasValue)
                        {
                            pNum = Convert.ToInt32(pack.L1Num);
                            bNum = Convert.ToInt32(pack.L1Num);
                        }
                        if (pNum == 0)
                        {
                            throw new Exception("未查询到物料包装托箱关系信息");
                        }
                        //if (pNum == 0)
                        //{
                        //    throw new Exception("未查询到物料包装托箱关系信息");
                        //}
                        #endregion
                        //取合适库存商品
                        Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//托出库物品数