Product_Wms/WcsMain/CirculationJob/Stacker/UploadStackerStatus.cs
icewint 03c600bc70 1、修改文件结构
2、删除不使用的 using
2024-11-15 11:38:01 +08:00

67 lines
2.5 KiB
C#

using CirculateTool.Attribute;
using WcsMain.ApiClient.WMS;
using WcsMain.ApiClient.WMS.Dto;
using WcsMain.Common;
using WcsMain.Constant.Enum.Stacker;
using WcsMain.EquipOperation.Stacker;
using WcsMain.ExtendMethod;
namespace WcsMain.CirculationJob.Stacker;
/// <summary>
/// 上传堆垛机可用状态给wms
/// </summary>
//[Circulation]
public class UploadStackerStatus(StackerOperation stackerOperation, WmsBaseWebApi 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 (!string.IsNullOrEmpty(errMsg) || stackerInfo == null) // 报错
{
uploadStackerStatusRequests.Add(new UploadStackerStatusRequest
{
Equipment = stacker.StackerId,
Error = 1,
});
continue;
}
int canUse2 = stackerInfo.ErrCode == 0 && stackerInfo.ControlModel == StackerControlModeEnum.online && stackerInfo.StackerStatus != 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;
}
}