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

@@ -13,6 +13,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Senparc.CO2NET.Cache;
using SqlSugar;
using Tnb.Common.Extension;
using Tnb.EquipMgr.Entities;
@@ -85,9 +86,8 @@ namespace Tnb.WarehouseMgr
WmsElevatorH elevator = await _db.Queryable<WmsElevatorH>().LeftJoin<WmsElevatorD>((a, b) => a.id == b.bill_id)
.LeftJoin<WmsDistaskH>((a, b, c) => b.location_id == c.startlocation_id)
.LeftJoin<WmsPointH>((a, b, c, d) => c.startlocation_id == d.location_id)
.Where((a, b, c, d) => d.point_code == input.sourceName && input.taskCode.Contains(c.bill_code))
.Select((a, b, c, d) => new WmsElevatorH
.Where((a, b, c) => c.endpoint_code == input.sourceName && input.taskCode == input.taskCode)
.Select((a, b, c) => new WmsElevatorH
{
distask_id = c.id,
device_id = a.elevator_id,
@@ -102,10 +102,13 @@ namespace Tnb.WarehouseMgr
try
{
Logger.Information($"当前任务Id:{elevator.distask_id}");
Logger.Information($"elevator.device_id={elevator.device_id}");
if (s_elevatorMap.TryGetValue(elevator.device_id, out object? elevatorCode))
{
string devName = elevatorCode?.ToString() ?? _eleCtlCfg.DevName;
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(devName, CancellationToken.None);
string devName = elevatorCode?.ToString() ?? _eleCtlCfg.DevName3;
var tags = new[] { "SysStatus", "RunStatus", "FloorNo", "DoorStatus", "AGVStatus" };
(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}");
{
if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.)
@@ -139,18 +142,18 @@ namespace Tnb.WarehouseMgr
[HttpPost, NonUnify, AllowAnonymous]
public async Task<Result> UnloadConfirm(ConfirmInput input)//
{
Logger.Information($"输入参数:{JsonConvert.SerializeObject(input)}");
Logger.Information("放货确认..................");
try
{
//根据Agv传递的参数获取对应的电梯
WmsElevatorH elevator = await _db.Queryable<WmsElevatorH>().LeftJoin<WmsElevatorD>((a, b) => a.id == b.bill_id)
.LeftJoin<WmsDistaskH>((a, b, c) => b.location_id == c.endlocation_id)
.LeftJoin<WmsPointH>((a, b, c, d) => c.endlocation_id == d.location_id)
.Where((a, b, c, d) => d.point_code == input.targetName && c.bill_code == input.taskCode)
.Select((a, b, c, d) => new WmsElevatorH
.Where((a, b, c) => c.endpoint_code == input.targetName && (c.bill_code == input.taskCode || c.bill_code == input.taskChainCode))
.Select((a, b, c) => new WmsElevatorH
{
end_floor = SqlFunc.ToInt32(c.end_floor),
distask_id = c.id,
device_id = a.elevator_id,
}, true)
.FirstAsync();
if (elevator.IsNull())
@@ -158,10 +161,11 @@ namespace Tnb.WarehouseMgr
throw new Exception($"根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务");
}
if (s_elevatorMap.TryGetValue(elevator.elevator_id, out object? elevatorCode))
if (s_elevatorMap.TryGetValue(elevator.device_id, out object? elevatorCode))
{
string devName = elevatorCode?.ToString() ?? _eleCtlCfg.DevName;
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(devName, CancellationToken.None);//elevator.elevator_code
string devName = elevatorCode?.ToString() ?? _eleCtlCfg.DevName3;
var tags = new[] { "SysStatus", "RunStatus", "FloorNo", "DoorStatus", "AGVStatus" };
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);//elevator.elevator_code
Logger.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum<EnumSysStatus>()},运行状态:{runStatus},门状态:{doorStatus},Agv状态:{agvStatus},当前楼层:{floorNo}");
//判断Agv电梯是否进入状态
if (agvStatus != (int)EnumAgvStatus.AGV运行状态)
@@ -253,14 +257,22 @@ namespace Tnb.WarehouseMgr
List<WmsDistaskH> disTasks = await _db.Queryable<WmsDistaskH>().Where(it => it.bill_code.Contains(input.taskChainCode)).ToListAsync();
List<EqpEquipment> eps = await _db.Queryable<EqpEquipment>().Where(it => it.code.Contains(input.deviceID)).ToListAsync();
TaskExecuteUpInput taskExecuteUpInput = new()
if (disTasks == null || disTasks.Count < 1)
{
disTaskIds = disTasks.Select(x => x.id).ToList(),
EqpIds = eps.Select(x => x.id).ToList(),
};
await _wareHouseService.TaskExecute(taskExecuteUpInput);
Logger.Error($"根据任务链编号:{input.taskChainCode} ,未获取到任何任务");
}
if (disTasks?.Count > 0)
{
TaskExecuteUpInput taskExecuteUpInput = new()
{
disTaskIds = disTasks?.Select(x => x.id).ToList() ?? Enumerable.Empty<string>().ToList(),
EqpIds = eps?.Select(x => x.id).ToList() ?? Enumerable.Empty<string>().ToList(),
};
await _wareHouseService.TaskExecute(taskExecuteUpInput);
}
ConnectionConfigOptions opts = App.GetOptions<ConnectionConfigOptions>();
/*ConnectionConfigOptions opts = App.GetOptions<ConnectionConfigOptions>();
UserAgent userAgent = new(App.HttpContext);
//写系统日志
await _eventPublisher.PublishAsync(new LogEventSource("Log:CreateOpLog", opts, new SysLogEntity
@@ -275,11 +287,12 @@ namespace Tnb.WarehouseMgr
Json = $"任务链状态上报,任务链编号:{input.taskChainCode},上报状态:{input.status},设备编号:{input.deviceID}",
PlatForm = string.Format("{0}-{1}", userAgent.OS.ToString(), userAgent.RawValue),
CreatorTime = DateTime.Now
}));
}));*/
}
catch (Exception ex)
{
Logger.Error("任务链状态上报", ex);
Logger.Error($"任务链状态上报错误堆栈{Environment.NewLine}{ex.StackTrace}");
return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!");
throw;
}
@@ -326,6 +339,7 @@ namespace Tnb.WarehouseMgr
{
disTaskIds = disTasks.Select(x => x.id).ToList()
};
Logger.Information($"taskCompleUpInput json parameter:{JsonConvert.SerializeObject(taskCompleUpInput)}");
await _wareHouseService.TaskComplate(taskCompleUpInput);
}