生成电梯任务与判断一托延迟处理,生产入库调整

This commit is contained in:
2024-09-02 09:04:57 +08:00
parent d493a9322e
commit 6536f4f8e3
12 changed files with 251 additions and 162 deletions

View File

@@ -2375,13 +2375,22 @@ namespace Tnb.WarehouseMgr
int doorStatus = -1;
bool closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(devName, 4); //向电梯发送前门关门指令
Logger.Information($"{devName.Match(@"\d+")}#梯 关门结果:{closeDoorRes}");
// 检查门状态
int checkCloseDoor = 0;
do
{
checkCloseDoor++;
doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
Logger.Information($"{devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
Logger.Information($"第{checkCloseDoor}次 {devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
// 30次后重试
if (checkCloseDoor >= 30)
{
throw new Exception($"电梯{devName}关门状态判断已达30次即将重新执行这批电梯任务");
}
await Task.Delay(1000);
} while (doorStatus != 4);
Logger.Information($"结束判断 {devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
Logger.Information($"第{checkCloseDoor}次 结束判断 {devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
int floor = await GetRealFloor(devName, disTask.end_floor);
@@ -2394,10 +2403,20 @@ namespace Tnb.WarehouseMgr
//发送到目标楼的指令
dynamic result = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor);
// 检查电梯下行状态
int checkRunDoor = 0;
do
{
checkRunDoor++;
tuple = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
Logger.Information($"{devName.Match(@"\d+")}#梯 sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},当前楼层floorNo:{tuple.floorNo},目标楼层disTask.end_floor={floor}");
Logger.Information($"第{checkCloseDoor}次 {devName.Match(@"\d+")}#梯 当前门状态:{doorStatus}");
// 180次后重试
if (checkRunDoor >= 180)
{
throw new Exception($"电梯{devName}运行状态判断已达180次即将重新执行这批电梯任务");
}
await Task.Delay(1000);
} while (tuple.sysStatus != 3 || tuple.runStatus != 0 || floor != tuple.floorNo);
@@ -2417,7 +2436,8 @@ namespace Tnb.WarehouseMgr
}
catch (Exception ex)
{
Logger.Error("执行到目标楼层电梯任务失败", ex);
Logger.LogWarning("执行到目标楼层电梯任务失败", ex.Message);
Logger.LogWarning("执行到目标楼层电梯任务失败", ex.StackTrace);
throw;
}
}
@@ -2594,6 +2614,24 @@ namespace Tnb.WarehouseMgr
_ = await db.Updateable<BasLocation>().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.).ToString(), is_lock = 0 }).Where(it => startLocationIds.Contains(it.id)).ExecuteCommandAsync();
}
List<WmsDistaskH> disTasks = db.Queryable<WmsDistaskH>().Where(r => input.disTaskIds.Contains(r.id)).ToList();
foreach (WmsDistaskH disTask in disTasks)
{
// 出电梯减一托盘数
if (disTask.startlocation_code.Contains("DT") && !disTask.endlocation_code.Contains("DT"))
{
ElevagorInfoQuery q = new() { startlocation_id = disTask.startlocation_id, taskCode = disTask.bill_code };
Logger.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯参数 {JsonConvert.SerializeObject(q)}");
var e = await FindElevatorFromPars(q);
Logger.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯结果 {JsonConvert.SerializeObject(e)}");
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
{
carry_count = r.carry_count - 1
}).Where(r => r.elevator_id == e.device_id).ExecuteCommandAsync();
}
}
await db.Ado.CommitTranAsync();
}
@@ -2632,6 +2670,7 @@ namespace Tnb.WarehouseMgr
List<string> preTaskIds = disTasks.Select(x => x.pretask_id).ToList();
_ = await db.Updateable<WmsPretaskH>().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync();
#region
WmsElevatorH wmsElevatorH = await db.Queryable<WmsElevatorH>().Where(r => disTasks.Select(x => x.area_code).Contains(r.area_code)).FirstAsync();
if (wmsElevatorH != null)
{
@@ -2645,6 +2684,24 @@ namespace Tnb.WarehouseMgr
Logger.LogInformation($"【TaskComplate】更新电梯{disTasks[0].area_code}任务行数{eleUpdateRow}");
}
foreach (var disTask in disTasks)
{
// 进电梯任务加一托盘数
if (disTask.endlocation_code.Contains("DT") && !disTask.startlocation_code.Contains("DT"))
{
ElevagorInfoQuery q = new() { endlocation_id = disTask.endlocation_id, taskCode = disTask.bill_code };
Logger.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯参数 {JsonConvert.SerializeObject(q)}");
var e = await FindElevatorFromPars(q);
Logger.Information($"【ElevatorTaskExceptionHandle】执行电梯任务时 根据任务单号获取电梯结果 {JsonConvert.SerializeObject(e)}");
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
{
carry_count = r.carry_count + 1
}).Where(r => r.elevator_id == e.device_id).ExecuteCommandAsync();
}
}
#endregion
// 更新任务数量
_ = await db.Updateable<BasLocation>().SetColumns(it => new BasLocation { task_nums = it.task_nums - 1 }).Where(it => disTasks.Select(x => x.endlocation_code).Contains(it.location_code)).ExecuteCommandAsync();
@@ -4064,7 +4121,7 @@ namespace Tnb.WarehouseMgr
await _db.Updateable<BasCoderules>().SetColumns(r => r.waternumber == waternumber).Where(r => r.id == basCoderules.id).ExecuteCommandAsync();
watercode = waternumber.ToString().PadLeft(watercodeLength, '0');
}
return prefix + custom + watercode;
return watercode;
}
catch(Exception ex)
{