From 39ee9078d88fd4787437360e7f69ed999aaf0b7b Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期六, 28 十二月 2024 09:14:41 +0800
Subject: [PATCH] 更新代码
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 159 insertions(+), 8 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 bd6834c..3cd8b9c 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"
@@ -45,6 +45,28 @@
};
}
+ //public bool LittleDepthLocationIsEmpty(Dt_LocationInfo locationInfo, PalletTypeEnum palletType)
+ //{
+ // Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == locationInfo.WarehouseId);
+ // if (warehouse == null)
+ // {
+ // throw new Exception($"鏈壘鍒颁粨搴撲俊鎭�");
+ // }
+
+ // return warehouse.WarehouseName switch
+ // {
+ // "鏉挎潗浠�" => false,
+ // "PP浠�" => false,
+ // "骞茶啘浠�" => false,
+ // "娴嬭瘯鏋朵粨" => LittleDepthLocationIsEmpty_CSJ(locationInfo, palletType),
+ // "闃荤剨浠�" => false,
+ // "娌瑰ⅷ浠�" => true,
+ // "鎴愬搧浠�" => true,
+ // "杈呮枡浠�" => true,
+ // _ => throw new Exception($"鏈壘鍒颁粨搴撹揣浣嶅垎閰嶆柟娉�")
+ // };
+ //}
+
private readonly static object _locker = new object();
private static List<LocationCache> locationCaches = new List<LocationCache>();
/// <summary>
@@ -110,8 +132,40 @@
{
for (int i = 0; i < locations.Count; i++)
{
- locations[i].LocationStatus = locationStatus.ObjToInt();
- locations[i].LocationType = palletType.ObjToInt();
+ 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();
+ }
+ }
+ }
}
Dt_LocationInfo? nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
@@ -120,11 +174,44 @@
List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation);
for (int i = 0; i < nearLocations.Count; i++)
{
- nearLocations[i].LocationType = palletType.ObjToInt();
- if (palletType == PalletTypeEnum.LargePallet)
+ if (nearLocations[i].LocationType != palletType.ObjToInt())
{
- nearLocations[i].LocationStatus = locationStatus.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.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);
}
@@ -133,12 +220,45 @@
{
for (int i = 0; i < locations.Count; i++)
{
- locations[i].LocationStatus = locationStatus.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].LocationType != palletType.ObjToInt())
+ {
+ locations[i].LocationType = palletType.ObjToInt();
+ }
}
}
Repository.UpdateData(locations);
}
+
+
/// <summary>
/// 鑾峰彇涓嶅悓娣卞害鐨勫悓缁勮揣浣嶄俊鎭�
@@ -146,7 +266,7 @@
/// <param name="locationInfos"></param>
/// <param name="location"></param>
/// <returns></returns>
- private List<Dt_LocationInfo> GetGroupLocations(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo location)
+ public List<Dt_LocationInfo> GetGroupLocations(List<Dt_LocationInfo> locationInfos, Dt_LocationInfo location)
{
List<Dt_LocationInfo> groupLocations = new List<Dt_LocationInfo>() { location };
int maxDepth = locationInfos.Max(x => x.Depth);
@@ -169,6 +289,37 @@
}
return groupLocations;
}
+
+ /// <summary>
+ /// 鑾峰彇涓嶅悓娣卞害鐨勫悓缁勮揣浣嶄俊鎭�
+ /// </summary>
+ /// <param name="location"></param>
+ /// <returns></returns>
+ public List<Dt_LocationInfo> GetGroupLocations(Dt_LocationInfo location)
+ {
+ List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo && x.WarehouseId == location.WarehouseId);
+
+ List<Dt_LocationInfo> groupLocations = new List<Dt_LocationInfo>() { location };
+ int maxDepth = locationInfos.Max(x => x.Depth);
+ 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);
+ if (locationInfo != null)
+ {
+ groupLocations.Add(locationInfo);
+ }
+ }
+
+ 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);
+ if (locationInfo != null)
+ {
+ groupLocations.Add(locationInfo);
+ }
+ }
+ return groupLocations;
+ }
}
}
--
Gitblit v1.9.3