| | |
| | | var outLpnList = list.Select(m => m.PalletNo).ToList(); |
| | | //要出库的明细集合 |
| | | var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList(); |
| | | //物料编码表 |
| | | var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0"); |
| | | //包装表 |
| | | var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0"); |
| | | Db.BeginTran(); |
| | | try |
| | | { |
| | |
| | | //循环分配的信息生成出库任务 |
| | | foreach (var item in list) |
| | | { |
| | | string toLocation = string.Empty;//目标位置 |
| | | #region 判断是否需要拆箱 |
| | | string isChai = "0";//是否需要拆箱,0:不需要 1:需要 |
| | | var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo); |
| | | if (skuInfo == null) |
| | | { |
| | | throw new Exception("物料信息不存在!"); |
| | | } |
| | | var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo); |
| | | if (packagInfo == null) |
| | | { |
| | | throw new Exception("包装信息不存在!"); |
| | | } |
| | | if (packagInfo.L2Name == "箱") |
| | | { |
| | | if (item.Qty % (decimal)packagInfo.L2Num != 0)//能整除说明不用拆箱,不能整除说明需要拆箱 |
| | | { |
| | | isChai = "1";//需要拆箱 |
| | | unstackingMode = "1";//需要拆箱需走PDA拆垛 |
| | | } |
| | | } |
| | | #endregion |
| | | if (unstackingMode == "0")//机器人拆垛 |
| | | { |
| | | toLocation = loadingAddre;//装车口 |
| | | } |
| | | else //PDA拆垛 |
| | | { |
| | | toLocation = outMode;//出库口 |
| | | } |
| | | |
| | | // 储位号 |
| | | var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo; |
| | | |
| | |
| | | IsSuccess = 0, //是否下发成功 0失败 1成功 |
| | | |
| | | StartLocat = locate.LocatNo,//起始位置 |
| | | EndLocat = outMode,//目标位置 |
| | | EndLocat = toLocation,//outMode,//目标位置 |
| | | PalletNo = item.PalletNo,//托盘码 |
| | | IsSend = 1,//是否可再次下发 |
| | | IsCancel = 1,//是否可取消 |
| | |
| | | PalletNo = item.PalletNo,//托盘号 |
| | | StartLocate = locate.LocatNo, // 起始位置 |
| | | StartRoadway = locate.RoadwayNo,//其实巷道 |
| | | EndLocate = outMode, // 目标位置 |
| | | EndLocate = toLocation,//outMode, // 目标位置 |
| | | TaskNo = exTask.TaskNo, // 任务号 |
| | | TaskType = "1",// 任务类型 (出库) |
| | | OutMode = "", //目标地址 |
| | |
| | | |
| | | item.TaskNo = exTask.TaskNo; // 出库分配信息中更新任务号 |
| | | item.Status = "1"; // 出库分配信息状态改为正在执行 |
| | | item.OutMode = outMode;//出库口 |
| | | item.UnstackingMode = unstackingMode;//拆垛方式 |
| | | item.OutMode = unstackingMode == "1" ? outMode : "";//出库口 |
| | | item.LoadingAddre = unstackingMode == "0" ? loadingAddre : "";//装车口 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | |
| | | |
| | | #endregion |
| | | |
| | |
| | | } |
| | | item.TaskNo = taskNo.TaskNo; |
| | | item.Status = "1"; // 出库分配信息状态改为正在执行 |
| | | item.OutMode = taskNo.EndLocat; |
| | | item.OutMode = unstackingMode == "1" ? taskNo.EndLocat : "";//出库口 |
| | | item.LoadingAddre = unstackingMode == "0" ? taskNo.EndLocat : "";//装车口 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | flagList.Add(0); |
| | | #endregion |