wxw
昨天 366377c9d97c379e05cf758e05c5bc55fe3b930e
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -29,6 +29,7 @@
using Model.ModelVm.SysVm;
using System.Security.Cryptography.X509Certificates;
using AutoMapper.Configuration.Annotations;
using Utility;
namespace WMS.BLL.BllPdaServer
{
@@ -1163,7 +1164,7 @@
                }
                //判断托盘是否在库外
                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
                if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo))
                if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo) && stockDetail.WareHouseNo != "W04")
                {
                    throw new Exception("该托盘已有储位信息,请核实!");
                }
@@ -1347,6 +1348,13 @@
                        CreateUser = 0,
                        CreateTime = comTime
                    };
                    if (stockDetail != null)
                    {
                        sd1.WareHouseNo = stockDetail.WareHouseNo;
                        sd1.AreaNo = stockDetail.AreaNo;
                        sd1.RoadwayNo = stockDetail.RoadwayNo;
                        sd1.LocatNo = stockDetail.LocatNo;
                    }
                    //维护库存明细货主/供应商信息 //0:成品入库,2:中间品入库,4:车间余料入库,6:代储入库,7:寄存入库
                    if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")
@@ -4286,10 +4294,18 @@
            try
            {
                string strMsg = "";
                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.Status == "0" && w.WareHouseNo == "W04");
                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.WareHouseNo == "W04");
                if (storageLocat == null)
                {
                    throw new Exception("-1:地码(储位信息)不存在或非空闲状态,请核查!");
                    throw new Exception("-1:地码(储位信息)不存在,请核查!");
                }
                if (storageLocat.Status != "0")
                {
                    var detailInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == storageLocat.LocatNo);
                    if (detailInfo != null)
                    {
                        throw new Exception("-1:地码(储位信息)非空闲,请核查!");
                    }
                }
                return strMsg;
@@ -6073,9 +6089,12 @@
                {
                    foreach (var item in stockDetail)
                    {
                        if (!string.IsNullOrEmpty(item.WareHouseNo))
                        if (!string.IsNullOrEmpty(item.WareHouseNo) && !string.IsNullOrEmpty(item.AreaNo))
                        {
                            throw new Exception("该托盘未在库外,请核查!");
                            if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09")
                            {
                                throw new Exception("该托盘未在库外,请核查!");
                            }
                        }
                    }
                    iscount = 1; //回流入库
@@ -6083,10 +6102,18 @@
                #endregion
                #region 地码信息(储位信息)
                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo && w.Status == "0");
                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo);
                if (storageLocat == null)
                {
                    throw new Exception("储位信息不存在或非空闲状态,请核查!");
                    throw new Exception("储位信息不存,请核查!");
                }
                if (storageLocat.Status != "0")
                {
                    var detailInfo=Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == storageLocat.LocatNo);
                    if (detailInfo != null)
                    {
                        throw new Exception("储位不是空闲状态,请核查!");
                    }
                }
                #endregion
@@ -6512,6 +6539,113 @@
        }
        #endregion
        #region 仓库收货
        /// <summary>
        /// 仓库确认收货
        /// </summary>
        /// <param name="model"></param>
        public void ConfirmTakeOf(string palletNo,int userId)
        {
            try
            {
                #region 验证信息
                if (string.IsNullOrEmpty(palletNo))
                {
                    throw new Exception("托盘条码不能为空!");
                }
                //获取托盘信息
                var pallet = Db.Queryable<SysPallets>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
                //验证托盘信息是否为空
                if (pallet == null)
                {
                    throw new Exception("托盘信息不存在,请检查!");
                }
                if (pallet.Status == "0")
                {
                    throw new Exception("托盘未使用,请检查!");
                }
                #endregion
                //获取库存明细信息
                var stockDetailList = Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.PalletNo == palletNo).ToList();
                //验证库存明细信息是否存在
                if (stockDetailList.Count<=0)
                {
                    throw new Exception("库存明细不存在,请检查库存信息!");
                }
                //开启事务
                Db.BeginTran();
                foreach (var item in stockDetailList)
                {
                    //if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09")
                    //{
                    //    throw new Exception("该托盘非线边回库托盘!");
                    //}
                    //库存总表
                    var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
                    if (stock == null)
                    {
                        throw new Exception($"未查询到该托盘上物料编码为:{item.SkuNo}的库存信息!");
                    }
                    var boxInfoList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo).ToList();
                    if (boxInfoList.Count > 0)
                    {
                        foreach (var box in boxInfoList)
                        {
                            var bllBox = Db.Queryable<BllBoxInfo>().First(w => w.IsDel == "0" && w.Status != "0" && w.BoxNo == box.BoxNo);
                            if (bllBox != null)
                            {
                                bllBox.Status = "0";
                                bllBox.ASNDetailNo = null;
                                bllBox.BindNo = null;
                                bllBox.PalletNo = "";
                                //更新箱支明细表
                                Db.Updateable(bllBox).ExecuteCommand();
                            }
                        }
                        //删除库存箱码信息
                        Db.Deleteable(boxInfoList).ExecuteCommand();
                    }
                    //删除或修改库存
                    stock.Qty -= (decimal)item.Qty;
                    if (stock.Qty <= 0)
                    {
                        Db.Deleteable(stock).ExecuteCommand();
                    }
                    else
                    {
                        Db.Updateable(stock).ExecuteCommand();
                    }
                    //删除库存明细
                    Db.Deleteable(item).ExecuteCommand();
                    //判断托盘上还有没有其他物料
                    var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != item.Id);
                    if (palletData == null)
                    {
                        pallet.Status = "0";
                        Db.Updateable(pallet).ExecuteCommand();
                    }
                }
                new OperationASNServer().AddLogOperationAsn("PDA模块", "仓库收货", palletNo, "完成", $"在PDA上完成托盘码为:{palletNo}的仓库收货操作", userId);
                //提交事务
                Db.CommitTran();
            }
            catch (Exception ex)
            {
                //回滚事务
                Db.RollbackTran();
                throw ex;
            }
        }
        #endregion
        #region JC23取样业务接口
        //获取未组托或已组托的箱码级别