Administrator
2024-03-06 7f8d455428beb73694baf000f692e2183b239239
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -1426,43 +1426,52 @@
                        string toLocation = string.Empty;//目标位置
                        string unstackingMode2 = unstackingMode;//拆垛方式,0:机器人拆垛 1:PDA拆垛
                        #region 判断是否需要拆箱
                        string isChai = "0";//是否需要拆箱,0:否 1:是
                        var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo);
                        if (skuInfo == null)
                        if (notice.Type == "0")//成品出库
                        {
                            throw new Exception("物料信息不存在!");
                        }
                        var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo);
                        if (packagInfo == null)
                        {
                            throw new Exception("包装信息不存在!");
                        }
                        if (packagInfo.L2Name == "箱")
                        {
                            if (item.Qty % (decimal)packagInfo.L2Num != 0)//能整除说明不用拆箱,不能整除说明需要拆箱
                            string isChai = "0";//是否需要拆箱,0:否 1:是
                            var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo);
                            if (skuInfo == null)
                            {
                                isChai = "1";
                                unstackingMode2 = "1";//需要拆箱需走PDA拆垛
                                throw new Exception("物料信息不存在!");
                            }
                            var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo);
                            if (packagInfo == null)
                            {
                                throw new Exception("包装信息不存在!");
                            }
                            if (packagInfo.L2Name == "箱")
                            {
                                if (item.Qty % (decimal)packagInfo.L2Num != 0)//能整除说明不用拆箱,不能整除说明需要拆箱
                                {
                                    isChai = "1";
                                    unstackingMode2 = "1";//需要拆箱需走PDA拆垛
                                }
                            }
                            if (isChai == "0")
                            {
                                var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
                                if (boxInfo != null)//托盘上有零箱需要拆箱
                                {
                                    isChai = "1";
                                    unstackingMode2 = "1";//需要拆箱需走PDA拆垛
                                }
                            }
                            if (unstackingMode2 == "0")//机器人拆垛
                            {
                                toLocation = loadingAddre;//装车口
                            }
                            else //PDA拆垛
                            {
                                toLocation = outMode;//出库口
                            }
                        }
                        if (isChai == "0")
                        else
                        {
                            var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
                            if (boxInfo != null)//托盘上有零箱需要拆箱
                            {
                                isChai = "1";
                                unstackingMode2 = "1";//需要拆箱需走PDA拆垛
                            }
                        }
                        #endregion
                        if (unstackingMode2 == "0")//机器人拆垛
                        {
                            toLocation = loadingAddre;//装车口
                        }
                        else //PDA拆垛
                        {
                            unstackingMode2 = "1";//非成品出库走PDA拆垛
                            toLocation = outMode;//出库口
                        }
                        }
                        #endregion
                        // 储位号
                        var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo;
@@ -2395,7 +2404,7 @@
                }
                if (notice.Status != "0" && notice.Status != "1")
                {
                    throw new Exception("参数异常,请检查状态是否为等待执行或部分分配或来源是否是WMS");
                    throw new Exception("参数异常,请检查状态是否为等待执行或部分分配;");
                }
                //出库单明细
                var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.AllotQty - m.Qty) <= 0).ToList();
@@ -2430,32 +2439,46 @@
                        //判断单号是否指定批次
                        if (!string.IsNullOrWhiteSpace(detail.LotNo))
                        {
                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList();
                            if (detail.LotNo.Contains(";"))
                            {
                                var lotNoList = detail.LotNo.Split(";");
                                var lotNoList2 = new List<string>();
                                foreach (var lotNoItem in lotNoList)
                                {
                                    lotNoList2.Add(lotNoItem);
                                }
                                stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && lotNoList2.Contains(m.LotNo) && m.IsDel == "0").ToList();
                            }
                            else
                            {
                                stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList();
                            }
                        }
                        else
                        {
                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && string.IsNullOrWhiteSpace(m.LotNo) && m.IsDel == "0").ToList();
                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo  && m.IsDel == "0").ToList(); //&& string.IsNullOrWhiteSpace(m.LotNo)
                        }
                        if (stockDetail.Count < 1)
                        {
                            throw new Exception("库存不足,无可出库库存");
                        }
                        //if (notice.Type == "0" || notice.Type == "1")//成品、原辅料出库
                        //{
                        stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
                        //}
                        //else if (notice.Type == "2" || notice.Type == "3")//成品、原辅料出库(不合格)
                        //{
                        //    stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
                        //}
                        //else if (notice.Type == "4")//取样出库
                        //{
                        //    stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList();
                        //}
                        //将库存明细按深度进行排序 深度1在前 深度2在后
                        //stockDetail = stockDetail.OrderBy(d => int.Parse(d.LocatNo.Substring(6, 2))).ToList();
                        //0:成品出库、1:领料出库、2:抽检出库、3:物料取样出库、4:不合格品出库、5:中间品出库、6:代储出库、7:其他出库、8:寄存出库
                        if (notice.Type == "0" || notice.Type == "1" || notice.Type == "2" || notice.Type == "5")//成品、原辅料出库
                        {
                            stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
                        }
                        else if (notice.Type == "3" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//取样出库
                        {
                            stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList();
                        }
                        else if (notice.Type == "4")//不合格出库
                        {
                            stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
                        }
                        #region 包装信息
                        var pack = packList.FirstOrDefault(p => p.PackagNo == detail.PackagNo);
@@ -2547,6 +2570,22 @@
                            }
                            var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
                            if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1:领料出库、
                            {
                                if (string.IsNullOrWhiteSpace(detail.LotNo))
                                {
                                    detail.LotNo = s.LotNo;
                                }
                                else
                                {
                                    if (!detail.LotNo.Contains(s.LotNo))
                                    {
                                        detail.LotNo += ";" + s.LotNo;
                                    }
                                }
                            }
                        }
                        detail.AllotQty += qty;
                        detail.UpdateUser = userId;
@@ -2555,7 +2594,7 @@
                        {
                            detail.Status = "1";
                        }
                        //库存总表
                        //var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
                        //stock.LockQty += qty;