| | |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.PalletNo), it => it.PalletNo.Contains(model.PalletNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LocatNo), it => it.LocatNo.Contains(model.LocatNo.Trim())) |
| | | .AndIF(!string.IsNullOrEmpty(model.RoadwayNo), a => a.RoadwayNo == model.RoadwayNo) |
| | | .AndIF(!string.IsNullOrEmpty(model.WareHouseNo), a => a.RoadwayNo == model.WareHouseNo) |
| | | .AndIF(!string.IsNullOrEmpty(model.WareHouseNo), a => a.WareHouseNo == model.WareHouseNo) |
| | | .AndIF(strList.Count>0, it => strList.Contains((int)it.ASNDetailNo)) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => it.LotNo.Contains(model.LotNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LotText), it => it.LotText.Contains(model.LotText.Trim())) |
| | |
| | | //查询托盘绑定信息(状态为等待入库的) |
| | | var palletBindList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "2").ToList(); |
| | | var haveLocate = palletBindList.FirstOrDefault(m => !string.IsNullOrWhiteSpace(m.LocatNo)); |
| | | |
| | | |
| | | var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); |
| | | //物料类别信息 |
| | | var skuCategoryList = Db.Queryable<SysMaterialCategory>().Where(m => m.IsDel == "0").ToList(); |
| | | |
| | | var skuNo = ""; //入库物料 |
| | | |
| | | if (palletBindList.Count >= 1) //正常入库 |
| | | { |
| | | var bindIdList = palletBindList.Select(m => m.Id).ToList(); |
| | | //var bindIdList = palletBindList.Select(m => m.Id).ToList(); |
| | | //判断是否有零箱 |
| | | foreach (var item in bindIdList) |
| | | { |
| | | var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BindNo == item); |
| | | if (boxInfo.Count(m => m.BitBoxMark == "1") > 0) |
| | | { |
| | | throw new Exception($"{palletNo}托盘上有零箱,请入零箱库!"); |
| | | } |
| | | } |
| | | //foreach (var item in bindIdList) |
| | | //{ |
| | | // var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BindNo == item); |
| | | // if (boxInfo.Count(m => m.BitBoxMark == "1") > 0) |
| | | // { |
| | | // throw new Exception($"{palletNo}托盘上有零箱,请入零箱库!"); |
| | | // } |
| | | //} |
| | | |
| | | var palletBind = palletBindList.FirstOrDefault(m => m.Status == "1"); |
| | | if (palletBind != null) |
| | |
| | | { |
| | | isHaveLocateNo = true; //已有指定储位 |
| | | } |
| | | |
| | | if (palletBindList.First().Type == "0") //物料托入库 |
| | | { |
| | | //判断是否绑定单据及单据状态是否正常 |
| | |
| | | { |
| | | throw new Exception("托盘存在物料未绑定入库单,不可入库!"); |
| | | } |
| | | |
| | | if (notice.Status == "3") |
| | | { |
| | | throw new Exception($"入库单{item.ASNNo}已关闭,不可入库!"); |
| | | } |
| | | } |
| | | |
| | | //获取物料存放区域 |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => |
| | | m.IsDel == "0" && m.Id == palletBindList.First().ASNDetailNo); |
| | | if (noticeDetail == null) |
| | | { |
| | | throw new Exception("托盘存在物料未绑定入库单明细,不可入库"); |
| | | } |
| | | |
| | | skuNo = noticeDetail.SkuNo; |
| | | |
| | | } |
| | | else if(palletBindList.First().Type == "1")//空托盘 |
| | | { |
| | | skuNo = "100099"; |
| | | } |
| | | } |
| | | else //回流入库 |
| | |
| | | { |
| | | throw new Exception($"{palletNo}托盘条码不具有箱码信息,不可入库!"); |
| | | } |
| | | else |
| | | { |
| | | //判断是否有零箱 |
| | | var detailIdList = stockDetail.Select(m => m.Id).ToList(); |
| | | var dataBoxInfo = Db.Queryable<DataBoxInfo>().Where(m => detailIdList.Contains(m.StockDetailId)).ToList(); |
| | | if (dataBoxInfo.Count(m => m.BitBoxMark == "1")>0) |
| | | { |
| | | throw new Exception($"{palletNo}托盘上有零箱,不可入库!"); |
| | | } |
| | | skuNo = stockDetail.First().SkuNo; |
| | | //else |
| | | //{ |
| | | // //判断是否有零箱 |
| | | // var detailIdList = stockDetail.Select(m => m.Id).ToList(); |
| | | // var dataBoxInfo = Db.Queryable<DataBoxInfo>().Where(m => detailIdList.Contains(m.StockDetailId)).ToList(); |
| | | // if (dataBoxInfo.Count(m => m.BitBoxMark == "1")>0) |
| | | // { |
| | | // throw new Exception($"{palletNo}托盘上有零箱,不可入库!"); |
| | | // } |
| | | |
| | | } |
| | | //} |
| | | |
| | | |
| | | //获取对应回库规则 |
| | | var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetName == "托盘回库验证" && a.IsEnable == "NO"); |
| | |
| | | } |
| | | else |
| | | { |
| | | locate = allotLocate.GetSuiTableLocate(houseNo, roadwayNo); |
| | | var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo); |
| | | if (sku == null) |
| | | { |
| | | throw new Exception("物料信息中未查询到入库单明细包含的物料信息,不可入库"); |
| | | } |
| | | //判断物料是否含有类别信息 |
| | | if (string.IsNullOrWhiteSpace(sku.CategoryNo)) |
| | | { |
| | | throw new Exception($"物料:{sku.SkuNo}未查询到类别信息"); |
| | | } |
| | | |
| | | var skuCategory = skuCategoryList.FirstOrDefault(m => m.CategoryNo == sku.CategoryNo); |
| | | if (skuCategory == null) |
| | | { |
| | | throw new Exception($"未在类别信息中查询到物料:{sku.SkuNo}包含的类别"); |
| | | } |
| | | |
| | | var areaStr = skuCategory.AreaNo.Split(","); |
| | | var areaList = new List<string>(); |
| | | foreach (var item in areaStr) |
| | | { |
| | | areaList.Add(item); |
| | | } |
| | | |
| | | locate = allotLocate.GetSuiTableLocate(houseNo, areaList, roadwayNo); |
| | | } |
| | | Db.BeginTran(); |
| | | try |
| | |
| | | #region 库存明细 |
| | | var sd = new DataStockDetail() |
| | | { |
| | | LotNo = noticeDetail.LotNo, |
| | | LotNo = item.LotNo, |
| | | LotText = noticeDetail.LotText, |
| | | SupplierLot = noticeDetail.SupplierLot, |
| | | SkuNo = noticeDetail.SkuNo, |
| | |
| | | |
| | | #region 库存 |
| | | var dataStock = Db.Queryable<DataStock>().First(m => |
| | | m.IsDel == "0" && m.SkuNo == noticeDetail.SkuNo && m.LotNo == noticeDetail.LotNo); |
| | | m.IsDel == "0" && m.SkuNo == noticeDetail.SkuNo && m.LotNo == item.LotNo); |
| | | if (dataStock != null) |
| | | { |
| | | dataStock.Qty += item.Qty; |
| | |
| | | SkuNo = noticeDetail.SkuNo, |
| | | SkuName = noticeDetail.SkuName, |
| | | Standard = noticeDetail.Standard, |
| | | LotNo = noticeDetail.LotNo, |
| | | LotNo = item.LotNo, |
| | | LotText = noticeDetail.LotText, |
| | | Qty = item.Qty, |
| | | LockQty = 0, |
| | |
| | | AllotLocation allotLocate = new AllotLocation(); |
| | | try |
| | | { |
| | | locate = allotLocate.GetSuiTableLocate("W01", taskModel.EndRoadway); |
| | | var skuNo = ""; |
| | | if (asnNo != "回流托盘") |
| | | { |
| | | //获取物料存放区域 |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => |
| | | m.IsDel == "0" && m.Id == palletBindModel.ASNDetailNo); |
| | | if (noticeDetail == null) |
| | | { |
| | | throw new Exception("托盘存在物料未绑定入库单明细,不可入库"); |
| | | } |
| | | |
| | | skuNo = noticeDetail.SkuNo; |
| | | } |
| | | else |
| | | { |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == model.PalletNo).ToList(); |
| | | if (stockDetail.Count == 0) |
| | | { |
| | | throw new Exception($"{model.PalletNo}托盘条码不具有箱码信息,不可入库!"); |
| | | } |
| | | skuNo = stockDetail.First().SkuNo; |
| | | } |
| | | |
| | | var sku = Db.Queryable<SysMaterials>().First(m =>m.IsDel =="0" && m.SkuNo == skuNo); |
| | | if (sku == null) |
| | | { |
| | | throw new Exception("物料信息中未查询到入库单明细包含的物料信息,不可入库"); |
| | | } |
| | | //判断物料是否含有类别信息 |
| | | if (string.IsNullOrWhiteSpace(sku.CategoryNo)) |
| | | { |
| | | throw new Exception($"物料:{sku.SkuNo}未查询到类别信息"); |
| | | } |
| | | |
| | | var skuCategory = Db.Queryable<SysMaterialCategory>().First(m =>m.IsDel=="0" && m.CategoryNo == sku.CategoryNo); |
| | | if (skuCategory == null) |
| | | { |
| | | throw new Exception($"未在类别信息中查询到物料:{sku.SkuNo}包含的类别"); |
| | | } |
| | | |
| | | var areaStr = skuCategory.AreaNo.Split(","); |
| | | var areaList = new List<string>(); |
| | | foreach (var item in areaStr) |
| | | { |
| | | areaList.Add(item); |
| | | } |
| | | |
| | | locate = allotLocate.GetSuiTableLocate("W01", areaList, taskModel.EndRoadway); |
| | | } |
| | | catch (Exception ex) |
| | | { |