2024-08-28 13:35:44 +08:00
|
|
|
|
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!);
|
2024-08-30 08:14:13 +08:00
|
|
|
|
if (!string.IsNullOrEmpty(errMsg) || stackerInfo == null) // 报错
|
2024-08-28 13:35:44 +08:00
|
|
|
|
{
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|