wangxinhui
昨天 9ce6731460179c71f0f2c636b2a1598324d5194e
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs
@@ -76,7 +76,7 @@
                Dictionary<string, OrderByType> orderBy = new Dictionary<string, OrderByType>()
                {
                    { nameof(Dt_LocationInfo.Column),OrderByType.Desc },
                    { nameof(Dt_LocationInfo.Columns),OrderByType.Desc },
                    { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
                    { nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
                    { nameof(Dt_LocationInfo.Row),OrderByType.Asc }
@@ -106,7 +106,7 @@
                
                Dictionary<string, OrderByType> orderBy = new Dictionary<string, OrderByType>()
                {
                    { nameof(Dt_LocationInfo.Column),OrderByType.Desc },
                    { nameof(Dt_LocationInfo.Columns),OrderByType.Desc },
                    { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
                    { nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
                    { nameof(Dt_LocationInfo.Row),OrderByType.Asc }
@@ -128,8 +128,8 @@
                            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.Column == item.Column - 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.Column == item.Column + 1);
                            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);
                            if (nearLocation1!=null && nearLocation2!=null)
                            {
                                locationInfo = item;
@@ -162,159 +162,6 @@
            UpdateLocationStatus(location, palletType, locationStatus, warehousId);
        }
        /// <summary>
        /// ä¿®æ”¹è´§ä½çŠ¶æ€åŠç±»åž‹
        /// </summary>
        /// <param name="location">货位对象</param>
        /// <param name="palletType">托盘类型</param>
        /// <param name="locationStatus">货位状态</param>
        //public void UpdateLocationStatus2(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehousId)
        //{
        //    List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
        //    List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, location);
        //    if (locationInfos.Max(x => x.Depth) < 3)
        //    {
        //        for (int i = 0; i < locations.Count; i++)
        //        {
        //            if (locations[i].LocationType != palletType.ObjToInt())
        //            {
        //                locations[i].LocationType = palletType.ObjToInt();
        //            }
        //            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();
        //                    }
        //                }
        //            }
        //        }
        //        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);
        //            for (int i = 0; i < nearLocations.Count; i++)
        //            {
        //                if (nearLocations[i].LocationType != palletType.ObjToInt())
        //                {
        //                    nearLocations[i].LocationType = palletType.ObjToInt();
        //                }
        //                if (palletType.ObjToInt() >= PalletTypeEnum.LargePallet.ObjToInt())
        //                {
        //                    if (nearLocations[i].LocationCode == nearLocation.LocationCode)
        //                    {
        //                        nearLocations[i].LocationStatus = locationStatus.ObjToInt();
        //                    }
        //                    else
        //                    {
        //                        if (locationStatus == LocationStatusEnum.Lock)
        //                        {
        //                            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 (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);
        //        }
        //    }
        //    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();
        //            }
        //        }
        //    }
        //    if (locations.Where(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt()).Count() == locations.Count && locationStatus == LocationStatusEnum.Free)
        //    {
        //        locations.ForEach(x =>
        //        {
        //            x.LocationType = 0;
        //        });
        //    }
        //    Repository.UpdateData(locations);
        //}
        public void UpdateLocationStatus(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehouseId)
        {
@@ -378,8 +225,8 @@
                    Dt_LocationInfo? nearLocation1;
                    Dt_LocationInfo? nearLocation2;
                    nearLocation1 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
                    nearLocation2 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
                    nearLocation1 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Columns == location.Columns - 1);
                    nearLocation2 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Columns == location.Columns + 1);
                    if (nearLocation1 != null && nearLocation2 != null)
@@ -467,7 +314,7 @@
            for (int j = location.Depth + 1; j <= maxDepth; j++)
            {
                row += 1;
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row);
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Columns == location.Columns && x.Layer == location.Layer && x.Row == row);
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
@@ -477,7 +324,7 @@
            for (int j = location.Depth - 1; j >= 1; j--)
            {
                row -= 1;
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row);
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Columns == location.Columns && x.Layer == location.Layer && x.Row == row);
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
@@ -500,7 +347,7 @@
            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 && (x.Row == row + 1 || x.Row == row - 1));
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Columns == location.Columns && x.Layer == location.Layer && (x.Row == row + 1 || x.Row == row - 1));
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);
@@ -509,7 +356,7 @@
            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 && (x.Row == row + 1 || x.Row == row - 1));
                Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Columns == location.Columns && x.Layer == location.Layer && (x.Row == row + 1 || x.Row == row - 1));
                if (locationInfo != null)
                {
                    groupLocations.Add(locationInfo);