From 7086c88c6c080aa9ff15664c5c97aee7bbcdc55b Mon Sep 17 00:00:00 2001 From: wankeda <Administrator@DESKTOP-HAU3ST3> Date: 星期三, 05 三月 2025 16:56:11 +0800 Subject: [PATCH] 阻焊仓堆垛机对接 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs | 92 ++++++++++++++++++++++++++++++---------------- 1 files changed, 60 insertions(+), 32 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" index ef8c85c..d677aaf 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/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), + "HA154" => AssignLocation_ZH(roadwayNo, palletType, palletTypeInfo, beRelocationCode), "HA153" => AssignLocation(roadwayNo), "HA71" => AssignLocation(roadwayNo), "HA60" => AssignLocation(roadwayNo), @@ -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,59 @@ nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1); } + if (nearLocation!=null && location.RoadwayNo.Contains("BC")) + { + if (nearLocation?.LocationType == LocationTypeEnum.SmallPallet.ObjToInt()) + { + nearLocation = null; + } + } + if (location.RoadwayNo == "SC01_BC" && palletType != PalletTypeEnum.SmallPallet.ObjToInt()) + { + nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1); + if (nearLocation?.LocationType == LocationTypeEnum.SmallPallet.ObjToInt()) + { + nearLocation = null; + } + } + 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 +454,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 +467,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 +488,10 @@ 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); + 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)); if (locationInfo != null) { groupLocations.Add(locationInfo); @@ -472,7 +500,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); + 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)); if (locationInfo != null) { groupLocations.Add(locationInfo); -- Gitblit v1.9.3