| | |
| | | { |
| | | throw Oops.Bah("未查询到该出库单的信息"); |
| | | } |
| | | if (notice.Status != "3") |
| | | //if (notice.Status != "3") |
| | | //{ |
| | | // throw Oops.Bah("出库单的状态不是正在执行,不能拣货"); |
| | | //} |
| | | //2025年12月05日甲方要求超捡,出库单调整为执行完毕也可以超捡 |
| | | List<string> statusList = new List<string>() { "3", "4" }; |
| | | if (!statusList.Contains(notice.Status)) |
| | | { |
| | | throw Oops.Bah("出库单的状态不是正在执行,不能拣货"); |
| | | throw Oops.Bah("出库单的状态非正在执行,不能拣货"); |
| | | } |
| | | //出库单明细 |
| | | var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); |
| | |
| | | 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("拼托托盘上只能放同一个出库单下的物料!"); |
| | | //} |
| | | //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.GroupBy(e => e.SONo).Count() > 0 && pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | { |
| | | 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) |
| | | //{ |
| | | // throw Oops.Bah("一个托盘只能接受一个出库单拼托!"); |
| | | //} |
| | | //只允许绑定同一个出库单下的物料 |
| | | if (pinStockDetails.GroupBy(e => e.SONo).Count() > 0 && pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | { |
| | | throw Oops.Bah("拼托托盘上只能放同一个出库单下的物料!"); |
| | | 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 |
| | | |
| | |
| | | #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) |
| | |
| | | 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 |
| | | { |
| | |
| | | string skuName = boxInfos.First().SkuName; |
| | | |
| | | // 验证是否车间线边仓库 |
| | | var areaList = new List<string>() { "B06", "B07", "B09", "B24" }; |
| | | var areaList = new List<string>() { "B06", "B07", "B09", "B24", "B29" }; |
| | | if (!areaList.Contains(stockDetail.AreaNo)) |
| | | { |
| | | throw Oops.Bah("托盘不是车间托盘!"); |
| | |
| | | boxNo, "出库", $"在PDA上对箱号为:{boxNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (AppFriendlyException e) |
| | | { |
| | | Db.RollbackTran(); |
| | | } |
| | | //catch (AppFriendlyException e) |
| | | //{ |
| | | // Db.RollbackTran(); |
| | | //} |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | |
| | | } |
| | | |
| | | // 验证是否车间线边仓库 |
| | | var areaList = new List<string>() { "B06", "B07", "B09", "B24" }; |
| | | var areaList = new List<string>() { "B06", "B07", "B09", "B24", "B29" }; |
| | | if (!areaList.Contains(stockDetail.AreaNo)) |
| | | { |
| | | throw Oops.Bah("托盘不是车间托盘!"); |
| | |
| | | throw Oops.Bah("出库明细为空,请选择物料-批次"); |
| | | } |
| | | |
| | | var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "0" && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId)).Select(m => m.PalletNo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | //var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "0" && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId)).Select(m => m.PalletNo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | //获取状态为0待下发、1任务下发、2待拣货、3部分拣货的出库单 |
| | | List<string> statusList = new List<string>() { "0", "1", "2", "3" }; |
| | | var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && statusList.Contains(m.Status) && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId)).Select(m => m.PalletNo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | |
| | | return allotList; |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | if (type == "1")//平库出库获取单据 |
| | | { |
| | | var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "1" || m.Status == "0")).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | List<string> statusList = new List<string>() { "0", "1", "2", "3" }; |
| | | var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && statusList.Contains(m.Status)).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | return allotList; |
| | | } |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | |
| | | { |
| | | throw Oops.Bah("单据为空,请选择单据"); |
| | | } |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.Status == "0" || m.Status == "1")); |
| | | //获取状态为0待下发、1任务下发、2待拣货、3部分拣货的出库单 |
| | | List<string> statusList = new List<string>() { "0", "1", "2", "3" }; |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && (statusList.Contains(m.Status))); |
| | | |
| | | var list = await allotList.GroupBy(m => new { m.SODetailNo, m.SkuNo, m.SkuName, m.LotNo }).Select(m => new DetailIdSkuLotNo() |
| | | { |