|  | @@ -4148,7 +4148,7 @@ namespace wms.service.Service
 | 
	
		
			
				|  |  |          ///     环形库申请货位
 | 
	
		
			
				|  |  |          /// </summary>
 | 
	
		
			
				|  |  |          /// <returns></returns>
 | 
	
		
			
				|  |  | -        public SRes<FJApplyStockInLocResponse> RingApplyStockInLoc(FJApplyStockInLocRequest reqEntity)
 | 
	
		
			
				|  |  | +        public SRes<FJApplyStockInLocResponse> RingApplyStockInLoc1(FJApplyStockInLocRequest reqEntity)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              var res = new SRes<FJApplyStockInLocResponse>
 | 
	
		
			
				|  |  |              {
 | 
	
	
		
			
				|  | @@ -4665,6 +4665,548 @@ namespace wms.service.Service
 | 
	
		
			
				|  |  |              return res;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        /// <summary>
 | 
	
		
			
				|  |  | +        ///     环形库申请货位
 | 
	
		
			
				|  |  | +        /// </summary>
 | 
	
		
			
				|  |  | +        /// <returns></returns>
 | 
	
		
			
				|  |  | +        public SRes<FJApplyStockInLocResponse> RingApplyStockInLoc(FJApplyStockInLocRequest reqEntity)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var res = new SRes<FJApplyStockInLocResponse>
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode(),
 | 
	
		
			
				|  |  | +                ResMsg = ResponseStatusCodeEnum.Sucess.GetDescription(),
 | 
	
		
			
				|  |  | +                ResData = new FJApplyStockInLocResponse()
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            try
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                #region 任务信息是否正常
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                var wcsTask = _wcstaskoldrepository.AsQueryable().With("WITH(READPAST,ROWLOCK)")
 | 
	
		
			
				|  |  | +                    .Where(p => p.Id == reqEntity.TaskNum).SplitTable(tabs => tabs.Take(2)).First();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                ;
 | 
	
		
			
				|  |  | +                if (wcsTask == null)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    res.ResCode = ResponseStatusCodeEnum.WcsTaskNotExist.GetHashCode();
 | 
	
		
			
				|  |  | +                    res.ResMsg = ResponseStatusCodeEnum.WcsTaskNotExist.GetDescription();
 | 
	
		
			
				|  |  | +                    return res;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (wcsTask.Type == TaskType.OutDepot)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
 | 
	
		
			
				|  |  | +                    res.ResMsg = "该任务是出库任务,不能分配货位;任务号" + wcsTask.Id;
 | 
	
		
			
				|  |  | +                    return res;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (!string.IsNullOrEmpty(wcsTask.AddrTo) && wcsTask.AddrTo != "Robot") //如果目标地址不是机器人
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    res.ResData.CellNo = wcsTask.AddrTo;
 | 
	
		
			
				|  |  | +                    res.ResData.Row = wcsTask.AddrTo.Split('-')[0] != null
 | 
	
		
			
				|  |  | +                        ? int.Parse(wcsTask.AddrTo.Split('-')[0])
 | 
	
		
			
				|  |  | +                        : 0;
 | 
	
		
			
				|  |  | +                    res.ResData.Colomn = wcsTask.AddrTo.Split('-')[1] != null
 | 
	
		
			
				|  |  | +                        ? int.Parse(wcsTask.AddrTo.Split('-')[1])
 | 
	
		
			
				|  |  | +                        : 0;
 | 
	
		
			
				|  |  | +                    res.ResData.Layer = wcsTask.AddrTo.Split('-')[2] != null
 | 
	
		
			
				|  |  | +                        ? int.Parse(wcsTask.AddrTo.Split('-')[2])
 | 
	
		
			
				|  |  | +                        : 0;
 | 
	
		
			
				|  |  | +                    return res;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                #endregion 任务信息是否正常
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                //验证仓库信息
 | 
	
		
			
				|  |  | +                var wareHouse = _basewarehouserepository.GetFirst(p => p.Code == wcsTask.WarehouseCode);
 | 
	
		
			
				|  |  | +                if (wareHouse == null)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    res.ResCode = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetHashCode();
 | 
	
		
			
				|  |  | +                    res.ResMsg = ResponseStatusCodeEnum.WarehouseCodeNotExist.GetDescription();
 | 
	
		
			
				|  |  | +                    return res;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                //验证库存
 | 
	
		
			
				|  |  | +                var stock = _billInvnowrepository.GetFirst(p => p.HWBarCode == wcsTask.BarCode);
 | 
	
		
			
				|  |  | +                if (stock == null)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    //获取条码表相关信息
 | 
	
		
			
				|  |  | +                    var billInvinit = _billInvinitrepository.GetList(x => x.HWBarCode == wcsTask.BarCode)
 | 
	
		
			
				|  |  | +                        .OrderByDescending(x => x.AddTime).FirstOrDefault();
 | 
	
		
			
				|  |  | +                    if (billInvinit == null)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg = "无条码信息";
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //将条码表映射到库存表
 | 
	
		
			
				|  |  | +                    stock = _mapper.Map<BillInvnow>(billInvinit);
 | 
	
		
			
				|  |  | +                    stock.AddTime = DateTime.Now;
 | 
	
		
			
				|  |  | +                    stock.InvStateCode = InvState.InvEcecState_BuildUp.ToString();
 | 
	
		
			
				|  |  | +                    stock.Id = IdFactory.NewId();
 | 
	
		
			
				|  |  | +                    if (!_billInvnowrepository.Insert(stock))
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg = "满轮库存信息存储失败";
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (stock.InvStateCode != InvState.InvEcecState_BuildUp.ToString())
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                    res.ResMsg = $"工字轮{wcsTask.BarCode}库存状态异常,不是已组盘,请检查相关任务信息";
 | 
	
		
			
				|  |  | +                    return res;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                //获取包含当前物料、计划个数大于已有个数、未出库
 | 
	
		
			
				|  |  | +                var ringPalletizingInfoList = _billRingPalletizingInfo.GetList(x =>
 | 
	
		
			
				|  |  | +                    x.WareHouseId == wareHouse.Id && x.BomCode.Contains(wcsTask.MatCode) && x.HWCountQty > x.HaveQty &&
 | 
	
		
			
				|  |  | +                    !x.Out).OrderBy(x => x.AddTime);
 | 
	
		
			
				|  |  | +                BillRingPalletizingInfo ringPalletizingInfo = null;
 | 
	
		
			
				|  |  | +                if (ringPalletizingInfoList.Any())
 | 
	
		
			
				|  |  | +                    foreach (var ringPalletizing in ringPalletizingInfoList)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        if (ringPalletizingInfo != null) continue;
 | 
	
		
			
				|  |  | +                        //取当前任务SKU在货位中已有的信息
 | 
	
		
			
				|  |  | +                        var cells = _basewarecellrepository.Context.Queryable<BaseWarecell, BillInvnow>((loc, inv) =>
 | 
	
		
			
				|  |  | +                                new object[]
 | 
	
		
			
				|  |  | +                                {
 | 
	
		
			
				|  |  | +                                    JoinType.Inner, loc.ContGrpBarCode == inv.ContGrpBarCode
 | 
	
		
			
				|  |  | +                                }).Where((loc, inv) =>
 | 
	
		
			
				|  |  | +                                loc.GroupID == ringPalletizing.Id && (loc.StateNum == FjLocationState.Full ||
 | 
	
		
			
				|  |  | +                                                                      loc.StateNum == FjLocationState.StockIn))
 | 
	
		
			
				|  |  | +                            .Select((loc, inv) => new
 | 
	
		
			
				|  |  | +                            {
 | 
	
		
			
				|  |  | +                                loc.GroupID,
 | 
	
		
			
				|  |  | +                                inv.MatCode,
 | 
	
		
			
				|  |  | +                                loc.XYNO
 | 
	
		
			
				|  |  | +                            }).ToList().Where(x => x.MatCode == wcsTask.MatCode && x.GroupID == ringPalletizing.Id);
 | 
	
		
			
				|  |  | +                        var bomSetInfo = _billBomsetinfoRepository.GetList(x =>
 | 
	
		
			
				|  |  | +                            x.BomSetHdrId == ringPalletizing.BomSetGrpId && x.IsEmpty == 0 &&
 | 
	
		
			
				|  |  | +                            x.MatCode == wcsTask.MatCode).ToList();
 | 
	
		
			
				|  |  | +                        if (cells.Count() == bomSetInfo.Count)
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            res.Memo2 = $"[{ringPalletizing.Id}]-同规格产品已满足需求,任务[{wcsTask.Id}]创建了新的码垛信息";
 | 
	
		
			
				|  |  | +                            ringPalletizingInfo = null;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        else
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            ringPalletizingInfo = ringPalletizing;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (ringPalletizingInfo != null)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    //取当前任务SKU在货位中已有的信息
 | 
	
		
			
				|  |  | +                    var cells = _basewarecellrepository.Context.Queryable<BaseWarecell, BillInvnow>((loc, inv) =>
 | 
	
		
			
				|  |  | +                            new object[]
 | 
	
		
			
				|  |  | +                            {
 | 
	
		
			
				|  |  | +                                JoinType.Inner, loc.ContGrpBarCode == inv.ContGrpBarCode
 | 
	
		
			
				|  |  | +                            }).Where((loc, inv) =>
 | 
	
		
			
				|  |  | +                            loc.GroupID == ringPalletizingInfo.Id && (loc.StateNum == FjLocationState.Full ||
 | 
	
		
			
				|  |  | +                                                                      loc.StateNum == FjLocationState.StockIn))
 | 
	
		
			
				|  |  | +                        .Select((loc, inv) => new
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            loc.GroupID,
 | 
	
		
			
				|  |  | +                            inv.MatCode,
 | 
	
		
			
				|  |  | +                            loc.XYNO
 | 
	
		
			
				|  |  | +                        }).ToList().Where(x => x.MatCode == wcsTask.MatCode && x.GroupID == ringPalletizingInfo.Id);
 | 
	
		
			
				|  |  | +                    var bomSetInfo = _billBomsetinfoRepository.GetList(x =>
 | 
	
		
			
				|  |  | +                        x.BomSetHdrId == ringPalletizingInfo.BomSetGrpId && x.IsEmpty == 0 &&
 | 
	
		
			
				|  |  | +                        x.MatCode == wcsTask.MatCode).ToList();
 | 
	
		
			
				|  |  | +                    if (cells.Count() == bomSetInfo.Count)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.Memo2 = $"[{ringPalletizingInfo.Id}]-同规格产品已满足需求,任务[{wcsTask.Id}]创建了新的码垛信息";
 | 
	
		
			
				|  |  | +                        ringPalletizingInfo = null;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (ringPalletizingInfo == null) //如果没有码垛信息
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var bomsetGrp =
 | 
	
		
			
				|  |  | +                        _billBomsetgrpRepository.GetFirst(x => x.IsStop == 0 && x.BomCode.Contains(wcsTask.MatCode));
 | 
	
		
			
				|  |  | +                    if (bomsetGrp == null)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg = "未找到对应垛型信息,请确认是否被禁用";
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    var xyNo = _billBomsetinfoRepository.GetList(x => x.BomSetHdrId == bomsetGrp.Id && x.IsEmpty == 0)
 | 
	
		
			
				|  |  | +                        .ToList().Select(x => Convert.ToInt32(x.XYNo)).OrderByDescending(x => x).First();
 | 
	
		
			
				|  |  | +                    //跟据垛形信息生成
 | 
	
		
			
				|  |  | +                    ringPalletizingInfo = new BillRingPalletizingInfo
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        Id = IdFactory.NewId(),
 | 
	
		
			
				|  |  | +                        WareHouseId = wareHouse.Id,
 | 
	
		
			
				|  |  | +                        BomSetGrpId = bomsetGrp.Id,
 | 
	
		
			
				|  |  | +                        HWCountQty = bomsetGrp.HWCountQty,
 | 
	
		
			
				|  |  | +                        BomCode = bomsetGrp.BomCode,
 | 
	
		
			
				|  |  | +                        HaveQty = 0,
 | 
	
		
			
				|  |  | +                        Out = false,
 | 
	
		
			
				|  |  | +                        LastXYNO = wareHouse.Code.Contains("N") ? xyNo + 1 : 0
 | 
	
		
			
				|  |  | +                    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    if (!_billRingPalletizingInfo.Insert(ringPalletizingInfo))
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg = "环形库满轮码垛信息存储失败";
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    res.Memo3 = $"[{wcsTask.MatCode}],任务[{wcsTask.Id}]创建了新的码垛信息";
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                //获取所有可用货位
 | 
	
		
			
				|  |  | +                var emptyLocList = _basewarecellrepository.Context
 | 
	
		
			
				|  |  | +                    .Queryable<BaseWarecell, BillInvnow, BaseWarecell, BillInvnow, BaseWarecell, BillInvnow>(
 | 
	
		
			
				|  |  | +                        (loc1, inv1, loc2, inv2, loc3, inv3) => new object[]
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                             JoinType.Left, loc1.ContGrpBarCode == inv1.ContGrpBarCode,
 | 
	
		
			
				|  |  | +                             JoinType.Left, loc2.Col == loc1.Col && loc2.Layer == loc1.Layer,
 | 
	
		
			
				|  |  | +                             JoinType.Left, loc2.ContGrpBarCode == inv2.ContGrpBarCode,
 | 
	
		
			
				|  |  | +                             JoinType.Left, loc3.Col == loc2.Col && loc3.Layer == loc2.Layer,
 | 
	
		
			
				|  |  | +                             JoinType.Left, loc3.ContGrpBarCode == inv3.ContGrpBarCode
 | 
	
		
			
				|  |  | +                        })
 | 
	
		
			
				|  |  | +                    .Where((loc1, inv1, loc2, inv2, loc3, inv3) => loc1.WarehouseId == wareHouse.Id && loc2.WarehouseId == wareHouse.Id && loc3.WarehouseId == wareHouse.Id) //保证三个深度都是同一个从仓库的
 | 
	
		
			
				|  |  | +                    .Where((loc1, inv1, loc2, inv2, loc3, inv3) => loc1.IsStop == 0 && loc2.IsStop == 0 && loc3.IsStop == 0)
 | 
	
		
			
				|  |  | +                    .Where((loc1, inv1, loc2, inv2, loc3, inv3) => loc2.Size == loc1.Size && loc3.Size == loc1.Size)
 | 
	
		
			
				|  |  | +                    .Where((loc1, inv1, loc2, inv2, loc3, inv3) => wcsTask.GoodsType == 34 || (wcsTask.GoodsType != 34 && loc1.Layer != 6))
 | 
	
		
			
				|  |  | +                    .Where((loc1, inv1, loc2, inv2, loc3, inv3) => loc1.Depth == 1 && loc2.Depth == 2 && loc3.Depth == 3) //保证三个深度与字段对应
 | 
	
		
			
				|  |  | +                    .Where((loc1, inv1, loc2, inv2, loc3, inv3) => loc3.GroupID == ringPalletizingInfo.Id) //三深货位的绑定ID是码垛缓存信息的ID
 | 
	
		
			
				|  |  | +                    .Where((loc1, inv1, loc2, inv2, loc3, inv3) =>
 | 
	
		
			
				|  |  | +                        (loc1.StateNum == FjLocationState.Empty && (loc2.StateNum == FjLocationState.Full || loc2.StateNum == FjLocationState.StockIn) && loc3.StateNum == FjLocationState.Full) //1空、2有/入锁、3有
 | 
	
		
			
				|  |  | +                        || (loc1.StateNum == FjLocationState.Empty && loc2.StateNum == FjLocationState.Empty && (loc3.StateNum == FjLocationState.Full || loc3.StateNum == FjLocationState.StockIn)) //1空、2空、3有/入锁
 | 
	
		
			
				|  |  | +                    || (loc1.StateNum == FjLocationState.Empty && loc2.StateNum == FjLocationState.Empty && loc3.StateNum == FjLocationState.Empty)
 | 
	
		
			
				|  |  | +                ) //1空、2空、3空
 | 
	
		
			
				|  |  | +                .Where((loc1, inv1, loc2, inv2, loc3, inv3) =>
 | 
	
		
			
				|  |  | +                        loc3.StateNum == FjLocationState.Empty || ((loc3.StateNum == FjLocationState.Full || loc3.StateNum == FjLocationState.StockIn) && inv3.MatCode == wcsTask.MatCode))
 | 
	
		
			
				|  |  | +                .Select((loc1, inv1, loc2, inv2, loc3, inv3) => new
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    Loc1Code = loc1.Code,
 | 
	
		
			
				|  |  | +                    Loc1Id = loc1.Id,
 | 
	
		
			
				|  |  | +                    Loc1Row = loc1.Row,
 | 
	
		
			
				|  |  | +                    Loc1Col = loc1.Col,
 | 
	
		
			
				|  |  | +                    Loc1Layer = loc1.Layer,
 | 
	
		
			
				|  |  | +                    Loc1Depth = loc1.Depth,
 | 
	
		
			
				|  |  | +                    Loc1Size = loc1.Size,
 | 
	
		
			
				|  |  | +                    Loc1StateNum = loc1.StateNum,
 | 
	
		
			
				|  |  | +                    Loc1ContGrpBarCode = loc1.ContGrpBarCode,
 | 
	
		
			
				|  |  | +                    Inv1MatCode = inv1.MatCode,
 | 
	
		
			
				|  |  | +                    Loc2Code = loc2.Code,
 | 
	
		
			
				|  |  | +                    Loc2Id = loc2.Id,
 | 
	
		
			
				|  |  | +                    Loc2Row = loc2.Row,
 | 
	
		
			
				|  |  | +                    Loc2Col = loc2.Col,
 | 
	
		
			
				|  |  | +                    Loc2Layer = loc2.Layer,
 | 
	
		
			
				|  |  | +                    Loc2Depth = loc2.Depth,
 | 
	
		
			
				|  |  | +                    Loc2Size = loc2.Size,
 | 
	
		
			
				|  |  | +                    Loc2StateNum = loc2.StateNum,
 | 
	
		
			
				|  |  | +                    Loc2ContGrpBarCode = loc2.ContGrpBarCode,
 | 
	
		
			
				|  |  | +                    Inv2MatCode = inv2.MatCode,
 | 
	
		
			
				|  |  | +                    Loc3Code = loc3.Code,
 | 
	
		
			
				|  |  | +                    Loc3Id = loc3.Id,
 | 
	
		
			
				|  |  | +                    Loc3Row = loc3.Row,
 | 
	
		
			
				|  |  | +                    Loc3Col = loc3.Col,
 | 
	
		
			
				|  |  | +                    Loc3Layer = loc3.Layer,
 | 
	
		
			
				|  |  | +                    Loc3Depth = loc3.Depth,
 | 
	
		
			
				|  |  | +                    Loc3Size = loc3.Size,
 | 
	
		
			
				|  |  | +                    Loc3StateNum = loc3.StateNum,
 | 
	
		
			
				|  |  | +                    Loc3ContGrpBarCode = loc3.ContGrpBarCode,
 | 
	
		
			
				|  |  | +                    Inv3MatCode = inv3.MatCode,
 | 
	
		
			
				|  |  | +                }).ToList();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (emptyLocList.Any()) //有货位
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var emptyLoc = emptyLocList.OrderByDescending(x => x.Loc3StateNum)
 | 
	
		
			
				|  |  | +                    .ThenByDescending(x => x.Loc2StateNum)
 | 
	
		
			
				|  |  | +                    .ThenByDescending(x => x.Loc1StateNum)
 | 
	
		
			
				|  |  | +                    .First();
 | 
	
		
			
				|  |  | +                    if (emptyLoc.Loc3StateNum == FjLocationState.Empty) //优先3
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResData.CellNo = emptyLoc.Loc3Code;
 | 
	
		
			
				|  |  | +                        res.ResData.Row = emptyLoc.Loc3Row;
 | 
	
		
			
				|  |  | +                        res.ResData.Colomn = emptyLoc.Loc3Col;
 | 
	
		
			
				|  |  | +                        res.ResData.Layer = emptyLoc.Loc3Layer;
 | 
	
		
			
				|  |  | +                        res.ResData.Depth = emptyLoc.Loc3Depth;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    else if (emptyLoc.Loc2StateNum == FjLocationState.Empty) //次2
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResData.CellNo = emptyLoc.Loc2Code;
 | 
	
		
			
				|  |  | +                        res.ResData.Row = emptyLoc.Loc2Row;
 | 
	
		
			
				|  |  | +                        res.ResData.Colomn = emptyLoc.Loc2Col;
 | 
	
		
			
				|  |  | +                        res.ResData.Layer = emptyLoc.Loc2Layer;
 | 
	
		
			
				|  |  | +                        res.ResData.Depth = emptyLoc.Loc2Depth;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    else if (emptyLoc.Loc1StateNum == FjLocationState.Empty) //再次1
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResData.CellNo = emptyLoc.Loc1Code;
 | 
	
		
			
				|  |  | +                        res.ResData.Row = emptyLoc.Loc1Row;
 | 
	
		
			
				|  |  | +                        res.ResData.Colomn = emptyLoc.Loc1Col;
 | 
	
		
			
				|  |  | +                        res.ResData.Layer = emptyLoc.Loc1Layer;
 | 
	
		
			
				|  |  | +                        res.ResData.Depth = emptyLoc.Loc1Depth;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                else //找不到对应货位当前缓存信息对应的货位,找到三个全是同一货位的信息
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var emptyLocList1 = _basewarecellrepository.Context
 | 
	
		
			
				|  |  | +                       .Queryable<BaseWarecell, BaseWarecell, BaseWarecell>(
 | 
	
		
			
				|  |  | +                           (loc1, loc2, loc3) => new object[]
 | 
	
		
			
				|  |  | +                           {
 | 
	
		
			
				|  |  | +                            JoinType.Left, loc2.Col == loc1.Col && loc2.Layer == loc1.Layer,
 | 
	
		
			
				|  |  | +                            JoinType.Left, loc3.Col == loc2.Col && loc3.Layer == loc2.Layer,
 | 
	
		
			
				|  |  | +                           })
 | 
	
		
			
				|  |  | +                       .Where((loc1, loc2, loc3) => loc1.WarehouseId == wareHouse.Id && loc2.WarehouseId == wareHouse.Id && loc3.WarehouseId == wareHouse.Id) //保证三个深度都是同一个从仓库的
 | 
	
		
			
				|  |  | +                       .Where((loc1, loc2, loc3) => loc1.IsStop == 0 && loc2.IsStop == 0 && loc3.IsStop == 0)
 | 
	
		
			
				|  |  | +                       .Where((loc1, loc2, loc3) => loc2.Size == loc1.Size && loc3.Size == loc1.Size)
 | 
	
		
			
				|  |  | +                       .Where((loc1, loc2, loc3) => wcsTask.GoodsType == 34 || (wcsTask.GoodsType != 34 && loc1.Layer != 6))
 | 
	
		
			
				|  |  | +                       .Where((loc1, loc2, loc3) => loc1.Depth == 1 && loc2.Depth == 2 && loc3.Depth == 3) //保证三个深度与字段对应
 | 
	
		
			
				|  |  | +                       .Where((loc1, loc2, loc3) => loc1.GroupID == 0 && loc2.GroupID == 0 && loc3.GroupID == 0) //获取三个货位都是没有绑定缓存信息的
 | 
	
		
			
				|  |  | +                       .Where((loc1, loc2, loc3) => loc1.StateNum == FjLocationState.Empty && loc2.StateNum == FjLocationState.Empty && loc3.StateNum == FjLocationState.Empty) //1空、2空、3空
 | 
	
		
			
				|  |  | +                       .Select((loc1, loc2, loc3) => new
 | 
	
		
			
				|  |  | +                       {
 | 
	
		
			
				|  |  | +                           Loc1Code = loc1.Code,
 | 
	
		
			
				|  |  | +                           Loc1Id = loc1.Id,
 | 
	
		
			
				|  |  | +                           Loc1Row = loc1.Row,
 | 
	
		
			
				|  |  | +                           Loc1Col = loc1.Col,
 | 
	
		
			
				|  |  | +                           Loc1Layer = loc1.Layer,
 | 
	
		
			
				|  |  | +                           Loc1Depth = loc1.Depth,
 | 
	
		
			
				|  |  | +                           Loc1Size = loc1.Size,
 | 
	
		
			
				|  |  | +                           Loc1StateNum = loc1.StateNum,
 | 
	
		
			
				|  |  | +                           Loc1ContGrpBarCode = loc1.ContGrpBarCode,
 | 
	
		
			
				|  |  | +                           Loc2Code = loc2.Code,
 | 
	
		
			
				|  |  | +                           Loc2Id = loc2.Id,
 | 
	
		
			
				|  |  | +                           Loc2Row = loc2.Row,
 | 
	
		
			
				|  |  | +                           Loc2Col = loc2.Col,
 | 
	
		
			
				|  |  | +                           Loc2Layer = loc2.Layer,
 | 
	
		
			
				|  |  | +                           Loc2Depth = loc2.Depth,
 | 
	
		
			
				|  |  | +                           Loc2Size = loc2.Size,
 | 
	
		
			
				|  |  | +                           Loc2StateNum = loc2.StateNum,
 | 
	
		
			
				|  |  | +                           Loc2ContGrpBarCode = loc2.ContGrpBarCode,
 | 
	
		
			
				|  |  | +                           Loc3Code = loc3.Code,
 | 
	
		
			
				|  |  | +                           Loc3Id = loc3.Id,
 | 
	
		
			
				|  |  | +                           Loc3Row = loc3.Row,
 | 
	
		
			
				|  |  | +                           Loc3Col = loc3.Col,
 | 
	
		
			
				|  |  | +                           Loc3Layer = loc3.Layer,
 | 
	
		
			
				|  |  | +                           Loc3Depth = loc3.Depth,
 | 
	
		
			
				|  |  | +                           Loc3Size = loc3.Size,
 | 
	
		
			
				|  |  | +                           Loc3StateNum = loc3.StateNum,
 | 
	
		
			
				|  |  | +                           Loc3ContGrpBarCode = loc3.ContGrpBarCode,
 | 
	
		
			
				|  |  | +                       }).ToList();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    if (emptyLocList1.Any())
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        var emptyLoc = emptyLocList1.OrderBy(x => x.Loc3Layer).ThenBy(x => x.Loc3Col).First();
 | 
	
		
			
				|  |  | +                        res.ResData.CellNo = emptyLoc.Loc3Code;
 | 
	
		
			
				|  |  | +                        res.ResData.Row = emptyLoc.Loc3Row;
 | 
	
		
			
				|  |  | +                        res.ResData.Colomn = emptyLoc.Loc3Col;
 | 
	
		
			
				|  |  | +                        res.ResData.Layer = emptyLoc.Loc3Layer;
 | 
	
		
			
				|  |  | +                        res.ResData.Depth = emptyLoc.Loc3Depth;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (string.IsNullOrEmpty(res.ResData.CellNo)) //没有分配货位
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    res.ResCode = ResponseStatusCodeEnum.NotEnoughLocation.GetHashCode();
 | 
	
		
			
				|  |  | +                    res.ResMsg = "有空货位单无可用货位";
 | 
	
		
			
				|  |  | +                    return res;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                List<BillBomsetinfo> bomSetInfos = new List<BillBomsetinfo>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                //分配当前轮子在垛形中的位置
 | 
	
		
			
				|  |  | +                if (wareHouse.Code.Contains("N")) //北侧由大到小,出的时候刚好可用反过来;
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    //取当前任务SKU在货位中已有的信息
 | 
	
		
			
				|  |  | +                    var cells = _basewarecellrepository.Context.Queryable<BaseWarecell, BillInvnow>((loc, inv) =>
 | 
	
		
			
				|  |  | +                            new object[]
 | 
	
		
			
				|  |  | +                            {
 | 
	
		
			
				|  |  | +                                JoinType.Inner, loc.ContGrpBarCode == inv.ContGrpBarCode
 | 
	
		
			
				|  |  | +                            }).Where((loc, inv) =>
 | 
	
		
			
				|  |  | +                            loc.GroupID == ringPalletizingInfo.Id && (loc.StateNum == FjLocationState.Full ||
 | 
	
		
			
				|  |  | +                                                                      loc.StateNum == FjLocationState.StockIn))
 | 
	
		
			
				|  |  | +                        .Select((loc, inv) => new
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            loc.GroupID,
 | 
	
		
			
				|  |  | +                            inv.MatCode,
 | 
	
		
			
				|  |  | +                            loc.XYNO
 | 
	
		
			
				|  |  | +                        }).ToList();
 | 
	
		
			
				|  |  | +                    if (cells.Count != ringPalletizingInfo.HaveQty)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg =
 | 
	
		
			
				|  |  | +                            $"码垛信息组【{ringPalletizingInfo.Id}】记录已有【{ringPalletizingInfo.HaveQty}】个轮子,但对应的库存信息只有【{cells.Count}】,请在WMS检查对应的库存信息";
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    var cellMatCodeList = cells.Where(x => x.MatCode == wcsTask.MatCode);
 | 
	
		
			
				|  |  | +                    //取当前SKU在垛形明细中所有的信息
 | 
	
		
			
				|  |  | +                    bomSetInfos = _billBomsetinfoRepository.GetList(x =>
 | 
	
		
			
				|  |  | +                        x.BomSetHdrId == ringPalletizingInfo.BomSetGrpId && x.IsEmpty == 0 &&
 | 
	
		
			
				|  |  | +                        x.MatCode == wcsTask.MatCode).ToList();
 | 
	
		
			
				|  |  | +                    //取当前SKU在垛形明细中最大的一个坐标号,初始化时默认取第一个
 | 
	
		
			
				|  |  | +                    var lastXYNO = Convert.ToInt32(bomSetInfos.Select(x => Convert.ToInt32(x.XYNo))
 | 
	
		
			
				|  |  | +                        .OrderByDescending(x => x).First());
 | 
	
		
			
				|  |  | +                    if (cellMatCodeList.Any()) //货位中已有当前SKU的产品,取最小数,最小数表示最近入库的
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        lastXYNO = cellMatCodeList.OrderBy(x => x.XYNO).First().XYNO;
 | 
	
		
			
				|  |  | +                        var xyNo = bomSetInfos.Select(x => Convert.ToInt32(x.XYNo)).Where(x => x < lastXYNO)
 | 
	
		
			
				|  |  | +                            .OrderByDescending(x => x).First();
 | 
	
		
			
				|  |  | +                        ringPalletizingInfo.LastXYNO = xyNo;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    else
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        ringPalletizingInfo.LastXYNO = lastXYNO;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                else //南侧小到大,出的时候刚好可用反过来;
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    //取当前任务SKU在货位中已有的信息
 | 
	
		
			
				|  |  | +                    var cells = _basewarecellrepository.Context.Queryable<BaseWarecell, BillInvnow>((loc, inv) =>
 | 
	
		
			
				|  |  | +                            new object[]
 | 
	
		
			
				|  |  | +                            {
 | 
	
		
			
				|  |  | +                                JoinType.Inner, loc.ContGrpBarCode == inv.ContGrpBarCode
 | 
	
		
			
				|  |  | +                            }).Where((loc, inv) =>
 | 
	
		
			
				|  |  | +                            loc.GroupID == ringPalletizingInfo.Id && (loc.StateNum == FjLocationState.Full ||
 | 
	
		
			
				|  |  | +                                                                      loc.StateNum == FjLocationState.StockIn))
 | 
	
		
			
				|  |  | +                        .Select((loc, inv) => new
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            loc.GroupID,
 | 
	
		
			
				|  |  | +                            inv.MatCode,
 | 
	
		
			
				|  |  | +                            loc.XYNO
 | 
	
		
			
				|  |  | +                        }).ToList();
 | 
	
		
			
				|  |  | +                    if (cells.Count != ringPalletizingInfo.HaveQty)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg =
 | 
	
		
			
				|  |  | +                            $"码垛信息组【{ringPalletizingInfo.Id}】记录已有【{ringPalletizingInfo.HaveQty}】个轮子,但对应的库存信息只有【{cells.Count}】,请在WMS检查对应的库存信息";
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    var cellMatCodeList = cells.Where(x => x.MatCode == wcsTask.MatCode);
 | 
	
		
			
				|  |  | +                    //取当前SKU在垛形明细中所有的信息
 | 
	
		
			
				|  |  | +                    bomSetInfos = _billBomsetinfoRepository.GetList(x =>
 | 
	
		
			
				|  |  | +                        x.BomSetHdrId == ringPalletizingInfo.BomSetGrpId && x.IsEmpty == 0 &&
 | 
	
		
			
				|  |  | +                        x.MatCode == wcsTask.MatCode).ToList();
 | 
	
		
			
				|  |  | +                    //取当前SKU在垛形明细中最小的一个坐标号 ,初始化时默认取第一个
 | 
	
		
			
				|  |  | +                    var lastXYNO =
 | 
	
		
			
				|  |  | +                        Convert.ToInt32(bomSetInfos.Select(x => Convert.ToInt32(x.XYNo)).OrderBy(x => x).First());
 | 
	
		
			
				|  |  | +                    if (cellMatCodeList.Any()) //货位中已有当前SKU的产品,取最大数 最大数表示最近入库的
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        lastXYNO = cellMatCodeList.OrderByDescending(x => x.XYNO).First().XYNO;
 | 
	
		
			
				|  |  | +                        var xyNo = bomSetInfos.Select(x => Convert.ToInt32(x.XYNo)).Where(x => x > lastXYNO)
 | 
	
		
			
				|  |  | +                            .OrderBy(x => x).First();
 | 
	
		
			
				|  |  | +                        ringPalletizingInfo.LastXYNO = xyNo;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    else
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        ringPalletizingInfo.LastXYNO = lastXYNO;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (_basewarecellrepository.AsQueryable().With(SqlWith.NoLock).Any(x =>
 | 
	
		
			
				|  |  | +                        x.GroupID == ringPalletizingInfo.Id && x.XYNO == ringPalletizingInfo.LastXYNO))
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                    res.ResMsg = $"当前位置已经被分配过了,请检查异常码垛信息{ringPalletizingInfo.Id}-{ringPalletizingInfo.LastXYNO}";
 | 
	
		
			
				|  |  | +                    return res;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                try
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    _db.BeginTran();
 | 
	
		
			
				|  |  | +                    var task = _wcstaskoldrepository.AsQueryable().With("WITH(READPAST,ROWLOCK)")
 | 
	
		
			
				|  |  | +                        .Where(p => p.Id == reqEntity.TaskNum)
 | 
	
		
			
				|  |  | +                        .SplitTable(x => x.Take(2)).First();
 | 
	
		
			
				|  |  | +                    if (task == null)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.WcsTaskNotExist.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg = ResponseStatusCodeEnum.WcsTaskNotExist.GetDescription();
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    if (task.Type == TaskType.OutDepot)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg = "该任务是出库任务,不能分配货位;任务号" + task.Id;
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    var outTime = ringPalletizingInfo.AddTime;
 | 
	
		
			
				|  |  | +                    if (stock.ProductTime < ringPalletizingInfo.AddTime) outTime = stock.ProductTime;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //更新目标缓存信息
 | 
	
		
			
				|  |  | +                    if (!_billRingPalletizingInfo.UpdateModelColumns(
 | 
	
		
			
				|  |  | +                            p => new BillRingPalletizingInfo
 | 
	
		
			
				|  |  | +                            {
 | 
	
		
			
				|  |  | +                                HaveQty = ringPalletizingInfo.HaveQty + 1,
 | 
	
		
			
				|  |  | +                                LastXYNO = ringPalletizingInfo.LastXYNO,
 | 
	
		
			
				|  |  | +                                AddTime = outTime
 | 
	
		
			
				|  |  | +                            }, p => p.Id == ringPalletizingInfo.Id))
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        _db.RollbackTran();
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg = $"货位{res.ResData.CellNo}被锁定";
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //更新目标货位
 | 
	
		
			
				|  |  | +                    if (!_basewarecellrepository.UpdateModelColumns(
 | 
	
		
			
				|  |  | +                            p => new BaseWarecell
 | 
	
		
			
				|  |  | +                            {
 | 
	
		
			
				|  |  | +                                StateNum = FjLocationState.StockIn,
 | 
	
		
			
				|  |  | +                                ContGrpBarCode = task.BarCode,
 | 
	
		
			
				|  |  | +                                ContGrpId = stock.ContGrpId,
 | 
	
		
			
				|  |  | +                                GroupID = ringPalletizingInfo.Id,
 | 
	
		
			
				|  |  | +                                EditTime = DateTime.Now,
 | 
	
		
			
				|  |  | +                                XYNO = ringPalletizingInfo.LastXYNO
 | 
	
		
			
				|  |  | +                            },
 | 
	
		
			
				|  |  | +                            p => p.WarehouseId == wareHouse.Id && p.Code == res.ResData.CellNo &&
 | 
	
		
			
				|  |  | +                                 p.StateNum == FjLocationState.Empty))
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        _db.RollbackTran();
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg = $"货位{res.ResData.CellNo}被锁定";
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    //更新货位信息至历史表,防止WCS重复请求,导致信息异常
 | 
	
		
			
				|  |  | +                    if (!_wcstaskoldrepository.UpdateSplitTableModelColumns(x => new WCS_TaskOld
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        AddrTo = res.ResData.CellNo
 | 
	
		
			
				|  |  | +                    }, x => x.Id == wcsTask.Id && x.AddrTo == "Robot"))
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        _db.RollbackTran();
 | 
	
		
			
				|  |  | +                        res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                        res.ResMsg = $"货位{res.ResData.CellNo}更新货位至任务历史表失败";
 | 
	
		
			
				|  |  | +                        return res;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    var bomSetInfo = bomSetInfos.First(x => x.XYNo == ringPalletizingInfo.LastXYNO.ToString());
 | 
	
		
			
				|  |  | +                    //更新库存货物大小信息
 | 
	
		
			
				|  |  | +                    _billInvnowrepository.UpdateModelColumns(
 | 
	
		
			
				|  |  | +                        x => new BillInvnow { Size = reqEntity.Height, SideNum = bomSetInfo.SideNum },
 | 
	
		
			
				|  |  | +                        x => x.Id == stock.Id);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    _db.CommitTran();
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                catch (Exception ex)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    _db.RollbackTran();
 | 
	
		
			
				|  |  | +                    _logger.LogInformation(ex.ToString());
 | 
	
		
			
				|  |  | +                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                    res.ResMsg = ex.Message;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            catch (Exception ex)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
 | 
	
		
			
				|  |  | +                res.ResMsg = ex.Message + ex.StackTrace;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return res;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          #endregion
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //#region 环形库货位申请(三深)
 |