xiazhengtongxue
2026-03-23 ded7dffbb1fbed96acd8cc10c7710f4d848384e9
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs
@@ -160,20 +160,20 @@
        }
        public string AccessingTunnel(int WarehouseId, int LocationType)
        public string AccessingTunnel(int WarehouseId, int LocationType, int taskCount)
        {
            List<Dt_LocationInfo> locationData = BaseDal.QueryData(x => x.WarehouseId == WarehouseId);
            var roadwayGroups = locationData.Where(x => x.LocationType == LocationType && x.LocationStatus== (int)LocationStatusEnum.Free && x.EnableStatus== (int)EnableStatusEnum.Normal).GroupBy(x => x.RoadwayNo)
            .Select(g => new
            {
                RoadwayNo = g.Key,
                LocationCount = g.Count(),
                LocationCount = g.Count() - taskCount,
            }).OrderByDescending(g => g.LocationCount).ToList();
            int minRequired = 15;
            int minRequired = 3;
            if(WarehouseId== (int)WarehouseEnum.YMYL)
            {
                if (LocationType == 2) minRequired = 6;
                if (LocationType == 2) minRequired = 2;
                var selectedRoadway = roadwayGroups.FirstOrDefault(g => g.LocationCount >= minRequired);
                if(selectedRoadway!=null) return selectedRoadway.RoadwayNo;
@@ -375,15 +375,16 @@
            return WebResponseContent.Instance.OK("成功", result);
        }
        // ç»§ç»­åˆ†ï¼ŒWarehouseId =1,有两个不同的货物,LocationType =1和2
        public WebResponseContent GetWarehouseCapacity()
        {
            // æŸ¥è¯¢æ‰€æœ‰ä»“库的货位数据
            // æŸ¥è¯¢æ‰€æœ‰ä»“库的货位数据,包含货位类型
            var allLocations = BaseDal.QueryData()
                .Select(x => new
                {
                    x.WarehouseId,
                    x.LocationStatus
                    x.LocationStatus,
                    x.LocationType  // æ·»åŠ è´§ä½ç±»åž‹
                })
                .ToList();
@@ -393,15 +394,21 @@
                return WebResponseContent.Instance.OK("未找到任何货位数据", new List<object>());
            }
            // è®¡ç®—每个仓库的容量使用情况
            // æŒ‰ä»“库和货位类型分组统计
            var result = allLocations
                .GroupBy(x => x.WarehouseId)
                .GroupBy(x => new { x.WarehouseId, x.LocationType })
                .Select(g => new
                {
                    WarehouseId = g.Key,
                    WarehouseId = g.Key.WarehouseId,
                    LocationType = g.Key.LocationType,
                    TotalLocations = g.Count(),
                    FreeLocations = g.Count(x => x.LocationStatus == 0),
                    UsedLocations = g.Count(x => x.LocationStatus == 1),
                    OccupancyRate = (int)Math.Round((double)g.Count(x => x.LocationStatus == 1) / g.Count() * 100),
                    RemainingCapacityPercentage = (int)Math.Round((double)g.Count(x => x.LocationStatus == 0) / g.Count() * 100)
                })
                .OrderBy(x => x.WarehouseId)
                .ThenBy(x => x.LocationType)
                .ToList();
            return WebResponseContent.Instance.OK("成功", result);