Administrator
2024-03-11 b478031d19c13092dc5f86e6d4f7fc114ea9a85d
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -42,6 +42,23 @@
            }
        }
        //根据入库单号获取入库总单信息
        public List<BllArrivalNotice> GetArrivalNotice(ArrivalNoticeVm model)
        {
            string sqlString = string.Empty;
            try
            {
                sqlString = $"select * from BllArrivalNotice where ASNNo = '{model.ASNNo}' and isdel='0'  ";
                var modelList = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString);
                return modelList;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        // 根据单据号获取单据明细列表
        public List<ArrivalNoticeDetailDto> GetArrivalNoticeDetails(ArrivalNoticeVm model)
        {
@@ -1286,7 +1303,7 @@
        /// </summary>
        /// <param name="locatNo">储位编码</param>
        /// <returns></returns>
        public string CheckLocatNo(string locatNo)
        public string CheckLocatNo(string locatNo)
        {
            try
            {
@@ -1761,8 +1778,6 @@
                {
                    throw new Exception("-1:单据号不可为空!");
                }
                //根据单据号获取入库单总单
                var notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo);
                if (model.AsnDetailId == null || model.AsnDetailId == 0)
                {
                    throw new Exception("-1:物料不可为空!");
@@ -1770,6 +1785,12 @@
                if (string.IsNullOrEmpty(model.PalletNo))
                {
                    throw new Exception("-1:托盘号不可为空!");
                }
                //根据单据号获取入库单总单
                var notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo);
                if (notice.Status != "0" && notice.Status != "1")
                {
                    throw new Exception("-1:入库单状态不是等待执行或执行完成!");
                }
                if (string.IsNullOrEmpty(model.LotNo))
                {
@@ -1787,6 +1808,10 @@
                    if (indexOfDash != -1)
                    {
                        model.LotNo = model.LotNo.Substring(indexOfDash + 1);
                    }
                    else
                    {
                        model.LotNo = "";
                    }
                }
                //判断物料数量是否为0 为0判断箱码信息 不为0继续
@@ -1806,6 +1831,52 @@
                    }
                }
                int isDeposit = 0;
                //判断总单单据是否为寄存单据
                if (notice.Type == "7")
                {
                    isDeposit = 1;
                }
                if (isDeposit == 1)
                {
                    //判断总单备注是否为空
                    if (!string.IsNullOrWhiteSpace(notice.Demo))
                    {
                        //分割总单备注及托盘备注
                        var noticeDemo = notice.Demo.Split('、'); //总单备注
                        var palletDemo = model.Demo.Split('、'); //托盘备注
                        //循环托盘备注
                        foreach (var itemPallet in palletDemo)
                        {
                            int isDemo = 0;
                            //循环总单备注
                            foreach (var itemNotice in noticeDemo)
                            {
                                //判断是否有相同备注
                                if (itemPallet == itemNotice)
                                {
                                    isDemo = 1;
                                    break;
                                }
                            }
                            if (isDemo == 0)
                            {
                                throw new Exception("-1:总单备注与托盘备注不符,请核实后重新绑定!");
                            }
                        }
                    }
                    else if (string.IsNullOrWhiteSpace(notice.Demo))
                    {
                        //判断托盘备注是否为空
                        if (!string.IsNullOrWhiteSpace(model.Demo))
                        {
                            throw new Exception("-1:请添加总单备注后输入托盘备注!");
                        }
                    }
                }
                #endregion
                Db.BeginTran();
@@ -1815,6 +1886,12 @@
                if (pallet == null)
                {
                    throw new Exception("未查询到托盘信息,请核实!");
                }
                //判断托盘是否在库外
                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
                if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo))
                {
                    throw new Exception("该托盘未在库外,请核实!");
                }
                // 验证入库单明细是否存在
                var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
