dengjunjie
2025-01-17 df97e66f99cf081abf212a8d97fc32afe9c6e7a7
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs
@@ -26,7 +26,7 @@
    public partial class LocationInfoService
    {
        public Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId)
        public Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId, string beRelocationCode = "", int heightType = 0)
        {
            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehouseId);
            if (warehouse == null)
@@ -51,11 +51,11 @@
            return warehouse.WarehouseCode switch
            {
                "HA57" => AssignLocation_BC(roadwayNo, palletType, palletTypeInfo),
                "HA58" => AssignLocation_PP(roadwayNo, palletType, palletTypeInfo),
                "HA152" => AssignLocation_GM(roadwayNo, palletType, palletTypeInfo),
                "HA64" => AssignLocation_CSJ(roadwayNo, palletType, palletTypeInfo),
                "阻焊仓" => AssignLocation_ZH(roadwayNo, palletType, palletTypeInfo),
                "HA57" => AssignLocation_BC(roadwayNo, palletType, palletTypeInfo, beRelocationCode, heightType),
                "HA58" => AssignLocation_PP(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
                "HA152" => AssignLocation_GM(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
                "HA64" => AssignLocation_CSJ(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
                "阻焊仓" => AssignLocation_ZH(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
                "HA153" => AssignLocation(roadwayNo),
                "HA71" => AssignLocation(roadwayNo),
                "HA60" => AssignLocation(roadwayNo),
@@ -93,7 +93,7 @@
                    { nameof(Dt_LocationInfo.Row),OrderByType.Asc }
                };
                return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//查询空货位信息并排除5分钟内分配的货位,根据层、列、深度、行排序
                return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//查询空货位信息并排除5分钟内分配的货位,根据层、列、深度、行排序
            }
        }
@@ -165,6 +165,10 @@
                }
                Dt_LocationInfo? nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
                if(location.RoadwayNo == "SC01_BC")
                {
                    nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
                }
                if (nearLocation != null)
                {
                    List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation);
@@ -270,7 +274,7 @@
            List<Dt_PalletTypeInfo> palletTypeInfos = _basicRepository.PalletTypeInfoRepository.QueryData(x => x.WarehouseId == warehousId);
            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehousId);
            Dt_PalletTypeInfo? palletTypeInfo = palletTypeInfos.FirstOrDefault(x => x.PalletType == palletType && x.WarehouseId == warehousId);
            if (palletTypeInfo == null)
            if (palletTypeInfo == null || warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
            {
                if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA71.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
                {
@@ -337,39 +341,48 @@
                        nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
                    }
                    if (location.RoadwayNo == "SC01_BC")
                    {
                        nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
                    }
                    if (nearLocation != null)
                    {
                        List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation);
                        for (int i = 0; i < nearLocations.Count; i++)
                        {
                            if (nearLocations[i].LocationType != palletType)
                            List<int> palletTypes = palletTypeInfos.Select(x => x.PalletType).ToList();
                            palletTypes.Add(0);
                            if (palletTypes.Contains(nearLocations[i].LocationType))
                            {
                                nearLocations[i].LocationType = palletType;
                            }
                                if (nearLocations[i].LocationType != palletType)
                                {
                                    nearLocations[i].LocationType = palletType;
                                }
                            if (locationStatus == LocationStatusEnum.Lock)
                            {
                                if (nearLocations[i].LocationStatus == LocationStatusEnum.InStock.ObjToInt())
                                if (locationStatus == LocationStatusEnum.Lock)
                                {
                                    nearLocations[i].LocationStatus = LocationStatusEnum.InStockLock.ObjToInt();
                                    if (nearLocations[i].LocationStatus == LocationStatusEnum.InStock.ObjToInt())
                                    {
                                        nearLocations[i].LocationStatus = LocationStatusEnum.InStockLock.ObjToInt();
                                    }
                                    else if (nearLocations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt())
                                    {
                                        nearLocations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt();
                                    }
                                }
                                else if (nearLocations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt())
                                else if (locationStatus == LocationStatusEnum.Free || locationStatus == LocationStatusEnum.InStock)
                                {
                                    nearLocations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt();
                                    if (nearLocations[i].LocationStatus == LocationStatusEnum.InStockLock.ObjToInt())
                                    {
                                        nearLocations[i].LocationStatus = LocationStatusEnum.InStock.ObjToInt();
                                    }
                                    else if (nearLocations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt())
                                    {
                                        nearLocations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt();
                                    }
                                }
                            }
                            else if (locationStatus == LocationStatusEnum.Free || locationStatus == LocationStatusEnum.InStock)
                            {
                                if (nearLocations[i].LocationStatus == LocationStatusEnum.InStockLock.ObjToInt())
                                {
                                    nearLocations[i].LocationStatus = LocationStatusEnum.InStock.ObjToInt();
                                }
                                else if (nearLocations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt())
                                {
                                    nearLocations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt();
                                }
                            }
                        }
                        locations.AddRange(nearLocations);
                    }
@@ -430,9 +443,11 @@
        {
            List<Dt_LocationInfo> groupLocations = new List<Dt_LocationInfo>() { location };
            int maxDepth = locationInfos.Max(x => x.Depth);
            int row = location.Row;
            for (int j = location.Depth + 1; j <= maxDepth; j++)
            {
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer);
                row += 1;
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row);
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
@@ -441,7 +456,8 @@
            for (int j = location.Depth - 1; j >= 1; j--)
            {
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer);
                row -= 1;
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row);
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
@@ -461,9 +477,11 @@
            List<Dt_LocationInfo> groupLocations = new List<Dt_LocationInfo>() { location };
            int maxDepth = locationInfos.Max(x => x.Depth);
            int row = location.Row;
            for (int j = location.Depth + 1; j <= maxDepth; j++)
            {
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer);
                row += 1;
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row);
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
@@ -472,7 +490,8 @@
            for (int j = location.Depth - 1; j >= 1; j--)
            {
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer);
                row -= 1;
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row);
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);