|  |  | 
 |  |  |                 List<string> lockLocationCodes = locationCaches_GM.Select(x => x.LocationCode).ToList(); | 
 |  |  |  | 
 |  |  |                 List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == roadwayNo); | 
 |  |  |                 //è·åææäºæ·±ä½è´§ä½æ°æ® | 
 |  |  |                 List<Dt_LocationInfo> locationInfoDepth = Repository.QueryData(x => x.RoadwayNo == roadwayNo && x.Depth== locationInfos.Max(v=>v.Depth)); | 
 |  |  |                 //è·åææè´§ä½æ°æ® | 
 |  |  |                 List<Dt_LocationInfo> locationInfoDepth = Repository.QueryData(x => x.RoadwayNo == roadwayNo); | 
 |  |  |                 if (locationInfos == null || locationInfos.Count == 0) | 
 |  |  |                 { | 
 |  |  |                     throw new Exception($"æªæ¾å°è¯¥å··éçè´§ä½ä¿¡æ¯,å··éå·:{roadwayNo}"); | 
 |  |  | 
 |  |  |                         throw new Exception($"æªæ¾å°è´§ä½ä¿¡æ¯"); | 
 |  |  |                     } | 
 |  |  |                     int maxDepth = locationInfos.Max(x => x.Depth); | 
 |  |  |                     int mathCurrentRow = beRelocation.Row - Convert.ToInt32(Math.Ceiling(beRelocation.Row / maxDepth / 2.0)) * maxDepth * 2; | 
 |  |  |                     if (mathCurrentRow <= maxDepth) | 
 |  |  |                     //int mathCurrentRow = beRelocation.Row - Convert.ToInt32(Math.Ceiling(beRelocation.Row / maxDepth / 2.0)) * maxDepth * 2; | 
 |  |  |                     //if (mathCurrentRow <= maxDepth) | 
 |  |  |                     //{ | 
 |  |  |                     //    locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 <= maxDepth).ToList(); | 
 |  |  |                          | 
 |  |  |                     //} | 
 |  |  |                     //else | 
 |  |  |                     //{ | 
 |  |  |                     //    locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 > maxDepth).ToList(); | 
 |  |  |                          | 
 |  |  |                     //} | 
 |  |  |                     if (beRelocation.Row <= maxDepth) | 
 |  |  |                     { | 
 |  |  |                         locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 <= maxDepth).ToList(); | 
 |  |  |                         locationInfos = locationInfos.Where(x => x.Row <= maxDepth).ToList(); | 
 |  |  |                     } | 
 |  |  |                     else | 
 |  |  |                     else if (beRelocation.Row > maxDepth) | 
 |  |  |                     { | 
 |  |  |                         locationInfos = locationInfos.Where(x => x.Row - Convert.ToInt32(Math.Ceiling(x.Row / maxDepth / 2.0)) * maxDepth * 2 > maxDepth).ToList(); | 
 |  |  |                         locationInfos = locationInfos.Where(x => x.Row > maxDepth).ToList(); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  | 
 |  |  |                         Dt_LocationInfo? locationInfo = GetUsableLocation_GM(locationInfos, definedTypeEmptyLocation, palletType, palletTypeInfo); | 
 |  |  |                         if (locationInfo != null) | 
 |  |  |                         { | 
 |  |  |                             if (locationInfo.Depth<locationInfoDepth.Max(x=>x.Depth) && palletTypeInfo.LocaitonCount<2) | 
 |  |  |                             if (locationInfo.Depth<locationInfoDepth.Max(x=>x.Depth)) | 
 |  |  |                             { | 
 |  |  |                                 Dt_LocationInfo? locationInfoExist = null; | 
 |  |  |                                 int Column = locationInfo.Column; | 
 |  |  | 
 |  |  |                                 } | 
 |  |  |                                 if (locationInfo.Row - locationInfo.Depth == locationInfo.Depth) | 
 |  |  |                                 { | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row-1) && x.Column== Column && x.Layer==locationInfo.Layer && x.LocationStatus==LocationStatusEnum.InStock.ObjToInt()); | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row-1) && x.Column== Column && x.Layer==locationInfo.Layer); | 
 |  |  |                                 } | 
 |  |  |                                 else | 
 |  |  |                                 { | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row + 1) && x.Column == Column && x.Layer == locationInfo.Layer && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt()); | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row + 1) && x.Column == Column && x.Layer == locationInfo.Layer); | 
 |  |  |                                 } | 
 |  |  |                                 //è·åæ·±ä½è´§ä½ç±»å | 
 |  |  |                                 if (locationInfoExist==null) | 
 |  |  | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  |                                 Dt_PalletTypeInfo palletTypeInfoDepth = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.WarehouseId == locationInfoExist.WarehouseId && x.PalletType == locationInfoExist.LocationType); | 
 |  |  |                                 if (palletTypeInfoDepth == null) | 
 |  |  |                                 if ((palletTypeInfoDepth != null && palletTypeInfoDepth.LocaitonCount != palletTypeInfo.LocaitonCount) || locationInfoExist.LocationStatus < LocationStatusEnum.InStock.ObjToInt()) | 
 |  |  |                                 { | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  |                                 if (palletTypeInfoDepth.LocaitonCount==2 && palletTypeInfo.LocaitonCount==1) | 
 |  |  |                             } | 
 |  |  |                             else | 
 |  |  |                             { | 
 |  |  |                                 Dt_LocationInfo? locationInfoExist = null; | 
 |  |  |                                 int Column = locationInfo.Column; | 
 |  |  |                                 if (Column % 2 == 0) | 
 |  |  |                                 { | 
 |  |  |                                     Column -= 1; | 
 |  |  |                                 } | 
 |  |  |                                 if (locationInfo.Row % 2 == 0) | 
 |  |  |                                 { | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row - 1) && x.Column == Column && x.Layer == locationInfo.Layer); | 
 |  |  |                                 } | 
 |  |  |                                 else | 
 |  |  |                                 { | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row + 1) && x.Column == Column && x.Layer == locationInfo.Layer); | 
 |  |  |                                 } | 
 |  |  |                                 //è·åæ·±ä½è´§ä½ç±»å | 
 |  |  |                                 if (locationInfoExist == null) | 
 |  |  |                                 { | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  |                                 Dt_PalletTypeInfo palletTypeInfoDepth = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.WarehouseId == locationInfoExist.WarehouseId && x.PalletType == locationInfoExist.LocationType); | 
 |  |  |                                 if (palletTypeInfoDepth != null && palletTypeInfoDepth.LocaitonCount != palletTypeInfo.LocaitonCount) | 
 |  |  |                                 { | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  |                                 if (locationInfoExist.LocationStatus!=LocationStatusEnum.Free.ObjToInt() || locationInfoExist.EnableStatus!= EnableStatusEnum.Normal.ObjToInt()) | 
 |  |  |                                 { | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  | 
 |  |  |                         Dt_LocationInfo? locationInfo = GetUsableLocation_GM(locationInfos, undefinedTypeEmptyLocation, palletType, palletTypeInfo); | 
 |  |  |                         if (locationInfo != null) | 
 |  |  |                         { | 
 |  |  |                             if (locationInfo.Depth < locationInfoDepth.Max(x => x.Depth) && palletTypeInfo.LocaitonCount < 2) | 
 |  |  |                             if (locationInfo.Depth < locationInfoDepth.Max(x => x.Depth)) | 
 |  |  |                             { | 
 |  |  |                                 Dt_LocationInfo? locationInfoExist = null; | 
 |  |  |                                 int Column = locationInfo.Column; | 
 |  |  | 
 |  |  |                                 } | 
 |  |  |                                 if (locationInfo.Row - locationInfo.Depth == locationInfo.Depth) | 
 |  |  |                                 { | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row - 1) && x.Column == Column && x.Layer == locationInfo.Layer && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt()); | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row - 1) && x.Column == Column && x.Layer == locationInfo.Layer); | 
 |  |  |                                 } | 
 |  |  |                                 else | 
 |  |  |                                 { | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row + 1) && x.Column == Column && x.Layer == locationInfo.Layer && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt()); | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row + 1) && x.Column == Column && x.Layer == locationInfo.Layer); | 
 |  |  |                                 } | 
 |  |  |                                 //è·åæ·±ä½è´§ä½ç±»å | 
 |  |  |                                 if (locationInfoExist == null) | 
 |  |  | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  |                                 Dt_PalletTypeInfo palletTypeInfoDepth = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.WarehouseId == locationInfoExist.WarehouseId && x.PalletType == locationInfoExist.LocationType); | 
 |  |  |                                 if (palletTypeInfoDepth == null) | 
 |  |  |                                 if (palletTypeInfoDepth != null && palletTypeInfoDepth.LocaitonCount != palletTypeInfo.LocaitonCount || locationInfoExist.LocationStatus < LocationStatusEnum.InStock.ObjToInt()) | 
 |  |  |                                 { | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  |                                 if (palletTypeInfoDepth.LocaitonCount == 2) | 
 |  |  |                             } | 
 |  |  |                             else | 
 |  |  |                             { | 
 |  |  |                                 Dt_LocationInfo? locationInfoExist = null; | 
 |  |  |                                 int Column = locationInfo.Column; | 
 |  |  |                                 if (Column % 2 == 0) | 
 |  |  |                                 { | 
 |  |  |                                     Column -= 1; | 
 |  |  |                                 } | 
 |  |  |                                 if (locationInfo.Row % 2 == 0) | 
 |  |  |                                 { | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row - 1) && x.Column == Column && x.Layer == locationInfo.Layer); | 
 |  |  |                                 } | 
 |  |  |                                 else | 
 |  |  |                                 { | 
 |  |  |                                     locationInfoExist = locationInfoDepth.FirstOrDefault(x => x.Row == (locationInfo.Row + 1) && x.Column == Column && x.Layer == locationInfo.Layer); | 
 |  |  |                                 } | 
 |  |  |                                 //è·åæ·±ä½è´§ä½ç±»å | 
 |  |  |                                 if (locationInfoExist == null) | 
 |  |  |                                 { | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  |                                 Dt_PalletTypeInfo palletTypeInfoDepth = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.WarehouseId == locationInfoExist.WarehouseId && x.PalletType == locationInfoExist.LocationType); | 
 |  |  |                                 if (palletTypeInfoDepth != null && palletTypeInfoDepth.LocaitonCount != palletTypeInfo.LocaitonCount) | 
 |  |  |                                 { | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  |                                 if (locationInfoExist.LocationStatus != LocationStatusEnum.Free.ObjToInt() || locationInfoExist.EnableStatus != EnableStatusEnum.Normal.ObjToInt()) | 
 |  |  |                                 { | 
 |  |  |                                     continue; | 
 |  |  |                                 } | 
 |  |  | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 //夿妿已å®ä¹è´§ä½ç±»åçè´§ä½åæªå®ä¹ç±»åç空货ä½é½ä¸ºç©ºéæ¾æ»¡è¶³æ¡ä»¶çè´§ä½ | 
 |  |  |                 if (!definedTypeEmptyLocations.Any() && !undefinedTypeEmptyLocations.Any()) | 
 |  |  |                 { | 
 |  |  |                 ////夿妿已å®ä¹è´§ä½ç±»åçè´§ä½åæªå®ä¹ç±»åç空货ä½é½ä¸ºç©ºéæ¾æ»¡è¶³æ¡ä»¶çè´§ä½ | 
 |  |  |                 //if (!definedTypeEmptyLocations.Any() && !undefinedTypeEmptyLocations.Any()) | 
 |  |  |                 //{ | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |                 //} | 
 |  |  |                 return null; | 
 |  |  |             } | 
 |  |  |         } |