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