空载具入库,获取目标库位集合代码还原,用于测试CTU
This commit is contained in:
@@ -45,7 +45,7 @@ namespace Tnb.WarehouseMgr
|
||||
private readonly IElevatorControlService _elevatorControlService;
|
||||
private readonly ElevatorControlConfiguration _eleCtlCfg = App.Configuration.Build<ElevatorControlConfiguration>();
|
||||
private readonly ILoggerFactory _loggerFactory;
|
||||
public static Dictionary<string, int> s_eleUseStatusDic = new();
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -108,30 +108,32 @@ namespace Tnb.WarehouseMgr
|
||||
}, true)
|
||||
.FirstAsync();*/
|
||||
Logger.Information($"当前取货,子任务编号:{input.taskCode}");
|
||||
ElevagorInfoQuery q = new() { taskCode =input.taskCode };
|
||||
|
||||
ElevagorInfoQuery q = new() { taskCode = input.taskCode };
|
||||
WmsElevatorH elevator = await FindElevatorFromPars(q);
|
||||
if (elevator.IsNull())
|
||||
{
|
||||
Logger.Error("未找到匹配的电梯任务", new Exception($"根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务"));
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (s_elevatorMap.TryGetValue(elevator.device_id, out object? elevatorCode))
|
||||
{
|
||||
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.空闲;
|
||||
string devName = elevatorCode?.ToString();
|
||||
Logger.Information($"获取设备:{devName},状态");
|
||||
var tags = _eleCtlCfg.tags;
|
||||
await Task.Delay(1000);
|
||||
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
||||
Logger.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum<EnumSysStatus>()},运行状态:{runStatus.ToEnum<EnumRunStatus>()},Agv状态:{agvStatus.ToEnum<EnumAgvStatus>()},当前楼层:{floorNo}");
|
||||
{
|
||||
var curFloor = await GetRealFloor(elevator.end_floor);
|
||||
Logger.Information($"目标楼层:{curFloor},电梯当前楼层:{floorNo}");
|
||||
Logger.Information($"当前放货设备ID:{elevator.device_id}");
|
||||
var loadedStatus = s_eleUseStatusDic[elevator.device_id] == 1 ? "完成" : "未完成";
|
||||
Logger.Information($"{devName.Match(@"\d+")}#梯,放货-> {loadedStatus}");
|
||||
|
||||
/* Logger.Information($"目标楼层:{curFloor},电梯当前楼层:{floorNo}");
|
||||
Logger.Information($"当前取货设备ID:{elevator.device_id}");
|
||||
var loadedStatus = s_eleUseStatusDic[elevator.device_id] == 1 ? "完成" : "未完成";
|
||||
Logger.Information($"{devName.Match(@"\d+")}#梯,取货-> {loadedStatus}");
|
||||
*/
|
||||
if (s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲 && curFloor != floorNo)
|
||||
{
|
||||
_ = await _elevatorControlService.CallLift(devName, elevator.end_floor, CancellationToken.None);
|
||||
@@ -144,10 +146,11 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
_ = await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令
|
||||
}
|
||||
if (doorStatus == (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.占用)
|
||||
{
|
||||
await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||
}
|
||||
//if (doorStatus == (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.占用)
|
||||
//{
|
||||
// Logger.Information($"{devName.Match(@"\d+")}#梯,任务未完成");
|
||||
// await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||
//}
|
||||
|
||||
if (sysStatus.ToEnum<EnumSysStatus>() == EnumSysStatus.正常状态 && runStatus.ToEnum<EnumRunStatus>() == EnumRunStatus.停梯
|
||||
&& doorStatus == (int)EnumDoorStatus.开门到位保持)
|
||||
@@ -204,7 +207,6 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
string devName = elevatorCode?.ToString();
|
||||
Logger.Information($"获取设备:{devName},状态");
|
||||
await Task.Delay(1000);
|
||||
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(devName, _eleCtlCfg.tags, CancellationToken.None);//elevator.elevator_code
|
||||
Logger.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum<EnumSysStatus>()},运行状态:{runStatus},门状态:{doorStatus},Agv状态:{agvStatus},当前楼层:{floorNo}");
|
||||
//判断Agv电梯是否进入状态
|
||||
@@ -229,10 +231,11 @@ namespace Tnb.WarehouseMgr
|
||||
Logger.Information($"当前楼层:{curFloor},电梯所在楼层:{floorNo}");
|
||||
if (doorStatus == (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.占用)
|
||||
{
|
||||
await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||
Logger.Information($"{devName.Match(@"\d+")}#梯,任务未完成");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||
}
|
||||
//电梯到达目标楼层后,判断当前电梯门状态是否为开门到位保持状态
|
||||
if (doorStatus != (int)EnumDoorStatus.开门到位保持 && curFloor == floorNo) //判断目标楼层与电梯所在楼层在同一层才可开门放货
|
||||
if (s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲 && doorStatus != (int)EnumDoorStatus.开门到位保持 && curFloor == floorNo) //判断目标楼层与电梯所在楼层在同一层才可开门放货
|
||||
{
|
||||
_ = await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令
|
||||
}
|
||||
@@ -241,6 +244,7 @@ namespace Tnb.WarehouseMgr
|
||||
&& doorStatus == (int)EnumDoorStatus.开门到位保持)
|
||||
{
|
||||
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.占用;
|
||||
Logger.Information($"当前电梯状态:{s_eleUseStatusDic[elevator.device_id].ToEnum<EnumElevatorUseStatus>().ToString()}");
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
}
|
||||
@@ -364,7 +368,7 @@ namespace Tnb.WarehouseMgr
|
||||
//根据Agv传递的参数获取,对应的电梯
|
||||
ElevagorInfoQuery q = new() { taskCode = input.taskCode };
|
||||
WmsElevatorH elevator = await FindElevatorFromPars(q);
|
||||
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.空闲;
|
||||
//s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.空闲;
|
||||
Logger.Information($"当前取货设备ID:{elevator.device_id}");
|
||||
//根据disTask StartLocationId 起始库位关联电梯获取设备ID location_code.Continas("")
|
||||
var devName = s_elevatorMap[elevator.device_id]?.ToString();
|
||||
|
||||
Reference in New Issue
Block a user