| | |
| | | { |
| | | 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); |