现场问题处理,电梯逻辑处理

This commit is contained in:
2024-09-10 17:42:47 +08:00
parent ddae9f34d7
commit fc57a19cf8
20 changed files with 410 additions and 90 deletions

View File

@@ -2179,14 +2179,20 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
// 剩余可放托数
await db_agvElevatorTaskExceptionHandles.Updateable<BasFactoryConfig>().SetColumns(r => r.value == "2")
.Where(r => r.key == "floor3FirstSelectElevatorTasknums").ExecuteCommandAsync();
}
}
#endregion
}
List<WmsCarryH> wmsCarryHs = await db_agvElevatorTaskExceptionHandles.Queryable<WmsCarryH>().Where(r => r.location_id == startloc.id).ToListAsync();
if (wmsCarryHs.Count > 1)
if (wmsCarryHs.Count > 1)
{
LoggerAgvElevatorTask.LogWarning($"暂存区库位{startloc.location_code}上存在多个托盘{string.Join(',', wmsCarryHs.Select(x => x.carry_code))}");
continue;
@@ -2199,6 +2205,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
WmsCarryH wmsCarryH = wmsCarryHs.FirstOrDefault();
WmsElevatorH wmsElevatorH = null;
string elevatorSno = "";
// 选电梯
if (group.Key == WmsWareHouseConst.REGION_CPOutstockCache_ID)
{
@@ -2206,10 +2214,32 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
var floor3FirstSelectElevatorTasknums = await db_agvElevatorTaskExceptionHandles.Queryable<BasFactoryConfig>().Where(p => p.key == "floor3FirstSelectElevatorTasknums").FirstAsync();
wmsElevatorH = await db_agvElevatorTaskExceptionHandles.Queryable<WmsElevatorH>().Where(r => r.elevator_code == floor3FirstSelectElevator.value).FirstAsync();
elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
// 检查有没有同时从同个暂存区分区发到同个电梯任务
if (wmsElevatorH.task_nums + wmsElevatorH.carry_count > 0)
{
List<string> currentAreaLocs = await db_agvElevatorTaskExceptionHandles.Queryable<WmsElevatorcacheArea>().Where(r => r.name == ).Select(r => r.location_code).ToListAsync();
// 同个暂存分区同个电梯的托盘
List<string> _carrys = await db_agvElevatorTaskExceptionHandles.Queryable<WmsPretaskH>()
.InnerJoin<WmsPretaskH>((a, b) => currentAreaLocs.Contains(a.startlocation_code) && a.carry_code == b.carry_code
&& a.endlocation_code == b.startlocation_code && a.endlocation_code == $"DT-3-{elevatorSno}")
.Where((a, b) => (a.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && a.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID)
|| (b.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && b.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID)).Select((a, b) => a.carry_code).ToListAsync();
if (_carrys.Count > 0)
{
LoggerAgvElevatorTask.LogInformation($"出现同时从同个暂存区分区发到同个电梯{wmsElevatorH.elevator_code}的托盘{string.Join(',', _carrys)},等待托盘任务完成");
continue;
}
}
floor3FirstSelectElevatorTasknums.value = (int.Parse(floor3FirstSelectElevatorTasknums.value) - 1).ToString();
if (floor3FirstSelectElevatorTasknums.value == "0")
{
LoggerAgvElevatorTask.LogInformation($"重置首选电梯为{(wmsElevatorH.elevator_code == "Elevator3" ? "Elevator4" : "Elevator3")}");
// 选择另一个电梯座位首选电梯
await db_agvElevatorTaskExceptionHandles.Updateable<BasFactoryConfig>().SetColumns(r => r.value == (r.value == "Elevator3" ? "Elevator4" : "Elevator3"))
.Where(r => r.key == "floor3FirstSelectElevator").ExecuteCommandAsync();
@@ -2221,8 +2251,6 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
.Where(r => r.key == "floor3FirstSelectElevatorTasknums").ExecuteCommandAsync();
}
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
List<WmsPointH> wmsPointHs = await db_agvElevatorTaskExceptionHandles.Queryable<WmsPointH>().Where(it => it.status == 1).ToListAsync();
List<WmsPointH> points = new List<WmsPointH>();
@@ -2280,6 +2308,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
bool isOk = await _wareHouseService.GenPreTask(preTasks, null!, db_agvElevatorTaskExceptionHandles);
if (isOk)
{
LoggerAgvElevatorTask.LogInformation($"成功下发预任务 {string.Join(',', preTasks.Select(r => r.bill_code))}");
LoggerAgvElevatorTask.LogInformation($"成功下发载具 {string.Join(',', preTasks.Select(r => r.carry_code))}");
//查询库位表
BasLocation location = await db_agvElevatorTaskExceptionHandles.Queryable<BasLocation>().SingleAsync(it => it.id == startloc.id);
{