From 695571c6009ecbc12e7d4a4fb147df7967a1260e Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 07 七月 2025 20:21:19 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService_Common.cs | 295 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 258 insertions(+), 37 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 4a0ddcd..82ca087 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"
@@ -18,29 +18,47 @@
using WIDESEA_Model.Models;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.TaskEnum;
+using WIDESEA_Common.WareHouseEnum;
namespace WIDESEA_BasicService
{
public partial class LocationInfoService
{
- public Dt_LocationInfo? AssignLocation(string roadwayNo, PalletTypeEnum 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)
{
throw new Exception($"鏈壘鍒颁粨搴撲俊鎭�");
}
-
- return warehouse.WarehouseName switch
+ Dt_PalletTypeInfo? palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouseId);
+ if (palletTypeInfo == null)
{
- "鏉挎潗浠�" => AssignLocation_BC(roadwayNo, palletType),
- "PP浠�" => AssignLocation_PP(roadwayNo, palletType),
- "骞茶啘浠�" => AssignLocation_GM(roadwayNo, palletType),
- "娴嬭瘯鏋朵粨" => AssignLocation_CSJ(roadwayNo, palletType),
- "闃荤剨浠�" => AssignLocation_ZH(roadwayNo, palletType),
- "娌瑰ⅷ浠�" => AssignLocation(roadwayNo),
- "鎴愬搧浠�" => AssignLocation(roadwayNo),
- "杈呮枡浠�" => AssignLocation(roadwayNo),
+ if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() && warehouse.WarehouseCode == WarehouseEnum.HA71.ToString() && warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
+ {
+ palletTypeInfo = new Dt_PalletTypeInfo()
+ {
+ LocaitonCount = 1,
+ PalletType = 0,
+ IsOdd = false,
+ };
+ }
+ else
+ throw new Exception($"璇烽厤缃墭鐩樼被鍨嬩俊鎭�");
+ }
+
+ return warehouse.WarehouseCode switch
+ {
+ "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" or "HA72" or "HA73" => AssignLocation(roadwayNo),
+ "HA60" => AssignLocation(roadwayNo),
_ => throw new Exception($"鏈壘鍒颁粨搴撹揣浣嶅垎閰嶆柟娉�")
};
}
@@ -75,7 +93,7 @@
{ nameof(Dt_LocationInfo.Row),OrderByType.Asc }
};
- return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
+ return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
}
}
@@ -85,7 +103,7 @@
/// <param name="locationCode">璐т綅缂栧彿</param>
/// <param name="palletType">鎵樼洏绫诲瀷</param>
/// <param name="locationStatus">璐т綅鐘舵��</param>
- public void UpdateLocationStatus(string locationCode, PalletTypeEnum palletType, LocationStatusEnum locationStatus, int warehousId)
+ public void UpdateLocationStatus(string locationCode, int palletType, LocationStatusEnum locationStatus, int warehousId)
{
Dt_LocationInfo location = Repository.QueryFirst(x => x.LocationCode == locationCode);
if (location == null)
@@ -101,18 +119,183 @@
/// <param name="location">璐т綅瀵硅薄</param>
/// <param name="palletType">鎵樼洏绫诲瀷</param>
/// <param name="locationStatus">璐т綅鐘舵��</param>
- public void UpdateLocationStatus(Dt_LocationInfo location, PalletTypeEnum palletType, LocationStatusEnum locationStatus, int warehousId)
+ //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();
+ // }
+
+ // 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();
+ // }
+
+ // 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();
+ // }
+ // }
+ // }
+
+ // if (locations.Where(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt()).Count() == locations.Count && locationStatus == LocationStatusEnum.Free)
+ // {
+ // locations.ForEach(x =>
+ // {
+ // x.LocationType = 0;
+ // });
+ // }
+
+ // Repository.UpdateData(locations);
+ //}
+
+ public void UpdateLocationStatus(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehousId)
{
List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
+ 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 (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA71.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA60.ToString())
+ {
+ palletTypeInfo = new Dt_PalletTypeInfo()
+ {
+ LocaitonCount = 1,
+ PalletType = 0,
+ IsOdd = false,
+ };
+ }
+ else
+ throw new Exception($"璇烽厤缃墭鐩樼被鍨嬩俊鎭�");
+ }
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())
+ if (locations[i].LocationType != palletType)
{
- locations[i].LocationType = palletType.ObjToInt();
+ locations[i].LocationType = palletType;
}
if (locations[i].LocationCode == location.LocationCode)
@@ -146,25 +329,55 @@
}
}
- Dt_LocationInfo? nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1);
- if (nearLocation != null)
+ if (palletTypeInfos.FirstOrDefault(x => x.LocaitonCount == 2) != null)
{
- List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation);
- for (int i = 0; i < nearLocations.Count; i++)
+ Dt_LocationInfo? nearLocation;
+ if (palletTypeInfo.IsOdd)
{
- if (nearLocations[i].LocationType != palletType.ObjToInt())
+ if (warehouse.WarehouseCode==WarehouseEnum.HA154.ToString())
{
- nearLocations[i].LocationType = palletType.ObjToInt();
+ nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1);
}
-
- if (palletType.ObjToInt() >= PalletTypeEnum.LargePallet.ObjToInt())
+ else
{
- if (nearLocations[i].LocationCode == nearLocation.LocationCode)
+ 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);
+ }
+
+ 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++)
+ {
+ List<int> palletTypes = palletTypeInfos.Select(x => x.PalletType).ToList();
+ palletTypes.Add(0);
+ if (palletTypes.Contains(nearLocations[i].LocationType))
{
- nearLocations[i].LocationStatus = locationStatus.ObjToInt();
- }
- else
- {
+ if (nearLocations[i].LocationType != palletType)
+ {
+ nearLocations[i].LocationType = palletType;
+ }
+
if (locationStatus == LocationStatusEnum.Lock)
{
if (nearLocations[i].LocationStatus == LocationStatusEnum.InStock.ObjToInt())
@@ -189,10 +402,12 @@
}
}
}
-
+ locations.AddRange(nearLocations);
}
- locations.AddRange(nearLocations);
}
+
+
+
}
else
{
@@ -236,8 +451,6 @@
Repository.UpdateData(locations);
}
-
-
/// <summary>
/// 鑾峰彇涓嶅悓娣卞害鐨勫悓缁勮揣浣嶄俊鎭�
/// </summary>
@@ -248,9 +461,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);
@@ -259,7 +474,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);
@@ -279,9 +495,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);
@@ -290,7 +507,11 @@
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 (j == 1 && location.RoadwayNo.Contains("CSJ") && (row==1 || row==6))
+ {
+ locationInfo = locationInfos.FirstOrDefault(x => x.Depth == j && x.Column == location.Column && x.Layer == location.Layer && (x.Row == row + 2 || x.Row == row - 2));
+ }
if (locationInfo != null)
{
groupLocations.Add(locationInfo);
--
Gitblit v1.9.3