| | |
| | | } |
| | | //出库分配信息 |
| | | var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => |
| | | m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo && |
| | | 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) |
| | | { |
| | |
| | | await Db.Insertable(comList).ExecuteCommandAsync(); |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += pickQty; |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | await Db.Updateable(allot).ExecuteCommandAsync(); |
| | | |
| | |
| | | else |
| | | { |
| | | List<DataBoxInfo> boxInfos; |
| | | var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo); |
| | | var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo && m.Status == "2"); |
| | | if (await boxInfo.CountAsync() == 0) |
| | | { |
| | | throw Oops.Bah("未查询到该箱码的信息"); |
| | |
| | | await Db.Insertable(comList).ExecuteCommandAsync(); |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += pickQty; |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | |
| | | await Db.Updateable(allot).ExecuteCommandAsync(); |
| | |
| | | stockDetail.BitPalletMark = "1";//修改为零托标识 |
| | | stockDetail.Qty -= pickQty; |
| | | stockDetail.LockQty -= pickQty; |
| | | if (stockDetail.LockQty < 0) |
| | | { |
| | | stockDetail.LockQty = 0; |
| | | } |
| | | stockDetail.UDF5 = "1"; |
| | | if (stockDetail.Qty == stockDetail.LockQty) |
| | | { |
| | |
| | | |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += int.Parse(PickQty); |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | await Db.Updateable(allot).ExecuteCommandAsync(); |
| | | |
| | |
| | | return allotList; |
| | | } |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | | var allotList2 = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | var allotList2 = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | |
| | | //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | | //获取出库单据不为待拣货 执行完毕 订单关闭 等待执行的单据 |
| | |
| | | throw Oops.Bah("托盘码为空,请输入托盘码"); |
| | | } |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo); |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.PalletNo == palletNo); |
| | | //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && m.Status != "4" && m.Status != "5"); |
| | | if (!string.IsNullOrWhiteSpace(soNo)) |
| | | { |
| | |
| | | //获取出库口、规格、待拣及已拣数量(根据出库单明细ID、托盘号) |
| | | public async Task<OutPdaInfo> GetOutlets(string soDetailId, string palletNo) |
| | | { |
| | | var allotInfo = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToListAsync(); |
| | | var allotInfo = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3" || m.Status == "5")).ToListAsync(); |
| | | if (allotInfo.Count == 0) |
| | | { |
| | | throw Oops.Bah($"{palletNo}托盘上未查询到分配信息,请核实"); |
| | |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(soDetailId)) |
| | | { |
| | | var allotInfos = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToListAsync(); |
| | | var allotInfos = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3" || m.Status == "5")).ToListAsync(); |
| | | if (allotInfos.Count == 0) |
| | | { |
| | | throw Oops.Bah($"{palletNo}托盘上未查询到分配信息,请核实"); |
| | |
| | | { |
| | | throw Oops.Bah("未查询到该出库单的信息"); |
| | | } |
| | | if (notice.Status != "3") |
| | | if (notice.Status != "3" && notice.Status != "4") |
| | | { |
| | | throw Oops.Bah("出库单的状态不是正在执行,不能拣货"); |
| | | } |
| | |
| | | } |
| | | //出库分配信息 |
| | | var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => |
| | | m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo && |
| | | 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) |
| | | { |
| | |
| | | await Db.Insertable(comList).ExecuteCommandAsync(); |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += pickQty; |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | await Db.Updateable(allot).ExecuteCommandAsync(); |
| | | //删除库存明细 |
| | |
| | | //删除或修改库存 |
| | | stock.Qty -= pickQty; |
| | | stock.LockQty -= pickQty; |
| | | if (stock.LockQty < 0) |
| | | { |
| | | stock.LockQty = 0; |
| | | } |
| | | if (stock.Qty <= 0) |
| | | { |
| | | await Db.Deleteable(stock).ExecuteCommandAsync(); |
| | |
| | | throw Oops.Bah("该托盘与箱码没有绑定关系"); |
| | | } |
| | | var boxQty = boxInfos.First().Qty; |
| | | if (boxQty > needQty) |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于剩余待拣数量"); |
| | | } |
| | | //if (boxQty > needQty) |
| | | //{ |
| | | // throw Oops.Bah("拣货数量不能大于剩余待拣数量"); |
| | | //} |
| | | |
| | | foreach (var item in boxInfos) |
| | | { |
| | |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于箱内数量"); |
| | | } |
| | | if (Convert.ToInt32(pickQty1) > needQty) |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于剩余待拣数量"); |
| | | } |
| | | //if (Convert.ToInt32(pickQty1) > needQty) |
| | | //{ |
| | | // throw Oops.Bah("拣货数量不能大于剩余待拣数量"); |
| | | //} |
| | | |
| | | biaoShi = "2"; |
| | | } |
| | |
| | | throw Oops.Bah("该托盘与箱码没有绑定关系"); |
| | | } |
| | | var boxQty = await boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync(); |
| | | if (boxQty[0] > needQty) |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于箱内剩余待拣数量"); |
| | | } |
| | | //if (boxQty[0] > needQty) |
| | | //{ |
| | | // throw Oops.Bah("拣货数量不能大于箱内剩余待拣数量"); |
| | | //} |
| | | |
| | | foreach (var item in boxInfos) |
| | | { |
| | |
| | | await Db.Insertable(comList).ExecuteCommandAsync(); |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += pickQty; |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | if (allot.Status == "5") |
| | | { |
| | |
| | | stockDetail.BitPalletMark = "1";//修改为零托标识 |
| | | stockDetail.Qty -= pickQty; |
| | | stockDetail.LockQty -= pickQty; |
| | | if (stockDetail.LockQty < 0) |
| | | { |
| | | stockDetail.LockQty = 0; |
| | | } |
| | | if (stockDetail.Qty == stockDetail.LockQty) |
| | | { |
| | | stockDetail.Status = "2"; |
| | |
| | | } |
| | | stock.Qty -= pickQty; |
| | | stock.LockQty -= pickQty; |
| | | if (stock.LockQty < 0) |
| | | { |
| | | stock.LockQty = 0; |
| | | } |
| | | if (stock.Qty <= 0) |
| | | { |
| | | await Db.Deleteable(stock).ExecuteCommandAsync(); |
| | |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "拣货出库", soNo, "拣货", $"在PDA上对出库单号为:{soNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (AppFriendlyException e) |
| | | { |
| | | Db.RollbackTran(); |
| | | } |
| | | //catch (AppFriendlyException e) |
| | | //{ |
| | | // Db.RollbackTran(); |
| | | //} |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | |
| | | } |
| | | } |
| | | |
| | | //public async Task SoSetPick34(string soNo, string soDetailId, string palletNo, string boxNo, string pickQty1, int userId) |
| | | //{ |
| | | // Db.BeginTran(); |
| | | // try |
| | | // { |
| | | // #region 判断 |
| | | |
| | | // if (string.IsNullOrWhiteSpace(soNo)) |
| | | // { |
| | | // throw Oops.Bah("出库单据不能为空"); |
| | | // } |
| | | // if (string.IsNullOrWhiteSpace(soDetailId)) |
| | | // { |
| | | // throw Oops.Bah("出库物料-批次不能为空"); |
| | | // } |
| | | // if (string.IsNullOrWhiteSpace(palletNo)) |
| | | // { |
| | | // throw Oops.Bah("托盘码不能为空"); |
| | | // } |
| | | // //if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0) |
| | | // //{ |
| | | // // throw Oops.Bah("追溯条码和拣货数量不能同时输入"); |
| | | // //} |
| | | |
| | | // //出库单 |
| | | // var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.SONo == soNo); |
| | | // if (notice == null) |
| | | // { |
| | | // throw Oops.Bah("未查询到该出库单的信息"); |
| | | // } |
| | | // if (notice.Status != "3" && notice.Status != "4") |
| | | // { |
| | | // throw Oops.Bah("出库单的状态不是正在执行,不能拣货"); |
| | | // } |
| | | // //出库单明细 |
| | | // 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); |
| | | // if (allot == null) |
| | | // { |
| | | // throw Oops.Bah("未查询到该托盘的分配信息"); |
| | | // } |
| | | // //剩余拣货数量(待拣减去已拣) |
| | | // var needQty = allot.Qty - allot.CompleteQty; |
| | | |
| | | // //库存明细 |
| | | // var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == allot.StockId); |
| | | // if (stockDetail == null) |
| | | // { |
| | | // throw Oops.Bah("未查询到该托盘分配的库存明细信息!"); |
| | | // } |
| | | // //库存总表 |
| | | // var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo); |
| | | // if (stock == null) |
| | | // { |
| | | // throw Oops.Bah("未查询到该托盘分配的库存信息!"); |
| | | // } |
| | | // #endregion |
| | | |
| | | // if (string.IsNullOrWhiteSpace(boxNo))//整托拣货 |
| | | // { |
| | | // List<DataBoxInfo> boxInfos; |
| | | // var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);//找到托盘上所有箱码 |
| | | // boxInfos = await boxInfo.ToListAsync(); |
| | | // if (boxInfo.Count() <= 0) |
| | | // { |
| | | // throw Oops.Bah("该托盘上没有可拣货的箱子"); |
| | | // } |
| | | // var boxQty = await boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync(); |
| | | // if (boxQty[0] > needQty) |
| | | // { |
| | | // throw Oops.Bah("拣货数量不能大于箱内剩余待拣数量"); |
| | | // } |
| | | // decimal pickQty = 0;//拣货的数量 |
| | | // var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync(); |
| | | // var comList = new List<BllCompleteDetail>(); |
| | | // foreach (var item in boxInfos) |
| | | // { |
| | | // if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3) && item.BoxNo3 != null) |
| | | // { |
| | | // throw Oops.Bah($"当前{item.BoxNo}中{item.BoxNo3}已拣货完成,请勿重复拣货"); |
| | | // } |
| | | // if (item.SkuNo != allot.SkuNo || item.LotNo != allot.LotNo) |
| | | // { |
| | | // throw Oops.Bah("当前托盘上有其他不同物料批次,拣货失败"); |
| | | // } |
| | | // //添加拣货明细 |
| | | // var completeDetail = new BllCompleteDetail() |
| | | // { |
| | | // SONo = soNo, |
| | | // SODetailNo = int.Parse(soDetailId), |
| | | // ExportAllotId = allot.Id, |
| | | // StockId = allot.StockId, |
| | | // BoxNo = item.BoxNo, |
| | | // BoxNo2 = item.BoxNo2, |
| | | // BoxNo3 = item.BoxNo3, |
| | | |
| | | // LotNo = allot.LotNo, |
| | | // LotText = allot.LotText, |
| | | // SupplierLot = allot.SupplierLot, |
| | | // SkuNo = allot.SkuNo, |
| | | // SkuName = allot.SkuName, |
| | | // Standard = allot.Standard, |
| | | // PalletNo = palletNo, |
| | | // CompleteQty = item.Qty, |
| | | |
| | | // CreateUser = userId |
| | | // }; |
| | | // comList.Add(completeDetail); |
| | | |
| | | // //删除库存箱码明细 |
| | | // await Db.Deleteable(item).ExecuteCommandAsync(); |
| | | // pickQty += item.Qty; |
| | | // } |
| | | // //添加拣货明细 |
| | | // await Db.Insertable(comList).ExecuteCommandAsync(); |
| | | // //修改出库分配信息 |
| | | // allot.CompleteQty += pickQty; |
| | | // allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | // allot.UpdateTime = DateTime.Now; |
| | | // await Db.Updateable(allot).ExecuteCommandAsync(); |
| | | // //删除库存明细 |
| | | // await Db.Deleteable(stockDetail).ExecuteCommandAsync(); |
| | | // //删除或修改库存 |
| | | // stock.Qty -= pickQty; |
| | | // stock.LockQty -= pickQty; |
| | | // if (stock.LockQty < 0) |
| | | // { |
| | | // stock.LockQty = 0; |
| | | // } |
| | | // if (stock.Qty <= 0) |
| | | // { |
| | | // await Db.Deleteable(stock).ExecuteCommandAsync(); |
| | | // } |
| | | // else |
| | | // { |
| | | // await Db.Updateable(stock).ExecuteCommandAsync(); |
| | | // } |
| | | // //判断托盘上还有没有其他物料 |
| | | // var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != stockDetail.Id); |
| | | // if (palletData == null) |
| | | // { |
| | | // //改变托盘状态为:未使用 |
| | | // var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); |
| | | // if (pallet == null) |
| | | // { |
| | | // throw Oops.Bah("未在托盘表中查询到托盘信息"); |
| | | // } |
| | | // pallet.Status = "0"; |
| | | // await Db.Updateable(pallet).ExecuteCommandAsync(); |
| | | // } |
| | | |
| | | // //修改出库单明细拣货数量 |
| | | // noticeDetail.CompleteQty += pickQty; |
| | | // await Db.Updateable(noticeDetail).ExecuteCommandAsync(); |
| | | |
| | | // var num = await Db.Queryable<BllExportNoticeDetail>() |
| | | // .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); |
| | | // if (num <= 0) |
| | | // { |
| | | // notice.Status = "4"; //更改为执行完成 |
| | | // //修改出库单信息 |
| | | // await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | // if (notice.IsWave == "1") |
| | | // { |
| | | // var waveNum = await Db.Queryable<BllExportNotice>().CountAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4"); |
| | | // if (waveNum == 0) |
| | | // { |
| | | // var wave = await Db.Queryable<BllWaveMage>().FirstAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo); |
| | | // if (wave != null) |
| | | // { |
| | | // wave.Status = "4"; |
| | | // wave.UpdateUser = userId; |
| | | // wave.UpdateTime = DateTime.Now; |
| | | // await Db.Updateable(wave).ExecuteCommandAsync(); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // } |
| | | // else |
| | | // { |
| | | // var biaoShi = "0";//0:整箱拣货、1:整盒拣货、 2:散支拣货、3:数量拣货 |
| | | // List<DataBoxInfo> boxInfos; |
| | | // var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo); |
| | | // if (await boxInfo.CountAsync() == 0) |
| | | // { |
| | | // throw Oops.Bah("未查询到该箱码及追溯码的信息"); |
| | | // } |
| | | // boxInfos = await boxInfo.ToListAsync(); |
| | | |
| | | // var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList(); |
| | | // if (!string.IsNullOrWhiteSpace(boxNo3)) //散支拣货 |
| | | // { |
| | | // boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo3).ToList(); |
| | | |
| | | // if (boxInfos.Count() == 0) |
| | | // { |
| | | // throw Oops.Bah("未查询到该箱码及追溯码的信息"); |
| | | // } |
| | | // if (boxInfos.Count() > 1) |
| | | // { |
| | | // throw Oops.Bah("该追溯支码的信息大于1条,信息错误,请核实!"); |
| | | // } |
| | | |
| | | // if (boxInfos.Any(m => m.PalletNo != palletNo)) |
| | | // { |
| | | // throw Oops.Bah("该托盘与箱码没有绑定关系"); |
| | | // } |
| | | // var boxQty = boxInfos.First().Qty; |
| | | // //if (boxQty > needQty) |
| | | // //{ |
| | | // // throw Oops.Bah("拣货数量不能大于剩余待拣数量"); |
| | | // //} |
| | | |
| | | // foreach (var item in boxInfos) |
| | | // { |
| | | // if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) |
| | | // { |
| | | // throw Oops.Bah($"当前{item.BoxNo}中{item.BoxNo3}已拣货完成,请勿重复拣货"); |
| | | // } |
| | | // } |
| | | |
| | | // biaoShi = "1"; |
| | | // } |
| | | // else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//数量拣货 |
| | | // { |
| | | // if (boxInfo.Count() > 1) |
| | | // { |
| | | // throw Oops.Bah("该箱码内存在支码不能进行数量拣货"); |
| | | // } |
| | | // decimal boxQty = boxInfo.First().Qty; |
| | | // if (Convert.ToInt32(pickQty1) > boxQty) |
| | | // { |
| | | // throw Oops.Bah("拣货数量不能大于箱内数量"); |
| | | // } |
| | | // //if (Convert.ToInt32(pickQty1) > needQty) |
| | | // //{ |
| | | // // throw Oops.Bah("拣货数量不能大于剩余待拣数量"); |
| | | // //} |
| | | |
| | | // biaoShi = "2"; |
| | | // } |
| | | // else //整箱拣货 |
| | | // { |
| | | // if (boxInfo.Count() == 0) |
| | | // { |
| | | // throw Oops.Bah("未查询到该箱码的信息"); |
| | | // } |
| | | // if (boxInfo.Any(m => m.PalletNo != palletNo)) |
| | | // { |
| | | // throw Oops.Bah("该托盘与箱码没有绑定关系"); |
| | | // } |
| | | // var boxQty = await boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync(); |
| | | // //if (boxQty[0] > needQty) |
| | | // //{ |
| | | // // throw Oops.Bah("拣货数量不能大于箱内剩余待拣数量"); |
| | | // //} |
| | | |
| | | // foreach (var item in boxInfos) |
| | | // { |
| | | // if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo)) |
| | | // { |
| | | // throw Oops.Bah($"当前{item.BoxNo}已拣货完成,请勿重复拣货"); |
| | | // } |
| | | // } |
| | | // } |
| | | // decimal pickQty = 0;//拣货的数量 |
| | | |
| | | // var comList = new List<BllCompleteDetail>(); |
| | | // foreach (var item in boxInfos) |
| | | // { |
| | | // //添加拣货明细 |
| | | // var completeDetail = new BllCompleteDetail() |
| | | // { |
| | | // SONo = soNo, |
| | | // SODetailNo = int.Parse(soDetailId), |
| | | // ExportAllotId = allot.Id, |
| | | // StockId = allot.StockId, |
| | | // BoxNo = item.BoxNo, |
| | | // BoxNo2 = item.BoxNo2, |
| | | // BoxNo3 = item.BoxNo3, |
| | | |
| | | // LotNo = allot.LotNo, |
| | | // LotText = allot.LotText, |
| | | // SupplierLot = allot.SupplierLot, |
| | | // SkuNo = allot.SkuNo, |
| | | // SkuName = allot.SkuName, |
| | | // Standard = allot.Standard, |
| | | // PalletNo = palletNo, |
| | | // CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty, |
| | | |
| | | // CreateUser = userId |
| | | // }; |
| | | // comList.Add(completeDetail); |
| | | |
| | | // if (biaoShi != "2") |
| | | // { |
| | | // //删除库存箱码明细 |
| | | // await Db.Deleteable(item).ExecuteCommandAsync(); |
| | | // } |
| | | // else//数量拣货 |
| | | // { |
| | | // if (decimal.Parse(pickQty1) == item.Qty) |
| | | // { |
| | | // //删除库存箱码明细 |
| | | // await Db.Deleteable(item).ExecuteCommandAsync(); |
| | | // } |
| | | // else |
| | | // { |
| | | // item.Qty -= decimal.Parse(pickQty1); |
| | | // item.BitBoxMark = "1";//零箱标识 |
| | | // await Db.Updateable(item).ExecuteCommandAsync(); |
| | | // } |
| | | // } |
| | | // pickQty += item.Qty; |
| | | // } |
| | | // //改变库内箱码是否零箱信息 |
| | | // if (biaoShi == "1") |
| | | // { |
| | | // var boxSurplusList = boxInfo.Where(m => m.BoxNo3 != boxNo3).ToList(); |
| | | // foreach (var item in boxSurplusList) |
| | | // { |
| | | // item.BitBoxMark = "1"; |
| | | // await Db.Updateable(item).ExecuteCommandAsync(); |
| | | // } |
| | | // } |
| | | |
| | | // await Db.Insertable(comList).ExecuteCommandAsync(); |
| | | // //修改出库分配信息 |
| | | // allot.CompleteQty += pickQty; |
| | | // allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | // allot.UpdateTime = DateTime.Now; |
| | | // if (allot.Status == "5") |
| | | // { |
| | | // //判断该托盘是否还存在物料 存在改为待回库 待回库完成后改为已完成 |
| | | // } |
| | | // await Db.Updateable(allot).ExecuteCommandAsync(); |
| | | |
| | | // //删除或修改库存明细 |
| | | // stockDetail.BitPalletMark = "1";//修改为零托标识 |
| | | // stockDetail.Qty -= pickQty; |
| | | // stockDetail.LockQty -= pickQty; |
| | | // if (stockDetail.LockQty < 0) |
| | | // { |
| | | // stockDetail.LockQty = 0; |
| | | // } |
| | | // if (stockDetail.Qty == stockDetail.LockQty) |
| | | // { |
| | | // stockDetail.Status = "2"; |
| | | // } |
| | | // else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0) |
| | | // { |
| | | // stockDetail.Status = "1"; |
| | | // } |
| | | // else |
| | | // { |
| | | // stockDetail.Status = "0"; |
| | | // } |
| | | |
| | | // if (stockDetail.Qty <= 0) |
| | | // { |
| | | // await Db.Deleteable(stockDetail).ExecuteCommandAsync(); |
| | | // } |
| | | // else |
| | | // { |
| | | // await Db.Updateable(stockDetail).ExecuteCommandAsync(); |
| | | // } |
| | | // stock.Qty -= pickQty; |
| | | // stock.LockQty -= pickQty; |
| | | // if (stock.LockQty < 0) |
| | | // { |
| | | // stock.LockQty = 0; |
| | | // } |
| | | // if (stock.Qty <= 0) |
| | | // { |
| | | // await Db.Deleteable(stock).ExecuteCommandAsync(); |
| | | // } |
| | | // else |
| | | // { |
| | | // await Db.Updateable(stock).ExecuteCommandAsync(); |
| | | // } |
| | | // var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo); |
| | | // if (num2 <= 0) |
| | | // { |
| | | // //改变托盘状态 |
| | | // var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0"); |
| | | // if (pallet == null) |
| | | // { |
| | | // throw Oops.Bah("未在托盘表中查询到托盘信息"); |
| | | // } |
| | | // pallet.Status = "0"; |
| | | // await Db.Updateable(pallet).ExecuteCommandAsync(); |
| | | // } |
| | | // //修改出库单明细拣货数量 |
| | | // noticeDetail.CompleteQty += pickQty; |
| | | // await Db.Updateable(noticeDetail).ExecuteCommandAsync(); |
| | | |
| | | // var num = await Db.Queryable<BllExportNoticeDetail>() |
| | | // .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); |
| | | // if (num <= 0) |
| | | // { |
| | | // notice.Status = "4"; //更改为执行完成 |
| | | // //修改出库单信息 |
| | | // await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | // if (notice.IsWave == "1") |
| | | // { |
| | | // var waveNum = await Db.Queryable<BllExportNotice>() |
| | | // .CountAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4"); |
| | | // if (waveNum == 0) |
| | | // { |
| | | // var wave = await Db.Queryable<BllWaveMage>().FirstAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo); |
| | | // if (wave != null) |
| | | // { |
| | | // wave.Status = "4"; |
| | | // wave.UpdateUser = userId; |
| | | // wave.UpdateTime = DateTime.Now; |
| | | // await Db.Updateable(wave).ExecuteCommandAsync(); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // //添加操作日志记录 |
| | | // var k = new OperationSOServer().AddLogOperationSo("PDA模块", "拣货出库", soNo, "拣货", $"在PDA上对出库单号为:{soNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | // Db.CommitTran(); |
| | | // } |
| | | // //catch (AppFriendlyException e) |
| | | // //{ |
| | | // // Db.RollbackTran(); |
| | | // //} |
| | | // catch (Exception e) |
| | | // { |
| | | // Db.RollbackTran(); |
| | | // throw new Exception(e.Message); |
| | | // } |
| | | //} |
| | | //出库pda拣货 |
| | | public async Task SoSetQtyPick(string soNo, string soDetailId, string palletNo, string PickQty, int userId) |
| | | { |
| | |
| | | } |
| | | //出库分配信息 |
| | | var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => |
| | | m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo && |
| | | 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) |
| | | { |
| | |
| | | |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += int.Parse(PickQty); |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | await Db.Updateable(allot).ExecuteCommandAsync(); |
| | | |
| | |
| | | stockDetail.BitPalletMark = "1";//修改为零托标识 |
| | | stockDetail.Qty -= int.Parse(PickQty); |
| | | stockDetail.LockQty -= int.Parse(PickQty); |
| | | if (stockDetail.LockQty < 0) |
| | | { |
| | | stockDetail.LockQty = 0; |
| | | } |
| | | if (stockDetail.Qty == stockDetail.LockQty) |
| | | { |
| | | stockDetail.Status = "2"; |
| | |
| | | await Db.Insertable(comList).ExecuteCommandAsync(); |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += pickQty; |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | if (allot.Status == "5") |
| | | { |
| | |
| | | stockDetail.InspectMark = "1"; //抽检托标识 |
| | | stockDetail.Qty -= pickQty; |
| | | stockDetail.LockQty -= pickQty; |
| | | if (stockDetail.LockQty < 0) |
| | | { |
| | | stockDetail.LockQty = 0; |
| | | } |
| | | if (stockDetail.Qty == stockDetail.LockQty) |
| | | { |
| | | stockDetail.Status = "2"; |
| | |
| | | } |
| | | stock.Qty -= pickQty; |
| | | stock.LockQty -= pickQty; |
| | | if (stock.LockQty < 0) |
| | | { |
| | | stock.LockQty = 0; |
| | | } |
| | | stock.IsSampling = "1"; |
| | | if (stock.Qty <= 0) |
| | | { |
| | |
| | | |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += int.Parse(PickQty); |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | |
| | | allot.UpdateTime = DateTime.Now; |
| | | await Db.Updateable(allot).ExecuteCommandAsync(); |
| | |
| | | await Db.Insertable(comList).ExecuteCommandAsync(); |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += pickQty; |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | await Db.Updateable(allot).ExecuteCommandAsync(); |
| | | |
| | |
| | | await Db.Insertable(comList).ExecuteCommandAsync(); |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += pickQty; |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | if (allot.Status == "5") |
| | | { |
| | |
| | | |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += int.Parse(PickQty); |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | await Db.Updateable(allot).ExecuteCommandAsync(); |
| | | |