| | |
| | | }} |
| | | {{ GetBtn7(d) }} |
| | | </script> |
| | | |
| | | <script type="text/html" id="templetUnstackingMode"> |
| | | {{# function GetBtn8(d){ |
| | | switch (d.UnstackingMode) { |
| | | case "0": |
| | | return "机器人拆垛"; |
| | | case "1": |
| | | return "人工拆垛"; |
| | | default: |
| | | return ""; |
| | | } |
| | | } |
| | | }} |
| | | {{ GetBtn8(d) }} |
| | | </script> |
| | | |
| | | <!-- #endregion --> |
| | | </div> |
| | | </div> |
| | |
| | | {field: 'Status',align: 'center',title: '状态',width: 90,templet: '#templetStatus'}, |
| | | {field: 'Qty',title: '出库数量',align: 'center',width: 90,}, |
| | | {field: 'CompleteQty',title: '拣货数量',align: 'center',width: 90}, |
| | | {field: 'UnstackingMode',title: '拆垛方式',align: 'center',width: 90,templet: '#templetUnstackingMode'}, |
| | | {field: 'OutMode',title: '出库口',align: 'center',width: 90,templet: '#outType',}, |
| | | {field: 'LoadingAddre',title: '装车口',align: 'center',width: 90,templet: '#outType',}, |
| | | {field: 'IsAdvance',title: '拣货类型',align: 'center',width: 90,templet: '#templetIsAdvance'}, |
| | | {field: 'SupplierLot',title: '供货批次',align: 'center',width: 110}, |
| | | {field: 'LotText',title: '批次描述',align: 'center',width: 150}, |
| | |
| | | public string OutMode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:装车口 |
| | | /// </summary> |
| | | public string LoadingAddre { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Desc:拆垛模式 |
| | | /// </summary> |
| | | public string UnstackingMode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 创建日期 |
| | | /// </summary> |
| | | public DateTime CreateTime { get; set; } |
| | |
| | | LogisticsName = b.CarrierName, |
| | | IsAdvance = a.IsAdvance, |
| | | OutMode = a.OutMode, |
| | | LoadingAddre=a.LoadingAddre, |
| | | UnstackingMode=a.UnstackingMode, |
| | | |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = d.RealName, |
| | |
| | | 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 |