Administrator
2024-03-04 9e30be167f6003eb5ea75264a2e0999017425805
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -1406,6 +1406,10 @@
                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
                {
@@ -1413,6 +1417,37 @@
                    //循环分配的信息生成出库任务
                    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;
@@ -1512,7 +1547,7 @@
                                IsSuccess = 0, //是否下发成功 0失败 1成功
                                StartLocat = locate.LocatNo,//起始位置
                                EndLocat = outMode,//目标位置
                                EndLocat = toLocation,//outMode,//目标位置
                                PalletNo = item.PalletNo,//托盘码
                                IsSend = 1,//是否可再次下发
                                IsCancel = 1,//是否可取消
@@ -1530,7 +1565,7 @@
                                PalletNo = item.PalletNo,//托盘号
                                StartLocate = locate.LocatNo, // 起始位置
                                StartRoadway = locate.RoadwayNo,//其实巷道
                                EndLocate = outMode, // 目标位置
                                EndLocate = toLocation,//outMode, // 目标位置
                                TaskNo = exTask.TaskNo, // 任务号
                                TaskType = "1",// 任务类型 (出库)
                                OutMode = "",  //目标地址
@@ -1564,9 +1599,10 @@
                            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
@@ -1607,7 +1643,8 @@
                            }
                            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