From 8fcd7a67e4391a5f1fbdb590c2a3f913aeb2a0a0 Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期二, 31 三月 2026 14:11:23 +0800
Subject: [PATCH] PP平库功能上线,PDA优化,部分问题点优化
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs | 498 ++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 347 insertions(+), 151 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 3e875b8..ad8d9ae 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"
@@ -36,7 +36,7 @@
Dt_PalletTypeInfo? palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouseId);
if (palletTypeInfo == null)
{
- if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() && warehouse.WarehouseCode == WarehouseEnum.HA71.ToString() && warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
+ if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA71.ToString())
{
palletTypeInfo = new Dt_PalletTypeInfo()
{
@@ -55,10 +55,11 @@
"HA58" => AssignLocation_PP(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
"HA152" => AssignLocation_GM(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
"HA64" => AssignLocation_CSJ(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
- "闃荤剨浠�" => AssignLocation_ZH(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
+ "HA154" => AssignLocation_ZH(roadwayNo, palletType, palletTypeInfo, beRelocationCode),
"HA153" => AssignLocation(roadwayNo),
- "HA71" => AssignLocation(roadwayNo),
+ "HA71" or "HA72" or "HA73" => AssignLocation(roadwayNo),
"HA60" => AssignLocation(roadwayNo),
+ "HA581" => AssignLocation_PPPK(roadwayNo,palletTypeInfo.PalletType),
_ => throw new Exception($"鏈壘鍒颁粨搴撹揣浣嶅垎閰嶆柟娉�")
};
}
@@ -119,153 +120,153 @@
/// <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);
+ //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();
- }
+ // 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();
- }
- }
- }
- }
+ // 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();
- }
+ // 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();
- }
- }
- }
- }
+ // 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();
- }
- }
- }
+ // }
+ // 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;
- });
- }
+ // if (locations.Where(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt()).Count() == locations.Count && locationStatus == LocationStatusEnum.Free)
+ // {
+ // locations.ForEach(x =>
+ // {
+ // x.LocationType = 0;
+ // });
+ // }
- Repository.UpdateData(locations);
- }
+ // Repository.UpdateData(locations);
+ //}
public void UpdateLocationStatus(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehousId)
{
@@ -274,9 +275,9 @@
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 || warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
+ if (palletTypeInfo == null)
{
- if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA71.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
+ if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA71.ToString())
{
palletTypeInfo = new Dt_PalletTypeInfo()
{
@@ -329,12 +330,19 @@
}
}
- if (palletTypeInfos.FirstOrDefault(x => x.LocaitonCount == 2) != null)
+ if (palletTypeInfo.LocaitonCount == 2)
{
Dt_LocationInfo? nearLocation;
if (palletTypeInfo.IsOdd)
{
- nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
+ if (warehouse.WarehouseCode==WarehouseEnum.HA154.ToString())
+ {
+ nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
+ }
+ else
+ {
+ nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
+ }
}
else
{
@@ -457,8 +465,53 @@
int row = location.Row;
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.Column == location.Column && x.Layer == location.Layer && x.Row == (row + 1));
+ #region 娴嬭瘯鏋躲�丳P鍒ゆ柇鍚岀粍璐т綅
+ if (j == 3 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 2 || row == 5))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ }
+ if (j == 3 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 3 || row == 4))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 2);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 2);
+ }
+ }
+ if (j == 2 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 1 || row == 6))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ }
+ if (j == 2 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 3 || row == 4))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ }
+ #endregion
if (locationInfo != null)
{
groupLocations.Add(locationInfo);
@@ -467,8 +520,42 @@
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.Column == location.Column && x.Layer == location.Layer && x.Row == (row -1));
+ #region 娴嬭瘯鏋躲�丳P鍒ゆ柇鍚岀粍璐т綅
+ if (j == 1 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 1 || row == 6))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 2);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 2);
+ }
+ }
+ if (j == 1 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 2 || row == 5))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ }
+ if (j == 2 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 1 || row == 6))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ }
+ #endregion
if (locationInfo != null)
{
groupLocations.Add(locationInfo);
@@ -492,6 +579,52 @@
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));
+ #region 娴嬭瘯鏋躲�丳P鍒ゆ柇鍚岀粍璐т綅
+ if (j == 3 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 2 || row == 5))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ }
+ if (j == 3 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 3 || row == 4))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 2);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 2);
+ }
+ }
+ if (j == 2 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 1 || row == 6))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ }
+ if (j == 2 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 3 || row == 4))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ }
+ #endregion
if (locationInfo != null)
{
groupLocations.Add(locationInfo);
@@ -501,6 +634,41 @@
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));
+ #region 娴嬭瘯鏋躲�丳P鍒ゆ柇鍚岀粍璐т綅
+ if (j == 1 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 1 || row == 6))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 2);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 2);
+ }
+ }
+ if (j == 1 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 2 || row == 5))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ }
+ if (j == 2 && (location.RoadwayNo.Contains("CSJ") || location.RoadwayNo.Contains("PP")) && (row == 1 || row == 6))
+ {
+ if (row <= maxDepth)
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row <= maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row + 1);
+ }
+ else
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Row > maxDepth && x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && x.Row == row - 1);
+ }
+ }
+ #endregion
if (locationInfo != null)
{
groupLocations.Add(locationInfo);
@@ -508,6 +676,34 @@
}
return groupLocations;
}
+
+
+ public Dt_LocationInfo? AssignLocation_PPPK(string roadwayNo, int palletType)
+ {
+ lock (_locker)
+ {
+ List<LocationCache> removeItems = locationCaches.Where(x => (DateTime.Now - x.DateTime).TotalMinutes > 5).ToList();//鏌ヨ娣诲姞闈欐�佸彉閲忚秴杩�5鍒嗛挓鐨勮揣浣�
+ int count = removeItems.Count;
+ for (int i = 0; i < count; i++)
+ {
+ locationCaches.Remove(removeItems[i]);//绉婚櫎鏌ヨ娣诲姞闈欐�佸彉閲忚秴杩�5鍒嗛挓鐨勮揣浣�
+ }
+
+ List<string> lockLocations = locationCaches.Select(x => x.LocationCode).ToList();
+
+ List<Dt_LocationInfo> locationInfos = BaseDal.QueryData(x => x.RoadwayNo == roadwayNo);//鏌ヨ宸烽亾鎵�鏈夎揣浣嶄俊鎭�
+
+ Dictionary<string, OrderByType> orderBy = new Dictionary<string, OrderByType>()
+ {
+ { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
+ { nameof(Dt_LocationInfo.Column),OrderByType.Asc },
+ { nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
+ { nameof(Dt_LocationInfo.Row),OrderByType.Asc }
+ };
+
+ return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && x.LocationType == palletType && !lockLocations.Contains(x.LocationCode), orderBy);
+ }
+ }
}
}
--
Gitblit v1.9.3