添加定时向 wms 发送堆垛机状态的定时器
This commit is contained in:
parent
79fc895f4a
commit
9e1af92672
|
|
@ -55,7 +55,7 @@ public class WebApiPost
|
|||
/// <param name="method"></param>
|
||||
/// <param name="time"></param>
|
||||
/// <returns></returns>
|
||||
public ApiResponseInfo<TResponse> HttpPost<TRequest, TResponse>(TRequest requestEntity, string method = "", int time = 10000) where TRequest : class where TResponse : class, new()
|
||||
public ApiResponseInfo<TResponse> HttpPost<TRequest, TResponse>(TRequest requestEntity, string method = "", int time = 10000, bool executeAction = true) where TRequest : class where TResponse : class, new()
|
||||
{
|
||||
ApiResponseInfo<TResponse> result = new()
|
||||
{
|
||||
|
|
@ -112,7 +112,10 @@ public class WebApiPost
|
|||
result.ResponseTime = DateTime.Now;
|
||||
TimeSpan ts = sw.Elapsed;
|
||||
result.UseTime = ts.TotalMilliseconds;
|
||||
if(executeAction)
|
||||
{
|
||||
_apiAction?.Invoke(result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
using Newtonsoft.Json;
|
||||
|
||||
namespace WcsMain.ApiClient.DataEntity.WmsEntity;
|
||||
|
||||
/// <summary>
|
||||
/// 上传堆垛机是否报错的请求实体
|
||||
/// </summary>
|
||||
public class UploadStackerStatusRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 设备号
|
||||
/// </summary>
|
||||
[JsonProperty("equipment")]
|
||||
public int? Equipment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否报错 --- 0:不报错;1:不可用
|
||||
/// </summary>
|
||||
[JsonProperty("error")]
|
||||
public int? Error { get; set; }
|
||||
|
||||
/*
|
||||
|
||||
|
||||
[
|
||||
{
|
||||
"equipment":1,
|
||||
"error":0
|
||||
},
|
||||
{
|
||||
"equipment":2,
|
||||
"error":1
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
using CirculateTool.Attribute;
|
||||
using WcsMain.ApiClient.DataEntity.WmsEntity;
|
||||
using WcsMain.Common;
|
||||
using WcsMain.EquipOperation.Stacker;
|
||||
using WcsMain.ExtendMethod;
|
||||
using WcsMain.Plugins;
|
||||
|
||||
namespace WcsMain.Business.CirculationTask.Stacker;
|
||||
|
||||
/// <summary>
|
||||
/// 上传堆垛机可用状态给wms
|
||||
/// </summary>
|
||||
[Circulation]
|
||||
public class UploadStackerStatus(StackerOperation stackerOperation, WmsWebApiPost wmsWebApiPost)
|
||||
{
|
||||
List<int?> StackerNotOpen = [];
|
||||
|
||||
[Circulation("上传堆垛机报错状态给WMS")]
|
||||
public bool Uplaod()
|
||||
{
|
||||
List<UploadStackerStatusRequest> uploadStackerStatusRequests = []; // 需要上报给WMS的状态
|
||||
var allStackers = CommonData.AppStackers;
|
||||
foreach (var stacker in allStackers)
|
||||
{
|
||||
if(!StackerNotOpen.Contains(stacker.StackerId))
|
||||
{
|
||||
/* 检查堆垛机是否开放 */
|
||||
var canUse = stacker.StackerStatus;
|
||||
if (canUse == null || canUse == 0)
|
||||
{
|
||||
StackerNotOpen.Add(stacker.StackerId);
|
||||
uploadStackerStatusRequests.Add(new UploadStackerStatusRequest
|
||||
{
|
||||
Equipment = stacker.StackerId,
|
||||
Error = 1,
|
||||
});
|
||||
continue;
|
||||
}
|
||||
}
|
||||
/* 检查设备是否可用 ---- 从设备通讯拉取 */
|
||||
Thread.Sleep(200);
|
||||
var (errMsg, stackerInfo) = stackerOperation.GetStackerInfo((int)stacker.StackerId!);
|
||||
if (errMsg != null || stackerInfo == null) // 报错
|
||||
{
|
||||
uploadStackerStatusRequests.Add(new UploadStackerStatusRequest
|
||||
{
|
||||
Equipment = stacker.StackerId,
|
||||
Error = 1,
|
||||
});
|
||||
continue;
|
||||
}
|
||||
int canUse2 = (stackerInfo.ErrCode == 0 && stackerInfo.ControlModel == Enum.Stacker.StackerControlModeEnum.online && stackerInfo.StackerStatus != Enum.Stacker.StackerStatusEnum.offline) ? 1 : 0;
|
||||
uploadStackerStatusRequests.Add(new UploadStackerStatusRequest
|
||||
{
|
||||
Equipment = stacker.StackerId,
|
||||
Error = canUse2 == 0 ? 1 : 0,
|
||||
});
|
||||
}
|
||||
// 上报 WMS
|
||||
wmsWebApiPost.HttpPost<List<UploadStackerStatusRequest>, WmsResponse>(uploadStackerStatusRequests, CommonData.AppApiBaseInfos.GetAddress("uploadStackerStatus") ?? "", time: 500, executeAction: false);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user