| | |
| | | |
| | | public OutCommandDto RequestPalletIn(string palletNo, string houseNo, int palletNum, string Strlocate) |
| | | { |
| | | return null; |
| | | //try |
| | | //{ |
| | | // #region 判断 |
| | | // if (string.IsNullOrEmpty(palletNo)) |
| | | // { |
| | | // throw new Exception("托盘号不能为空"); |
| | | // } |
| | | // if (string.IsNullOrEmpty(houseNo)) |
| | | // { |
| | | // throw new Exception("仓库号不能为空"); |
| | | // } |
| | | // if (palletNum <= 0) |
| | | // { |
| | | // throw new Exception("托盘数量不能小等0"); |
| | | // } |
| | | // if (string.IsNullOrEmpty(Strlocate)) |
| | | // { |
| | | // throw new Exception("起始位置不能为空"); |
| | | // } |
| | | // //获取储位信息 |
| | | // var locateInfo = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.WareHouseNo == houseNo && m.LocatNo == Strlocate); |
| | | // if (locateInfo == null) |
| | | // { |
| | | // throw new Exception("未查询到空储位"); |
| | | // } |
| | | // if (locateInfo.Flag != "0") |
| | | // { |
| | | // throw new Exception("当前位置标识状态是非正常的"); |
| | | // } |
| | | |
| | | // #endregion |
| | | |
| | | // #region MyRegion |
| | | |
| | | // var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList(); |
| | | // if (stockDetail.Count > 0) |
| | | // { |
| | | // throw new Exception("当前托盘在库内已有库存信息,请核实"); |
| | | // } |
| | | |
| | | // //获取托盘信息 |
| | | // var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo); |
| | | // if (pallet == null) |
| | | // { |
| | | // throw new Exception("未查询到托盘信息"); |
| | | // } |
| | | // if (pallet.Status != "0") |
| | | // { |
| | | // throw new Exception("托盘状态不能未使用状态"); |
| | | // } |
| | | // //获取托盘信息 |
| | | // var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == "100099"); |
| | | // var pNum = 0; |
| | | // var bNum = 0; |
| | | |
| | | // new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); |
| | | |
| | | // var datetime = Db.GetDate(); |
| | | // Db.BeginTran(); |
| | | |
| | | // // 插入托盘绑定表 |
| | | // var modelpb = new BllPalletBind |
| | | // { |
| | | // ASNNo = "", |
| | | // ASNDetailNo = 0, |
| | | // TaskNo = "", //任务号 |
| | | // PalletNo = palletNo, |
| | | // Qty = palletNum, |
| | | // FullQty = pNum, |
| | | // Status = "3", //上架完成 |
| | | // Type = "1", //0 物料托 1 空托 |
| | | // LotNo = "", |
| | | // LotText = "", |
| | | // SupplierLot = "", |
| | | // InspectMark = "0", //0 否 1 是 |
| | | // BitPalletMark = pNum == palletNum ? "0" : "1", |
| | | // IsBale = "0", |
| | | // IsBelt = "0", |
| | | // CreateUser = 0, |
| | | // CreateTime = Db.GetDate() |
| | | // }; |
| | | // var id = Db.Insertable(modelpb).ExecuteReturnIdentity(); |
| | | |
| | | // #region 库存明细 |
| | | // var sd1 = new DataStockDetail() |
| | | // { |
| | | // LotNo = modelpb.LotNo, |
| | | // LotText = modelpb.LotText, |
| | | // SupplierLot = modelpb.SupplierLot, |
| | | // SkuNo = sku.SkuNo, |
| | | // SkuName = sku.SkuName, |
| | | // Standard = sku.Standard, |
| | | // Qty = modelpb.Qty, |
| | | // LockQty = 0, |
| | | // FrozenQty = 0, |
| | | // InspectQty = 0, |
| | | // ASNNo = modelpb.ASNNo, |
| | | // ASNDetailNo = modelpb.ASNDetailNo, |
| | | // WareHouseNo = "", |
| | | // RoadwayNo = "", |
| | | // AreaNo = "", |
| | | // LocatNo = "", |
| | | // PalletNo = modelpb.PalletNo, |
| | | // PalletNo2 = modelpb.PalletNo2, |
| | | // PalletNo3 = modelpb.PalletNo3, |
| | | // PalletTags = "0", |
| | | // CompleteTime = datetime, |
| | | // ProductionTime = modelpb.ProductionTime, |
| | | // ExpirationTime = modelpb.ExpirationTime, |
| | | // Status = "0", |
| | | // InspectMark = modelpb.InspectMark, |
| | | // InspectStatus = sku.IsInspect, |
| | | // BitPalletMark = modelpb.BitPalletMark, |
| | | // PackagNo = sku.PackagNo, |
| | | // IsBale = modelpb.IsBale, |
| | | // IsBelt = modelpb.IsBelt, |
| | | |
| | | |
| | | // IsDel = "0", |
| | | // CreateUser = 0, |
| | | // CreateTime = datetime |
| | | // }; |
| | | // var sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); |
| | | // #endregion |
| | | |
| | | // #region 库存 |
| | | // var dataStock1 = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo); |
| | | // if (dataStock1 != null) |
| | | // { |
| | | // dataStock1.Qty += modelpb.Qty; |
| | | // if (modelpb.InspectMark == "1") |
| | | // { |
| | | // dataStock1.IsSampling = "0"; |
| | | // } |
| | | // Db.Updateable(dataStock1).ExecuteCommand(); |
| | | // } |
| | | // else |
| | | // { |
| | | // var stock = new DataStock() |
| | | // { |
| | | // SkuNo = sku.SkuNo, |
| | | // SkuName = sku.SkuName, |
| | | // Standard = sku.Standard, |
| | | // LotNo = "", |
| | | // LotText = "", |
| | | // Qty = modelpb.Qty, |
| | | // LockQty = 0, |
| | | // FrozenQty = 0, |
| | | // IsSampling = "0", |
| | | // IsDel = "0", |
| | | // CreateUser = 0, |
| | | // CreateTime = datetime |
| | | // }; |
| | | // Db.Insertable(stock).ExecuteCommand(); |
| | | // } |
| | | // #endregion |
| | | |
| | | |
| | | // #region 申请储位 |
| | | |
| | | // SysStorageLocat locate; |
| | | // var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo); |
| | | // if (sku == null) |
| | | // { |
| | | // throw new Exception("物料信息中未查询到入库单明细包含的物料信息,不可入库"); |
| | | // } |
| | | // //判断物料是否含有类别信息 |
| | | // if (string.IsNullOrWhiteSpace(sku.CategoryNo)) |
| | | // { |
| | | // throw new Exception($"物料:{sku.SkuNo}未查询到类别信息"); |
| | | // } |
| | | |
| | | // var skuCategory = skuCategoryList.FirstOrDefault(m => m.CategoryNo == sku.CategoryNo); |
| | | // if (skuCategory == null) |
| | | // { |
| | | // throw new Exception($"未在类别信息中查询到物料:{sku.SkuNo}包含的类别"); |
| | | // } |
| | | |
| | | // var areaStr = skuCategory.AreaNo.Split(","); |
| | | // var areaList = new List<string>(); |
| | | // foreach (var item in areaStr) |
| | | // { |
| | | // areaList.Add(item); |
| | | // } |
| | | |
| | | // locate = allotLocate.GetSuiTableLocate(houseNo, areaList, "", ceng); |
| | | |
| | | |
| | | // #endregion |
| | | |
| | | // #region 添加任务 |
| | | |
| | | // //添加巷道使用记录 |
| | | // var log = new SysRoadwayUseLog |
| | | // { |
| | | // RoadwayNo = locateInfo.RoadwayNo, |
| | | // WareHouseNo = houseNo, |
| | | // Row = 0, |
| | | // Column = 0, |
| | | // Layer = 0, |
| | | // }; |
| | | // Db.Insertable(log).ExecuteCommand(); |
| | | // var taskNo = new Common().GetMaxNo("TK"); |
| | | // var inTask = new LogTask //入库任务 |
| | | // { |
| | | // TaskNo = taskNo, |
| | | // Sender = "WMS", |
| | | // Receiver = "WCS", |
| | | // IsSuccess = 1, //是否下发成功 0失败 1成功 |
| | | // SendDate = DateTime.Now, //发送时间 |
| | | // BackDate = DateTime.Now, //返回时间 |
| | | // StartRoadway = "", // 起始巷道 |
| | | // StartLocat = locate,//起始位置 |
| | | // EndLocat = locateInfo.LocatNo,//目标位置 |
| | | // EndRoadway = locateInfo.RoadwayNo, // 目标巷道 |
| | | // PalletNo = palletNo,//托盘码 |
| | | // IsSend = 1,//是否可再次下发 |
| | | // IsCancel = 1,//是否可取消 |
| | | // IsFinish = 1,//是否可完成 |
| | | // Type = "0",//任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | // Status = "1",//任务状态0:等待执行1正在执行2执行完成 |
| | | // OrderType = "0",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | // Msg = $"{locateInfo.LocatNo}到=>>" + + "的入库任务", //关键信息 |
| | | |
| | | // }; |
| | | // Db.Insertable(inTask).ExecuteCommand(); |
| | | // var asnNo = ""; |
| | | |
| | | // //添加托盘上架记录 |
| | | // var upShelf = new BllPalletUpShelf() |
| | | // { |
| | | // TaskNo = inTask.TaskNo, |
| | | // TraceNo = asnNo, |
| | | // PalletNo = palletNo, |
| | | // SkuNo = stockModel.SkuNo, |
| | | // SkuName = stockModel.SkuName, |
| | | // LotNo = stockModel.LotNo, |
| | | // Status = "1", |
| | | |
| | | // WareHouseNo = houseNo, |
| | | // RoadwayNo = locate.RoadwayNo, |
| | | // AreaNo = locate.AreaNo, |
| | | // LocatNo = locate.LocatNo, |
| | | |
| | | // CreateUser = 0, |
| | | // }; |
| | | // Db.Insertable(upShelf).ExecuteCommand(); |
| | | |
| | | |
| | | |
| | | // locate.Status = "2"; |
| | | // Db.Updateable(locate).ExecuteCommand(); |
| | | |
| | | // Db.CommitTran(); |
| | | // comDto = new OutCommandDto() |
| | | // { |
| | | // TaskNo = taskNo, // 任务号 |
| | | // TaskType = "0",// 任务类型 |
| | | // PalletNo = palletNo,//托盘号 |
| | | |
| | | // StartRoadway = inTask.StartRoadway, |
| | | // StartLocate = inTask.StartLocat, // 起始位置 |
| | | // EndLocate = inTask.EndLocat, // 目标位置 |
| | | // EndRoadway = inTask.EndRoadway, // 目标巷道 |
| | | |
| | | // Order = 999, |
| | | // Type = PLCTypeEnum.AGV |
| | | // }; |
| | | |
| | | // #endregion |
| | | |
| | | // // 更改托盘使用状态 |
| | | // string sqlStr = string.Empty; |
| | | // sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';"; |
| | | // Db.Ado.ExecuteCommand(sqlStr); |
| | | // Db.CommitTran(); |
| | | |
| | | // #endregion |
| | | |
| | | // return null; |
| | | //} |
| | | //catch (Exception e ) |
| | | //{ |
| | | // throw new Exception(e.Message); |
| | | //} |
| | | try |
| | | { |
| | | #region 判断 |
| | | if (string.IsNullOrEmpty(palletNo)) |
| | | { |
| | | throw new Exception("托盘号不能为空"); |
| | | } |
| | | if (string.IsNullOrEmpty(houseNo)) |
| | | { |
| | | throw new Exception("仓库号不能为空"); |
| | | } |
| | | if (palletNum <= 0) |
| | | { |
| | | throw new Exception("托盘数量不能小等0"); |
| | | } |
| | | if (string.IsNullOrEmpty(Strlocate)) |
| | | { |
| | | throw new Exception("起始位置不能为空"); |
| | | } |
| | | //获取储位信息 |
| | | var locateInfo = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.WareHouseNo == houseNo && m.LocatNo == Strlocate); |
| | | if (locateInfo == null) |
| | | { |
| | | throw new Exception("未查询到空储位"); |
| | | } |
| | | if (locateInfo.Flag != "0") |
| | | { |
| | | throw new Exception("当前位置标识状态是非正常的"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region MyRegion |
| | | |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList(); |
| | | if (stockDetail.Count > 0) |
| | | { |
| | | throw new Exception("当前托盘在库内已有库存信息,请核实"); |
| | | } |
| | | |
| | | //获取托盘信息 |
| | | var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo); |
| | | if (pallet == null) |
| | | { |
| | | throw new Exception("未查询到托盘信息"); |
| | | } |
| | | if (pallet.Status != "0") |
| | | { |
| | | throw new Exception("托盘状态不能未使用状态"); |
| | | } |
| | | //获取托盘信息 |
| | | var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == "100099"); |
| | | if (sku == null) |
| | | { |
| | | throw new Exception("物料信息中未查询到空托盘的物料信息,不可入库"); |
| | | } |
| | | var pNum = 0; |
| | | var bNum = 0; |
| | | |
| | | new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); |
| | | |
| | | var datetime = Db.GetDate(); |
| | | Db.BeginTran(); |
| | | |
| | | // 插入托盘绑定表 |
| | | var modelpb = new BllPalletBind |
| | | { |
| | | ASNNo = "", |
| | | ASNDetailNo = 0, |
| | | TaskNo = "", //任务号 |
| | | PalletNo = palletNo, |
| | | Qty = palletNum, |
| | | FullQty = pNum, |
| | | Status = "3", //上架完成 |
| | | Type = "1", //0 物料托 1 空托 |
| | | LotNo = "", |
| | | LotText = "", |
| | | SupplierLot = "", |
| | | InspectMark = "0", //0 否 1 是 |
| | | BitPalletMark = pNum == palletNum ? "0" : "1", |
| | | IsBale = "0", |
| | | IsBelt = "0", |
| | | CreateUser = 0, |
| | | CreateTime = Db.GetDate() |
| | | }; |
| | | var id = Db.Insertable(modelpb).ExecuteReturnIdentity(); |
| | | |
| | | #region 申请储位 |
| | | |
| | | SysStorageLocat locate = null; |
| | | |
| | | |
| | | //判断物料是否含有类别信息 |
| | | if (string.IsNullOrWhiteSpace(sku.CategoryNo)) |
| | | { |
| | | throw new Exception($"物料:{sku.SkuNo}未查询到类别信息"); |
| | | } |
| | | |
| | | var skuCategory = Db.Queryable<SysMaterialCategory>().First(m => m.IsDel == "0" && m.CategoryNo == sku.CategoryNo); |
| | | if (skuCategory == null) |
| | | { |
| | | throw new Exception($"未在类别信息中查询到物料:{sku.SkuNo}包含的类别"); |
| | | } |
| | | |
| | | var areaStr = skuCategory.AreaNo.Split(","); |
| | | var areaList = new List<string>(); |
| | | foreach (var item in areaStr) |
| | | { |
| | | areaList.Add(item); |
| | | } |
| | | var allotLocate = new AllotLocation(); |
| | | for (int i = 1; i <= 2; i++) |
| | | { |
| | | var iStr = i.ToString(); |
| | | locate = allotLocate.GetSuiTableLocate(houseNo, areaList, "", iStr); |
| | | if (locate != null) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 库存明细 |
| | | var sd1 = new DataStockDetail() |
| | | { |
| | | LotNo = modelpb.LotNo, |
| | | LotText = modelpb.LotText, |
| | | SupplierLot = modelpb.SupplierLot, |
| | | SkuNo = sku.SkuNo, |
| | | SkuName = sku.SkuName, |
| | | Standard = sku.Standard, |
| | | Qty = modelpb.Qty, |
| | | LockQty = 0, |
| | | FrozenQty = 0, |
| | | InspectQty = 0, |
| | | ASNNo = modelpb.ASNNo, |
| | | ASNDetailNo = modelpb.ASNDetailNo, |
| | | WareHouseNo = locate.WareHouseNo, |
| | | RoadwayNo = locate.RoadwayNo, |
| | | AreaNo = locate.AreaNo, |
| | | LocatNo = locate.LocatNo, |
| | | PalletNo = modelpb.PalletNo, |
| | | PalletNo2 = modelpb.PalletNo2, |
| | | PalletNo3 = modelpb.PalletNo3, |
| | | PalletTags = "0", |
| | | CompleteTime = datetime, |
| | | ProductionTime = modelpb.ProductionTime, |
| | | ExpirationTime = modelpb.ExpirationTime, |
| | | Status = "0", |
| | | InspectMark = modelpb.InspectMark, |
| | | InspectStatus = sku.IsInspect, |
| | | BitPalletMark = modelpb.BitPalletMark, |
| | | PackagNo = sku.PackagNo, |
| | | IsBale = modelpb.IsBale, |
| | | IsBelt = modelpb.IsBelt, |
| | | |
| | | |
| | | IsDel = "0", |
| | | CreateUser = 0, |
| | | CreateTime = datetime |
| | | }; |
| | | var sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); |
| | | #endregion |
| | | |
| | | #region 库存 |
| | | var dataStock1 = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo); |
| | | if (dataStock1 != null) |
| | | { |
| | | dataStock1.Qty += modelpb.Qty; |
| | | if (modelpb.InspectMark == "1") |
| | | { |
| | | dataStock1.IsSampling = "0"; |
| | | } |
| | | Db.Updateable(dataStock1).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | var stock = new DataStock() |
| | | { |
| | | SkuNo = sku.SkuNo, |
| | | SkuName = sku.SkuName, |
| | | Standard = sku.Standard, |
| | | LotNo = "", |
| | | LotText = "", |
| | | Qty = modelpb.Qty, |
| | | LockQty = 0, |
| | | FrozenQty = 0, |
| | | IsSampling = "0", |
| | | IsDel = "0", |
| | | CreateUser = 0, |
| | | CreateTime = datetime |
| | | }; |
| | | Db.Insertable(stock).ExecuteCommand(); |
| | | } |
| | | #endregion |
| | | |
| | | // 更改托盘使用状态 |
| | | string sqlStr = string.Empty; |
| | | sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';"; |
| | | Db.Ado.ExecuteCommand(sqlStr); |
| | | |
| | | #region 添加任务 |
| | | |
| | | //添加巷道使用记录 |
| | | var log = new SysRoadwayUseLog |
| | | { |
| | | RoadwayNo = locate.RoadwayNo, |
| | | WareHouseNo = houseNo, |
| | | Row = 0, |
| | | Column = 0, |
| | | Layer = 0, |
| | | }; |
| | | Db.Insertable(log).ExecuteCommand(); |
| | | var taskNo = new Common().GetMaxNo("TK"); |
| | | var inTask = new LogTask //入库任务 |
| | | { |
| | | TaskNo = taskNo, |
| | | Sender = "WMS", |
| | | Receiver = "WCS", |
| | | IsSuccess = 1, //是否下发成功 0失败 1成功 |
| | | SendDate = DateTime.Now, //发送时间 |
| | | BackDate = DateTime.Now, //返回时间 |
| | | StartRoadway = "", // 起始巷道 |
| | | StartLocat = Strlocate,//起始位置 |
| | | EndLocat = locateInfo.LocatNo,//目标位置 |
| | | EndRoadway = locateInfo.RoadwayNo, // 目标巷道 |
| | | PalletNo = palletNo,//托盘码 |
| | | IsSend = 1,//是否可再次下发 |
| | | IsCancel = 1,//是否可取消 |
| | | IsFinish = 1,//是否可完成 |
| | | Type = "0",//任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | Status = "1",//任务状态0:等待执行1正在执行2执行完成 |
| | | OrderType = "0",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | Msg = $"{locateInfo.LocatNo}到=>>" + locate.LocatNo + "的入库任务", //关键信息 |
| | | |
| | | }; |
| | | Db.Insertable(inTask).ExecuteCommand(); |
| | | var asnNo = ""; |
| | | |
| | | //添加托盘上架记录 |
| | | var upShelf = new BllPalletUpShelf() |
| | | { |
| | | TaskNo = inTask.TaskNo, |
| | | TraceNo = asnNo, |
| | | PalletNo = palletNo, |
| | | SkuNo = sku.SkuNo, |
| | | SkuName = sku.SkuName, |
| | | LotNo = "", |
| | | Status = "1", |
| | | |
| | | WareHouseNo = houseNo, |
| | | RoadwayNo = locate.RoadwayNo, |
| | | AreaNo = locate.AreaNo, |
| | | LocatNo = locate.LocatNo, |
| | | |
| | | CreateUser = 0, |
| | | }; |
| | | Db.Insertable(upShelf).ExecuteCommand(); |
| | | |
| | | |
| | | |
| | | locate.Status = "2"; |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | |
| | | var comDto = new OutCommandDto() |
| | | { |
| | | TaskNo = taskNo, // 任务号 |
| | | TaskType = "0",// 任务类型 |
| | | PalletNo = palletNo,//托盘号 |
| | | |
| | | StartRoadway = inTask.StartRoadway, |
| | | StartLocate = inTask.StartLocat, // 起始位置 |
| | | EndLocate = inTask.EndLocat, // 目标位置 |
| | | EndRoadway = inTask.EndRoadway, // 目标巷道 |
| | | |
| | | Order = 999, |
| | | Type = PLCTypeEnum.AGV |
| | | }; |
| | | |
| | | #endregion |
| | | |
| | | |
| | | Db.CommitTran(); |
| | | |
| | | #endregion |
| | | |
| | | return null; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | |
| | | |