Administrator
2024-03-06 65ecd34acf0a3d33e6c1e10c93e351716d749e2f
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -224,7 +224,7 @@
                    {
                        SkuNo = d.SkuNo,
                        LotNo = d.LotNo,
                        Qty = int.Parse(d.CompleteQty.ToString())
                        Qty = (decimal)d.CompleteQty
                    };
                    list.Add(item);
                }
@@ -247,8 +247,8 @@
                #endregion
                notice.Status = "6";
                notice.UpdateTime = DateTime.Now;
                notice.UpdateUser = userId;
                notice.CheckTime = DateTime.Now;
                notice.CheckUser = userId;
                Db.Updateable(notice).ExecuteCommand();
                new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "复核", $"复核了单据号为{notice.SONo}的单据信息", userId);
@@ -360,6 +360,9 @@
                        break;
                    case "6"://代储出库
                        skuType = "(2)";
                        break;
                    case "8"://寄存出库
                        skuType = "(3)";
                        break;
                    default: //其它出库
                        skuType = "(0,1,2,3,4)";
@@ -1406,6 +1409,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 +1420,47 @@
                    //循环分配的信息生成出库任务
                    foreach (var item in list)
                    {
                        string toLocation = string.Empty;//目标位置
                        string unstackingMode2 = unstackingMode;//拆垛方式,0:机器人拆垛 1:PDA拆垛
                        #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";
                                unstackingMode2 = "1";//需要拆箱需走PDA拆垛
                            }
                        }
                        if (isChai == "0")
                        {
                            var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
                            if (boxInfo != null)//托盘上有零箱需要拆箱
                            {
                                isChai = "1";
                                unstackingMode2 = "1";//需要拆箱需走PDA拆垛
                            }
                        }
                        #endregion
                        if (unstackingMode2 == "0")//机器人拆垛
                        {
                            toLocation = loadingAddre;//装车口
                        }
                        else //PDA拆垛
                        {
                            toLocation = outMode;//出库口
                        }
                        // 储位号
                        var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo;
@@ -1512,7 +1560,7 @@
                                IsSuccess = 0, //是否下发成功 0失败 1成功
                                StartLocat = locate.LocatNo,//起始位置
                                EndLocat = outMode,//目标位置
                                EndLocat = toLocation,//outMode,//目标位置
                                PalletNo = item.PalletNo,//托盘码
                                IsSend = 1,//是否可再次下发
                                IsCancel = 1,//是否可取消
@@ -1520,7 +1568,7 @@
                                Type = "1",//任务类型 0 入库任务 1 出库任务  2 移库任务
                                Status = "0",//任务状态0:等待执行1正在执行2执行完成
                                OrderType = "1",//0 入库单 1 出库单  2 盘点单  3 移库单
                                Msg = "从" + locate.LocatNo + "到" + outMode + "的出库任务", //关键信息
                                Msg = "从" + locate.LocatNo + "到" + toLocation + "的出库任务", //关键信息
                            };
                            Db.Insertable(exTask).ExecuteCommand();
                            logTaskList.Add(exTask);
@@ -1530,7 +1578,7 @@
                                PalletNo = item.PalletNo,//托盘号
                                StartLocate = locate.LocatNo, // 起始位置
                                StartRoadway = locate.RoadwayNo,//其实巷道
                                EndLocate = outMode, // 目标位置
                                EndLocate = toLocation,//outMode, // 目标位置
                                TaskNo = exTask.TaskNo, // 任务号
                                TaskType = "1",// 任务类型 (出库)
                                OutMode = "",  //目标地址
@@ -1564,9 +1612,10 @@
                            item.TaskNo = exTask.TaskNo; // 出库分配信息中更新任务号
                            item.Status = "1"; // 出库分配信息状态改为正在执行 
                            item.OutMode = outMode;//出库口
                            item.UnstackingMode = unstackingMode2;//拆垛方式
                            item.OutMode = unstackingMode2 == "1" ? outMode : "";//出库口
                            item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//装车口
                            Db.Updateable(item).ExecuteCommand();
                            #endregion
@@ -1607,7 +1656,8 @@
                            }
                            item.TaskNo = taskNo.TaskNo;
                            item.Status = "1"; // 出库分配信息状态改为正在执行 
                            item.OutMode = taskNo.EndLocat;
                            item.OutMode = unstackingMode2 == "1" ? taskNo.EndLocat : "";//出库口
                            item.LoadingAddre = unstackingMode2 == "0" ? taskNo.EndLocat : "";//装车口
                            Db.Updateable(item).ExecuteCommand();
                            flagList.Add(0);
                            #endregion
@@ -2573,6 +2623,7 @@
                    LocatNo = a.LocatNo,
                    RoadwayNo = a.RoadwayNo,
                    PalletNo = a.PalletNo,
                    Demo = a.Demo,
                }).ToList();
                return list;
@@ -2772,7 +2823,13 @@
                            break;
                        }
                    }
                }
                    var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
                    if (boxInfo != null)//托盘上有零箱需要拆箱
                    {
                        result = "1";//需要拆箱
                        break;
                    }
                }
                return result;
            }
            catch (Exception ex)