空载具入库,获取目标库位集合代码还原,用于测试CTU
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System.Diagnostics;
|
||||
using System.Dynamic;
|
||||
using System.Linq.Expressions;
|
||||
using Aliyun.OSS;
|
||||
using JNPF;
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Core.Manager;
|
||||
@@ -233,7 +234,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// 判断CTU是否可以放货
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
/*[HttpPost]
|
||||
public async Task CheckPut(CheckPutInput input)
|
||||
{
|
||||
Dictionary<string, string[]> dic = new Dictionary<string, string[]>();
|
||||
@@ -252,7 +253,7 @@ namespace Tnb.WarehouseMgr
|
||||
bool result = res != null && res["Value"] != null ? res.Value<bool>("Value") : false;
|
||||
if (!result)
|
||||
throw new AppFriendlyException("点位" + input.point_code + "不可放", 500);
|
||||
}
|
||||
}*/
|
||||
|
||||
/// <summary>
|
||||
/// 生成任务执行
|
||||
@@ -438,25 +439,9 @@ namespace Tnb.WarehouseMgr
|
||||
var agvDTTasks = disTasks.Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) &&
|
||||
!it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList();
|
||||
|
||||
foreach (var task in agvDTTasks)
|
||||
{
|
||||
ElevagorInfoQuery q = new() { endlocation_id = task.endlocation_id };
|
||||
var e = await FindElevatorFromPars(q);
|
||||
if (e != null)
|
||||
{
|
||||
task.device_id = e.device_id;
|
||||
}
|
||||
}
|
||||
await SetEleDevId(agvDTTasks);
|
||||
|
||||
/*foreach (var at in agvDTTasks)
|
||||
{
|
||||
var ele = elevatorList.Find(x => x.location_code == at.endlocation_code);
|
||||
Logger.Information($"ele.elevator_id:{ele?.elevator_id},elevator_code:{ele?.elevator_code}");
|
||||
if (ele != null)
|
||||
{
|
||||
at.device_id = ele.elevator_id;
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
List<(string endlocation_code, string device_id, string id, int start_floor)> endLocCodes = agvDTTasks
|
||||
.Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList();
|
||||
@@ -466,7 +451,7 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
if (endLocCodes.Select(x => x.device_id).All(x => !x.IsNullOrWhiteSpace()))
|
||||
{
|
||||
Logger.Information("呼梯操作");
|
||||
Logger.Information($"呼梯操作");
|
||||
_ = CallingLanding(endLocCodes);
|
||||
}
|
||||
else
|
||||
@@ -482,6 +467,7 @@ namespace Tnb.WarehouseMgr
|
||||
if (elevatorTasks?.Count > 0)
|
||||
{
|
||||
Logger.Information($"当前电梯任务数:{elevatorTasks?.Count ?? 0}");
|
||||
await SetEleDevId(elevatorTasks);
|
||||
foreach (WmsDistaskH? elevatorTask in elevatorTasks)
|
||||
{
|
||||
_ = ExecuteTargetFloorTask(elevatorTask);
|
||||
@@ -496,6 +482,19 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async Task SetEleDevId(List<WmsDistaskH> distaskList)
|
||||
{
|
||||
foreach (var task in distaskList)
|
||||
{
|
||||
ElevagorInfoQuery q = new() { endlocation_id = task.endlocation_id };
|
||||
var e = await FindElevatorFromPars(q);
|
||||
if (e != null)
|
||||
{
|
||||
task.device_id = e.device_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex) when (ex is HttpRequestException hReqEx)
|
||||
{
|
||||
@@ -606,16 +605,16 @@ namespace Tnb.WarehouseMgr
|
||||
private async Task ExecuteTargetFloorTask(WmsDistaskH disTask)
|
||||
{
|
||||
//收到放货确认通知,向电梯发送到3楼的指令
|
||||
Logger.Information($"开始执行电梯任务,任务ID:{disTask.id}");
|
||||
Logger.Information($"开始执行电梯任务,任务ID:{disTask.id},设备ID:{disTask.device_id}");
|
||||
try
|
||||
{
|
||||
if (!s_elevatorMap.TryGetValue(disTask.device_id, out object? elevatorCode))
|
||||
{
|
||||
return;
|
||||
}
|
||||
string devName = s_elevatorMap[disTask.device_id]?.ToString() ?? _eleCtlCfg.DevName3;
|
||||
string devName = elevatorCode?.ToString();
|
||||
|
||||
Logger.Information($"当前:{devName.Match(@"\d+")}#梯");
|
||||
Logger.Information($"当前设备{devName},{devName.Match(@"\d+")}#梯");
|
||||
|
||||
var tags = new[] { "SysStatus", "RunStatus", "FloorNo", "DoorStatus", "AGVStatus" };
|
||||
(int sysStatus, int runStatus, int curFloorNo, int doorStatus, int agvStatus) eleStatusMulti = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
||||
@@ -623,8 +622,9 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
_ = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
|
||||
}
|
||||
Logger.Information($"电梯当前状态->系统状态:{eleStatusMulti.sysStatus.ToEnum<EnumSysStatus>()},运行状态:{eleStatusMulti.runStatus.ToEnum<EnumRunStatus>().ToString()},门状态:{eleStatusMulti.doorStatus.ToEnum<EnumDoorStatus>().ToString()},Agv状态:{eleStatusMulti.agvStatus.ToEnum<EnumAgvStatus>().ToString()},当前楼层:{eleStatusMulti.curFloorNo}");
|
||||
|
||||
if (!_elevatorAgvCtlStatusMap.TryGetValue(disTask.id, out int agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态)
|
||||
if (!_elevatorAgvCtlStatusMap.TryGetValue(disTask.device_id, out int agvCtlStatus) || agvCtlStatus != (int)EnumAgvStatus.AGV运行状态)
|
||||
{
|
||||
do
|
||||
{
|
||||
@@ -632,7 +632,7 @@ namespace Tnb.WarehouseMgr
|
||||
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;
|
||||
_elevatorAgvCtlStatusMap[disTask.device_id] = eleStatusMulti.agvStatus;
|
||||
}
|
||||
|
||||
int doorStatus = -1;
|
||||
@@ -641,6 +641,7 @@ namespace Tnb.WarehouseMgr
|
||||
do
|
||||
{
|
||||
doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
|
||||
Logger.Information($"关门结果:{closeDoorRes}");
|
||||
await Task.Delay(1000);
|
||||
} while (doorStatus != 4);
|
||||
Logger.Information($"当前门状态:{doorStatus}");
|
||||
@@ -824,9 +825,13 @@ namespace Tnb.WarehouseMgr
|
||||
_ = await _db.Updateable<WmsPretaskH>().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync();
|
||||
|
||||
//更新电梯任务数量
|
||||
var eles = await _db.Queryable<WmsElevatorH>().Where(it => disTasks.Select(x => x.area_code).Contains(it.area_code)).ToListAsync();
|
||||
var areaCodes = disTasks.Select(x => x.area_code).ToList();
|
||||
var eles = await _db.Queryable<WmsElevatorH>().Where(it => areaCodes.Contains(it.area_code)).ToListAsync();
|
||||
if (eles?.Count > 0)
|
||||
await _db.Updateable(eles).ReSetValue(it => it.task_nums--).ExecuteCommandAsync();
|
||||
{
|
||||
eles.ForEach(x => x.task_nums--);
|
||||
await _db.Updateable(eles).UpdateColumns(it=>it.task_nums).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
//更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位
|
||||
|
||||
|
||||
Reference in New Issue
Block a user