执行代码清理,修复warning
This commit is contained in:
@@ -20,8 +20,8 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
private readonly ElevatorControlConfiguration _elevatorCtlCfg = new();
|
||||
private readonly BackgroundService _agvHeartbeatMonitor;
|
||||
private static Dictionary<string, Func<BackgroundService, bool>> _fetchStartedStausValue = new();
|
||||
private bool isFrontDoorBit = false; //是否到前门位
|
||||
private static readonly Dictionary<string, Func<BackgroundService, bool>> _fetchStartedStausValue = new();
|
||||
private readonly bool isFrontDoorBit = false; //是否到前门位
|
||||
|
||||
public ElevatorControlService()
|
||||
{
|
||||
@@ -36,17 +36,17 @@ namespace Tnb.WarehouseMgr
|
||||
[HttpPost]
|
||||
public async Task<dynamic> CallLiftTest(string devName, int floor)
|
||||
{
|
||||
var isSuccefuly = false;
|
||||
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None);
|
||||
bool isSuccefuly = false;
|
||||
(int sysStatus, int runStatus, _, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None);
|
||||
//判断当前楼层是否是放货楼层,如不是则呼叫电梯到当前楼层
|
||||
if (sysStatus.ToEnum<EnumSysStatus>() == EnumSysStatus.正常状态 && runStatus.ToEnum<EnumRunStatus>() == EnumRunStatus.停梯 &&
|
||||
agvStatus.ToEnum<EnumAgvStatus>() != EnumAgvStatus.AGV运行状态)
|
||||
{
|
||||
if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.关门到位保持)
|
||||
{
|
||||
await SendOpenCloseCmd(devName, (int)EnumAgvControl.前门关门);
|
||||
_ = await SendOpenCloseCmd(devName, (int)EnumAgvControl.前门关门);
|
||||
}
|
||||
var result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层
|
||||
dynamic result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层
|
||||
if (!string.IsNullOrEmpty(result))
|
||||
{
|
||||
JObject jo = JObject.Parse(result);
|
||||
@@ -60,7 +60,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<dynamic> ThreeFloorElevatorFlow()
|
||||
public dynamic ThreeFloorElevatorFlow()
|
||||
{
|
||||
//test by close door
|
||||
//_agvHeartbeatMonitor.StartAsync(CancellationToken.None);
|
||||
@@ -118,7 +118,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
private Task<object> SetRequestParameter(string tagName, object value)
|
||||
{
|
||||
var tcs = new TaskCompletionSource<object>();
|
||||
TaskCompletionSource<object> tcs = new();
|
||||
dynamic reqParam = new ExpandoObject();
|
||||
reqParam.DevName = _elevatorCtlCfg.DevName;
|
||||
reqParam.TagName = tagName;
|
||||
@@ -131,15 +131,14 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
private Task<Dictionary<string, string>> SetParameter(dynamic obj)
|
||||
{
|
||||
var parameters = new Dictionary<string, string>()
|
||||
Dictionary<string, string> parameters = new()
|
||||
{
|
||||
["DevName"] = _elevatorCtlCfg.DevName,
|
||||
["token"] = _elevatorCtlCfg.token,
|
||||
};
|
||||
var dynamicDic = obj as IDictionary<string, object>;
|
||||
if (dynamicDic != null)
|
||||
if (obj is IDictionary<string, object> dynamicDic)
|
||||
{
|
||||
foreach (var (k, v) in dynamicDic)
|
||||
foreach ((string k, object v) in dynamicDic)
|
||||
{
|
||||
parameters[k] = v?.ToString() ?? string.Empty;
|
||||
}
|
||||
@@ -150,18 +149,21 @@ namespace Tnb.WarehouseMgr
|
||||
/// <summary>
|
||||
/// 向系统发送开关门指令
|
||||
/// </summary>
|
||||
/// <param name="devName"></param>
|
||||
/// <param name="value">开关门指令</param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> SendOpenCloseCmd(string devName, int value)
|
||||
{
|
||||
var dicCommand = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||
dicCommand["DevName"] = devName;
|
||||
dicCommand["token"] = _elevatorCtlCfg.token;
|
||||
dicCommand["TagName"] = "DoorExecute";
|
||||
dicCommand["Value"] = value.ToString();
|
||||
Dictionary<string, string> dicCommand = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["DevName"] = devName,
|
||||
["token"] = _elevatorCtlCfg.token,
|
||||
["TagName"] = "DoorExecute",
|
||||
["Value"] = value.ToString()
|
||||
};
|
||||
try
|
||||
{
|
||||
await HttpClientHelper.GetAsync(_elevatorCtlCfg.WriteTagUrl, pars: dicCommand);
|
||||
_ = await HttpClientHelper.GetAsync(_elevatorCtlCfg.WriteTagUrl, pars: dicCommand);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
@@ -177,43 +179,51 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
private async Task<dynamic> SetAgvControlStatus(int value)
|
||||
{
|
||||
var dicCommand = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||
dicCommand["DevName"] = _elevatorCtlCfg.DevName;
|
||||
dicCommand["TagName"] = "AGVControl";
|
||||
dicCommand["Value"] = value.ToString();
|
||||
dicCommand["token"] = _elevatorCtlCfg.token;
|
||||
Dictionary<string, string> dicCommand = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["DevName"] = _elevatorCtlCfg.DevName,
|
||||
["TagName"] = "AGVControl",
|
||||
["Value"] = value.ToString(),
|
||||
["token"] = _elevatorCtlCfg.token
|
||||
};
|
||||
return await HttpClientHelper.GetAsync(_elevatorCtlCfg.WriteTagUrl, pars: dicCommand);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 向指定的标签属性写入值
|
||||
/// </summary>
|
||||
/// <param name="devName"></param>
|
||||
/// <param name="tagName"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<dynamic> WriteTagAsync(string devName, string tagName, int value)
|
||||
{
|
||||
var dicCommand = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||
dicCommand["DevName"] = devName;
|
||||
dicCommand["token"] = _elevatorCtlCfg.token;
|
||||
dicCommand["TagName"] = tagName;
|
||||
dicCommand["Value"] = value.ToString();
|
||||
Dictionary<string, string> dicCommand = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["DevName"] = devName,
|
||||
["token"] = _elevatorCtlCfg.token,
|
||||
["TagName"] = tagName,
|
||||
["Value"] = value.ToString()
|
||||
};
|
||||
return await HttpClientHelper.GetAsync(_elevatorCtlCfg.WriteTagUrl, pars: dicCommand);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据标签名称获取标签值
|
||||
/// </summary>
|
||||
/// <param name="devName"></param>
|
||||
/// <param name="tagName"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<int> GetTagAsync(string devName, string tagName)
|
||||
{
|
||||
var dicCommand = new Dictionary<string, string>();
|
||||
dicCommand["DevName"] = devName;
|
||||
dicCommand["token"] = _elevatorCtlCfg.token;
|
||||
dicCommand["TagName"] = tagName;
|
||||
var result = await HttpClientHelper.GetAsync(_elevatorCtlCfg.GetTagUrl, pars: dicCommand);
|
||||
Dictionary<string, string> dicCommand = new()
|
||||
{
|
||||
["DevName"] = devName,
|
||||
["token"] = _elevatorCtlCfg.token,
|
||||
["TagName"] = tagName
|
||||
};
|
||||
string result = await HttpClientHelper.GetAsync(_elevatorCtlCfg.GetTagUrl, pars: dicCommand);
|
||||
JObject jo = JObject.Parse(result);
|
||||
return jo.Value<int>("V");
|
||||
}
|
||||
@@ -221,21 +231,24 @@ namespace Tnb.WarehouseMgr
|
||||
/// <summary>
|
||||
/// 获取电梯状态
|
||||
/// </summary>
|
||||
/// <param name="devName"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus)> GetElevatorStatus(string devName, CancellationToken token)
|
||||
{
|
||||
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) multi = (-1, -1, -1, -1, -1);
|
||||
var pars = new Dictionary<string, string>();
|
||||
pars["DevName"] = devName;
|
||||
pars["Pos"] = "1";
|
||||
pars["Count"] = "11";
|
||||
pars["token"] = _elevatorCtlCfg.token;
|
||||
var url = _elevatorCtlCfg.GetTagListUrl;
|
||||
var systemInfo = await HttpClientHelper.GetAsync(url, pars: pars);
|
||||
var jo = JObject.Parse(systemInfo);
|
||||
var objs = jo["Items"].Values<JObject>().ToList();
|
||||
Dictionary<string, string> pars = new()
|
||||
{
|
||||
["DevName"] = devName,
|
||||
["Pos"] = "1",
|
||||
["Count"] = "11",
|
||||
["token"] = _elevatorCtlCfg.token
|
||||
};
|
||||
string url = _elevatorCtlCfg.GetTagListUrl;
|
||||
string systemInfo = await HttpClientHelper.GetAsync(url, pars: pars);
|
||||
JObject jo = JObject.Parse(systemInfo);
|
||||
List<JObject?> objs = jo["Items"].Values<JObject>().ToList();
|
||||
//if (objs?.Count == 4)
|
||||
{
|
||||
if (objs[0].Value<string>("Name").Equals("SysStatus")
|
||||
@@ -252,15 +265,16 @@ namespace Tnb.WarehouseMgr
|
||||
/// <summary>
|
||||
/// 检查Agv状态
|
||||
/// </summary>
|
||||
/// <param name="devName"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<bool> CheckAgvStatus(string devName, CancellationToken cancellationToken)
|
||||
{
|
||||
var isInAgvStatus = false;
|
||||
var agvStatus = await GetTagAsync(devName, ElevatorConsts.AGVStatus);
|
||||
bool isInAgvStatus = false;
|
||||
int agvStatus = await GetTagAsync(devName, ElevatorConsts.AGVStatus);
|
||||
if (agvStatus.ToEnum<EnumAgvStatus>() != EnumAgvStatus.AGV运行状态)
|
||||
{
|
||||
var result = await WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
|
||||
dynamic result = await WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
|
||||
JObject jo = JObject.Parse(result);
|
||||
if (jo != null && jo.Value<string>("Result").Equals("Ok", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -278,17 +292,17 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
public async Task<bool> CallLift(string devName, int floor, CancellationToken cancellationToken)
|
||||
{
|
||||
var isSuccefuly = false;
|
||||
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None);
|
||||
bool isSuccefuly = false;
|
||||
(int sysStatus, int runStatus, _, int doorStatus, int agvStatus) = await GetElevatorStatus(devName, CancellationToken.None);
|
||||
//判断当前楼层是否是放货楼层,如不是则呼叫电梯到当前楼层
|
||||
if (sysStatus.ToEnum<EnumSysStatus>() == EnumSysStatus.正常状态 && runStatus.ToEnum<EnumRunStatus>() == EnumRunStatus.停梯 &&
|
||||
agvStatus.ToEnum<EnumAgvStatus>() != EnumAgvStatus.AGV运行状态)
|
||||
{
|
||||
if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.关门到位保持)
|
||||
{
|
||||
await SendOpenCloseCmd(devName, (int)EnumAgvControl.前门关门);
|
||||
_ = await SendOpenCloseCmd(devName, (int)EnumAgvControl.前门关门);
|
||||
}
|
||||
var result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层
|
||||
dynamic result = await WriteTagAsync(devName, ElevatorConsts.FloorExecute, floor); //呼叫电梯到指定楼层
|
||||
if (!string.IsNullOrEmpty(result))
|
||||
{
|
||||
JObject jo = JObject.Parse(result);
|
||||
@@ -301,7 +315,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
public class ElevatorData
|
||||
{
|
||||
public string name { get; set; }
|
||||
public string value { get; set; }
|
||||
public string? name { get; set; }
|
||||
public string? value { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user