| | |
| | | |
| | | }).ToList(); |
| | | //库存总表 |
| | | var stock = stockRst.GetAllAsync().Select(it => new ExStockInfoDto |
| | | { |
| | | SkuNo = it.SkuNo, |
| | | SkuName = it.SkuName, |
| | | LotNo = it.LotNo, |
| | | Standard = it.Standard, |
| | | //Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty, |
| | | Qty = it.Qty - it.LockQty - it.FrozenQty, |
| | | //var stock = stockRst.GetAllAsync().Select(it => new ExStockInfoDto |
| | | //{ |
| | | // SkuNo = it.SkuNo, |
| | | // SkuName = it.SkuName, |
| | | // LotNo = it.LotNo, |
| | | // Standard = it.Standard, |
| | | // //Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty, |
| | | // Qty = it.Qty - it.LockQty - it.FrozenQty, |
| | | |
| | | }).ToList(); |
| | | //}).ToList(); |
| | | |
| | | foreach (var l in stockDetail.ToArray()) |
| | | { |
| | | var fq = stock.Where(s => s.SkuNo == l.SkuNo); |
| | | if (!string.IsNullOrWhiteSpace(l.LotNo)) |
| | | { |
| | | fq = fq.Where(s => s.LotNo == l.LotNo); |
| | | } |
| | | else |
| | | { |
| | | fq = fq.Where(s => string.IsNullOrWhiteSpace(s.LotNo)); |
| | | } |
| | | var f = fq.FirstOrDefault(); |
| | | if (f == null) |
| | | { |
| | | throw new Exception("库存信息错误,请核实"); |
| | | } |
| | | if (f.Qty != null && f.Qty.Value < l.Qty) |
| | | { |
| | | l.Qty = f.Qty.Value; |
| | | } |
| | | if (l.Qty <= 0) |
| | | { |
| | | stockDetail.Remove(l); |
| | | } |
| | | } |
| | | //foreach (var l in stockDetail.ToArray()) |
| | | //{ |
| | | // var fq = stock.Where(s => s.SkuNo == l.SkuNo); |
| | | // if (!string.IsNullOrWhiteSpace(l.LotNo)) |
| | | // { |
| | | // fq = fq.Where(s => s.LotNo == l.LotNo); |
| | | // } |
| | | // else |
| | | // { |
| | | // fq = fq.Where(s => string.IsNullOrWhiteSpace(s.LotNo)); |
| | | // } |
| | | // var f = fq.FirstOrDefault(); |
| | | // if (f == null) |
| | | // { |
| | | // throw new Exception("库存信息错误,请核实"); |
| | | // } |
| | | // if (f.Qty != null && f.Qty.Value < l.Qty) |
| | | // { |
| | | // l.Qty = f.Qty.Value; |
| | | // } |
| | | // if (l.Qty <= 0) |
| | | // { |
| | | // stockDetail.Remove(l); |
| | | // } |
| | | //} |
| | | |
| | | return stockDetail; |
| | | |
| | |
| | | { |
| | | throw new Exception("未查询到任务信息"); |
| | | } |
| | | //获取对应库位信息 |
| | | var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); |
| | | if (startlocat == null) |
| | | if (task.OrderType == "0" || task.OrderType == "3")//入库或移库 |
| | | { |
| | | throw new Exception("未查询到储位信息"); |
| | | } |
| | | startlocat.Status = "0";//修改分配信息状态 |
| | | //获取储位信息 |
| | | var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); |
| | | //获取移库任d务对应目标储位信息 |
| | | SysStorageLocat endlocat = new SysStorageLocat(); |
| | | if (task.Type == "2") |
| | | { |
| | | endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.EndLocat); |
| | | //获取目标库位信息 |
| | | var endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == task.EndLocat); |
| | | if (endlocat == null) |
| | | { |
| | | throw new Exception("未查询到目标储位信息"); |
| | | } |
| | | } |
| | | if (locat == null) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw new Exception("未查询到储位信息,请核实!"); |
| | | } |
| | | locat.Status = "1"; //有物品 |
| | | Db.Updateable(locat).ExecuteCommand(); |
| | | if (endlocat != null) |
| | | { |
| | | endlocat.Status = "0"; //空储位 0 |
| | | endlocat.Status = "0";//空储位 |
| | | //修改目标储位状态 |
| | | Db.Updateable(endlocat).ExecuteCommand(); |
| | | } |
| | | |
| | | if (task.OrderType == "1" || task.OrderType == "3")//出库或移库 |
| | | { |
| | | //获取起始库位信息 |
| | | var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == task.StartLocat); |
| | | if (startlocat == null) |
| | | { |
| | | throw new Exception("未查询到起始储位信息"); |
| | | } |
| | | startlocat.Status = "1";//有物品 |
| | | //修改起始储位状态 |
| | | Db.Updateable(startlocat).ExecuteCommand(); |
| | | } |
| | | //修改任务 |
| | | task.IsSuccess = 1; |
| | | task.IsSend = 0; |
| | |
| | | task.Status = "4"; |
| | | task.CancelDate = DateTime.Now; |
| | | Db.Updateable(task).ExecuteCommand(); |
| | | |
| | | //出库分配信息 |
| | | var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.TaskNo == taskNo).ToList(); |
| | | foreach (var item in allot) |
| | | { |
| | | item.Status = "0";//修改分配信息状态 |
| | | item.TaskNo = ""; |
| | | var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo); |
| | | if (noticeDetail == null) |
| | | { |
| | | throw new Exception("未查询到出库单明细信息"); |
| | | } |
| | | |
| | | noticeDetail.FactQty -= item.Qty; //修改出库单明细的下架数量 |
| | | Db.Updateable(noticeDetail).ExecuteCommand(); |
| | | |
| | | if (noticeDetail.FactQty == 0) |
| | | { |
| | | var noticeDetail2 = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo && m.Id != noticeDetail.Id).ToList(); |
| | | var num = noticeDetail2.Count(m => m.FactQty > 0); |
| | | //判断出库单的所有明细是否都为0;如果为0变更出库单状态为已分配 |
| | | if (num == 0) |
| | | { |
| | | var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo); |
| | | notice.Status = "2"; |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | } |
| | | } |
| | | } |
| | | //判断是否存在分配信息 |
| | | if (allot == null) |
| | | { |
| | | //获取库存明细 |
| | | var stockDetail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.PalletNo == task.PalletNo); |
| | | //获取库存 |
| | | var datastock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo); |
| | | //获取储位信息 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == stockDetail.LocatNo); |
| | | |
| | | //判断是否为空托盘 |
| | | if (stockDetail.SkuNo == "100099") |
| | | { |
| | | //修改库存明细 |
| | | stockDetail.LockQty -= stockDetail.Qty; //锁定数量 |
| | | stockDetail.Status = "0"; //库存状态 0:待分配 |
| | | |
| | | //修改库存总表 |
| | | datastock.LockQty -= (int)stockDetail.Qty; //锁定数量 |
| | | |
| | | //修改储位状态 |
| | | locate.Status = "1"; //储位状态 1:有物品 |
| | | |
| | | Db.Updateable(stockDetail).ExecuteCommand(); |
| | | Db.Updateable(datastock).ExecuteCommand(); |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | //修改储位状态 |
| | | locate.Status = "1"; //储位状态 1:有物品 |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | Db.Updateable(allot).ExecuteCommand(); |
| | | } |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库日志", taskNo, "取消", $"点击取消按钮、取消了任务号为:{taskNo}的任务", (int)userId); |