wangxinhui
2025-10-17 ce40df5daffae0d17b4e9fa7cb6d677afaa4d66f
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs
@@ -29,7 +29,7 @@
        /// <summary>
        /// åˆ†é…è´§ä½
        /// </summary>
        public Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId, string beRelocationCode = "", int heightType = 0)
        public Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId, Dt_StockInfo? stockInfo = null)
        {
            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehouseId);
            if (warehouse == null)
@@ -48,7 +48,7 @@
            return warehouse.WarehouseCode switch
            {
                "LLDCP" or  "LLDFL" => AssignLocation(roadwayNo),
                "LLDYL" => AssignLocationYL(roadwayNo, palletTypeInfo),
                "LLDYL" => AssignLocationYL(roadwayNo, palletTypeInfo, stockInfo),
                _ => throw new Exception($"未找到仓库货位分配方法")
            };
        }
@@ -89,7 +89,7 @@
        /// åŽŸæ–™åˆ†é…è´§ä½
        /// </summary>
        /// <returns></returns>
        public Dt_LocationInfo? AssignLocationYL(string roadwayNo, Dt_PalletTypeInfo palletTypeInfo)
        public Dt_LocationInfo? AssignLocationYL(string roadwayNo, Dt_PalletTypeInfo palletTypeInfo,Dt_StockInfo stockInfo)
        {
            lock (_AssignLocationYL)
            {
@@ -108,7 +108,6 @@
                {
                    { nameof(Dt_LocationInfo.Columns),OrderByType.Desc },
                    { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
                    { nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
                    { nameof(Dt_LocationInfo.Row),OrderByType.Asc }
                };
                if (roadwayNo.Contains("YLDual"))
@@ -124,12 +123,17 @@
                        Dt_LocationInfo locationInfo = new Dt_LocationInfo();
                        foreach (var item in locationInfosMedium)
                        {
                            if (item.Layer == 7 || item.Layer == 8)
                            {
                                locationInfo = item;
                                break;
                            }
                            //获取更改库位
                            Dt_LocationInfo? nearLocation1;
                            Dt_LocationInfo? nearLocation2;
                            nearLocation1 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.Row == item.Row && x.Layer == item.Layer && x.Depth == item.Depth && x.Columns == item.Columns - 1);
                            nearLocation2 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.Row == item.Row && x.Layer == item.Layer && x.Depth == item.Depth && x.Columns == item.Columns + 1);
                            nearLocation1 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && x.Row == item.Row && x.Layer == item.Layer && x.Depth == item.Depth && x.Columns == item.Columns - 1);
                            nearLocation2 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && x.Row == item.Row && x.Layer == item.Layer && x.Depth == item.Depth && x.Columns == item.Columns + 1);
                            if (nearLocation1!=null && nearLocation2!=null)
                            {
                                locationInfo = item;
@@ -141,7 +145,12 @@
                }
                else
                {
                    return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//查询空货位信息并排除5分钟内分配的货位,根据层、列、深度、行排序
                    bool LayerLimit = false;
                    if (stockInfo.MaterielThickness > 1300)
                    {
                        LayerLimit = true;
                    }
                    return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode) && (LayerLimit ? x.Columns >= 56 : x.Columns <= 55), orderBy);//查询空货位信息并排除5分钟内分配的货位,根据层、列、深度、行排序
                }
                
            }
@@ -167,7 +176,6 @@
        {
            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
            List<Dt_PalletTypeInfo> palletTypeInfos = _basicRepository.PalletTypeInfoRepository.QueryData(x => x.WarehouseId == warehouseId);
            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehouseId);
            Dt_PalletTypeInfo? palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouseId);
@@ -219,7 +227,7 @@
                    }
                }
                if (palletTypeInfos.FirstOrDefault(x => x.LocaitonCount == 2) != null)
                if (warehouse.WarehouseCode == WarehouseEnum.LLDYL.ToString() && palletTypeInfo.LocaitonCount == 2 && location.RoadwayNo.Contains("Dual"))
                {
                    //获取更改库位
                    Dt_LocationInfo? nearLocation1;
@@ -255,45 +263,6 @@
                            }
                        }
                        locations.AddRange(nearLocations);
                    }
                }
            }
            else
            {
                for (int i = 0; i < locations.Count; i++)
                {
                    if (locations[i].LocationCode == location.LocationCode)
                    {
                        locations[i].LocationStatus = locationStatus.ObjToInt();
                    }
                    else
                    {
                        if (locationStatus == LocationStatusEnum.Lock)
                        {
                            if (locations[i].LocationStatus == LocationStatusEnum.InStock.ObjToInt())
                            {
                                locations[i].LocationStatus = LocationStatusEnum.InStockLock.ObjToInt();
                            }
                            else if (locations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt())
                            {
                                locations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt();
                            }
                        }
                        else if (locationStatus == LocationStatusEnum.Free || locationStatus == LocationStatusEnum.InStock)
                        {
                            if (locations[i].LocationStatus == LocationStatusEnum.InStockLock.ObjToInt())
                            {
                                locations[i].LocationStatus = LocationStatusEnum.InStock.ObjToInt();
                            }
                            else if (locations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt())
                            {
                                locations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt();
                            }
                        }
                    }
                    if (locations[i].LocationType != palletType.ObjToInt())
                    {
                        locations[i].LocationType = palletType.ObjToInt();
                    }
                }
            }