| | |
| | | { |
| | | try |
| | | { |
| | | List<string> roadways = ExistRoadwaysError(); |
| | | bool ErrorRoadway = false; |
| | | if (roadways!=null && roadways.Count>0) |
| | | { |
| | | ErrorRoadway = true; |
| | | } |
| | | Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode); |
| | | if (stockInfo==null) |
| | | { |
| | |
| | | { |
| | | locationCounts = locationCounts.Where(x => x.RoadwayNo != "SC03_YLDual").ToList(); |
| | | } |
| | | |
| | | roadwayNo = HandleRoadway(locationCounts, warehouse); |
| | | roadwayNo = HandleRoadway(locationCounts, warehouse, ErrorRoadway ? roadways : null); |
| | | } |
| | | } |
| | | else |
| | |
| | | { |
| | | bool LayerLimit = stockInfo.CheckThickness > 1300; |
| | | bool RoadwayLimit = stockInfo.MaterielWide > 2200; |
| | | bool RoadwayType = stockInfo.PalletType == LocationTypeEnum.MediumPallet.ObjToInt(); |
| | | var query = Db.Queryable<Dt_LocationInfo>() |
| | | .Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | && x.LocationStatus == (int)LocationStatusEnum.Free |
| | |
| | | }) |
| | | .OrderBy(x => x.RoadwayNo) |
| | | .ToList(); |
| | | |
| | | roadwayNo = HandleRoadway(locationCounts, warehouse); |
| | | if (RoadwayType) |
| | | { |
| | | foreach (var item in locationCounts) |
| | | { |
| | | if (item.RoadwayNo.Contains("YLDual")) |
| | | { |
| | | int count = Db.Queryable<Dt_LocationInfo>() |
| | | .Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | && x.LocationStatus == (int)LocationStatusEnum.Free |
| | | && x.EnableStatus == (int)EnableStatusEnum.Normal |
| | | && x.LocationType==LocationTypeEnum.MediumPallet.ObjToInt() |
| | | && x.RoadwayNo == item.RoadwayNo).Count(); |
| | | item.Count = count; |
| | | } |
| | | } |
| | | } |
| | | roadwayNo = HandleRoadway(locationCounts, warehouse, ErrorRoadway ? roadways : null); |
| | | } |
| | | else if (stockInfo.CheckThickness >= 400 && stockInfo.CheckThickness < 800 && stockInfo.MaterielWide >= 700 && stockInfo.MaterielWide <= 2500) |
| | | { |
| | | bool RoadwayType = stockInfo.PalletType == LocationTypeEnum.MediumPallet.ObjToInt(); |
| | | //è·ååé
|
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo.Contains("YLDual") && (stockInfo.PalletType == LocationTypeEnum.MediumPallet.ObjToInt() ? x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt() : x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt())).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).OrderBy(x => x.RoadwayNo).ToList(); |
| | | |
| | | roadwayNo = HandleRoadway(locationCounts, warehouse); |
| | | if (RoadwayType) |
| | | { |
| | | foreach (var item in locationCounts) |
| | | { |
| | | if (item.RoadwayNo.Contains("YLDual")) |
| | | { |
| | | int count = Db.Queryable<Dt_LocationInfo>() |
| | | .Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | && x.LocationStatus == (int)LocationStatusEnum.Free |
| | | && x.EnableStatus == (int)EnableStatusEnum.Normal |
| | | && x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt() |
| | | && x.RoadwayNo == item.RoadwayNo).Count(); |
| | | item.Count = count; |
| | | } |
| | | } |
| | | } |
| | | roadwayNo = HandleRoadway(locationCounts, warehouse, ErrorRoadway ? roadways : null); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | //å¤çåé
å··é 任塿°é |
| | | public string HandleRoadway(List<LocationCount> locationCounts, Dt_Warehouse warehouse) |
| | | public string HandleRoadway(List<LocationCount> locationCounts, Dt_Warehouse warehouse,List<string> roadways=null) |
| | | { |
| | | if (roadways != null) |
| | | { |
| | | locationCounts = locationCounts.Where(x => !roadways.Contains(x.RoadwayNo)).ToList(); |
| | | } |
| | | //å··éä»»å¡åé
æ°é |
| | | List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | && locationCounts.Select(j => j.RoadwayNo).Distinct().Contains(x.Roadway) |
| | | && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | |
| | | foreach (var item in locationCounts) |
| | | { |
| | | LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo); |
| | |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | _unitOfWorkManage.BeginTran(); |
| | | _inboundRepository.MESProInOrderInfoRepository.AddData(AddMESProInOrders); |
| | | if (AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.åæå.ObjToInt()).Count() > 0) |
| | | List<Dt_MESProInOrderInfo> mESProInOrderInfos = AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.åæå.ObjToInt()).ToList(); |
| | | if (mESProInOrderInfos.Count > 0) |
| | | { |
| | | List<PB_INV_PRODUCT_INItem> pRODUCT_INItems = new List<PB_INV_PRODUCT_INItem>(); |
| | | foreach (var item in mESProInOrderInfos) |
| | | { |
| | | PB_INV_PRODUCT_INItem pB_INV_PRODUCT_INItem = new PB_INV_PRODUCT_INItem() |
| | | { |
| | | WP_ID = item.ProcessNum, |
| | | INV_BARCODE=item.BarCode, |
| | | REMARK = "åæåå
¥åº", |
| | | QTY=(int)item.ProQuantity |
| | | }; |
| | | pRODUCT_INItems.Add(pB_INV_PRODUCT_INItem); |
| | | } |
| | | string request = _invokeERPService.ERPSemiProInUp( |
| | | new ERPProInUpModel() |
| | | { |
| | | PB_INV_PRODUCT_IN= pRODUCT_INItems |
| | | }) ?? throw new Exception("åæåå
¥åºæ¥å£è¯·æ±å¤±è´¥"); |
| | | //çæåæåå
¥åº |
| | | WebResponseContent webResponse = SemiProInbound(AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.åæå.ObjToInt()).ToList()); |
| | | if (!webResponse.Status) |
| | |
| | | } |
| | | return content; |
| | | } |
| | | /// <summary> |
| | | /// æåå
¥åºæ«ç è¯·æ±æ´æ°æ¡ç |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent InBoundPalletCode(int taskNum, string barCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | //è·åå½åä»»å¡ |
| | | Dt_Task? taskExist = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (taskExist==null) |
| | | { |
| | | return content.Error($"æªæ¾å°ä»»å¡{taskNum}"); |
| | | } |
| | | //夿åºå䏿¯å¦åå¨éå¤æçæ¡ç |
| | | Dt_ProStockInfo? proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x=>x.PalletCode==barCode); |
| | | if (proStockInfo!=null) |
| | | { |
| | | return content.Error($"åºåæ¡ç {proStockInfo.PalletCode}å·²åå¨"); |
| | | } |
| | | Dt_ProStockInfo proStockInfoExist = _stockRepository.ProStockInfoRepository.QueryFirst(x=>x.PalletCode== taskExist.PalletCode); |
| | | //æ´æ° |
| | | proStockInfoExist.PalletCode = barCode; |
| | | taskExist.PalletCode = barCode; |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stockRepository.ProStockInfoRepository.UpdateData(proStockInfoExist); |
| | | BaseDal.UpdateData(taskExist); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |