2024-07-24 11:26:07 +08:00
|
|
|
|
using CirculateTool.Attribute;
|
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
|
using WcsMain.ApiClient.DataEntity.WmsEntity;
|
|
|
|
|
|
using WcsMain.Common;
|
|
|
|
|
|
using WcsMain.DataBase.Dao;
|
|
|
|
|
|
using WcsMain.DataBase.TableEntity;
|
|
|
|
|
|
using WcsMain.DataService;
|
|
|
|
|
|
using WcsMain.Enum.Convey;
|
|
|
|
|
|
using WcsMain.EquipOperation.Convey;
|
|
|
|
|
|
using WcsMain.ExtendMethod;
|
|
|
|
|
|
using WcsMain.Plugins;
|
|
|
|
|
|
|
|
|
|
|
|
namespace WcsMain.Business.CirculationTask.Convey;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Circulation]
|
|
|
|
|
|
public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation conveyOperation, WmsWebApiPost wmsWebApiPost, AppConveyTaskDao conveyTaskDao)
|
|
|
|
|
|
{
|
|
|
|
|
|
private static List<AppConveyStand>? _pickStands; // 拣选站台
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 拣选台上报料箱
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2024-07-28 15:19:56 +08:00
|
|
|
|
[Circulation("拣选台上报料箱", 300)]
|
2024-07-24 11:26:07 +08:00
|
|
|
|
public bool UploadInfo()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_pickStands == default)
|
|
|
|
|
|
{
|
|
|
|
|
|
_pickStands = conveyStandDao.Query(new AppConveyStand() { StandStatus = 1, StandType = (int)ConveyStandTypeEnum.pick });
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (_pickStands.Count < 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
ConsoleLog.Info($"【提示】无拣选站台信息,监控已经停止");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
2024-07-25 12:41:21 +08:00
|
|
|
|
List<Task> tasks = [];
|
2024-07-24 11:26:07 +08:00
|
|
|
|
foreach (AppConveyStand stand in _pickStands)
|
|
|
|
|
|
{
|
|
|
|
|
|
Thread.Sleep(20);
|
|
|
|
|
|
Task task = new(() =>
|
|
|
|
|
|
{
|
2024-07-25 12:41:21 +08:00
|
|
|
|
string code = conveyOperation.ReadStandCode(stand.StandId!);
|
2024-07-24 11:26:07 +08:00
|
|
|
|
code = Regex.Replace(code, "\\W", "");
|
|
|
|
|
|
if (string.IsNullOrEmpty(code))
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2024-07-26 08:43:43 +08:00
|
|
|
|
ConsoleLog.Info($"【提示】料箱:{code} 已经到达拣选站台:{stand.StandId}");
|
2024-07-25 12:41:21 +08:00
|
|
|
|
conveyOperation.ClearStandCodeStatus(stand.StandId!);
|
2024-07-24 11:26:07 +08:00
|
|
|
|
|
|
|
|
|
|
// 查询 条码 对应的任务
|
|
|
|
|
|
List<AppConveyTask>? pickTasks = conveyTaskDao.Query(new AppConveyTask()
|
|
|
|
|
|
{
|
|
|
|
|
|
VehicleNo = code,
|
|
|
|
|
|
TaskType = (int)ConveyTaskTypeEnum.pick,
|
2024-07-26 08:43:43 +08:00
|
|
|
|
Location = stand.StandId,
|
|
|
|
|
|
//TaskStatus = (int)ConveyTaskStatusEnum.moved
|
2024-07-24 11:26:07 +08:00
|
|
|
|
});
|
|
|
|
|
|
if (pickTasks == default || pickTasks.Count < 1)
|
|
|
|
|
|
{
|
2024-07-26 08:43:43 +08:00
|
|
|
|
ConsoleLog.Error($"【异常】拣选站台{stand.StandId} 料箱:{code} 找不到对应任务");
|
2024-07-24 11:26:07 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
var pickTask = pickTasks[0]; // 拣选任务
|
|
|
|
|
|
// 更新表内拣选时间和状态
|
|
|
|
|
|
conveyTaskDao.Update(new AppConveyTask()
|
|
|
|
|
|
{
|
|
|
|
|
|
TaskId = pickTask.TaskId,
|
|
|
|
|
|
TaskStatus = (int)ConveyTaskStatusEnum.arrive,
|
|
|
|
|
|
CompleteTime = DateTime.Now,
|
|
|
|
|
|
Remark = "PLC上报料箱到达"
|
|
|
|
|
|
});
|
|
|
|
|
|
// 发送wms料箱到达
|
2024-07-25 12:41:21 +08:00
|
|
|
|
UploadPickStandRequest request = new()
|
2024-07-24 11:26:07 +08:00
|
|
|
|
{
|
2024-07-26 08:43:43 +08:00
|
|
|
|
PickStand = stand.StandId,
|
2024-07-24 11:26:07 +08:00
|
|
|
|
VehicleNo = pickTask.VehicleNo,
|
|
|
|
|
|
Remark = ""
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var responseEntity = wmsWebApiPost.HttpPost<UploadPickStandRequest, WmsResponse>(request,
|
|
|
|
|
|
CommonData.AppApiBaseInfos.GetAddress("UploadBoxArrive") ?? "", 5000);
|
|
|
|
|
|
if (responseEntity.IsSend) // 发送失败不处理,下一次循环在发送
|
|
|
|
|
|
{
|
|
|
|
|
|
// 只要发送成功则不再发送
|
|
|
|
|
|
ConsoleLog.Info(
|
|
|
|
|
|
$"拣选站台{stand.Area} 获得对应料箱:{pickTask.VehicleNo} 上报成功,WMS返回:{responseEntity.ResponseMsg}");
|
|
|
|
|
|
var result = responseEntity.ResponseEntity;
|
|
|
|
|
|
conveyOperation.ClearStandCodeStatus(stand.Area!);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
task.Start();
|
|
|
|
|
|
tasks.Add(task);
|
|
|
|
|
|
}
|
2024-07-26 08:43:43 +08:00
|
|
|
|
Task.WaitAll([.. tasks]);
|
2024-07-24 11:26:07 +08:00
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|