| | |
| | | using HslCommunication.WebSocket; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using SqlSugar; |
| | |
| | | using WIDESEA_Common.CommonEnum; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public string AccessingTunnel(int WarehouseId, int LocationType) |
| | | { |
| | | List<Dt_LocationInfo> locationData = BaseDal.QueryData(x => x.WarehouseId == WarehouseId); |
| | | var roadwayGroups = locationData |
| | | .Where(x => x.LocationType == LocationType) |
| | | .GroupBy(x => x.RoadwayNo) |
| | | .Select(g => new |
| | | { |
| | | RoadwayNo = g.Key, |
| | | LocationCount = g.Count(), |
| | | AllLocations = g.ToList() |
| | | }) |
| | | .OrderByDescending(g => g.LocationCount) // æ¹ä¸ºéåºæåº |
| | | .FirstOrDefault(); // å第ä¸ä¸ªï¼æ°éæå¤çï¼ |
| | | var roadwayGroups = locationData.Where(x => x.LocationType == LocationType && x.EnableStatus== (int)EnableStatusEnum.Normal).GroupBy(x => x.RoadwayNo) |
| | | .Select(g => new |
| | | { |
| | | RoadwayNo = g.Key, |
| | | LocationCount = g.Count(), |
| | | }).OrderByDescending(g => g.LocationCount).ToList(); |
| | | |
| | | return roadwayGroups.RoadwayNo; |
| | | int minRequired = 15; |
| | | if(WarehouseId== (int)WarehouseEnum.YMYL) |
| | | { |
| | | if (LocationType == 2) minRequired = 6; |
| | | |
| | | var selectedRoadway = roadwayGroups.FirstOrDefault(g => g.LocationCount >= minRequired); |
| | | if(selectedRoadway!=null) return selectedRoadway.RoadwayNo; |
| | | |
| | | } |
| | | else |
| | | { |
| | | var selectedRoadway = roadwayGroups.FirstOrDefault(g => g.LocationCount >= minRequired); |
| | | if(selectedRoadway == null) |
| | | { |
| | | selectedRoadway = roadwayGroups.FirstOrDefault(g => g.RoadwayNo == "5" && g.LocationCount != 0); |
| | | |
| | | } |
| | | if(selectedRoadway != null) return selectedRoadway.RoadwayNo; |
| | | } |
| | | |
| | | return "0"; |
| | | } |
| | | |
| | | |
| | |
| | | if (emptyLocations[i].Depth == 1)//夿æ¯å¦1æ·±è´§ä½ |
| | | { |
| | | //æ¥è¯¢æ·±åºä½ |
| | | int emprow = emptyLocations[i].Row == 2 ? 1 : 4; |
| | | //int emprow = emptyLocations[i].Row == 2 ? 1 : 4; |
| | | int emprow = judgmentRow(emptyLocations[i].RoadwayNo,emptyLocations[i].Row); |
| | | |
| | | Dt_LocationInfo? sencondDepthLocationShen = emptyLocations.FirstOrDefault(x => x.Row == emprow && x.Layer == emptyLocations[i].Layer && x.Column == emptyLocations[i].Column); |
| | | if (sencondDepthLocationShen != null && sencondDepthLocationShen.LocationStatus == LocationStatusEnum.Free.ObjToInt()) |
| | |
| | | { |
| | | locationCaches.Add(new LocationCache { DateTime = DateTime.Now, LocationCode = emptyLocations[i].LocationCode }); |
| | | return emptyLocations[i]; |
| | | }else if (emptyLocations[i].RoadwayNo=="5" && emptyLocations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt()) |
| | | { |
| | | locationCaches.Add(new LocationCache { DateTime = DateTime.Now, LocationCode = emptyLocations[i].LocationCode }); |
| | | return emptyLocations[i]; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //æ¥è¯¢2深货ä½å¯¹åºç1æ·±è´§ä½æ¯å¦ä¸ºç©º |
| | | int emprow = emptyLocations[i].Row == 4 ? 3 : 2; |
| | | //int emprow = emptyLocations[i].Row == 4 ? 3 : 2; |
| | | int emprow = judgmentRow(emptyLocations[i].RoadwayNo, emptyLocations[i].Row); |
| | | |
| | | Dt_LocationInfo? sencondDepthLocationQian = emptyLocations.FirstOrDefault(x => x.Row == emprow && x.Layer == emptyLocations[i].Layer && x.Column == emptyLocations[i].Column); |
| | | if (sencondDepthLocationQian != null && sencondDepthLocationQian.LocationStatus == LocationStatusEnum.Free.ObjToInt()) |
| | |
| | | } |
| | | } |
| | | |
| | | private int judgmentRow(string RoadwayNo, int locrow) |
| | | { |
| | | if (RoadwayNo == "1" || RoadwayNo == "3") |
| | | { |
| | | if(locrow==1 || locrow == 4) |
| | | { |
| | | return locrow == 1 ? 2 : 3; |
| | | } |
| | | else |
| | | { |
| | | return locrow == 2 ? 1 : 4; |
| | | } |
| | | |
| | | } |
| | | else if (RoadwayNo == "2" || RoadwayNo == "4") |
| | | { |
| | | if (locrow == 5 || locrow == 8) |
| | | { |
| | | return locrow == 5 ? 6 : 7; |
| | | } |
| | | else |
| | | { |
| | | return locrow == 6 ? 5 : 8; |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | public class LocationCache |
| | | { |
| | | public string LocationCode { get; set; } |