@@ -1826,40 +1903,46 @@
                var package = Db.Queryable<SysPackag>().Where(m => m.IsDel == "0");
                var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo);
                var pack = package.First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);
                if (pack == null)
                {
                    throw new Exception("-1:获取物料包装失败,请核实!");
                }
                var pNum = 0;//托盘物品数量 
                var bNum = 0;//箱码物品数量 
                if (pack.L5Num.HasValue)
                //判断是否为寄存物料
                if (isDeposit == 0)
                {
                    pNum = (int)pack.L5Num;
                    bNum = (int)pack.L4Num;
                }
                else if (pack.L4Num.HasValue)
                {
                    pNum = (int)pack.L4Num;
                    bNum = (int)pack.L3Num;
                }
                else if (pack.L3Num.HasValue)
                {
                    pNum = (int)pack.L3Num;
                    bNum = (int)pack.L2Num;
                }
                else if (pack.L2Num.HasValue)
                {
                    pNum = (int)pack.L2Num;
                    bNum = (int)pack.L1Num;
                }
                else if (pack.L1Num.HasValue)
                {
                    pNum = (int)pack.L1Num;
                    bNum = (int)pack.L1Num;
                }
                if (pNum == 0 || bNum == 0)
                {
                    throw new Exception($"绑定失败,{detail.SkuNo}物品包装未找到!");
                    if (pack == null)
                    {
                        throw new Exception("-1:获取物料包装失败,请核实!");
                    }
                    if (pack.L5Num.HasValue)
                    {
                        pNum = (int)pack.L5Num;
                        bNum = (int)pack.L4Num;
                    }
                    else if (pack.L4Num.HasValue)
                    {
                        pNum = (int)pack.L4Num;
                        bNum = (int)pack.L3Num;
                    }
                    else if (pack.L3Num.HasValue)
                    {
                        pNum = (int)pack.L3Num;
                        bNum = (int)pack.L2Num;
                    }
                    else if (pack.L2Num.HasValue)
                    {
                        pNum = (int)pack.L2Num;
                        bNum = (int)pack.L1Num;
                    }
                    else if (pack.L1Num.HasValue)
                    {
                        pNum = (int)pack.L1Num;
                        bNum = (int)pack.L1Num;
                    }
                    if (pNum == 0 || bNum == 0)
                    {
                        throw new Exception($"绑定失败,{detail.SkuNo}物品包装未找到!");
                    }
                }
                #endregion
@@ -1878,7 +1961,7 @@
                    }
                }
                #endregion
                var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailId && m.PalletNo == model.PalletNo);
                var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailId && m.PalletNo == model.PalletNo && m.Status != "2");
                var bindId = 0;
                if (bind == null)
                {
@@ -1895,14 +1978,16 @@
                        Type = "0",
                        LotNo = model.LotNo,
                        LotText = detail.LotText,
                        SupplierLot = "",
                        SupplierLot = detail.SupplierLot,
                        InspectMark = "0",
                        BitPalletMark = "1",
                        IsBale = "0",
                        IsBelt = "0",
                        CreateUser = userId
                        CreateUser = userId,
                        Demo = model.Demo,
                    };
                    if (model.SkuQty > pNum)
                    if (model.SkuQty > pNum && isDeposit == 0)
                    {
                        throw new Exception($"绑定失败,{model.PalletNo}托盘绑定数量大于该物品托盘包装数量!");
                    }
@@ -1992,7 +2077,7 @@
                    // 更新托盘绑定表
                    bind.Qty += factQty;
                }
                if (bind.FullQty < bind.Qty)
                if (bind.FullQty < bind.Qty && isDeposit == 0)
                {
                    throw new Exception("托盘绑定数量已超出该物料包装数量");
                }
@@ -2001,7 +2086,7 @@
                {
                    bind.BitPalletMark = "0";
                }
                if (bind.Qty > pNum)
                if (bind.Qty > pNum && isDeposit == 0)
                {
                    throw new Exception($"绑定失败,{bind.PalletNo}托盘绑定数量大于该物品托盘包装数量!");
                }
@@ -2024,8 +2109,15 @@
                if (detail.Status == "0")
                {
                    var sqlString2 = string.Empty;
                    sqlString2 += $"update BllArrivalNotice set Status = '1',CompleteTime= getDate() where ASNNo = '{model.AsnNo}' and Status ='0';";
                    sqlString2 += $"update BllArrivalNoticeDetail set Status = '1',CompleteTime= getDate() where id = '{model.AsnDetailId}' and Status ='0';";
                    sqlString2 += $"update BllArrivalNotice set Status = '1',UpdateTime= getDate(),UpdateUser = {userId} where ASNNo = '{model.AsnNo}' and Status ='0';";
                    sqlString2 += $"update BllArrivalNoticeDetail set Status = '1',UpdateTime= getDate(),UpdateUser = {userId} where id = '{model.AsnDetailId}' and Status ='0';";
                    Db.Ado.ExecuteCommand(sqlString2);
                }
                else if (detail.Status == "1")
                {
                    var sqlString2 = string.Empty;
                    sqlString2 += $"update BllArrivalNotice set UpdateTime= getDate(),UpdateUser = {userId} where ASNNo = '{model.AsnNo}' and Status ='1';";
                    sqlString2 += $"update BllArrivalNoticeDetail set UpdateTime= getDate(),UpdateUser = {userId} where id = '{model.AsnDetailId}' and Status ='1';";
                    Db.Ado.ExecuteCommand(sqlString2);
                }
@@ -2138,7 +2230,7 @@
                    {
                        // 不贴码物料 无需验证箱码信息
                    }
                    else
                    else
                    {
                        //验证箱码信息是否存在
                        if (boxInfoList.Count <= 0)