| | |
| | | WaveNo = a.WaveNo, |
| | | IsDespatch = a.IsDespatch, |
| | | Demo = a.Demo, |
| | | OrderCode = a.OrderCode, |
| | | |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = c.RealName, |
| | |
| | | inspectStatus = "0,1"; |
| | | break; |
| | | case "9"://生产领料出库 |
| | | if (house != "W02") |
| | | { |
| | | throw new Exception("生产领料出库只能选择原料库"); |
| | | } |
| | | //if (house != "W02") |
| | | //{ |
| | | // throw new Exception("生产领料出库只能选择原料库"); |
| | | //} |
| | | skuType = "(0,1,3)"; |
| | | inspectStatus = "1"; |
| | | break; |
| | |
| | | switch (model.WareHouseNo) |
| | | { |
| | | case "W01"://成品库 |
| | | if (skuList.Any(m => m.Type != "2")) |
| | | { |
| | | throw new Exception("仓库与出库物料不符"); |
| | | } |
| | | //if (skuList.Any(m => m.Type != "2")) |
| | | //{ |
| | | // throw new Exception("仓库与出库物料不符"); |
| | | //} |
| | | break; |
| | | case "W02"://原料库 |
| | | if (skuList.Any(m => m.Type == "2")) |
| | |
| | | { |
| | | throw new Exception("未查询到出库单据信息"); |
| | | } |
| | | if (notice.Origin != "WMS" || notice.Status != "0") |
| | | if (notice.Status != "0")//notice.Origin != "WMS" || |
| | | { |
| | | throw new Exception("参数异常,请检查状态是否未等待执行或来源是否是WMS"); |
| | | throw new Exception("参数异常,请检查状态是否未等待执行"); |
| | | } |
| | | |
| | | //总库存信息 |
| | |
| | | |
| | | var tray2 = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == item2.SkuNo |
| | | && m.LotNo == item2.LotNo && !slotList.Contains(m.LocatNo) && m.PalletTags == item2.PalletTags && okLan.Contains(m.RoadwayNo)).ToList(); |
| | | foreach (var s in tray2) |
| | | if (tray2.Count > 0) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(s.RoadwayNo))//判断是否在库外,如是跳过 |
| | | foreach (var s in tray2) |
| | | { |
| | | continue; |
| | | } |
| | | var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList(); |
| | | //判断是否有入库中、出库中、移入中、移出中 |
| | | if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0) |
| | | { |
| | | continue; |
| | | } |
| | | if (lan.Count(m => m.Status == "0") > 0) |
| | | { |
| | | |
| | | var bol = GetBecomingLocation(s.RoadwayNo, ref location); |
| | | if (bol && !string.IsNullOrWhiteSpace(location)) |
| | | if (string.IsNullOrWhiteSpace(s.RoadwayNo))//判断是否在库外,如是跳过 |
| | | { |
| | | newAddress = location; |
| | | return newAddress; |
| | | continue; |
| | | } |
| | | var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList(); |
| | | //判断是否有入库中、出库中、移入中、移出中 |
| | | if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0) |
| | | { |
| | | continue; |
| | | } |
| | | if (lan.Count(m => m.Status == "0") > 0) |
| | | { |
| | | |
| | | var bol = GetBecomingLocation(s.RoadwayNo, ref location); |
| | | if (bol && !string.IsNullOrWhiteSpace(location)) |
| | | { |
| | | newAddress = location; |
| | | return newAddress; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | if(string.IsNullOrEmpty(newAddress)) |
| | | { |
| | | //已有物品的巷道 |
| | | var roadwayHave = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == "W01").GroupBy(g => g.RoadwayNo).Select(s => s.RoadwayNo).ToList(); |
| | | //查找没有物品的巷道 |
| | | var roadwayNull = Db.Queryable<SysStorageRoadway>().Where(w => w.IsDel == "0" && w.WareHouseNo == "W01" && w.Status == "0" && okLan.Contains(w.RoadwayNo) && !roadwayHave.Contains(w.RoadwayNo)).Select(s => s.RoadwayNo).ToList(); |
| | | if (roadwayNull.Count > 0) |
| | | { |
| | | foreach (var itemRoad in roadwayNull) |
| | | { |
| | | var bol = GetBecomingLocation(itemRoad, ref location); |
| | | if (bol && !string.IsNullOrWhiteSpace(location)) |
| | | { |
| | | newAddress = location; |
| | | return newAddress; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | foreach (var itemRoad in roadwayHave) |
| | | { |
| | | var bol = GetBecomingLocation(itemRoad, ref location); |
| | | if (bol && !string.IsNullOrWhiteSpace(location)) |
| | | { |
| | | newAddress = location; |
| | | return newAddress; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | if (slotModel[0].Column > aisleRow) |
| | | { |
| | | // 取最上面一排 |
| | | location = slotModel[0].LocatNo; |
| | | |
| | | } |
| | | else |
| | | { |
| | | // 取最下面一排 |
| | | |
| | | location = slotModel[slotModel.Count - 1].LocatNo; |
| | | } |
| | | else |
| | | { |
| | | // 取最上面一排 |
| | | location = slotModel[0].LocatNo; |
| | | } |
| | | |
| | | bl = true; |
| | | } |