添加定时向 wms 发送堆垛机状态的定时器
This commit is contained in:
parent
79fc895f4a
commit
9e1af92672
|
|
@ -55,7 +55,7 @@ public class WebApiPost
|
||||||
/// <param name="method"></param>
|
/// <param name="method"></param>
|
||||||
/// <param name="time"></param>
|
/// <param name="time"></param>
|
||||||
/// <returns></returns>
|
/// <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()
|
ApiResponseInfo<TResponse> result = new()
|
||||||
{
|
{
|
||||||
|
|
@ -112,7 +112,10 @@ public class WebApiPost
|
||||||
result.ResponseTime = DateTime.Now;
|
result.ResponseTime = DateTime.Now;
|
||||||
TimeSpan ts = sw.Elapsed;
|
TimeSpan ts = sw.Elapsed;
|
||||||
result.UseTime = ts.TotalMilliseconds;
|
result.UseTime = ts.TotalMilliseconds;
|
||||||
|
if(executeAction)
|
||||||
|
{
|
||||||
_apiAction?.Invoke(result);
|
_apiAction?.Invoke(result);
|
||||||
|
}
|
||||||
return 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