外协提升二楼入库、erp包材入库同步、erp重发调拨出库处理、电梯优化

This commit is contained in:
2024-08-28 16:03:35 +08:00
parent 7809aefb9b
commit 68f4b5c5af
16 changed files with 485 additions and 14 deletions

View File

@@ -138,6 +138,14 @@ namespace Tnb.WarehouseMgr
{
get { return _db_ElevatorTaskExceptionHandles; }
}
/// <summary>
/// WCS请求
/// </summary>
public Dictionary<string, SemaphoreSlim> s_elevatortaskWCSRequestDic
{
get { return _s_elevatortaskWCSRequestDic; }
}
public WareHouseService(ISqlSugarRepository<WmsInstockH> repository, IDictionaryDataService dictionaryDataService, StackExRedisHelper redisData,
@@ -429,6 +437,17 @@ namespace Tnb.WarehouseMgr
, WmsWareHouseConst.Floor1WXSGWOutstockStation3 };
}
///// <summary>
///// 是否为二楼(一楼外协三存位送上来)入暂存仓起点
///// </summary>
///// <param name="location_id"></param>
///// <returns></returns>
//public string[] GetFloor2WX2ZCCStartLocation()
//{
// return new string[3] { WmsWareHouseConst.Floor1WXSGWOutstockStation1 , WmsWareHouseConst.Floor1WXSGWOutstockStation2
// , WmsWareHouseConst.Floor1WXSGWOutstockStation3 };
//}
/// <summary>
/// 出库策略-销售出库下发
/// </summary>
@@ -1441,11 +1460,46 @@ namespace Tnb.WarehouseMgr
!it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase))
.ToList();
#region
if (s_elevatortaskWCSRequestDic.Count > 0)
{
for (int index_agvElevatorTasks = 0; index_agvElevatorTasks < agvElevatorTasks.Count; index_agvElevatorTasks++)
{
WmsPretaskH wmsPretaskH = agvElevatorTasks[index_agvElevatorTasks];
string area_code = "";
// 找到电梯任务的电梯区域
if (wmsPretaskH.start_floor == "3" && wmsPretaskH.end_floor == "3")
{
if (wmsPretaskH.endlocation_code == "DT-3-3")
{
area_code = "ELE03";
}
else if (wmsPretaskH.endlocation_code == "DT-3-4") { area_code = "ELE04"; }
}
// 如果不是三楼三四号梯出货
if (string.IsNullOrEmpty(area_code))
{
continue;
}
SemaphoreSlim s_elevatortaskWCSRequest = s_elevatortaskWCSRequestDic[area_code];
if (s_elevatortaskWCSRequest.CurrentCount == 0)
{
Logger.Information($"【GenTaskExecute】 获取到AGV到电梯{area_code}的预任务{wmsPretaskH.bill_code}正在执行一托下判断,此时不下发任务");
agvElevatorTasks.RemoveAt(index_agvElevatorTasks);
index_agvElevatorTasks--;
}
else
{
Logger.Information($"【GenTaskExecute】AGV到电梯{area_code}的预任务{wmsPretaskH.bill_code}没有在执行一托下判断,正常下发任务");
}
}
}
#endregion
var elePreTasks = preTasks.Where(it => it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList();
var normalPreTasks = preTasks.Where(it => it.area_code != "B" && !agvElevatorTasks.Concat(elePreTasks).Select(x => x.endlocation_code).Contains(it.endlocation_code)).ToList();
//Logger.Information("【GenTaskExecute】 电梯预任务elePreTasks:" + JsonConvert.SerializeObject(elePreTasks));
//Logger.Information("【GenTaskExecute】 AGV/CTU/KIVA预任务normalPreTasks:" + JsonConvert.SerializeObject(normalPreTasks));
//Logger.Information("【GenTaskExecute】 AGV电梯预任务agvElevatorTasks:" + JsonConvert.SerializeObject(agvElevatorTasks));
@@ -2259,6 +2313,11 @@ namespace Tnb.WarehouseMgr
}
}
catch { throw; }
finally
{
SemaphoreSlim s_elevatortaskWCSRequest = s_elevatortaskWCSRequestDic[disTask.area_code];
s_elevatortaskWCSRequest.Release();
}
try