| 
					
				 | 
			
			
				@@ -66,7 +66,7 @@ namespace wms.service.Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ///  容器表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private Repository<BaseContinfo> _baseContinfo => new Repository<BaseContinfo>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ///  环形库码垛缓存信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1346,6 +1346,347 @@ namespace wms.service.Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ///  重绕区组盘信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <param name="reqDto"></param> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <returns></returns> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public SRes CreateMaterialPalletWarehouTask2(RewindFullPalletTaskRequest reqDto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var res = new SRes() { ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(), ResMsg = "失败" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取工字轮任务信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var taskInfo = _taskrepository.AsQueryable().With(SqlWith.NoLock).First(x => x.BarCode == reqDto.TrayCode && x.Status < TaskStatus.Finish); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (taskInfo != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResMsg = reqDto.TrayCode + "已有任务,请联系智能制造人员进行处理!!!!!!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //托盘 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var container = _baseContinfo.GetSingle(p => p.ContBarCode == reqDto.TrayCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (container == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var insertcon = new BaseContinfo() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ContBarCode = reqDto.TrayCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Name = reqDto.TrayCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TypeCode = ContainerType.ContainerType_Spool.ToString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    PrintQty = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    IsStop = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WarehouseId = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WeightQty = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    AddWho = "wms", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    AddTime = DateTime.Now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //新加载具信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!_baseContinfo.Insert(insertcon)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = "托盘载具初始化失败"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //托盘库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var trayCode = _billInvnowrepository.GetSingle(p => p.ContGrpBarCode == reqDto.TrayCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (trayCode != null && trayCode.InvStateCode == InvState.InvEcecState_In.ToString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResMsg = "该托盘条码号已在库中,请检查条码号是否重复"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (trayCode != null && trayCode.InvStateCode == InvState.InvEcecState_OutGoing.ToString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResMsg = "该托盘条码号存在出库中任务,请检查上一个任务是否已经完成"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var SpoolNoGroup = reqDto.SpoolGroup.Select(x => x.SpoolCode).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var stackHeaderSet = new List<BillBomsetgrp>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #region 校验工字轮信息并获取对应垛型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            foreach (var spool in reqDto.SpoolGroup) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var spoolNr = _baseContinfo.GetSingle(p => p.ContBarCode == spool.SpoolCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (spoolNr == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var insertcon = new BaseContinfo() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ContBarCode = spool.SpoolCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Name = spool.SpoolCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        TypeCode = ContainerType.ContainerType_Spool.ToString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        PrintQty = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        IsStop = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        WarehouseId = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        WeightQty = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AddWho = "wms", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AddTime = DateTime.Now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //新加载具信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!_baseContinfo.Insert(insertcon)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        res.ResMsg = "工字轮载具初始化失败"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //物料 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var mater = _basematerrepository.GetSingle(p => p.Code == spool.MatCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (mater == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.MaterInfoNotExist.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = ResponseStatusCodeEnum.MaterInfoNotExist.GetDescription(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //工字轮库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var stock = _billInvnowrepository.GetSingle(p => p.HWBarCode == spool.SpoolCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (stock != null && stock.InvStateCode == InvState.InvEcecState_In.ToString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = "该工字轮条码号已在库中,请检查工字轮条码号是否重复"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (stock != null && stock.InvStateCode == InvState.InvEcecState_OutGoing.ToString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = "该工字轮条码号存在出库中任务,请检查上一个任务是否已经完成"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //通过投入物料找到垛型编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var stackDetail = _billBomsetinfoRepository.GetFirst(p => p.MatCode == spool.MatCode && p.IsStop == 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (stackDetail == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = reqDto.SpoolGroup + "没有对应的垛型信息,物料编码" + spool.MatCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //获取垛型主表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var stack = _BillBomsetgrpRepository.GetSingle(p => p.Id == stackDetail.BomSetHdrId && p.IsStop == 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                stackHeaderSet.Add(stack); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (stackHeaderSet.GroupBy(x=>x.Id).Count()!=1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResMsg = "扫描托盘不属于同一个垛型,请手动处理后重新组盘"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            #endregion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var stackHeader = stackHeaderSet.First(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _db.BeginTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                #region 删除所有工字轮信息,并创建新信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _billInvinitrepository.Delete(x => SpoolNoGroup.Contains(x.ContGrpBarCode)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _billSpoolTransrepository.Delete(x => SpoolNoGroup.Contains(x.ConBarCode)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var materiel = _basematerrepository.GetSingle(p => p.Code == stackHeader.ProMaterCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var wareHouse = _basewarehouserepository.GetFirst(x => x.Code == "1"); //TODO:1换成满托平库满盘Code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var barInfoList = new List<BillInvinit>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var invNowList = new List<BillInvnow>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var invFlowList=new List<BillInvflow>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                foreach (var spool in reqDto.SpoolGroup) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var mater = _basematerrepository.GetSingle(p => p.Code == spool.MatCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //工字轮需要用到的托盘类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var fJPalletType = FJPalletType.Pallet09; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (spool.SpoolType != "WS09") fJPalletType = FJPalletType.PalletNo09; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var barinfo = InitInvinitInfo(spool, wareHouse, stackHeader, mater, materiel, fJPalletType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    barInfoList.Add(barinfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //删除因异常导致残留的对应库存信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _billInvnowrepository.Delete(x => x.ContGrpBarCode == barinfo.ContGrpBarCode || x.HWBarCode == barinfo.ContGrpBarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //将条码表映射到库存表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var invnow = _mapper.Map<BillInvnow>(barinfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    invnow.IsTorsChk = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    invnow.AddTime = DateTime.Now; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    invnow.InvStateCode = FJInvState.InvEcecState_BuildUp.ToString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    invnow.ContGrpBarCode = reqDto.TrayCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    invnow.Id = IdFactory.NewId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    invnow.WarehouseId = wareHouse.Id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    invNowList.Add(invnow); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!_billInvinitrepository.InsertRange(barInfoList)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.RollbackTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = "重绕满托存储条码信息失败"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!_billInvnowrepository.InsertRange(invNowList)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.RollbackTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = "重绕满托存储库存信息失败"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!_billInvflow.InsertRange(invFlowList)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.RollbackTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = "重绕满托存储库存流水信息失败"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //创建入库记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var createStockInWcsTaskReqest = new FJCreateStockInWcsTaskRequest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BusType = FJTaskBusType.重绕满托入库.GetDescription(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ContGrpBarCode = reqDto.TrayCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Qty = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Floor = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    MatCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    EquCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Type = TaskType.EnterDepot, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    DocCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WorkBench = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WarehouseCode = wareHouse.Code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //下发wcs任务 - 分解方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var taskRes = CreateStockInWcsTask(createStockInWcsTaskReqest,"A" , true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (taskRes.ResCode != 200) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.RollbackTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = taskRes.ResCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = taskRes.ResMsg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _db.CommitTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                #endregion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            catch (Exception e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _db.RollbackTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResMsg = e.Message; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.ResMsg = ResponseStatusCodeEnum.Sucess.ToString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ///  创建退料任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <param name="reqDto"></param> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <returns></returns> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public SRes MaterialReturnTaskCreator(MaterialReturnTaskCreatorRequest reqDto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var res = new SRes() { ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(), ResMsg = "失败" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取工字轮任务信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var taskInfo = _taskrepository.AsQueryable().With(SqlWith.NoLock).First(x => x.BarCode == reqDto.TrayCode && x.Status < TaskStatus.Finish); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (taskInfo != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResMsg = reqDto.TrayCode + "已有任务,请联系智能制造人员进行处理!!!!!!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //托盘 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var container = _baseContinfo.GetSingle(p => p.ContBarCode == reqDto.TrayCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (container == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var insertcon = new BaseContinfo() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ContBarCode = reqDto.TrayCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Name = reqDto.TrayCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TypeCode = ContainerType.ContainerType_Spool.ToString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    PrintQty = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    IsStop = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WarehouseId = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WeightQty = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    AddWho = "wms", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    AddTime = DateTime.Now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //新加载具信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!_baseContinfo.Insert(insertcon)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = "托盘载具初始化失败"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //托盘库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var trayCode = _billInvnowrepository.GetSingle(p => p.ContGrpBarCode == reqDto.TrayCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (trayCode != null && trayCode.InvStateCode == InvState.InvEcecState_In.ToString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResMsg = "该托盘条码号已在库中,请检查条码号是否重复"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (trayCode != null && trayCode.InvStateCode == InvState.InvEcecState_OutGoing.ToString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResMsg = "该托盘条码号存在出库中任务,请检查上一个任务是否已经完成"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var mac = _basemachinforepository.GetFirst(x => x.MachNo == reqDto.LocCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _db.BeginTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var wareHouse = _basewarehouserepository.GetFirst(x => x.Code == "1"); //TODO:1换成退料平库满盘Code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //创建入库记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var createStockInWcsTaskReqest = new FJCreateStockInWcsTaskRequest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BusType = FJTaskBusType.帘线退料重绕.GetDescription(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ContGrpBarCode = reqDto.TrayCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Qty = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Floor = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    MatCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    EquCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Type = TaskType.EnterDepot, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    DocCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WorkBench = mac.Station, //TODO:是否是AGV站台 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WarehouseCode = wareHouse.Code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //下发wcs任务 - 分解方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var taskRes = CreateStockInWcsTask(createStockInWcsTaskReqest, "A", true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (taskRes.ResCode != 200) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.RollbackTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = taskRes.ResCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = taskRes.ResMsg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _db.CommitTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            catch (Exception e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _db.RollbackTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResMsg = e.StackTrace; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.ResMsg = ResponseStatusCodeEnum.Sucess.ToString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public SRes ManualBuildStockTrans(ManualBuildStockTransRequest reqDto) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var res = new SRes(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1508,7 +1849,6 @@ namespace wms.service.Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 _logger.LogInformation(reqDto.SpoolCode + "没有对应的垛型信息,物料编码" + reqDto.MatCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 _billInvinitrepository.Delete(x => x.ContGrpBarCode == billSpoolTrans.ConBarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                _billInvinitrepository.Delete(x => x.ContGrpBarCode == billSpoolTrans.ConBarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 _billSpoolTransrepository.Delete(x => x.ConBarCode == billSpoolTrans.ConBarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 _logger.LogInformation($"找不到垛形信息时删除缓存信息{billSpoolTrans.ConBarCode}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var task = _taskrepository.GetSingle(x => x.BarCode == billSpoolTrans.ConBarCode); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2364,7 +2704,7 @@ namespace wms.service.Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //找到所有的立库/虚拟货位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var warehouse = _basewarehouserepository.GetList(x => x.TypeNum == FjLocationType.Storage||x.TypeNum==FjLocationType.Virtual).Select(x => x.Id).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var warehouse = _basewarehouserepository.GetList(x => x.TypeNum == FjLocationType.Storage||x.TypeNum==FjLocationType.Virtual||x.TypeNum==FjLocationType.Pingku).Select(x => x.Id).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var task = _wcstaskoldrepository.AsQueryable().With(SqlWith.NoLock).Where(p => p.WorkBench == mach.Station && p.Status < TaskStatus.Finish).SplitTable(tabs => tabs.Take(2)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (task != null && task.Any()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3575,184 +3915,6 @@ namespace wms.service.Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// 分配分拣库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// <param name="code">工字轮条码</param> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// <returns></returns> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public SRes AllocationWarehouseSort(string code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //开始分配分拣库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var res = new SRes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //找到码垛工字轮信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var spoolTrans = _billSpoolTransrepository.GetSingle(p => p.ConBarCode == code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (spoolTrans == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //创建容器信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var cont = new BillSpoolTrans 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ConBarCode = code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    AddWho = "WMS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    AddTime = DateTime.Now, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    WorkOrder = "20230210", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    MatCode = "shilatest01" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //加载新的容器信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (!_billSpoolTransrepository.Insert(cont)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    res.ResCode = ResponseStatusCodeEnum.DataSaveErr.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    res.ResMsg = "RFID载具初始化失败"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                spoolTrans = _billSpoolTransrepository.GetSingle(p => p.ConBarCode == code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!spoolTrans.WarehouseCode.IsNullOrEmpty()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResMsg = "已完成分库"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //验证容器是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            res = _mapper.Map<CopperLineResponse>(CheckContinfo(code, FJContainerType.ContainerType_IShapedWheel)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (res.ResCode != ResponseStatusCodeEnum.Sucess.GetHashCode()) return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //验证任务信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            res = _mapper.Map<CopperLineResponse>(CheckNoFinishTask(code)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (res.ResCode != ResponseStatusCodeEnum.Sucess.GetHashCode()) return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //验证是否条码信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var invini = _billInvinitrepository.GetSingle(p => p.HWBarCode == code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (invini != null && invini.InvStateCode == FJInvState.InvEcecState_In.ToString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResMsg = code + "该托盘号已在库中,请检查托盘号是否重复"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (invini != null && invini.InvStateCode == InvState.InvEcecState_OutGoing.ToString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResMsg = code + "该托盘号存在出库中任务,请检查上一个任务是否已经完成"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (invini != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResCode = ResponseStatusCodeEnum.GroupStockDetailMaterialBarCodeExist.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResMsg = ResponseStatusCodeEnum.GroupStockDetailMaterialBarCodeExist.GetDescription(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //通过订单找到对应的机台信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var macList = _basemachinforepository.GetList(p => p.WorkOrder == spoolTrans.WorkOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var wareList = macList.Select(p => p.WarehouseCode).Distinct().OrderBy(v => v); //找到机台对应的仓库信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!wareList.Any()) //当前订单没有对应仓库信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                _billSpoolTransrepository.UpdateModelColumns(p => new BillSpoolTrans 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ErrType = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ErrMsg = "没有配置机台信息", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    EditTime = DateTime.Now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }, p => p.ConBarCode == spoolTrans.ConBarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else if (wareList.Count() == 1) //当前订单对应一个仓库信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var sort = int.Parse(wareList.First().Substring(0, 1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                _billSpoolTransrepository.UpdateModelColumns(p => new BillSpoolTrans 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    WarehouseCode = wareList.First(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    WarehouseSort = sort, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Direct = wareList.First().Substring(1, 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    EditTime = DateTime.Now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }, p => p.ConBarCode == spoolTrans.ConBarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                spoolTrans.WarehouseCode = wareList.First(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                spoolTrans.WarehouseSort = sort; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                spoolTrans.Direct = wareList.First().Substring(1, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else //当前订单对应多个仓库信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //TODO:怎么计算当前订单在当前仓库需要码多少托,跟据当前仓库已有订单需要的托盘数量计算各订单在可用码垛工位占比,再计算当前托盘该码什么跺 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var wareTempList = macList.Select(p => new { p.WarehouseCode, p.WorkOrder, p.BillCode, }).Distinct(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var wareHouseList = _basewarehouserepository.GetList().Select(p => p.Id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                foreach (var warehouse in wareHouseList) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //var stackdetaillist = _billBomsetinfoRepository.AsQueryable().Where(p => p == warehouse); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //getMatProport(spoolTrans.MatCode, warehouse); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //TODO:此处条码号应当使用材料号,测试时使用条码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var barInfo = _billInvinitrepository.GetSingle(p => p.HWBarCode == code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (barInfo == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var wareHosue = _basewarehouserepository.GetSingle(p => p.Code == spoolTrans.WarehouseCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                barInfo = new BillInvinit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    InvBarCode = code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    WarehouseId = wareHosue.Id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    HWBarCode = code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ExecStateCode = FJInvLockState.InvState_Normal.GetDescription(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ExecDocsTypeCode = FJDocType.FullWheelPalletizing.GetDescription(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    InvInOut = FJInvInOutType.In, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ExecWho = "WCS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    EditTime = DateTime.Now, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    InvStateCode = FJInvState.InvEcecState_BuildUp.ToString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    SuppCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Size = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    MatCode = spoolTrans.MatCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    AddTime = DateTime.Now, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                _billInvinitrepository.InsertReturnEntity(barInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //开始生成WCS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var createStockInWcsTaskReqest = new FJCreateStockInWcsTaskRequest 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BusType = FJTaskBusType.二楼组盘.GetDescription(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ContGrpBarCode = code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Qty = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                WarehouseCode = spoolTrans.WarehouseCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Floor = 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                MatCode = spoolTrans.MatCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                EquCode = "Robot", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Type = TaskType.SetPlate, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                DocCode = spoolTrans.WorkOrder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //下发wcs任务 - 分解方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var taskRes = CreateStockInWcsTask(createStockInWcsTaskReqest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (taskRes.ResCode != 200) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResCode = taskRes.ResCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                res.ResMsg = taskRes.ResMsg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            RedisHelper.Set($"AllocationWarehouseSort:{code}", JsonConvert.SerializeObject(new MainlineDiversion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                TaskId = taskRes.ResData.ID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                WarehouseCode = spoolTrans.WarehouseCode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ///  计算物料在该仓库的比例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// <param name="matcode">物料编号</param> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// <param name="warehouseId"></param> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// <returns></returns> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public decimal getMatProport(string matcode, long warehouseId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //计算此仓库所有该物料的量 已组盘/已入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var stackLisk = _billInvnowrepository.AsQueryable() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                 .Count(v => v.WarehouseId == warehouseId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                          && v.MatCode == matcode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                          && (v.ExecStateCode == FJInvState.InvEcecState_BuildUp.ToString() || v.ExecStateCode == FJInvState.InvEcecState_In.ToString())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //每的单子(每盘的数量) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //var stackdetaillist = _billBomsetinfoRepository.AsQueryable().Where(p => p.WarehouseId == warehouseId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #endregion 满轮主线 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #region 环形库 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4899,102 +5061,6 @@ namespace wms.service.Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ///  计算出库任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        public void CalculateOutBoundTasks() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //获取所有的环形库有货库位信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var wareCellList = _basewarecellrepository.GetList(x => x.WarehouseCode.Contains("R") && x.StateNum == FjLocationState.Full).GroupBy(x => x.WarehouseId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            foreach (var wareCells in wareCellList) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //获取当前仓库对应的订单所有的订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var docs = _billdocrepository.GetList(x => x.IsStop == 0 && wareCells.Key == x.WarehouseId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                foreach (var doc in docs) //开始处理当前仓库每个订单相关信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //找到对应的垛形信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var bomSetGrp = _BillBomsetgrpRepository.GetSingle(x => doc.SetGrpCode == x.Code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var bomSetGrpInfo = _billBomsetinfoRepository.GetList(x => x.BomSetHdrId == bomSetGrp.Id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //是否可以码垛,默认可以码垛 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var isPalletize = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    #region 计算当前垛形需要的货物是否已满足数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    var bomSetGrpMatCodes = bomSetGrpInfo.Select(x => x.MatCode).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    foreach (var matCode in bomSetGrpMatCodes) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        var wareCellSum = wareCells.Count(x => matCode == x.ContGrpBarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (wareCellSum == bomSetGrpInfo.Count(x => x.MatCode == matCode)) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        isPalletize = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        //TODO:暂时未计算物料超时处理方案 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    #endregion 计算当前垛形需要的货物是否已满足数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //开始计算出库任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (isPalletize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        //TODO:货物序号暂不做处理直接使用累计数值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        short index = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        //开始为各种物料生成对应的出库任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            _db.BeginTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            foreach (var matCode in bomSetGrpMatCodes) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                #region 生成这种物料所需要的出库任务信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var sum = bomSetGrpInfo.Count(x => x.MatCode == matCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                var cells = wareCells.Where(x => x.ContGrpBarCode == matCode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    .OrderBy(x => x.Col) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    .ThenBy(x => x.Layer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    .ThenBy(x => x.Depth) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    .Take(sum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                foreach (var cell in cells) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    //更新货位信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    _basewarecellrepository.UpdateModelColumns(p => new BaseWarecell() { StateNum = FjLocationState.StockOut }, p => p.Id == cell.Id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    //更新库存信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    var sotck = _billInvnowrepository.GetSingle(x => x.ContGrpBarCode == cell.ContGrpBarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    _billInvnowrepository.UpdateModelColumns(p => new BillInvnow() { InvStateCode = InvState.InvEcecState_OutGoing.ToString(), EditTime = DateTime.Now }, p => p.HWBarCode == cell.ContGrpBarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    //更新流水信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    var invflow = _mapper.Map<BillInvflow>(sotck); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    invflow.InvStateCode = InvState.InvEcecState_OutGoing.ToString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    invflow.AddTime = DateTime.Now; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    invflow.Id = IdFactory.NewId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    _billInvflow.Insert(invflow); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    //添加出库任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    RingCreateStockOutWcsTask(new FJCreateStockOutWcsTaskRequest() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        ContGrpBarCode = cell.ContGrpBarCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        CellNo = cell.Code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        EquCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        Floor = 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        ProdLine = index, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        //Qty = sotck.LengthQty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        //Tunnel = temploc.Tunnel.ToString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        WarehouseCode = cell.WarehouseCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        BusType = FJTaskBusType.环形库出库码垛任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    index++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                #endregion 生成这种物料所需要的出库任务信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        catch (Exception e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            _db.CommitTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ///  环形库创建WCS出库任务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -5695,6 +5761,162 @@ namespace wms.service.Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #region 巷道及货位分配 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ///  获取平库可用货位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <param name="reqEntity"></param> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <returns></returns> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public SRes<FJApplyStockInLocResponse> FindAvailableFlatStorageSlot(FJApplyStockInLocRequest reqEntity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var res = new SRes<FJApplyStockInLocResponse>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ResMsg = ResponseStatusCodeEnum.Sucess.GetDescription(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ResData = new FJApplyStockInLocResponse() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //检擦任务是否异常 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var wcstask = _wcstaskoldrepository.AsQueryable().With(SqlWith.NoLock).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 != "SRM")//如果目标地址不是堆垛机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResData.TunnelNum = wcstask.Tunnel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResData.CellNo = wcstask.AddrTo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //验证仓库信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            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.ContGrpBarCode == wcstask.BarCode.Trim() && p.InvStateCode == InvState.InvEcecState_BuildUp.ToString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (stock == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (wcstask.BusType == FJTaskBusType.帘线退料重绕.GetDescription()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var nov = new BillInvnow() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        WarehouseId = warehouse.Id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ContGrpBarCode = wcstask.BarCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ContGrpId = IdFactory.NewId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        BoxBarCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        InvStateCode = InvState.InvEcecState_BuildUp.ToString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ExecStateCode = InvLockState.InvState_Normal.ToString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        MatId = default, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        MatCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        MatName = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        RFIDBarCode = wcstask.BarCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        HWBarCode = wcstask.BarCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        HWTypeCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        InvInOut = FJInvInOutType.In, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Size = 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ContGrpType = FJContGrpType.EmptyPal, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        LengthQty = 0 //存放托盘数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.BeginTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _billInvnowrepository.Insert(nov); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _billInvflow.Insert(_mapper.Map<BillInvflow>(nov)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.CommitTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    res.ResMsg = "没有库存信息"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //预留货位数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var emptyLoc = _basewarecellrepository.GetList(p => p.IsStop == 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                && p.StateNum == FjLocationState.Empty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                && p.TypeNum == FjLocationType.Storage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                                && p.WarehouseId == warehouse.Id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //找到可用货位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var loc1ist = _basewarecellrepository.Context 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         .Queryable<BaseWarecell>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         .Where((loc1) => loc1.IsStop == 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            && loc1.StateNum == FjLocationState.Empty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            && loc1.TypeNum == FjLocationType.Storage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            && loc1.Tunnel == reqEntity.TunnelNum 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            && loc1.WarehouseId == warehouse.Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            && loc1.Depth == 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         .Where((loc1) => loc1.Tunnel == reqEntity.TunnelNum) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         .Select((loc1) => new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             loc1.Code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             loc1.Id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             loc1.Row, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             loc1.Col, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             loc1.Layer, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                             loc1.Tunnel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                         }).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (loc1ist.Any()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var resloc = loc1ist.ToList().OrderBy(x=>x.Code).First(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResData.TunnelNum = resloc.Tunnel.ToString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResData.WarehuoseId = warehouse.Id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResData.CellNo = resloc.Code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResData.Row = resloc.Row; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResData.Colomn = resloc.Col; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                res.ResData.Layer = resloc.Layer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.BeginTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    var task = _wcstaskoldrepository.AsQueryable().With("WITH(READPAST,ROWLOCK)").Where(x => x.Id == wcstask.Id).SplitTable(x => x.Take(2)).First(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //更新货位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _basewarecellrepository.UpdateModelColumns( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        p => new BaseWarecell() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            StateNum = FjLocationState.StockIn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ContGrpBarCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ContGrpId = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            EditTime = DateTime.Now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        p => p.Code == res.ResData.CellNo && res.ResData.WarehuoseId == p.WarehouseId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _wcstaskoldrepository.UpdateSplitTableModelColumns(x => new WCS_TaskOld() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AddrTo = res.ResData.CellNo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }, x => x.Id == task.Id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.CommitTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                catch (Exception ex) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _db.RollbackTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    _logger.LogInformation(ex.ToString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.ResCode = ResponseStatusCodeEnum.NotEnoughLocation.GetHashCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            res.ResMsg = ResponseStatusCodeEnum.NotEnoughLocation.GetDescription(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// 分配货位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -6601,7 +6823,9 @@ namespace wms.service.Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //更新库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         _billInvnowrepository.UpdateModelColumns(p => new BillInvnow() { PutRow = 0, PutCol = 0, PutLayer = 0 }, p => p.InvStateCode == InvState.InvEcecState_OutGoing.ToString() && p.ContGrpBarCode == wcstask.BarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    case FjLocationType.Pingku: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        _billInvnowrepository.UpdateModelColumns(p => new BillInvnow() { PutRow = 0, PutCol = 0, PutLayer = 0 }, p => p.InvStateCode == InvState.InvEcecState_OutGoing.ToString() && p.ContGrpBarCode == wcstask.BarCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     case FjLocationType.RingLibrary: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //更新库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         _billInvnowrepository.UpdateModelColumns(p => new BillInvnow() { PutRow = 0, PutCol = 0, PutLayer = 0, InvStateCode = FJInvState.InvEcecState_BuildUp.ToString() }, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -6902,7 +7126,54 @@ namespace wms.service.Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             case FjLocationType.Pingku: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                result.ResMsg = task.Id + "没有平库"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                _billInvnowrepository.Delete(p => stocklist.Select(p => p.Id).ToList().Contains(p.Id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 hWBarCode = stocklist.Select(p => p.HWBarCode).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                _billInvinitrepository.Delete(p => hWBarCode.Contains(p.HWBarCode) && p.InvStateCode == InvState.InvEcecState_OutGoing.ToString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 contGrpBarCode = stocklist.Select(p => p.ContGrpBarCode).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                _billInvinitrepository.Delete(p => contGrpBarCode.Contains(p.ContGrpBarCode) && p.InvStateCode == InvState.InvEcecState_OutGoing.ToString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                _billSpoolTransrepository.Delete(p => stocklist.Select(p => p.HWBarCode).ToList().Contains(p.ConBarCode)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                _logger.LogInformation($"删除缓存信息{JsonConvert.SerializeObject(stocklist.Select(x => x.HWBarCode).ToList())}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //更新货位信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                _basewarecellrepository.UpdateModelColumns(p => new BaseWarecell() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    StateNum = FjLocationState.Empty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    ContGrpBarCode = "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    ContGrpId = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    EditTime = DateTime.Now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                }, p => p.StateNum == FjLocationState.StockOut && p.ContGrpBarCode == task.BarCode && p.Code.Contains(task.AddrFrom) && p.WarehouseCode == task.WarehouseCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //更新流水信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                _billInvflow.InsertRange(flowlist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                //添加反馈信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 pushtype = fjFackbeekType.InterfaceType_FJ_StockOut.ToString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 list = new List<BillPushinfo>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                foreach (var item in stocklist) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    list.Add(new BillPushinfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        DocsNo = item.ExecDocsNo, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        TypeCode = pushtype, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        RFIDBarCode = item.ContGrpBarCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        HWBarCode = item.HWBarCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        CLBarCode = item.CLBarCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        WarehouseId = wareHouse.Id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        WarehouseCode = wareHouse.Code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        WareCellId = 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        WareCellCode = task.AddrTo, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        MatId = item.MatId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        MatCode = item.MatCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        MatName = item.MatName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        TolWQty = item.TolWQty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        NetWQty = item.NetWQty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        TareWQty = item.TareWQty, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        ReqNo = Guid.NewGuid().ToString() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if (stocklist.First().ContGrpType == FJContGrpType.Material) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    _billPushinforepository.InsertRange(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                _db.CommitTran(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             case FjLocationType.Virtual: 
			 |