1、电梯服务类新增获取电梯状态接口

2、自定义日志记录器代码调整
3、电梯流程新增测试代码
This commit is contained in:
yang.lee
2023-11-24 21:22:26 +08:00
parent e497caf393
commit 1bd3d5a6c2
10 changed files with 230 additions and 72 deletions

View File

@@ -408,20 +408,25 @@ namespace Tnb.WarehouseMgr
{
//呼梯操作
//获取目标库位为电梯库位的任务
var eleTasks = disTasks.Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) &&
!it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase))
.ToList();
foreach (var et in eleTasks)
var agvDTTasks = disTasks.Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) &&
!it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList();
foreach (var at in agvDTTasks)
{
var ele = elevatorList.Find(x => x.location_code == et.endlocation_code);
if(ele!=null)
var ele = elevatorList.Find(x => x.location_code == at.endlocation_code);
Logger.Information($"ele.elevator_id={ele?.elevator_id}");
if (ele != null)
{
et.device_id = ele.elevator_id;
at.device_id = ele.elevator_id;
}
}
List<(string endlocation_code, string device_id, string id, string? start_floor)> endLocCodes = eleTasks
.Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList();
List<(string endlocation_code, string device_id, string id, string? start_floor)> endLocCodes = agvDTTasks
.Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList();
if (endLocCodes?.Count > 0)
{
await CallingLanding(endLocCodes);
}
//执行电梯任务
List<WmsDistaskH>? elevatorTasks = disTasks.Where(it => it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList();
@@ -483,17 +488,20 @@ namespace Tnb.WarehouseMgr
}
string? devName = elevatorCode.ToString();
Logger.Information($"电梯编号:{devName}");
Logger.Information($"当前:{devName.Match(@"\d+")}#梯");
await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
(int sysStatus, int runStatus, int curFloorNo, int doorStatus, int agvStatus) eleStatusMulti = (-1, -1, -1, -1, -1);
if (!_elevatorAgvCtlStatusMap.TryGetValue(devId, out int agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态)
{
Logger.Information("获取电梯状态");
Logger.Information($"_elevatorControlService ==null{_elevatorControlService == null}");
var tags = new[] { "SysStatus", "RunStatus", "FloorNo", "DoorStatus", "AGVStatus" };
do
{
eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, CancellationToken.None);
await Task.Delay(500);
eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
await Task.Delay(1000);
} while (eleStatusMulti.agvStatus != (int)EnumAgvStatus.AGV运行状态);
Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum<EnumAgvStatus>()}");
_elevatorAgvCtlStatusMap[devId] = eleStatusMulti.agvStatus;
@@ -539,6 +547,7 @@ namespace Tnb.WarehouseMgr
catch (Exception ex)
{
Logger.Error("呼梯操作错误", ex);
Logger.Error($"呼梯操作错误堆栈跟踪:{Environment.NewLine}{ex.StackTrace}");
throw;
}
}
@@ -558,18 +567,19 @@ namespace Tnb.WarehouseMgr
{
return;
}
string devName = s_elevatorMap[disTask.device_id]?.ToString() ?? _eleCtlCfg.DevName;
string devName = s_elevatorMap[disTask.device_id]?.ToString() ?? _eleCtlCfg.DevName3;
Logger.Information($"当前:{devName.Match(@"\d+")}#梯");
await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
_ = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
(int sysStatus, int runStatus, int curFloorNo, int doorStatus, int agvStatus) eleStatusMulti = (-1, -1, -1, -1, -1);
var tags = new[] { "SysStatus", "RunStatus", "FloorNo", "DoorStatus", "AGVStatus" };
if (!_elevatorAgvCtlStatusMap.TryGetValue(disTask.id, out int agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态)
{
do
{
eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, CancellationToken.None);
await Task.Delay(500);
eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
await Task.Delay(1000);
} while (eleStatusMulti.agvStatus != (int)EnumAgvStatus.AGV运行状态);
Logger.Information($"{devName.Match(@"\d+")}#, 当前Agv状态:{eleStatusMulti.agvStatus.ToEnum<EnumAgvStatus>()}");
_elevatorAgvCtlStatusMap[disTask.id] = eleStatusMulti.agvStatus;
@@ -581,7 +591,7 @@ namespace Tnb.WarehouseMgr
do
{
doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
await Task.Delay(2000);
await Task.Delay(1000);
} while (doorStatus != 4);
Logger.Information($"当前门状态:{doorStatus}");
@@ -596,8 +606,8 @@ namespace Tnb.WarehouseMgr
do
{
tuple = await _elevatorControlService.GetElevatorStatus(devName, CancellationToken.None);
await Task.Delay(2000);
tuple = await _elevatorControlService.GetElevatorStatus(devName,tags, CancellationToken.None);
await Task.Delay(1000);
} while (tuple.sysStatus != 3 && tuple.runStatus != 0);
Logger.Information($"sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},floorNo:{tuple.floorNo},disTask.end_floor={disTask.end_floor}");
@@ -811,8 +821,6 @@ namespace Tnb.WarehouseMgr
_ = await _db.Updateable(carryCodeIts).UpdateColumns(it => new { it.warehouse_id, it.location_id, it.location_code }).Where(it => multiList.Select(x => x.carry_id).Contains(it.carry_id)).ExecuteCommandAsync();
//更新库位信息,使用状态为 使用,锁定状态为未锁定
_ = await _db.Updateable(locIts).UpdateColumns(it => new { it.is_use, it.is_lock }).ExecuteCommandAsync();
Logger.Information("更新载具及库位结束.....");
Logger.Information($"_userManager==null:{_userManager == null}");
/* var loginType= _userManager?.LoginType ?? "web";
Log.Information($"_userManager.LoginType={loginType}");
*/ //更新业务主表的单据状态