|  |  |  | 
|---|
|  |  |  | WaveNo = a.WaveNo, | 
|---|
|  |  |  | IsDespatch = a.IsDespatch, | 
|---|
|  |  |  | Demo = a.Demo, | 
|---|
|  |  |  | OrderCode = a.OrderCode, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | CreateUserName = c.RealName, | 
|---|
|  |  |  | UpdateUserName = c.RealName, | 
|---|
|  |  |  | 
|---|
|  |  |  | inspectStatus = "1"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "1"://领料出库 | 
|---|
|  |  |  | if (house != "W02") | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new Exception("领料出库只能选择原料库"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //if (house != "W02") | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    throw new Exception("领料出库只能选择原料库"); | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | skuType = "(0,1,3)"; | 
|---|
|  |  |  | inspectStatus = "1"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|