chengsc
9 天以前 c9fe2c53364abe0e0e495a1b756267f865159e2e
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -1444,12 +1444,15 @@
        #region 物料拆托 (标签、数量)
        /// <summary>
        /// 查询箱信息
        /// </summary>
        /// <param name="boxNo"></param>
        /// <param name="pallNo"></param>
        public void GetBoxInfo(string boxNo,string pallNo)
        {
            try
            {
                var boxInfo = Db.Queryable<DataBoxInfo>().Where(m=>m.IsDel == "0" && m.BoxNo == boxNo).ToList();
                if (!string.IsNullOrWhiteSpace(pallNo))
                {
@@ -1460,7 +1463,273 @@
                    throw new Exception("标签信息错误,请联系管理员");
                }
                 
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
                 
        public void UpPalletByBox(string boxNo,string pallet,string palletNew,int userId)
        {
            try
            {
                Db.BeginTran();
                if (string.IsNullOrWhiteSpace(boxNo) || string.IsNullOrWhiteSpace(pallet) || string.IsNullOrWhiteSpace(palletNew))
                {
                    throw new Exception("参数错误,托盘、新托盘、箱码均不能为空");
                }
                var boxInfoList = Db.Queryable<DataBoxInfo>().Where(m=>m.IsDel == "0" && m.BoxNo == boxNo).ToList();
                if (boxInfoList.Count != 1)
                {
                    throw new Exception("标签信息数量不是1条");
                }
                var boxInfo = boxInfoList.First();
                var detail1 = Db.Queryable<DataStockDetail>().First(m=>m.IsDel == "0" && m.PalletNo == pallet && m.Id == boxInfo.StockDetailId );
                if (detail1 == null)
                {
                    throw new Exception("未查询到托盘和箱码的库存明细");
                }
                var palletInfoNew = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNew);
                if (palletInfoNew == null)
                {
                    throw new Exception("未查询到新托盘信息");
                }
                var detailNewBl = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNew && (m.SkuNo != boxInfo.SkuNo || m.LotNo != boxInfo.LotNo));
                if (detailNewBl!=null)
                {
                    throw new Exception("新托盘上已有其他物料箱信息");
                }
                //添加/更新库存托盘信息
                var detailNew1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNew && m.SkuNo == boxInfo.SkuNo && m.LotNo == boxInfo.LotNo);
                var newId = 0;
                if (detailNew1 == null)//add
                {
                    var detailNew = new DataStockDetail();
                    detailNew.SkuNo = detail1.SkuNo;
                    detailNew.SkuName = detail1.SkuName;
                    detailNew.LotNo = detail1.LotNo;
                    detailNew.LotText = detail1.LotText;
                    detailNew.SupplierLot = detail1.SupplierLot;
                    detailNew.SupplierNo = detail1.SupplierNo;
                    detailNew.SupplierName = detail1.SupplierName;
                    detailNew.Standard = detail1.Standard;
                    detailNew.Qty = boxInfo.Qty;
                    detailNew.LockQty = 0;
                    detailNew.FrozenQty = 0;
                    detailNew.InspectQty = 0;
                    detailNew.ASNNo = "";
                    detailNew.PalletNo = palletNew;
                    detailNew.ProductionTime = detail1.ProductionTime;
                    detailNew.ExpirationTime = detail1.ExpirationTime;
                    detailNew.PalletTags = "0";
                    detailNew.CompleteTime = DateTime.Now;
                    detailNew.Status = "0";
                    detailNew.InspectMark = detail1.InspectMark;
                    detailNew.BitPalletMark = "1";
                    detailNew.InspectStatus = detail1.InspectStatus;
                    detailNew.PackagNo = detail1.PackagNo;
                    detailNew.IsBale = detail1.IsBale;
                    detailNew.IsBelt = detail1.IsBelt;
                    detailNew.IsDel = "0";
                    detailNew.CreateTime = DateTime.Now;
                    detailNew.CreateUser = 0;
                    newId = Db.Insertable(detailNew).ExecuteReturnIdentity();
                }
                else //update
                {
                    detailNew1.Qty += boxInfo.Qty;
                    detailNew1.PalletNo = palletNew;
                    Db.Updateable(detailNew1).ExecuteCommand();
                    newId = detailNew1.Id;
                }
                //更新托盘状态
                palletInfoNew.Status = "1";
                Db.Updateable(palletInfoNew).ExecuteCommand();
                //更改原托盘信息
                detail1.Qty -= boxInfo.Qty;
                detail1.BitPalletMark = "1";
                if (detail1.Qty <= 0)
                {
                    //更新原托盘状态
                    var palletInfo = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == pallet);
                    palletInfo.Status = "0";
                    Db.Updateable(palletInfo).ExecuteCommand();
                    Db.Deleteable(detail1).ExecuteCommand();
                }
                else
                {
                    Db.Updateable(detail1).ExecuteCommand();
                }
                //更新库存箱信息
                boxInfo.StockDetailId = newId;
                boxInfo.BindNo = 0;
                boxInfo.PalletNo = palletNew;
                Db.Updateable(boxInfo).ExecuteCommand();
                //添加操作日志
                new OperationCrServer().AddLogOperationCr("库内作业", "操作日志", boxNo, "编辑", $"物料拆托:箱码:{boxNo}换托,原托盘{pallet},新托盘{palletNew}", userId);
                Db.CommitTran();
            }
            catch (Exception e)
            {
                Db.RollbackTran();
                throw new Exception(e.Message);
            }
        }
        //数量页签-----------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// 根据托盘获取托盘上的物料批次信息
        /// </summary>
        /// <param name="palletNo"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public List<SelectSkuLotNo> GetSelectSkuLotNo(string palletNo)
        {
            try
            {
                var data = new List<SelectSkuLotNo>();
                var detailList = Db.Queryable<DataStockDetail>().Where(m=>m.IsDel == "0" && m.PalletNo == palletNo).ToList();
                foreach (var item in detailList)
                {
                    if (data.Count(m=>m.DetailId == item.Id.ToString()) == 0)
                    {
                        data.Add(new SelectSkuLotNo()
                        {
                            SkuNo = item.SkuNo,
                            SkuName = item.SkuName,
                            LotNo = item.LotNo,
                            DetailId = item.Id.ToString(),
                        });
                    }
                }
                return data;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        /// <summary>
        /// 拆托-数量
        /// </summary>
        /// <param name="palletNo"></param>
        /// <param name="palletNoNew"></param>
        /// <param name="detailId"></param>
        /// <param name="qty"></param>
        /// <param name="userId"></param>
        /// <exception cref="Exception"></exception>
        public void UpPalletByQty(string palletNo,string palletNoNew,string detailId,decimal qty,int userId)
        {
            try
            {
                Db.BeginTran();
                if (string.IsNullOrWhiteSpace(detailId) || string.IsNullOrWhiteSpace(palletNo) || string.IsNullOrWhiteSpace(palletNoNew))
                {
                    throw new Exception("参数错误,托盘、新托盘、物料批次均不能为空");
                }
                if (qty<=0)
                {
                    throw new Exception("参数数量不能为小等0");
                }
                 var detailId2 = int.Parse(detailId);
                var detail1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && m.Id == detailId2);
                if (detail1 == null)
                {
                    throw new Exception("未查询到托盘库存明细");
                }
                var palletInfoNew = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                if (palletInfoNew == null)
                {
                    throw new Exception("未查询到新托盘信息");
                }
                //添加/更新库存托盘信息
                var detailNew1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == detail1.SkuNo && m.LotNo == detail1.LotNo);
                var newId = 0;
                if (detailNew1 == null)//add
                {
                    var detailNew = new DataStockDetail();
                    detailNew.SkuNo = detail1.SkuNo;
                    detailNew.SkuName = detail1.SkuName;
                    detailNew.LotNo = detail1.LotNo;
                    detailNew.LotText = detail1.LotText;
                    detailNew.SupplierLot = detail1.SupplierLot;
                    detailNew.SupplierNo = detail1.SupplierNo;
                    detailNew.SupplierName = detail1.SupplierName;
                    detailNew.Standard = detail1.Standard;
                    detailNew.Qty = qty;
                    detailNew.LockQty = 0;
                    detailNew.FrozenQty = 0;
                    detailNew.InspectQty = 0;
                    detailNew.ASNNo = "";
                    detailNew.PalletNo = palletNoNew;
                    detailNew.ProductionTime = detail1.ProductionTime;
                    detailNew.ExpirationTime = detail1.ExpirationTime;
                    detailNew.PalletTags = "0";
                    detailNew.CompleteTime = DateTime.Now;
                    detailNew.Status = "0";
                    detailNew.InspectMark = detail1.InspectMark;
                    detailNew.BitPalletMark = "1";
                    detailNew.InspectStatus = detail1.InspectStatus;
                    detailNew.PackagNo = detail1.PackagNo;
                    detailNew.IsBale = detail1.IsBale;
                    detailNew.IsBelt = detail1.IsBelt;
                    detailNew.IsDel = "0";
                    detailNew.CreateTime = DateTime.Now;
                    detailNew.CreateUser = 0;
                    newId = Db.Insertable(detailNew).ExecuteReturnIdentity();
                }
                else //update
                {
                    detailNew1.Qty += qty;
                    detailNew1.PalletNo = palletNoNew;
                    Db.Updateable(detailNew1).ExecuteCommand();
                    newId = detailNew1.Id;
                }
                //更新托盘状态
                palletInfoNew.Status = "1";
                Db.Updateable(palletInfoNew).ExecuteCommand();
                //更改原托盘信息
                detail1.Qty -= qty;
                detail1.BitPalletMark = "1";
                if (detail1.Qty <= 0)
                {
                    //更新原托盘状态
                    var palletInfo = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
                    palletInfo.Status = "0";
                    Db.Updateable(palletInfo).ExecuteCommand();
                    Db.Deleteable(detail1).ExecuteCommand();
                }
                else
                {
                    Db.Updateable(detail1).ExecuteCommand();
                }
                //添加操作日志
                new OperationCrServer().AddLogOperationCr("库内作业", "操作日志", palletNo, "编辑", $"物料拆托:{detail1.SkuName}物料换托,原托盘{palletNo},新托盘{palletNoNew}", userId);
                Db.CommitTran();
            }
            catch (Exception e)
            {