| | |
| | | throw Oops.Bah("出库单的状态不是正在执行,不能拣货"); |
| | | } |
| | | //出库单明细 |
| | | var noticeDetail = await Db.Queryable<BllExportNoticeDetail>() |
| | | .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); |
| | | var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); |
| | | if (noticeDetail == null) |
| | | { |
| | | throw Oops.Bah("未查询到该出库单明细的信息"); |
| | | } |
| | | //出库分配信息 |
| | | var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => |
| | | m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.SONo == soNo && |
| | | m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo); |
| | | var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo); |
| | | if (allot == null) |
| | | { |
| | | throw Oops.Bah("未查询到该托盘的分配信息"); |
| | |
| | | bool isNew = false; |
| | | |
| | | var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo); |
| | | //var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew); |
| | | |
| | | if (pinStockDetail != null) |
| | | { |
| | | //修改托盘表状态让托盘表和库存明细表保持一致 |
| | | string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'"; |
| | | int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql); |
| | | Db.CommitTran(); |
| | | |
| | | if (palletNo != palletNoNew)//非整托拣货 |
| | | { |
| | | var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList(); |
| | | //if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | //{ |
| | | // throw Oops.Bah("拼托托盘上只能放同一个出库单下的物料!"); |
| | | //} |
| | | //if (pinStockDetails.GroupBy(e => e.SONo).Count() > 0 && pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | //{ |
| | | // throw Oops.Bah("拼托托盘上只能放同一个出库单下的物料!"); |
| | | //} |
| | | //var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList(); |
| | | var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew).ToList(); |
| | | //只允许绑定同一个出库单下的物料 |
| | | if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | { |
| | | throw Oops.Bah("拼托托盘上只能放同一个出库单下的物料!"); |
| | | } |
| | | } |
| | | |
| | | sdId = pinStockDetail.Id; |
| | |
| | | if (newPalletInfo.Status == "0") |
| | | { |
| | | var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && (m.SkuNo != stockDetail.SkuNo || m.LotNo != stockDetail.LotNo)).ToList(); |
| | | //if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | //{ |
| | | // throw Oops.Bah("一个托盘只能接受一个出库单拼托!"); |
| | | //} |
| | | //if (pinStockDetails.GroupBy(e => e.SONo).Count() > 0 && pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | //{ |
| | | // throw Oops.Bah("拼托托盘上只能放同一个出库单下的物料!"); |
| | | //} |
| | | //只允许绑定同一个出库单下的物料 |
| | | if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | { |
| | | throw Oops.Bah("一个托盘只能接受一个出库单拼托!"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | |
| | | sd.UDF5 = "1"; |
| | | //新增拼托库存明细信息 |
| | | sdId = await Db.Insertable(sd).ExecuteReturnIdentityAsync(); |
| | | |
| | | //修改托盘表状态让托盘表和库存明细表保持一致 |
| | | string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'"; |
| | | int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql); |
| | | } |
| | | #endregion |
| | | |
| | |
| | | throw Oops.Bah("出库单的状态不是正在执行,不能拣货"); |
| | | } |
| | | //出库单明细 |
| | | var noticeDetail = await Db.Queryable<BllExportNoticeDetail>() |
| | | .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); |
| | | var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); |
| | | if (noticeDetail == null) |
| | | { |
| | | throw Oops.Bah("未查询到该出库单明细的信息"); |
| | | } |
| | | //出库分配信息 |
| | | var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => |
| | | m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo && |
| | | m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo); |
| | | var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo); |
| | | if (allot == null) |
| | | { |
| | | throw Oops.Bah("未查询到该托盘的分配信息"); |
| | |
| | | #region 拼托信息 |
| | | bool isNew = false; |
| | | var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo); |
| | | //var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew); |
| | | if (pinStockDetail != null) |
| | | { |
| | | //修改托盘表状态让托盘表和库存明细表保持一致 |
| | | string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'"; |
| | | int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql); |
| | | Db.CommitTran(); |
| | | |
| | | if (palletNo != palletNoNew)//非整托拣货 |
| | | { |
| | | var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList(); |
| | | //var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList(); |
| | | var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew).ToList(); |
| | | if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | { |
| | | throw Oops.Bah("拼托托盘上只能放同一个出库单下的物料!"); |
| | |
| | | { |
| | | isNew = true; |
| | | |
| | | var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0"); |
| | | //var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0"); |
| | | var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew); |
| | | if (newPalletInfo == null) |
| | | { |
| | | throw Oops.Bah("新托盘信息不存在!"); |
| | | } |
| | | if (newPalletInfo.Status == "0") |
| | | { |
| | | var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && (m.SkuNo != stockDetail.SkuNo && m.LotNo != stockDetail.LotNo)).ToList(); |
| | | if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | |
| | | |
| | | if (isNew) |
| | | { |
| | | var sd = new DataStockDetail(); |
| | | var sd = new DataStockDetail |
| | | { |
| | | LotNo = stockDetail.LotNo, |
| | | LotText = stockDetail.LotText, |
| | | SupplierLot = stockDetail.SupplierLot, |
| | | SkuNo = stockDetail.SkuNo, |
| | | SkuName = stockDetail.SkuName, |
| | | Standard = stockDetail.Standard, |
| | | |
| | | sd.LotNo = stockDetail.LotNo; |
| | | sd.LotText = stockDetail.LotText; |
| | | sd.SupplierLot = stockDetail.SupplierLot; |
| | | sd.SkuNo = stockDetail.SkuNo; |
| | | sd.SkuName = stockDetail.SkuName; |
| | | sd.Standard = stockDetail.Standard; |
| | | Qty = int.Parse(PickQty), |
| | | LockQty = int.Parse(PickQty), |
| | | |
| | | sd.Qty = int.Parse(PickQty); |
| | | sd.LockQty = int.Parse(PickQty); |
| | | FrozenQty = 0, |
| | | InspectQty = 0, |
| | | ASNNo = "", |
| | | ASNDetailNo = null, |
| | | SONo = soNo,//出库单号 |
| | | WareHouseNo = "", |
| | | RoadwayNo = "", |
| | | AreaNo = "", |
| | | LocatNo = "", |
| | | PalletNo = palletNoNew, |
| | | PalletNo2 = "", |
| | | PalletNo3 = "", |
| | | //PalletType = item.PalletType, |
| | | CompleteTime = nowDate, |
| | | ProductionTime = stockDetail.ProductionTime, |
| | | ExpirationTime = stockDetail.ExpirationTime, |
| | | Status = "2",//状态,已分配 |
| | | InspectMark = stockDetail.InspectMark, |
| | | InspectStatus = stockDetail.InspectStatus, |
| | | BitPalletMark = "0", |
| | | PackagNo = noticeDetail.PackagNo, |
| | | IsBale = stockDetail.IsBale, |
| | | IsBelt = stockDetail.IsBelt, |
| | | Demo = stockDetail.Demo, |
| | | OwnerName = stockDetail.OwnerName, |
| | | OwnerNo = stockDetail.OwnerNo, |
| | | SupplierName = stockDetail.SupplierName, |
| | | SupplierNo = stockDetail.SupplierNo, |
| | | |
| | | sd.FrozenQty = 0; |
| | | sd.InspectQty = 0; |
| | | sd.ASNNo = ""; |
| | | sd.ASNDetailNo = null; |
| | | sd.SONo = soNo;//出库单号 |
| | | sd.WareHouseNo = ""; |
| | | sd.RoadwayNo = ""; |
| | | sd.AreaNo = ""; |
| | | sd.LocatNo = ""; |
| | | sd.PalletNo = palletNoNew; |
| | | sd.PalletNo2 = ""; |
| | | sd.PalletNo3 = ""; |
| | | //PalletType = item.PalletType, |
| | | sd.CompleteTime = nowDate; |
| | | sd.ProductionTime = stockDetail.ProductionTime; |
| | | sd.ExpirationTime = stockDetail.ExpirationTime; |
| | | sd.Status = "2";//状态,已分配 |
| | | sd.InspectMark = stockDetail.InspectMark; |
| | | sd.InspectStatus = stockDetail.InspectStatus; |
| | | sd.BitPalletMark = "0"; |
| | | sd.PackagNo = noticeDetail.PackagNo; |
| | | sd.IsBale = stockDetail.IsBale; |
| | | sd.IsBelt = stockDetail.IsBelt; |
| | | sd.Demo = stockDetail.Demo; |
| | | sd.OwnerName = stockDetail.OwnerName; |
| | | sd.OwnerNo = stockDetail.OwnerNo; |
| | | sd.SupplierName = stockDetail.SupplierName; |
| | | sd.SupplierNo = stockDetail.SupplierNo; |
| | | |
| | | sd.IsDel = "0"; |
| | | sd.CreateUser = userId; |
| | | sd.CreateTime = nowDate; |
| | | sd.UDF5 = "1"; |
| | | |
| | | IsDel = "0", |
| | | CreateUser = userId, |
| | | CreateTime = nowDate, |
| | | UDF5 = "1" |
| | | }; |
| | | //新增拼托库存明细信息 |
| | | await Db.Insertable(sd).ExecuteReturnIdentityAsync(); |
| | | |
| | | //修改托盘表状态让托盘表和库存明细表保持一致 |
| | | string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'"; |
| | | int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql); |
| | | } |
| | | else |
| | | { |
| | |
| | | noticeDetail.CompleteQty += int.Parse(PickQty); |
| | | await Db.Updateable(noticeDetail).ExecuteCommandAsync(); |
| | | |
| | | var num = await Db.Queryable<BllExportNoticeDetail>() |
| | | .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); |
| | | var num = await Db.Queryable<BllExportNoticeDetail>().CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); |
| | | if (num <= 0) |
| | | { |
| | | notice.Status = "4"; //更改为执行完成 |
| | |
| | | boxNo, "出库", $"在PDA上对箱号为:{boxNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (AppFriendlyException e) |
| | | { |
| | | Db.RollbackTran(); |
| | | } |
| | | //catch (AppFriendlyException e) |
| | | //{ |
| | | // Db.RollbackTran(); |
| | | //} |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | |
| | | #endregion |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "车间出库", |
| | | skuModel.SkuName, "拣货", $"在PDA车间出库页上对::{skuModel.SkuName}的物料进行拣货操作", userId); |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "车间出库", skuModel.SkuName, "拣货", $"在PDA车间出库页上对:{skuModel.SkuName}的物料进行拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (AppFriendlyException e) |
| | | { |
| | | Db.RollbackTran(); |
| | | } |
| | | //catch (AppFriendlyException e) |
| | | //{ |
| | | // Db.RollbackTran(); |
| | | //} |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |